1
1
mirror of https://github.com/ytdl-org/youtube-dl synced 2024-11-30 16:52:57 +01:00

[viidea] add support for sites using viidea service

This commit is contained in:
remitamine 2015-11-06 21:23:41 +01:00 committed by Sergey M․
parent ee4337d100
commit a06bf87a2c
2 changed files with 26 additions and 9 deletions

View File

@ -724,7 +724,6 @@ from .vh1 import VH1IE
from .vice import ViceIE from .vice import ViceIE
from .viddler import ViddlerIE from .viddler import ViddlerIE
from .videodetective import VideoDetectiveIE from .videodetective import VideoDetectiveIE
from .videolecturesnet import VideoLecturesNetIE
from .videofyme import VideofyMeIE from .videofyme import VideofyMeIE
from .videomega import VideoMegaIE from .videomega import VideoMegaIE
from .videopremium import VideoPremiumIE from .videopremium import VideoPremiumIE
@ -734,6 +733,7 @@ from .vidme import VidmeIE
from .vidzi import VidziIE from .vidzi import VidziIE
from .vier import VierIE, VierVideosIE from .vier import VierIE, VierVideosIE
from .viewster import ViewsterIE from .viewster import ViewsterIE
from .viidea import ViideaIE
from .vimeo import ( from .vimeo import (
VimeoIE, VimeoIE,
VimeoAlbumIE, VimeoAlbumIE,

View File

@ -15,9 +15,23 @@ from ..utils import (
) )
class VideoLecturesNetIE(InfoExtractor): class ViideaIE(InfoExtractor):
_VALID_URL = r'http://(?:www\.)?videolectures\.net/(?P<id>[^/]+)(?:/video/(?P<part>\d+))?' _VALID_URL = r'''(?x)http://(?:www\.)?(?:
IE_NAME = 'videolectures.net' videolectures\.net|
flexilearn\.viidea\.net|
presentations\.ocwconsortium\.org|
video\.travel-zoom\.si|
video\.pomp-forum\.si|
tv\.nil\.si|
video\.hekovnik.com|
video\.szko\.si|
kpk\.viidea\.com|
inside\.viidea\.net|
video\.kiberpipa\.org|
bvvideo\.si|
kongres\.viidea\.net|
edemokracija\.viidea\.com
)(?:/lecture)?/(?P<id>[^/]+)(?:/video/(?P<part>\d+))?'''
_TESTS = [{ _TESTS = [{
'url': 'http://videolectures.net/promogram_igor_mekjavic_eng/', 'url': 'http://videolectures.net/promogram_igor_mekjavic_eng/',
@ -87,7 +101,9 @@ class VideoLecturesNetIE(InfoExtractor):
lecture_id = str(cfg['obj_id']) lecture_id = str(cfg['obj_id'])
lecture_data = self._download_json('%s/site/api/lecture/%s?format=json' % (self._proto_relative_url(cfg['livepipe'], 'http:'), lecture_id), lecture_id)['lecture'][0] base_url = self._proto_relative_url(cfg['livepipe'], 'http:')
lecture_data = self._download_json('%s/site/api/lecture/%s?format=json' % (base_url, lecture_id), lecture_id)['lecture'][0]
lecture_info = { lecture_info = {
'id': lecture_id, 'id': lecture_id,
@ -104,7 +120,7 @@ class VideoLecturesNetIE(InfoExtractor):
if len(parts) == 1: if len(parts) == 1:
part = str(parts[0]) part = str(parts[0])
if part: if part:
smil_url = 'http://videolectures.net/%s/video/%s/smil.xml' % (lecture_slug, part) smil_url = '%s/%s/video/%s/smil.xml' % (base_url, lecture_slug, part)
smil = self._download_smil(smil_url, lecture_id) smil = self._download_smil(smil_url, lecture_id)
info = self._parse_smil(smil, smil_url, lecture_id) info = self._parse_smil(smil, smil_url, lecture_id)
info['id'] = '%s_part%s' % (lecture_id, part) info['id'] = '%s_part%s' % (lecture_id, part)
@ -114,13 +130,14 @@ class VideoLecturesNetIE(InfoExtractor):
return info return info
else: else:
for part in parts: for part in parts:
entries.append(self.url_result('http://videolectures.net/%s/video/%s' % (lecture_slug, part), 'VideoLecturesNet')) entries.append(self.url_result('%s/video/%s' % (base_url, lecture_id, part), 'Viidea'))
lecture_info['_type'] = 'multi_video' lecture_info['_type'] = 'multi_video'
else: else:
# Probably a playlist # Probably a playlist
playlist_webpage = self._download_webpage('%s/site/ajax/drilldown/?id=%s' % (base_url, lecture_id), lecture_id)
entries = [ entries = [
self.url_result(compat_urlparse.urljoin(url, video_url), 'VideoLecturesNet') self.url_result(compat_urlparse.urljoin(url, video_url), 'Viidea')
for _, video_url in re.findall(r'<a[^>]+href=(["\'])(.+?)\1[^>]+id=["\']lec=\d+', webpage)] for _, video_url in re.findall(r'<a[^>]+href=(["\'])(.+?)\1[^>]+id=["\']lec=\d+', playlist_webpage)]
lecture_info['_type'] = 'playlist' lecture_info['_type'] = 'playlist'
lecture_info['entries'] = entries lecture_info['entries'] = entries