Browse Source

[joj] Add extractor

master-ytdl-org
luboss 7 years ago
committed by Sergey M․
parent
commit
256a746d21
No known key found for this signature in database GPG Key ID: 2C393E0F18A9236D
2 changed files with 57 additions and 0 deletions
  1. +1
    -0
      youtube_dl/extractor/extractors.py
  2. +56
    -0
      youtube_dl/extractor/joj.py

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

@ -470,6 +470,7 @@ from .jamendo import (
) )
from .jeuxvideo import JeuxVideoIE from .jeuxvideo import JeuxVideoIE
from .jove import JoveIE from .jove import JoveIE
from .joj import JojIE
from .jwplatform import JWPlatformIE from .jwplatform import JWPlatformIE
from .jpopsukitv import JpopsukiIE from .jpopsukitv import JpopsukiIE
from .kaltura import KalturaIE from .kaltura import KalturaIE


+ 56
- 0
youtube_dl/extractor/joj.py View File

@ -0,0 +1,56 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
import re
class JojIE(InfoExtractor):
_VALID_URL = r'https?://[a-z0-9]+\.joj\.sk/([^/]+/)*(?P<title_query>(?P<release_date>[0-9]{4}(-[0-9]{2}){2}).*)' # noqa
_TESTS = [{
'url': 'https://www.joj.sk/nove-byvanie/archiv/2017-05-28-nove-byvanie', # noqa
'info_dict': {
'id': 'a388ec4c-6019-4a4a-9312-b1bee194e932',
'ext': 'mp4',
'title': 'Nové Bývanie',
'release_date': '20170528'
}
}, {
'url': 'http://nasi.joj.sk/epizody/2016-09-06-stari-rodicia',
'info_dict': {
'id': 'f18b2c5f-9ea8-4941-a164-a814c53306ad',
'ext': 'mp4',
'title': 'Starí Rodičia',
'release_date': '20160906'
}
}]
media_src_url = 'http://n16.joj.sk/storage/'
xml_source_url = 'https://media.joj.sk/services/Video.php?clip='
def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url)
release_date = mobj.group('release_date').replace('-', '')
webpage = self._download_webpage(url, 'id')
video_id = self._html_search_regex(
r'https?://([a-z0-9]+\.)joj\.sk/embed/(?P<video_id>[a-f0-9\-]+)',
webpage, 'id', group='video_id')
xml_playlist_url = self.xml_source_url + video_id
xml_playlist_et = self._download_xml(xml_playlist_url, 'XML playlist')
formats = []
for file_el in xml_playlist_et.findall('files/file'):
try:
height = int(file_el.attrib['id'].replace('p', ''))
except ValueError:
height = 0
formats.append({'height': height,
'url': self.media_src_url + file_el.attrib['path'].replace( # noqa
'dat/', '', 1)})
self._sort_formats(formats)
return {
'id': video_id,
'title': self._og_search_title(webpage).title(),
'formats': formats,
'release_date': release_date
}

Loading…
Cancel
Save