quasarr 1.26.5__tar.gz → 1.26.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of quasarr might be problematic. Click here for more details.
- {quasarr-1.26.5 → quasarr-1.26.7}/PKG-INFO +1 -1
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/__init__.py +7 -27
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/api/arr/__init__.py +2 -1
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/version.py +1 -1
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr.egg-info/PKG-INFO +1 -1
- {quasarr-1.26.5 → quasarr-1.26.7}/LICENSE +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/README.md +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/api/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/api/captcha/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/api/config/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/api/sponsors_helper/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/api/statistics/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/linkcrypters/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/linkcrypters/al.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/linkcrypters/filecrypt.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/linkcrypters/hide.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/packages/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/al.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/by.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/dd.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/dj.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/dl.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/dt.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/dw.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/he.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/mb.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/nk.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/nx.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/sf.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/sj.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/sl.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/wd.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/downloads/sources/wx.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/cloudflare.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/html_images.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/html_templates.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/imdb_metadata.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/log.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/myjd_api.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/notifications.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/obfuscated.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/sessions/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/sessions/al.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/sessions/dd.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/sessions/dl.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/sessions/nx.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/shared_state.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/statistics.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/providers/web_server.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/al.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/by.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/dd.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/dj.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/dl.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/dt.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/dw.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/fx.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/he.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/mb.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/nk.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/nx.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/sf.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/sj.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/sl.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/wd.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/search/sources/wx.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/storage/__init__.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/storage/config.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/storage/setup.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr/storage/sqlite_database.py +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr.egg-info/SOURCES.txt +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr.egg-info/dependency_links.txt +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr.egg-info/entry_points.txt +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr.egg-info/not-zip-safe +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr.egg-info/requires.txt +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/quasarr.egg-info/top_level.txt +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/setup.cfg +0 -0
- {quasarr-1.26.5 → quasarr-1.26.7}/setup.py +0 -0
|
@@ -10,8 +10,9 @@ import socket
|
|
|
10
10
|
import sys
|
|
11
11
|
import tempfile
|
|
12
12
|
import time
|
|
13
|
-
from urllib.parse import urlparse
|
|
13
|
+
from urllib.parse import urlparse, urljoin, parse_qs
|
|
14
14
|
|
|
15
|
+
import dukpy
|
|
15
16
|
import requests
|
|
16
17
|
|
|
17
18
|
from quasarr.api import get_api
|
|
@@ -117,8 +118,7 @@ def run():
|
|
|
117
118
|
print("\n===== Hostnames =====")
|
|
118
119
|
try:
|
|
119
120
|
if arguments.hostnames:
|
|
120
|
-
hostnames_link =
|
|
121
|
-
|
|
121
|
+
hostnames_link = arguments.hostnames
|
|
122
122
|
if is_valid_url(hostnames_link):
|
|
123
123
|
print(f"Extracting hostnames from {hostnames_link}...")
|
|
124
124
|
allowed_keys = supported_hostnames
|
|
@@ -391,31 +391,9 @@ def check_flaresolverr(shared_state, flaresolverr_url):
|
|
|
391
391
|
print(f"Failed to connect to FlareSolverr: {e}")
|
|
392
392
|
return False
|
|
393
393
|
|
|
394
|
-
|
|
395
|
-
def make_raw_pastebin_link(url):
|
|
396
|
-
"""
|
|
397
|
-
Takes a Pastebin URL and ensures it is a raw link.
|
|
398
|
-
If it's not a Pastebin URL, it returns the URL unchanged.
|
|
399
|
-
"""
|
|
400
|
-
# Check if the URL is already a raw Pastebin link
|
|
401
|
-
if re.match(r"https?://(?:www\.)?pastebin\.com/raw/\w+", url):
|
|
402
|
-
return url # Already raw, return as is
|
|
403
|
-
|
|
404
|
-
# Check if the URL is a standard Pastebin link
|
|
405
|
-
pastebin_pattern = r"https?://(?:www\.)?pastebin\.com/(\w+)"
|
|
406
|
-
match = re.match(pastebin_pattern, url)
|
|
407
|
-
|
|
408
|
-
if match:
|
|
409
|
-
paste_id = match.group(1)
|
|
410
|
-
print(f"The link you provided is not a raw Pastebin link. Attempting to convert it to a raw link from {url}...")
|
|
411
|
-
return f"https://pastebin.com/raw/{paste_id}"
|
|
412
|
-
|
|
413
|
-
return url # Not a Pastebin link, return unchanged
|
|
414
|
-
|
|
415
|
-
|
|
416
394
|
def is_valid_url(url):
|
|
417
|
-
if "
|
|
418
|
-
print("Example URL detected. Please provide a valid URL found on pastebin or
|
|
395
|
+
if "/raw/eX4Mpl3" in url:
|
|
396
|
+
print("Example URL detected. Please provide a valid URL found on pastebin or any other public site!")
|
|
419
397
|
return False
|
|
420
398
|
|
|
421
399
|
parsed = urlparse(url)
|
|
@@ -461,6 +439,8 @@ def extract_kv_pairs(input_text, allowed_keys):
|
|
|
461
439
|
if match:
|
|
462
440
|
key, value = match.groups()
|
|
463
441
|
kv_pairs[key] = value
|
|
442
|
+
elif "[Hostnames]" in line:
|
|
443
|
+
pass
|
|
464
444
|
else:
|
|
465
445
|
print(f"Skipping line because it does not contain any supported hostname: {line}")
|
|
466
446
|
|
|
@@ -353,7 +353,8 @@ def setup_arr_routes(app):
|
|
|
353
353
|
<enclosure url="{release.get("link", "")}" length="{release.get("size", 0)}" type="application/x-nzb" />
|
|
354
354
|
</item>'''
|
|
355
355
|
|
|
356
|
-
|
|
356
|
+
is_feed_request = not getattr(request.query, 'imdbid', '')
|
|
357
|
+
if is_feed_request and not items:
|
|
357
358
|
items = f'''
|
|
358
359
|
<item>
|
|
359
360
|
<title>No results found</title>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|