Skip to content

Commit

Permalink
release: v3.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
newt-sc committed Apr 9, 2022
1 parent 6726783 commit 8fb9bc1
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 22 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
* [v3.3.0](https://github.com/newt-sc/a4kSubtitles/releases/tag/service.subtitles.a4ksubtitles%2Fservice.subtitles.a4ksubtitles-3.3.0):
* Improve Subscene support

* [v3.2.0](https://github.com/newt-sc/a4kSubtitles/releases/tag/service.subtitles.a4ksubtitles%2Fservice.subtitles.a4ksubtitles-3.2.0):
* Option to disable subs encoding detection

Expand Down
48 changes: 29 additions & 19 deletions a4kSubtitles/lib/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
from requests import adapters
from .third_party.cloudscraper import cloudscraper

scraper = cloudscraper.create_scraper(interpreter='native')

class TLSAdapter(adapters.HTTPAdapter):
def init_poolmanager(self, connections, maxsize, block=False):
ctx = ssl.create_default_context()
Expand All @@ -25,49 +23,61 @@ def init_poolmanager(self, connections, maxsize, block=False):

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

def __retry_on_503(core, request, response, retry=True):
if not retry:
def __retry(core, request, response, next, cfscrape, retry=0):
if retry > 5:
return None

if response.status_code == 503:
core.time.sleep(2)
request['validate'] = lambda response: __retry_on_503(core, request, response, retry=False)
if response.status_code in [503, 429, 403]:
if response.status_code == 503:
core.time.sleep(2)
retry = 5
if response.status_code == 429:
core.time.sleep(3)

retry += 1
request['validate'] = lambda response: __retry(core, request, response, next, cfscrape, retry)
request['next'] = next
request['cfscrape'] = cfscrape
return request

def execute(core, request, progress=True):
def execute(core, request, progress=True, session=None):
try: default_timeout = get_int_setting('general.timeout')
except: default_timeout = 10
request.setdefault('timeout', default_timeout)

if progress and core.progress_dialog and not core.progress_dialog.dialog:
core.progress_dialog.open()

validate = request.pop('validate', None)
next = request.pop('next', None)

cfscrape = 'cfscrape' in request
request.pop('cfscrape', None)

validate = request.pop('validate', None)
if not validate:
validate = lambda response: __retry_on_503(core, request, response)
validate = lambda response: __retry(core, request, response, next, cfscrape)

if next:
request.pop('stream', None)

use_cfscrape = 'cfscrape' in request
request.pop('cfscrape', None)

logger.debug('%s ^ - %s, %s' % (request['method'], request['url'], core.json.dumps(request.get('params', {}))))
try:
if use_cfscrape:
if cfscrape:
request.pop('cfscrape', None)
response = scraper.request(**request)
if not session:
session = cloudscraper.create_scraper(interpreter='native')
response = session.request(**request)
else:
session = requests.session()
session.mount('https://', TLSAdapter())
response = session.request(**request)
exc = ''
except: # pragma: no cover
try:
if use_cfscrape:
response = scraper.request(verify=False, **request)
if cfscrape:
if not session:
session = cloudscraper.create_scraper(interpreter='native')
response = session.request(verify=False, **request)
else:
response = requests.request(verify=False, **request)
exc = ''
Expand All @@ -81,12 +91,12 @@ def execute(core, request, progress=True):

alt_request = validate(response)
if alt_request:
return execute(core, alt_request)
return execute(core, alt_request, progress)

if next and response.status_code == 200:
next_request = next(response)
if next_request:
return execute(core, next_request)
return execute(core, next_request, progress, session)
else:
return None

Expand Down
5 changes: 4 additions & 1 deletion addon.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="service.subtitles.a4ksubtitles"
name="a4kSubtitles"
version="3.2.0"
version="3.3.0"
provider-name="Unknown">
<requires>
<import addon="script.module.requests"/>
Expand All @@ -27,6 +27,9 @@ Supports: OpenSubtitles, BSPlayer, Podnadpisi.NET, Subscene, Addic7ed
<screenshot>screenshot-03.png</screenshot>
</assets>
<news>
[v3.3.0]:
* Improve Subscene support

[v3.2.0]:
* Option to disable subs encoding detection

Expand Down
5 changes: 4 additions & 1 deletion packages/addons.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<addons>
<addon id="service.subtitles.a4ksubtitles"
name="a4kSubtitles"
version="3.2.0"
version="3.3.0"
provider-name="Unknown">
<requires>
<import addon="script.module.requests"/>
Expand All @@ -30,6 +30,9 @@ Supports: OpenSubtitles, BSPlayer, Podnadpisi.NET, Subscene, Addic7ed
<screenshot>screenshot-03.png</screenshot>
</assets>
<news>
[v3.3.0]:
* Improve Subscene support

[v3.2.0]:
* Option to disable subs encoding detection

Expand Down
2 changes: 1 addition & 1 deletion packages/addons.xml.crc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6baf7dad65ef3a17be84eac6b4e44116e6c36dd4
987317e4c323b196e55eb76650a30619b6fd9e7a

0 comments on commit 8fb9bc1

Please sign in to comment.