def create_video_from_json(self, _video): video = BaseVideo() video.id = u'%s' % _video['id'] video.backend = u'%s' % _video['id'].split('@')[-1] if 'url' in _video.keys(): video.url = u'%s' % _video['url'] if 'thumbnail' in _video.keys() and _video['thumbnail'] and 'url' in _video['thumbnail'].keys(): video.thumbnail = BaseImage() video.thumbnail.url = u'%s' % _video['thumbnail']['url'] else: video.thumbnail.url = u'' video.title = u'%s' % _video['title'] if _video['date']: _date = re.search('(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*', _video['date']) try: datetime.strptime(_date.group(1), '%Y-%m-%d %H:%M:%S') except TypeError: datetime(*(time.strptime(_date.group(1), '%Y-%m-%d %H:%M:%S')[0:6])) video.description = u'%s' % _video['description'] video.author = u'%s' % _video['author'] if _video['duration']: _duration = _video['duration'].split(':') video.duration = timedelta(hours=int(_duration[0]), minutes=int(_duration[1]), seconds=int(_duration[2])) return video
def video_info(url): """Fetch info about a video using youtube-dl :param url: URL of the web page containing the video :rtype: :class:`weboob.capabilities.video.Video` """ if not MediaPlayer._find_in_path(os.environ['PATH'], 'youtube-dl'): raise Exception('Please install youtube-dl') try: j = json.loads(subprocess.check_output(['youtube-dl', '-f', 'best', '-J', url])) except subprocess.CalledProcessError: return v = BaseVideo(id=url) v.title = j.get('title') or NotAvailable v.ext = j.get('ext') or NotAvailable v.description = j.get('description') or NotAvailable v.url = j['url'] v.duration = j.get('duration') or NotAvailable v.author = j.get('uploader') or NotAvailable v.rating = j.get('average_rating') or NotAvailable if j.get('thumbnail'): v.thumbnail = Thumbnail(j['thumbnail']) d = j.get('upload_date', j.get('release_date')) if d: v.date = parse_date(d) return v
def video_info(url): """Fetch info about a video using youtube-dl :param url: URL of the web page containing the video :rtype: :class:`weboob.capabilities.video.Video` """ if not MediaPlayer._find_in_path(os.environ['PATH'], 'youtube-dl'): raise Exception('Please install youtube-dl') try: j = json.loads( subprocess.check_output(['youtube-dl', '-f', 'best', '-J', url])) except subprocess.CalledProcessError: return v = BaseVideo(id=url) v.title = j.get('title') or NotAvailable v.ext = j.get('ext') or NotAvailable v.description = j.get('description') or NotAvailable v.url = j['url'] v.duration = j.get('duration') or NotAvailable v.author = j.get('uploader') or NotAvailable v.rating = j.get('average_rating') or NotAvailable if j.get('thumbnail'): v.thumbnail = Thumbnail(j['thumbnail']) d = j.get('upload_date', j.get('release_date')) if d: v.date = parse_date(d) return v
def parse_video(self, _video, category): video = BaseVideo(u'%s#%s' % (_video['code'], category)) video.title = unicode(_video['title']) video._video_code = unicode(_video['code']) video.ext = u'mp4' if 'runtime' in _video: video.duration = timedelta(seconds=int(_video['runtime'])) if 'description' in _video: video.description = unicode(_video['description']) renditions = sorted(_video['rendition'], key=lambda x: 'bandwidth' in x and x['bandwidth']['code'], reverse=True) video.url = unicode(max(renditions, key=lambda x: 'bandwidth' in x)['href']) return video
def get_video(self, id, video=None): item = self.request('/api/v1/videos/%s' % id) if not video: video = BaseVideo() self._parse_video(video, item) video._torrent = item['files'][0]['magnetUri'] video.url = item['files'][0]['fileUrl'] video.ext = video.url.rsplit('.', 1)[-1] video.size = item['files'][0]['size'] return video
def parse_video(self, _video, category): video = BaseVideo(u"%s#%s" % (_video["code"], category)) video.title = unicode(_video["title"]) video._video_code = unicode(_video["code"]) video.ext = u"mp4" if "runtime" in _video: video.duration = timedelta(seconds=int(_video["runtime"])) if "description" in _video: video.description = unicode(_video["description"]) renditions = sorted( _video["rendition"], key=lambda x: "bandwidth" in x and x["bandwidth"]["code"], reverse=True ) video.url = unicode(max(renditions, key=lambda x: "bandwidth" in x)["href"]) return video
def parse_video(self, _video, category): video = BaseVideo(u'%s#%s' % (_video['code'], category)) video.title = unicode(_video['title']) video._video_code = unicode(_video['code']) video.ext = u'mp4' if 'runtime' in _video: video.duration = timedelta(seconds=int(_video['runtime'])) if 'description' in _video: video.description = unicode(_video['description']) renditions = sorted( _video['rendition'], key=lambda x: 'bandwidth' in x and x['bandwidth']['code'], reverse=True) video.url = unicode( max(renditions, key=lambda x: 'bandwidth' in x)['href']) return video