[cineoob] new command 'releases' showing releases dates

This commit is contained in:
Julien Veyssier 2013-03-07 21:24:58 +01:00
commit 79192e288c
7 changed files with 72 additions and 8 deletions

View file

@ -63,9 +63,12 @@ class ImdbBackend(BaseBackend, ICapCinema):
def iter_movie_persons_ids(self, id):
return self.browser.iter_movie_persons_ids(id)
def get_person_biography(self,id):
def get_person_biography(self, id):
return self.browser.get_person_biography(id)
def get_movie_releases(self, id, country=None):
return self.browser.get_movie_releases(id,country)
def fill_person(self, person, fields):
if 'real_name' in fields or 'birth_place' in fields\
or 'death_date' in fields or 'nationality' in fields\

View file

@ -23,7 +23,7 @@ from weboob.capabilities.base import NotAvailable, NotLoaded
from weboob.capabilities.cinema import Movie, Person
from weboob.tools.json import json
from .pages import PersonPage, MovieCrewPage, BiographyPage, FilmographyPage
from .pages import PersonPage, MovieCrewPage, BiographyPage, FilmographyPage, ReleasePage
from datetime import datetime
@ -37,6 +37,7 @@ class ImdbBrowser(BaseBrowser):
USER_AGENT = BaseBrowser.USER_AGENTS['wget']
PAGES = {
'http://www.imdb.com/title/tt[0-9]*/fullcredits.*': MovieCrewPage,
'http://www.imdb.com/title/tt[0-9]*/releaseinfo.*': ReleasePage,
'http://www.imdb.com/name/nm[0-9]*/*': PersonPage,
'http://www.imdb.com/name/nm[0-9]*/bio.*': BiographyPage,
'http://www.imdb.com/name/nm[0-9]*/filmo.*': FilmographyPage,
@ -181,6 +182,11 @@ class ImdbBrowser(BaseBrowser):
for person in self.page.iter_persons_ids():
yield person
def get_movie_releases(self,id, country):
self.location('http://www.imdb.com/title/%s/releaseinfo'%id)
assert self.is_on_page(ReleasePage)
return self.page.get_movie_releases(country)
dict_hex = {'á': u'á',
'é': u'é',
@ -191,6 +197,7 @@ dict_hex = {'á': u'á',
'ú': u'ú',
'ü': u'ü',
'&': u'&',
''': u"'",
'ç': u'ç'
}
def latin2unicode(word):

View file

@ -25,7 +25,25 @@ from weboob.tools.browser import BasePage
from datetime import datetime
__all__ = ['PersonPage','MovieCrewPage','BiographyPage','FilmographyPage']
__all__ = ['PersonPage','MovieCrewPage','BiographyPage','FilmographyPage','ReleasePage']
class ReleasePage(BasePage):
''' Page containing releases of a movie
'''
def get_movie_releases(self,country_filter):
result = unicode()
links = self.parser.select(self.document.getroot(),'b a')
for a in links:
href = a.attrib.get('href','')
if href.strip('/').split('/')[0] == 'calendar' and\
(country_filter == None or href.split('region=')[-1].lower() == country_filter):
country = a.text
date = self.parser.select(a.getparent().getparent().getparent(),'td')[1].text_content()
result += '%s : %s\n' % (country,date)
if result == u'':
result = NotAvailable
return result.strip()
class BiographyPage(BasePage):

View file

@ -59,3 +59,8 @@ class ImdbTest(BackendTest):
bio = self.backend.get_person_biography('nm0223033')
assert bio != ''
assert bio != None
def test_get_movie_releases(self):
rel = self.backend.get_movie_releases('tt0079980')
assert rel != ''
assert rel != None