1
0
mirror of https://github.com/ytdl-org/youtube-dl.git synced 2025-01-30 22:59:48 +00:00

[ninjastream] fix line endings

This commit is contained in:
schnusch 2021-04-30 17:36:47 +02:00
parent db63c10d4e
commit 6b1e477197

View File

@ -1,80 +1,80 @@
# coding: utf-8 # coding: utf-8
from __future__ import unicode_literals from __future__ import unicode_literals
import os import os
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import ExtractorError from ..utils import ExtractorError
class NinjaStreamIE(InfoExtractor): class NinjaStreamIE(InfoExtractor):
""" """
Handles downloading video from ninjastream.to Handles downloading video from ninjastream.to
""" """
_VALID_URL = r'https?://(?:\w+\.)?ninjastream\.to/watch/[0-9a-zA-Z]+' _VALID_URL = r'https?://(?:\w+\.)?ninjastream\.to/watch/[0-9a-zA-Z]+'
_TESTS = [ _TESTS = [
{ {
'url': 'https://ninjastream.to/watch/74GA02Nw6ZYBk', 'url': 'https://ninjastream.to/watch/74GA02Nw6ZYBk',
'info_dict': { 'info_dict': {
'id': '74GA02Nw6ZYBk', 'id': '74GA02Nw6ZYBk',
'ext': 'mp4', 'ext': 'mp4',
'title': 'Damon_Andros_and_Stephen_Harte' 'title': 'Damon_Andros_and_Stephen_Harte'
}, },
} }
] ]
def _real_extract(self, url): def _real_extract(self, url):
""" """
Parses the URL into the video's URL. Parses the URL into the video's URL.
""" """
# Parse the video id # Parse the video id
video_id = self._search_regex( video_id = self._search_regex(
r'https?://(?:\w+\.)?ninjastream\.to/watch/([0-9a-zA-Z]+)', r'https?://(?:\w+\.)?ninjastream\.to/watch/([0-9a-zA-Z]+)',
url, 'video_id', fatal=False, default='') url, 'video_id', fatal=False, default='')
# Get the hosted webpage # Get the hosted webpage
webpage = self._download_webpage(url, video_id) webpage = self._download_webpage(url, video_id)
# The links to the m3u8 file will be buried and html encoded in # The links to the m3u8 file will be buried and html encoded in
# the <file-watch-jwplayer> tag # the <file-watch-jwplayer> tag
jwplayer_link = self._html_search_regex( jwplayer_link = self._html_search_regex(
r'<file-watch-jwplayer (.*)', webpage, r'<file-watch-jwplayer (.*)', webpage,
'file-watch-jwplayer', fatal=False) 'file-watch-jwplayer', fatal=False)
if jwplayer_link is None: if jwplayer_link is None:
raise ExtractorError( raise ExtractorError(
'NinjaStream: Failed to find the file information on the website') 'NinjaStream: Failed to find the file information on the website')
# The v-bind:file will give us the correct title for the video # The v-bind:file will give us the correct title for the video
file_meta = self._parse_json( file_meta = self._parse_json(
self._search_regex(r'v-bind:file=\"(\{.*?\})\"', jwplayer_link, self._search_regex(r'v-bind:file=\"(\{.*?\})\"', jwplayer_link,
video_id), video_id),
video_id, fatal=False) video_id, fatal=False)
filename = video_id filename = video_id
if file_meta is not None: if file_meta is not None:
filename = os.path.splitext(file_meta.get('name'))[0] filename = os.path.splitext(file_meta.get('name'))[0]
# The v-bind:stream will give us the location of the m3u8 file # The v-bind:stream will give us the location of the m3u8 file
stream_meta = self._parse_json( stream_meta = self._parse_json(
self._search_regex(r'v-bind:stream=\"(\{.*?\})\"', self._search_regex(r'v-bind:stream=\"(\{.*?\})\"',
jwplayer_link, video_id), jwplayer_link, video_id),
video_id, fatal=False) video_id, fatal=False)
if stream_meta is None: if stream_meta is None:
raise ExtractorError( raise ExtractorError(
'NinjaStream: Failed to find the m3u8 information on website') 'NinjaStream: Failed to find the m3u8 information on website')
url = '{0}/{1}/index.m3u8'.format(stream_meta['host'], url = '{0}/{1}/index.m3u8'.format(stream_meta['host'],
stream_meta['hash']) stream_meta['hash'])
# Get and parse the m3u8 information # Get and parse the m3u8 information
formats = self._extract_m3u8_formats( formats = self._extract_m3u8_formats(
url, video_id, 'mp4', entry_protocol='m3u8_native', url, video_id, 'mp4', entry_protocol='m3u8_native',
m3u8_id='hls', fatal=False) m3u8_id='hls', fatal=False)
return { return {
'formats': formats, 'formats': formats,
'id': video_id, 'id': video_id,
'title': filename, 'title': filename,
} }