X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fbitchute.py;h=4f39424f59ee12bb5adb916e707b3a33e9d35e58;hb=56667d622c3f6e7594a04f8cd5f4371875940725;hp=28016f18b23c77471177e57d5f750b5ff8e348cc;hpb=b65e3b0636c4b992f3187bff7d5268c6891023a6;p=youtube-dl
diff --git a/youtube_dl/extractor/bitchute.py b/youtube_dl/extractor/bitchute.py
index 28016f18b..4f39424f5 100644
--- a/youtube_dl/extractor/bitchute.py
+++ b/youtube_dl/extractor/bitchute.py
@@ -5,7 +5,10 @@ import itertools
import re
from .common import InfoExtractor
-from ..utils import urlencode_postdata
+from ..utils import (
+ orderedSet,
+ urlencode_postdata,
+)
class BitChuteIE(InfoExtractor):
@@ -33,18 +36,26 @@ class BitChuteIE(InfoExtractor):
video_id = self._match_id(url)
webpage = self._download_webpage(
- 'https://www.bitchute.com/video/%s' % video_id, video_id)
+ 'https://www.bitchute.com/video/%s' % video_id, video_id, headers={
+ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.57 Safari/537.36',
+ })
- title = self._search_regex(
+ title = self._html_search_regex(
(r'<[^>]+\bid=["\']video-title[^>]+>([^<]+)', r'
([^<]+)'),
webpage, 'title', default=None) or self._html_search_meta(
'description', webpage, 'title',
default=None) or self._og_search_description(webpage)
+ format_urls = []
+ for mobj in re.finditer(
+ r'addWebSeed\s*\(\s*(["\'])(?P(?:(?!\1).)+)\1', webpage):
+ format_urls.append(mobj.group('url'))
+ format_urls.extend(re.findall(r'as=(https?://[^&"\']+)', webpage))
+
formats = [
- {'url': mobj.group('url')}
- for mobj in re.finditer(
- r'addWebSeed\s*\(\s*(["\'])(?P(?:(?!\1).)+)\1', webpage)]
+ {'url': format_url}
+ for format_url in orderedSet(format_urls)]
+ self._check_formats(formats, video_id)
self._sort_formats(formats)
description = self._html_search_regex(
@@ -81,14 +92,15 @@ class BitChuteChannelIE(InfoExtractor):
def _entries(self, channel_id):
channel_url = 'https://www.bitchute.com/channel/%s/' % channel_id
- for page_num in itertools.count(0):
+ offset = 0
+ for page_num in itertools.count(1):
data = self._download_json(
'%sextend/' % channel_url, channel_id,
- 'Downloading channel page %d' % (page_num + 1),
+ 'Downloading channel page %d' % page_num,
data=urlencode_postdata({
'csrfmiddlewaretoken': self._TOKEN,
'name': '',
- 'offset': page_num * 25
+ 'offset': offset,
}), headers={
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Referer': channel_url,
@@ -105,6 +117,7 @@ class BitChuteChannelIE(InfoExtractor):
html)
if not video_ids:
break
+ offset += len(video_ids)
for video_id in video_ids:
yield self.url_result(
'https://www.bitchute.com/video/%s' % video_id,