From 23dde4218681271483e3b6ecaaed2aecd9bbe075 Mon Sep 17 00:00:00 2001 From: Julien Veyssier Date: Tue, 12 Mar 2013 22:23:24 +0100 Subject: [PATCH] [qcineoob] download torrent operational --- weboob/applications/qcineoob/main_window.py | 5 ++- weboob/applications/qcineoob/minimovie.py | 6 +-- weboob/applications/qcineoob/miniperson.py | 6 +-- weboob/applications/qcineoob/minitorrent.py | 9 ++-- weboob/applications/qcineoob/movie.py | 11 ++++- weboob/applications/qcineoob/person.py | 4 +- weboob/applications/qcineoob/torrent.py | 48 +++++++++++++++------ weboob/applications/qcineoob/ui/torrent.ui | 36 +++++++++++++++- 8 files changed, 89 insertions(+), 36 deletions(-) diff --git a/weboob/applications/qcineoob/main_window.py b/weboob/applications/qcineoob/main_window.py index 1815a960..daf20bbe 100644 --- a/weboob/applications/qcineoob/main_window.py +++ b/weboob/applications/qcineoob/main_window.py @@ -25,6 +25,7 @@ from weboob.capabilities.torrent import ICapTorrent from weboob.tools.application.qt import QtMainWindow, QtDo from weboob.tools.application.qt.backendcfg import BackendCfg + from weboob.applications.qcineoob.ui.main_window_ui import Ui_MainWindow from .minimovie import MiniMovie @@ -247,13 +248,13 @@ class MainWindow(QtMainWindow): self.ui.list_content.layout().addWidget(minitorrent) self.minis.append(minitorrent) - def displayTorrent(self, torrent): + def displayTorrent(self, torrent, backend): self.ui.stackedWidget.setCurrentWidget(self.ui.info_page) if self.current_info_widget != None: self.ui.info_content.layout().removeWidget(self.current_info_widget) self.current_info_widget.hide() self.current_info_widget.deleteLater() - wtorrent = Torrent(torrent,self) + wtorrent = Torrent(torrent, backend, self) self.ui.info_content.layout().addWidget(wtorrent) self.current_info_widget = wtorrent diff --git a/weboob/applications/qcineoob/minimovie.py b/weboob/applications/qcineoob/minimovie.py index b856fd17..c473351e 100644 --- a/weboob/applications/qcineoob/minimovie.py +++ b/weboob/applications/qcineoob/minimovie.py @@ -21,9 +21,8 @@ import urllib from PyQt4.QtGui import QFrame, QImage, QPixmap -from weboob.tools.application.qt import QtDo from weboob.applications.qcineoob.ui.minimovie_ui import Ui_MiniMovie -from weboob.capabilities.base import NotAvailable, NotLoaded +from weboob.capabilities.base import NotAvailable class MiniMovie(QFrame): def __init__(self, weboob, backend, movie, parent=None): @@ -39,9 +38,6 @@ class MiniMovie(QFrame): self.ui.shortDescLabel.setText(movie.short_description) self.ui.backendLabel.setText(backend.name) - #self.process_thumbnail = QtDo(self.weboob, self.gotThumbnail) - #self.process_thumbnail.do('fillobj', self.movie, ['thumbnail_url'], backends=backend) - def gotThumbnail(self, backend, movie): if self.movie.thumbnail_url != NotAvailable: data = urllib.urlopen(self.movie.thumbnail_url).read() diff --git a/weboob/applications/qcineoob/miniperson.py b/weboob/applications/qcineoob/miniperson.py index 6361ce61..92f59049 100644 --- a/weboob/applications/qcineoob/miniperson.py +++ b/weboob/applications/qcineoob/miniperson.py @@ -21,9 +21,8 @@ import urllib from PyQt4.QtGui import QFrame, QImage, QPixmap -from weboob.tools.application.qt import QtDo from weboob.applications.qcineoob.ui.miniperson_ui import Ui_MiniPerson -from weboob.capabilities.base import NotAvailable, NotLoaded +from weboob.capabilities.base import NotAvailable class MiniPerson(QFrame): def __init__(self, weboob, backend, person, parent=None): @@ -39,9 +38,6 @@ class MiniPerson(QFrame): self.ui.shortDescLabel.setText('%s'%person.short_description) self.ui.backendLabel.setText(backend.name) - #self.process_thumbnail = QtDo(self.weboob, self.gotThumbnail) - #self.process_thumbnail.do('fillobj', self.person, ['thumbnail_url'], backends=backend) - def gotThumbnail(self, backend, person): if self.person.thumbnail_url != NotAvailable: data = urllib.urlopen(self.person.thumbnail_url).read() diff --git a/weboob/applications/qcineoob/minitorrent.py b/weboob/applications/qcineoob/minitorrent.py index f9ac1df5..c55c4508 100644 --- a/weboob/applications/qcineoob/minitorrent.py +++ b/weboob/applications/qcineoob/minitorrent.py @@ -17,13 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -import urllib +from PyQt4.QtGui import QFrame -from PyQt4.QtGui import QFrame, QImage, QPixmap - -from weboob.tools.application.qt import QtDo from weboob.applications.qcineoob.ui.minitorrent_ui import Ui_MiniTorrent -from weboob.capabilities.base import NotAvailable, NotLoaded +from weboob.capabilities.base import NotAvailable class MiniTorrent(QFrame): def __init__(self, weboob, backend, torrent, parent=None): @@ -53,4 +50,4 @@ class MiniTorrent(QFrame): torrent = self.backend.get_torrent(self.torrent.id) if torrent: - self.parent.doAction('Details of torrent "%s"'%torrent.name,self.parent.displayTorrent,[torrent]) + self.parent.doAction('Details of torrent "%s"'%torrent.name,self.parent.displayTorrent,[torrent,self.backend]) diff --git a/weboob/applications/qcineoob/movie.py b/weboob/applications/qcineoob/movie.py index 0208fc6f..3069cc8c 100644 --- a/weboob/applications/qcineoob/movie.py +++ b/weboob/applications/qcineoob/movie.py @@ -19,11 +19,11 @@ import urllib -from PyQt4.QtCore import QUrl,Qt,SIGNAL +from PyQt4.QtCore import Qt,SIGNAL from PyQt4.QtGui import QFrame, QImage, QPixmap from weboob.applications.qcineoob.ui.movie_ui import Ui_Movie -from weboob.capabilities.base import NotAvailable, NotLoaded +from weboob.capabilities.base import NotAvailable from weboob.applications.suboob.suboob import LANGUAGE_CONV class Movie(QFrame): @@ -39,6 +39,7 @@ class Movie(QFrame): self.connect(self.ui.castingButton, SIGNAL("clicked()"), self.casting) self.connect(self.ui.torrentButton, SIGNAL("clicked()"), self.searchTorrent) + self.connect(self.ui.subtitleButton, SIGNAL("clicked()"), self.searchSubtitle) self.movie = movie self.ui.titleLabel.setText(movie.original_title) @@ -62,6 +63,12 @@ class Movie(QFrame): img = QImage.fromData(data) self.ui.imageLabel.setPixmap(QPixmap.fromImage(img)) + def searchSubtitle(self): + tosearch = self.movie.original_title + lang = unicode(self.ui.langCombo.currentText()) + desc = 'Search subtitles for "%s" (lang:%s)'%(tosearch,lang) + self.parent.doAction(desc, self.parent.searchSubtitleAction,[lang,tosearch]) + def searchTorrent(self): tosearch = self.movie.original_title if self.movie.release_date != NotAvailable: diff --git a/weboob/applications/qcineoob/person.py b/weboob/applications/qcineoob/person.py index c5a632c7..ffbeabb4 100644 --- a/weboob/applications/qcineoob/person.py +++ b/weboob/applications/qcineoob/person.py @@ -19,11 +19,11 @@ import urllib -from PyQt4.QtCore import QUrl,Qt,SIGNAL +from PyQt4.QtCore import SIGNAL from PyQt4.QtGui import QFrame, QImage, QPixmap from weboob.applications.qcineoob.ui.person_ui import Ui_Person -from weboob.capabilities.base import NotAvailable, NotLoaded +from weboob.capabilities.base import NotAvailable class Person(QFrame): def __init__(self, person, parent=None): diff --git a/weboob/applications/qcineoob/torrent.py b/weboob/applications/qcineoob/torrent.py index 5b120866..9a86025f 100644 --- a/weboob/applications/qcineoob/torrent.py +++ b/weboob/applications/qcineoob/torrent.py @@ -17,34 +17,56 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -import urllib +import sys -from PyQt4.QtCore import QUrl,Qt,SIGNAL -from PyQt4.QtGui import QFrame, QImage, QPixmap +from PyQt4.QtCore import Qt,SIGNAL +from PyQt4.QtGui import QFrame, QFileDialog from weboob.applications.qcineoob.ui.torrent_ui import Ui_Torrent from weboob.capabilities.base import NotAvailable, NotLoaded class Torrent(QFrame): - def __init__(self, torrent, parent=None): + def __init__(self, torrent, backend, parent=None): QFrame.__init__(self, parent) self.parent = parent + self.backend = backend self.ui = Ui_Torrent() self.ui.setupUi(self) - #self.connect(self.ui.downloadButton, SIGNAL("clicked()"), self.download) + self.connect(self.ui.downloadButton, SIGNAL("clicked()"), self.download) self.torrent = torrent self.ui.nameLabel.setText(u'%s'%torrent.name) + if torrent.url != NotAvailable: + self.ui.urlEdit.setText(u'%s'%torrent.url) + else: + self.ui.urlFrame.hide() + self.ui.downloadButton.setDisabled(True) + self.ui.downloadButton.setToolTip('Use the magnet link') + if torrent.magnet != NotAvailable and torrent.magnet != NotLoaded: + self.ui.magnetEdit.setText(u'%s'%torrent.magnet) + else: + self.ui.magnetFrame.hide() self.ui.verticalLayout.setAlignment(Qt.AlignTop) def download(self): - role = None - tosearch = self.ui.castingCombo.currentText() - role_desc = '' - if tosearch != 'all': - role = tosearch[:-1] - role_desc = ' as %s'%role - self.parent.doAction('Casting%s of movie "%s"'%(role_desc,self.movie.original_title), - self.parent.castingAction,[self.movie.id,role]) + fileDial = QFileDialog(self,'Save "%s" torrent file'%self.torrent.name,'%s.torrent'%self.torrent.name,'Torrent file (*.torrent);;all files (*)') + fileDial.setAcceptMode(QFileDialog.AcceptSave) + fileDial.setLabelText(QFileDialog.Accept,'Save torrent file') + fileDial.setLabelText(QFileDialog.FileName,'Torrent file name') + ok = (fileDial.exec_() == 1) + if not ok: + return + result = fileDial.selectedFiles() + if len(result) > 0: + dest = result[0] + data = self.backend.get_torrent_file(self.torrent.id) + try: + with open(dest, 'w') as f: + f.write(data) + except IOError, e: + print >>sys.stderr, 'Unable to write .torrent in "%s": %s' % (dest, e) + return 1 + return + diff --git a/weboob/applications/qcineoob/ui/torrent.ui b/weboob/applications/qcineoob/ui/torrent.ui index ad999ae4..ec9f43f0 100644 --- a/weboob/applications/qcineoob/ui/torrent.ui +++ b/weboob/applications/qcineoob/ui/torrent.ui @@ -207,7 +207,7 @@ - + 16777215 @@ -240,6 +240,40 @@ + + + + + 16777215 + 40 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 3 + + + 3 + + + + + Magnet: + + + + + + + + +