Browse Source

[vgtv] extract videos from FTV, Aftenposten, Aftonbladet using VGTVIE

totalwebcasting
remitamine 9 years ago
parent
commit
00d24327ef
3 changed files with 46 additions and 38 deletions
  1. +0
    -1
      youtube_dl/extractor/__init__.py
  2. +0
    -23
      youtube_dl/extractor/aftenposten.py
  3. +46
    -14
      youtube_dl/extractor/vgtv.py

+ 0
- 1
youtube_dl/extractor/__init__.py View File

@ -9,7 +9,6 @@ from .adobetv import (
AdobeTVVideoIE, AdobeTVVideoIE,
) )
from .adultswim import AdultSwimIE from .adultswim import AdultSwimIE
from .aftenposten import AftenpostenIE
from .aftonbladet import AftonbladetIE from .aftonbladet import AftonbladetIE
from .airmozilla import AirMozillaIE from .airmozilla import AirMozillaIE
from .aljazeera import AlJazeeraIE from .aljazeera import AlJazeeraIE


+ 0
- 23
youtube_dl/extractor/aftenposten.py View File

@ -1,23 +0,0 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
class AftenpostenIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?aftenposten\.no/webtv/(?:#!/)?video/(?P<id>\d+)'
_TEST = {
'url': 'http://www.aftenposten.no/webtv/#!/video/21039/trailer-sweatshop-i-can-t-take-any-more',
'md5': 'fd828cd29774a729bf4d4425fe192972',
'info_dict': {
'id': '21039',
'ext': 'mov',
'title': 'TRAILER: "Sweatshop" - I can´t take any more',
'description': 'md5:21891f2b0dd7ec2f78d84a50e54f8238',
'timestamp': 1416927969,
'upload_date': '20141125',
}
}
def _real_extract(self, url):
return self.url_result('xstream:ap:%s' % self._match_id(url), 'Xstream')

+ 46
- 14
youtube_dl/extractor/vgtv.py View File

@ -11,16 +11,17 @@ from ..utils import (
class VGTVIE(InfoExtractor): class VGTVIE(InfoExtractor):
IE_DESC = 'VGTV and BTTV'
IE_DESC = 'VGTV, BTTV, FTV, Aftenposten, Aftonbladet'
_VALID_URL = r'''(?x) _VALID_URL = r'''(?x)
(?: (?:
vgtv:| vgtv:|
http://(?:www\.)? http://(?:www\.)?
) )
(?P<host>vgtv|bt)
(?P<host>vgtv.no|(?:bt.no|aftenbladet.no)/tv|fvn.no/fvntv|aftenposten.no/webtv)
(?: (?:
:| :|
\.no/(?:tv/)?\#!/(?:video|live)/
/\#!/(?:video|live)/|
/embed?id=
) )
(?P<id>[0-9]+) (?P<id>[0-9]+)
''' '''
@ -59,17 +60,18 @@ class VGTVIE(InfoExtractor):
# m3u8 download # m3u8 download
'skip_download': True, 'skip_download': True,
}, },
'skip': 'Video is no longer available',
}, },
{ {
# streamType: live
# streamType: wasLive
'url': 'http://www.vgtv.no/#!/live/113063/direkte-v75-fra-solvalla', 'url': 'http://www.vgtv.no/#!/live/113063/direkte-v75-fra-solvalla',
'info_dict': { 'info_dict': {
'id': '113063', 'id': '113063',
'ext': 'flv',
'title': 're:^DIREKTE: V75 fra Solvalla [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$',
'ext': 'mp4',
'title': 'V75 fra Solvalla 30.05.15',
'description': 'md5:b3743425765355855f88e096acc93231', 'description': 'md5:b3743425765355855f88e096acc93231',
'thumbnail': 're:^https?://.*\.jpg', 'thumbnail': 're:^https?://.*\.jpg',
'duration': 0,
'duration': 25966,
'timestamp': 1432975582, 'timestamp': 1432975582,
'upload_date': '20150530', 'upload_date': '20150530',
'view_count': int, 'view_count': int,
@ -78,26 +80,56 @@ class VGTVIE(InfoExtractor):
# m3u8 download # m3u8 download
'skip_download': True, 'skip_download': True,
}, },
},{
'url': 'http://www.aftenposten.no/webtv/#!/video/21039/trailer-sweatshop-i-can-t-take-any-more',
'md5': '7fbc265a3ca4933a423c7a66aa879a67',
'info_dict': {
'id': '21039',
'ext': 'mp4',
'title': 'TRAILER: «SWEATSHOP» - I can´t take any more',
'description': 'md5:21891f2b0dd7ec2f78d84a50e54f8238',
'duration': 66,
'timestamp': 1417002452,
'upload_date': '20141126',
'view_count': int,
}
}, },
{ {
'url': 'http://www.bt.no/tv/#!/video/100250/norling-dette-er-forskjellen-paa-1-divisjon-og-eliteserien', 'url': 'http://www.bt.no/tv/#!/video/100250/norling-dette-er-forskjellen-paa-1-divisjon-og-eliteserien',
'only_matching': True, 'only_matching': True,
}, },
] ]
_HOST_WEBSITES = {
'vgtv.no': {
'vendor': 'vgtv',
'appname': 'vgtv',
},
'bt.no/tv': {
'vendor': 'bt',
'appname': 'bttv',
},
'aftenbladet.no/tv': {
'vendor': 'sa',
'appname': 'satv',
},
'fvn.no/fvntv': {
'vendor': 'fvn',
'appname': 'fvntv',
},
'aftenposten.no/webtv': {
'vendor': 'ap',
'appname': 'aptv',
},
}
def _real_extract(self, url): def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url) mobj = re.match(self._VALID_URL, url)
video_id = mobj.group('id') video_id = mobj.group('id')
host = mobj.group('host') host = mobj.group('host')
HOST_WEBSITES = {
'vgtv': 'vgtv',
'bt': 'bttv',
}
data = self._download_json( data = self._download_json(
'http://svp.vg.no/svp/api/v1/%s/assets/%s?appName=%s-website' 'http://svp.vg.no/svp/api/v1/%s/assets/%s?appName=%s-website'
% (host, video_id, HOST_WEBSITES[host]),
% (self._HOST_WEBSITES[host]['vendor'], video_id, self._HOST_WEBSITES[host]['appname']),
video_id, 'Downloading media JSON') video_id, 'Downloading media JSON')
if data.get('status') == 'inactive': if data.get('status') == 'inactive':
@ -144,7 +176,7 @@ class VGTVIE(InfoExtractor):
return { return {
'id': video_id, 'id': video_id,
'title': self._live_title(data['title']),
'title': self._live_title(data['title']) if stream_type == 'live' else data['title'],
'description': data['description'], 'description': data['description'],
'thumbnail': data['images']['main'] + '?t[]=900x506q80', 'thumbnail': data['images']['main'] + '?t[]=900x506q80',
'timestamp': data['published'], 'timestamp': data['published'],


Loading…
Cancel
Save