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)