mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-26 02:55:17 +00:00
[MySpass] Fix video url processing (#2510)
Closes #2507 Authored by: trassshhub
This commit is contained in:
parent
706dfe441b
commit
b72270d27e
1 changed files with 51 additions and 12 deletions
|
@ -1,8 +1,6 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import re
|
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from ..compat import compat_str
|
from ..compat import compat_str
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
|
@ -13,33 +11,74 @@
|
||||||
|
|
||||||
|
|
||||||
class MySpassIE(InfoExtractor):
|
class MySpassIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?myspass\.de/([^/]+/)*(?P<id>\d+)'
|
_VALID_URL = r'https?://(?:www\.)?myspass\.de/(?:[^/]+/)*(?P<id>\d+)/?[^/]*$'
|
||||||
_TEST = {
|
_TESTS = [{
|
||||||
'url': 'http://www.myspass.de/myspass/shows/tvshows/absolute-mehrheit/Absolute-Mehrheit-vom-17022013-Die-Highlights-Teil-2--/11741/',
|
'url': 'http://www.myspass.de/myspass/shows/tvshows/absolute-mehrheit/Absolute-Mehrheit-vom-17022013-Die-Highlights-Teil-2--/11741/',
|
||||||
'md5': '0b49f4844a068f8b33f4b7c88405862b',
|
'md5': '0b49f4844a068f8b33f4b7c88405862b',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '11741',
|
'id': '11741',
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'description': 'Wer kann in die Fußstapfen von Wolfgang Kubicki treten und die Mehrheit der Zuschauer hinter sich versammeln? Wird vielleicht sogar die Absolute Mehrheit geknackt und der Jackpot von 200.000 Euro mit nach Hause genommen?',
|
'description': 'md5:9f0db5044c8fe73f528a390498f7ce9b',
|
||||||
'title': '17.02.2013 - Die Highlights, Teil 2',
|
'title': '17.02.2013 - Die Highlights, Teil 2',
|
||||||
|
'thumbnail': r're:.*\.jpg',
|
||||||
|
'duration': 323.0,
|
||||||
|
'episode': '17.02.2013 - Die Highlights, Teil 2',
|
||||||
|
'season_id': '544',
|
||||||
|
'episode_number': 1,
|
||||||
|
'series': 'Absolute Mehrheit',
|
||||||
|
'season_number': 2,
|
||||||
|
'season': 'Season 2',
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
'url': 'https://www.myspass.de/shows/tvshows/tv-total/Novak-Puffovic-bei-bester-Laune--/44996/',
|
||||||
|
'md5': 'eb28b7c5e254192046e86ebaf7deac8f',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '44996',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'description': 'md5:74c7f886e00834417f1e427ab0da6121',
|
||||||
|
'title': 'Novak Puffovic bei bester Laune',
|
||||||
|
'thumbnail': r're:.*\.jpg',
|
||||||
|
'episode_number': 8,
|
||||||
|
'episode': 'Novak Puffovic bei bester Laune',
|
||||||
|
'series': 'TV total',
|
||||||
|
'season': 'Season 19',
|
||||||
|
'season_id': '987',
|
||||||
|
'duration': 2941.0,
|
||||||
|
'season_number': 19,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'url': 'https://www.myspass.de/channels/tv-total-raabigramm/17033/20831/',
|
||||||
|
'md5': '7b293a6b9f3a7acdd29304c8d0dbb7cc',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '20831',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'description': 'Gefühle pur: Schaut euch die ungeschnittene Version von Stefans Liebesbeweis an die Moderationsgrazie von Welt, Verona Feldbusch, an.',
|
||||||
|
'title': 'Raabigramm Verona Feldbusch',
|
||||||
|
'thumbnail': r're:.*\.jpg',
|
||||||
|
'episode_number': 6,
|
||||||
|
'episode': 'Raabigramm Verona Feldbusch',
|
||||||
|
'series': 'TV total',
|
||||||
|
'season': 'Season 1',
|
||||||
|
'season_id': '34',
|
||||||
|
'duration': 105.0,
|
||||||
|
'season_number': 1,
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
video_id = self._match_id(url)
|
video_id = self._match_id(url)
|
||||||
|
|
||||||
metadata = self._download_xml(
|
metadata = self._download_xml('http://www.myspass.de/myspass/includes/apps/video/getvideometadataxml.php?id=' + video_id, video_id)
|
||||||
'http://www.myspass.de/myspass/includes/apps/video/getvideometadataxml.php?id=' + video_id,
|
|
||||||
video_id)
|
|
||||||
|
|
||||||
title = xpath_text(metadata, 'title', fatal=True)
|
title = xpath_text(metadata, 'title', fatal=True)
|
||||||
video_url = xpath_text(metadata, 'url_flv', 'download url', True)
|
video_url = xpath_text(metadata, 'url_flv', 'download url', True)
|
||||||
video_id_int = int(video_id)
|
video_id_int = int(video_id)
|
||||||
for group in re.search(r'/myspass2009/\d+/(\d+)/(\d+)/(\d+)/', video_url).groups():
|
for group in self._search_regex(r'/myspass2009/\d+/(\d+)/(\d+)/(\d+)/', video_url, 'myspass', group=(1, 2, 3), default=[]):
|
||||||
group_int = int(group)
|
group_int = int(group)
|
||||||
if group_int > video_id_int:
|
if group_int > video_id_int:
|
||||||
video_url = video_url.replace(
|
video_url = video_url.replace(group, compat_str(group_int // video_id_int))
|
||||||
group, compat_str(group_int // video_id_int))
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
|
|
Loading…
Reference in a new issue