diff --git a/weboob/applications/qvideoob/minivideo.py b/weboob/applications/qvideoob/minivideo.py index 60fc39ac..5840b29d 100644 --- a/weboob/applications/qvideoob/minivideo.py +++ b/weboob/applications/qvideoob/minivideo.py @@ -32,7 +32,7 @@ class MiniVideo(QFrame): self.video = video self.ui.titleLabel.setText(video.title) self.ui.backendLabel.setText(backend.name) - self.ui.durationLabel.setText('%d:%02d:%02d' % (video.duration/3600, (video.duration%3600)/60, video.duration%60)) + self.ui.durationLabel.setText(unicode(video.duration)) self.ui.authorLabel.setText(unicode(video.author)) self.ui.dateLabel.setText(video.date and unicode(video.date) or '') if video.rating_max: diff --git a/weboob/applications/qvideoob/video.py b/weboob/applications/qvideoob/video.py index 647c8dd8..bdd32229 100644 --- a/weboob/applications/qvideoob/video.py +++ b/weboob/applications/qvideoob/video.py @@ -32,7 +32,7 @@ class Video(QDialog): self.setWindowTitle("Video - %s" % video.title) self.ui.urlEdit.setText(video.url) self.ui.titleLabel.setText(video.title) - self.ui.durationLabel.setText('%d:%02d:%02d' % (video.duration/3600, (video.duration%3600)/60, video.duration%60)) + self.ui.durationLabel.setText(unicode(video.duration)) self.ui.authorLabel.setText(unicode(video.author)) self.ui.dateLabel.setText(unicode(video.date)) if video.rating_max: diff --git a/weboob/backends/ina/pages/video.py b/weboob/backends/ina/pages/video.py index 8c7a5689..7552e80c 100644 --- a/weboob/backends/ina/pages/video.py +++ b/weboob/backends/ina/pages/video.py @@ -59,7 +59,8 @@ class VideoPage(BasePage): if m: day, month, year = [int(s) for s in m.group(1).split('/')] date = datetime.datetime(year, month, day) - return date, int(m.group(2)) * 60 + int(m.group(3)) + duration = datetime.timedelta(minutes=m.group(3), seconds=m.group(2)) + return date, duration else: return None diff --git a/weboob/backends/youjizz/browser.py b/weboob/backends/youjizz/browser.py index 52d85366..65fdc05b 100644 --- a/weboob/backends/youjizz/browser.py +++ b/weboob/backends/youjizz/browser.py @@ -16,6 +16,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +import datetime import re import urllib from logging import warning @@ -62,13 +63,12 @@ class YoujizzBrowser(BaseBrowser): m = re.search(r'.*Runtime.*(.+)', data) if m: minutes, seconds = (int(v) for v in unicode(m.group(1).strip()).split(':')) - duration = minutes * 60 + seconds else: - duration = 0 + minutes = seconds = 0 video._id = _id video.title = title video.url = _get_url() - video.duration = duration + video.duration = datetime.timedelta(minutes=minutes, seconds=seconds) return video @check_domain diff --git a/weboob/backends/youporn/pages/video.py b/weboob/backends/youporn/pages/video.py index 0b9733ef..f0e251b1 100644 --- a/weboob/backends/youporn/pages/video.py +++ b/weboob/backends/youporn/pages/video.py @@ -68,13 +68,13 @@ class VideoPage(PornPage): value = span.tail.strip() if name == 'Duration:': - duration = 0 + seconds = minutes = 0 for word in value.split(): if word.endswith('min'): - duration += 60 * int(word[:word.find('min')]) + minutes = int(word[:word.find('min')]) elif word.endswith('sec'): - duration += int(word[:word.find('sec')]) - v.duration = duration + seconds = int(word[:word.find('sec')]) + v.duration = datetime.timedelta(minutes=minutes, seconds=seconds) elif name == 'Submitted:': author = li.find('i') if author is None: diff --git a/weboob/backends/youtube/backend.py b/weboob/backends/youtube/backend.py index 1620a18f..9a2314d8 100644 --- a/weboob/backends/youtube/backend.py +++ b/weboob/backends/youtube/backend.py @@ -63,8 +63,9 @@ class YoutubeBackend(BaseBackend, ICapVideo): yield YoutubeVideo(entry.id.text.split('/')[-1].decode('utf-8'), title=entry.media.title.text.decode('utf-8').strip(), author=author, - duration=int(entry.media.duration.seconds.decode('utf-8').strip()), - thumbnail_url=entry.media.thumbnail[0].url.decode('utf-8').strip()) + duration=datetime.timedelta(seconds=entry.media.duration.seconds.decode('utf-8').strip()), + thumbnail_url=entry.media.thumbnail[0].url.decode('utf-8').strip(), + ) def iter_page_urls(self, mozaic_url): raise NotImplementedError() diff --git a/weboob/capabilities/video.py b/weboob/capabilities/video.py index 9ae28fad..fd1acaff 100644 --- a/weboob/capabilities/video.py +++ b/weboob/capabilities/video.py @@ -23,13 +23,13 @@ __all__ = ['BaseVideo', 'ICapVideo'] class BaseVideo(object): - def __init__(self, _id, title=None, url=None, author=None, duration=0, date=None, + def __init__(self, _id, title=None, url=None, author=None, duration=None, date=None, rating=0.0, rating_max=0.0, thumbnail_url=None, nsfw=False): self.id = unicode(_id) self.title = title self.url = url self.author = author - self.duration = int(duration) + self.duration = duration self.date = date self.rating = float(rating) self.rating_max = float(rating_max) @@ -41,10 +41,6 @@ class BaseVideo(object): """Overloaded in child classes provided by backends.""" raise NotImplementedError() - @property - def formatted_duration(self): - return '%d:%02d:%02d' % (self.duration / 3600, (self.duration % 3600 / 60), self.duration % 60) - @property def page_url(self): return self.id2url(self.id)