mirror of
https://github.com/l1ving/youtube-dl
synced 2025-03-10 07:37:20 +08:00
Implement cfscrape for Crunchyroll extractor and check version for cfscrape
This commit is contained in:
parent
a8f83f0c56
commit
7d718bbeea
@ -5,6 +5,11 @@ import re
|
|||||||
import json
|
import json
|
||||||
import xml.etree.ElementTree as etree
|
import xml.etree.ElementTree as etree
|
||||||
import zlib
|
import zlib
|
||||||
|
try:
|
||||||
|
import cfscrape
|
||||||
|
cfscrape_available = True
|
||||||
|
except ImportError:
|
||||||
|
cfscrape_available = False
|
||||||
|
|
||||||
from hashlib import sha1
|
from hashlib import sha1
|
||||||
from math import pow, sqrt, floor
|
from math import pow, sqrt, floor
|
||||||
@ -27,6 +32,7 @@ from ..utils import (
|
|||||||
lowercase_escape,
|
lowercase_escape,
|
||||||
remove_end,
|
remove_end,
|
||||||
sanitized_Request,
|
sanitized_Request,
|
||||||
|
std_headers,
|
||||||
unified_strdate,
|
unified_strdate,
|
||||||
urlencode_postdata,
|
urlencode_postdata,
|
||||||
xpath_text,
|
xpath_text,
|
||||||
@ -56,6 +62,18 @@ class CrunchyrollBaseIE(InfoExtractor):
|
|||||||
if username is None:
|
if username is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if cfscrape_available:
|
||||||
|
if cfscrape.__version__ >= '1.9.0':
|
||||||
|
# Scrape cookie from cloudflare and insert them
|
||||||
|
scraper = cfscrape.create_scraper()
|
||||||
|
tokens = scraper.get_tokens(self._LOGIN_URL, std_headers['User-Agent'])
|
||||||
|
self._set_crunchyroll_cookie('cf_clearance', tokens[0]['cf_clearance'])
|
||||||
|
self._set_crunchyroll_cookie('__cfduid', tokens[0]['__cfduid'])
|
||||||
|
else:
|
||||||
|
self.report_warning('cfscrape version is bellow 1.9.0 please update cfscrape.')
|
||||||
|
else:
|
||||||
|
self.report_warning('cfscrape not found. Please install it if you want use login function for CrunchyRoll.')
|
||||||
|
|
||||||
login_page = self._download_webpage(
|
login_page = self._download_webpage(
|
||||||
self._LOGIN_URL, None, 'Downloading login page')
|
self._LOGIN_URL, None, 'Downloading login page')
|
||||||
|
|
||||||
@ -116,6 +134,9 @@ class CrunchyrollBaseIE(InfoExtractor):
|
|||||||
request.add_header('Accept-Language', '*')
|
request.add_header('Accept-Language', '*')
|
||||||
return super(CrunchyrollBaseIE, self)._download_webpage(request, *args, **kwargs)
|
return super(CrunchyrollBaseIE, self)._download_webpage(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def _set_crunchyroll_cookie(self, name, value):
|
||||||
|
self._set_cookie('crunchyroll.com', name, value)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _add_skip_wall(url):
|
def _add_skip_wall(url):
|
||||||
parsed_url = compat_urlparse.urlparse(url)
|
parsed_url = compat_urlparse.urlparse(url)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user