[qcineoob] filmography

[imdb] html characters converted
This commit is contained in:
Julien Veyssier 2013-03-12 17:08:15 +01:00
commit 6fe917417c
6 changed files with 85 additions and 4 deletions

View file

@ -18,6 +18,7 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>. # along with weboob. If not, see <http://www.gnu.org/licenses/>.
import HTMLParser
from weboob.tools.browser import BaseBrowser, BrowserHTTPNotFound from weboob.tools.browser import BaseBrowser, BrowserHTTPNotFound
from weboob.capabilities.base import NotAvailable, NotLoaded from weboob.capabilities.base import NotAvailable, NotLoaded
from weboob.capabilities.cinema import Movie, Person from weboob.capabilities.cinema import Movie, Person
@ -92,6 +93,7 @@ class ImdbBrowser(BaseBrowser):
jres = json.loads(res) jres = json.loads(res)
else: else:
return None return None
htmlparser = HTMLParser.HTMLParser()
title = NotAvailable title = NotAvailable
duration = NotAvailable duration = NotAvailable
@ -106,7 +108,7 @@ class ImdbBrowser(BaseBrowser):
if not jres.has_key('title'): if not jres.has_key('title'):
return return
title = unicode(jres['title'].strip()) title = htmlparser.unescape(unicode(jres['title'].strip()))
if jres.has_key('poster'): if jres.has_key('poster'):
thumbnail_url = unicode(jres['poster']) thumbnail_url = unicode(jres['poster'])
if jres.has_key('directors'): if jres.has_key('directors'):
@ -120,7 +122,7 @@ class ImdbBrowser(BaseBrowser):
if jres.has_key('also_known_as'): if jres.has_key('also_known_as'):
for other_t in jres['also_known_as']: for other_t in jres['also_known_as']:
if other_t.has_key('country') and other_t.has_key('title'): if other_t.has_key('country') and other_t.has_key('title'):
other_titles.append('%s : %s' % (other_t['country'],other_t['title'])) other_titles.append('%s : %s' % (other_t['country'],htmlparser.unescape(other_t['title'])))
if jres.has_key('release_date'): if jres.has_key('release_date'):
dstr = str(jres['release_date']) dstr = str(jres['release_date'])
year = int(dstr[:4]) year = int(dstr[:4])

View file

@ -49,6 +49,7 @@ class MainWindow(QtMainWindow):
self.ui.backButton.setDisabled(True) self.ui.backButton.setDisabled(True)
self.connect(self.ui.searchEdit, SIGNAL("returnPressed()"), self.search) self.connect(self.ui.searchEdit, SIGNAL("returnPressed()"), self.search)
self.connect(self.ui.typeCombo, SIGNAL("returnPressed()"), self.search)
self.connect(self.ui.actionBackends, SIGNAL("triggered()"), self.backendsConfig) self.connect(self.ui.actionBackends, SIGNAL("triggered()"), self.backendsConfig)
@ -108,6 +109,21 @@ class MainWindow(QtMainWindow):
self.process = QtDo(self.weboob, self.addPerson) self.process = QtDo(self.weboob, self.addPerson)
self.process.do('iter_movie_persons', id, role, backends=backend_name) self.process.do('iter_movie_persons', id, role, backends=backend_name)
def filmographyAction(self, id, role):
self.ui.stackedWidget.setCurrentWidget(self.ui.movie_list_page)
for minimovie in self.minimovies:
self.ui.movie_list_content.layout().removeWidget(minimovie)
minimovie.hide()
minimovie.deleteLater()
self.minimovies = []
self.ui.searchEdit.setEnabled(False)
backend_name = str(self.ui.backendEdit.itemData(self.ui.backendEdit.currentIndex()).toString())
self.process = QtDo(self.weboob, self.addMovie)
self.process.do('iter_person_movies', id, role, backends=backend_name)
def search(self): def search(self):
tosearch = self.ui.typeCombo.currentText() tosearch = self.ui.typeCombo.currentText()
if tosearch == 'person': if tosearch == 'person':

View file

@ -65,4 +65,3 @@ class Movie(QFrame):
role_desc = ' as %s'%role role_desc = ' as %s'%role
self.parent.doAction('Casting%s of movie "%s"'%(role_desc,self.movie.original_title), self.parent.doAction('Casting%s of movie "%s"'%(role_desc,self.movie.original_title),
self.parent.castingAction,[self.movie.id,role]) self.parent.castingAction,[self.movie.id,role])

View file

@ -19,7 +19,7 @@
import urllib import urllib
from PyQt4.QtCore import QUrl from PyQt4.QtCore import QUrl,Qt,SIGNAL
from PyQt4.QtGui import QFrame, QImage, QPixmap from PyQt4.QtGui import QFrame, QImage, QPixmap
from weboob.applications.qcineoob.ui.person_ui import Ui_Person from weboob.applications.qcineoob.ui.person_ui import Ui_Person
@ -32,6 +32,8 @@ class Person(QFrame):
self.ui = Ui_Person() self.ui = Ui_Person()
self.ui.setupUi(self) self.ui.setupUi(self)
self.connect(self.ui.filmographyButton, SIGNAL("clicked()"), self.filmography)
self.person = person self.person = person
self.gotThumbnail() self.gotThumbnail()
self.ui.nameLabel.setText(person.name) self.ui.nameLabel.setText(person.name)
@ -50,3 +52,13 @@ class Person(QFrame):
data = urllib.urlopen(self.person.thumbnail_url).read() data = urllib.urlopen(self.person.thumbnail_url).read()
img = QImage.fromData(data) img = QImage.fromData(data)
self.ui.imageLabel.setPixmap(QPixmap.fromImage(img)) self.ui.imageLabel.setPixmap(QPixmap.fromImage(img))
def filmography(self):
role = None
tosearch = self.ui.filmographyCombo.currentText()
role_desc = ''
if tosearch != 'all':
role = tosearch
role_desc = ' as %s'%role
self.parent.doAction('Filmography of "%s"%s'%(self.person.name,role_desc),
self.parent.filmographyAction,[self.person.id,role])

View file

@ -75,6 +75,12 @@
</item> </item>
<item> <item>
<widget class="QLabel" name="currentActionLabel"> <widget class="QLabel" name="currentActionLabel">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>

View file

@ -36,6 +36,52 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QFrame" name="frame_12">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QPushButton" name="filmographyButton">
<property name="text">
<string>view
filmography</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>as</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="filmographyCombo">
<item>
<property name="text">
<string>all</string>
</property>
</item>
<item>
<property name="text">
<string>actor</string>
</property>
</item>
<item>
<property name="text">
<string>director</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>