quasarr 2.3.2__py3-none-any.whl → 2.3.3__py3-none-any.whl

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.

@@ -33,16 +33,16 @@ def setup_sponsors_helper_routes(app):
33
33
  if not protected:
34
34
  return abort(404, "No encrypted packages found")
35
35
 
36
- # Find the first package without a "session" key
36
+ # Find the first package that hasn't been disabled
37
37
  selected_package = None
38
38
  for package in protected:
39
39
  data = json.loads(package[1])
40
- if "session" not in data:
40
+ if "disabled" not in data:
41
41
  selected_package = (package[0], data)
42
42
  break
43
43
 
44
44
  if not selected_package:
45
- return abort(404, "No valid packages without session found")
45
+ return abort(404, "No valid packages found")
46
46
 
47
47
  package_id, data = selected_package
48
48
  title = data["title"]
@@ -67,9 +67,9 @@ def setup_sponsors_helper_routes(app):
67
67
  except Exception as e:
68
68
  return abort(500, str(e))
69
69
 
70
- @app.post("/sponsors_helper/api/to_download/")
70
+ @app.post("/sponsors_helper/api/download/")
71
71
  @require_api_key
72
- def to_download_api():
72
+ def download_api():
73
73
  try:
74
74
  data = request.json
75
75
  title = data.get('name')
@@ -97,51 +97,39 @@ def setup_sponsors_helper_routes(app):
97
97
  StatsHelper(shared_state).increment_failed_decryptions_automatic()
98
98
  return abort(500, "Failed")
99
99
 
100
- @app.post("/sponsors_helper/api/to_replace/")
100
+ @app.post("/sponsors_helper/api/disable/")
101
101
  @require_api_key
102
- def to_replace_api():
102
+ def disable_api():
103
103
  try:
104
104
  data = request.json
105
- name = data.get('name')
106
105
  package_id = data.get('package_id')
107
- password = data.get('password')
108
- replace_url = data.get('replace_url')
109
- mirror = data.get('mirror')
110
- session = data.get('session')
111
-
112
- if not all([name, package_id, replace_url, mirror, session]):
113
- info("Missing required replacement data")
114
- return {"error": "Missing required replacement data"}, 400
115
-
116
- if password is None:
117
- password = ""
118
-
119
- blob = json.dumps(
120
- {
121
- "title": name,
122
- "links": [replace_url, mirror],
123
- "size_mb": 0,
124
- "password": password,
125
- "mirror": mirror,
126
- "session": session
127
- })
128
106
 
129
- shared_state.get_db("protected").update_store(package_id, blob)
107
+ if not package_id:
108
+ return {"error": "Missing package_id"}, 400
109
+
110
+ StatsHelper(shared_state).increment_failed_decryptions_automatic()
130
111
 
131
- info(f"Another CAPTCHA solution is required for {mirror} link: {replace_url}")
112
+ blob = shared_state.get_db("protected").retrieve(package_id)
113
+ package_data = json.loads(blob)
114
+ title = package_data.get('title')
115
+
116
+ package_data["disabled"] = True
117
+
118
+ shared_state.get_db("protected").update_store(package_id, json.dumps(package_data))
119
+
120
+ info(f"Disabled package {title}")
132
121
 
133
122
  StatsHelper(shared_state).increment_captcha_decryptions_automatic()
134
123
 
135
- return f"Replacement link stored for {name}"
124
+ return f"Package {title} disabled"
136
125
 
137
126
  except Exception as e:
138
- StatsHelper(shared_state).increment_failed_decryptions_automatic()
139
- info(f"Error handling replacement: {e}")
127
+ info(f"Error handling disable: {e}")
140
128
  return {"error": str(e)}, 500
141
129
 
142
- @app.delete("/sponsors_helper/api/to_failed/")
130
+ @app.delete("/sponsors_helper/api/fail/")
143
131
  @require_api_key
144
- def move_to_failed_api():
132
+ def fail_api():
145
133
  try:
146
134
  StatsHelper(shared_state).increment_failed_decryptions_automatic()
147
135
 
@@ -165,7 +153,7 @@ def setup_sponsors_helper_routes(app):
165
153
 
166
154
  @app.put("/sponsors_helper/api/set_sponsor_status/")
167
155
  @require_api_key
168
- def activate_sponsor_status():
156
+ def set_sponsor_status_api():
169
157
  try:
170
158
  data = request.body.read().decode("utf-8")
171
159
  payload = json.loads(data)
@@ -8,7 +8,7 @@ import requests
8
8
 
9
9
 
10
10
  def get_version():
11
- return "2.3.2"
11
+ return "2.3.3"
12
12
 
13
13
 
14
14
  def get_latest_version():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quasarr
3
- Version: 2.3.2
3
+ Version: 2.3.3
4
4
  Summary: Quasarr connects JDownloader with Radarr, Sonarr and LazyLibrarian. It also decrypts links protected by CAPTCHAs.
5
5
  Home-page: https://github.com/rix1337/Quasarr
6
6
  Author: rix1337
@@ -4,7 +4,7 @@ quasarr/api/arr/__init__.py,sha256=eEop8A5t936uT5azn4qz0bq1DMX84_Ja16wyleGFhyM,1
4
4
  quasarr/api/captcha/__init__.py,sha256=Mqg2HhWMaUc07cVaEYHAbf-YvnxkiYVbkWT-g92J-2k,72960
5
5
  quasarr/api/config/__init__.py,sha256=q-7vK5YULrSDgTicho--bNK8aAhcbzCdhhNwEwUEwWg,14173
6
6
  quasarr/api/packages/__init__.py,sha256=ox0vzuXByag49RUEwYPWtMacsXl_iksvubHgDmG5RWQ,25192
7
- quasarr/api/sponsors_helper/__init__.py,sha256=vZIFGkc5HTRozjvi47tqxz6XpwDe8sDXVyeydc9k0Y0,6708
7
+ quasarr/api/sponsors_helper/__init__.py,sha256=1NREbllGaWFfFtnwixR936qBJmlAkqCupHtWrphpe5A,6137
8
8
  quasarr/api/statistics/__init__.py,sha256=0Os2rbqQ8ZN3R0XAavGVHlacKsAjp7GYjEIJCwvnsl8,7063
9
9
  quasarr/downloads/__init__.py,sha256=ikoHK5C8veDiU4M3eoDaUjFl0pYPSa91_7h65qEFiUM,16435
10
10
  quasarr/downloads/linkcrypters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -44,7 +44,7 @@ quasarr/providers/obfuscated.py,sha256=EYm_7SfdJd9ae_m4HZgY9ruDXC5J9hb4KEV_WAnk-
44
44
  quasarr/providers/shared_state.py,sha256=5a_ZbGqTvt4-OqBt2a1WtR9I5J_Ky7IlkEY8EGtKVu8,30646
45
45
  quasarr/providers/statistics.py,sha256=cEQixYnDMDqtm5wWe40E_2ucyo4mD0n3SrfelhQi1L8,6452
46
46
  quasarr/providers/utils.py,sha256=mcUPbcXMsLmrYv0CTZO5a9aOt2-JLyL3SZxu6N8OyjU,12075
47
- quasarr/providers/version.py,sha256=SOiiYu52mdnbNCFK5iCGtzvQ0XMh6AbCbN3NFCotiF8,4003
47
+ quasarr/providers/version.py,sha256=7ylGTRMzi1TRneo7pwdAqP2unQYxH49tCK0kqbRUFyU,4003
48
48
  quasarr/providers/web_server.py,sha256=AYd0KRxdDWMBr87BP8wlSMuL4zZo0I_rY-vHBai6Pfg,1688
49
49
  quasarr/providers/sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  quasarr/providers/sessions/al.py,sha256=AQ59vVU7uQSuwZLNppNsZAFvpow3zcxQ29dirPbyYc4,13432
@@ -74,9 +74,9 @@ quasarr/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  quasarr/storage/config.py,sha256=SSTgIce2FVYoVTK_6OCU3msknhxuLA3EC4Kcrrf_dxQ,6378
75
75
  quasarr/storage/setup.py,sha256=Cbo0phZbC6JP2wx_qER3vpaLSTDLbKEfdXj6KoAMkWw,47403
76
76
  quasarr/storage/sqlite_database.py,sha256=yMqFQfKf0k7YS-6Z3_7pj4z1GwWSXJ8uvF4IydXsuTE,3554
77
- quasarr-2.3.2.dist-info/licenses/LICENSE,sha256=QQFCAfDgt7lSA8oSWDHIZ9aTjFbZaBJdjnGOHkuhK7k,1060
78
- quasarr-2.3.2.dist-info/METADATA,sha256=iF4XkBvoRySRgnKxa57ezN0mvvpKs0F8V6Qr3hEjgFA,15024
79
- quasarr-2.3.2.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
80
- quasarr-2.3.2.dist-info/entry_points.txt,sha256=gXi8mUKsIqKVvn-bOc8E5f04sK_KoMCC-ty6b2Hf-jc,40
81
- quasarr-2.3.2.dist-info/top_level.txt,sha256=dipJdaRda5ruTZkoGfZU60bY4l9dtPlmOWwxK_oGSF0,8
82
- quasarr-2.3.2.dist-info/RECORD,,
77
+ quasarr-2.3.3.dist-info/licenses/LICENSE,sha256=QQFCAfDgt7lSA8oSWDHIZ9aTjFbZaBJdjnGOHkuhK7k,1060
78
+ quasarr-2.3.3.dist-info/METADATA,sha256=n02_HYJ7qpsk6QSoc7Qq6zIT3QQAsq7tlzBg15MNE1g,15024
79
+ quasarr-2.3.3.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
80
+ quasarr-2.3.3.dist-info/entry_points.txt,sha256=gXi8mUKsIqKVvn-bOc8E5f04sK_KoMCC-ty6b2Hf-jc,40
81
+ quasarr-2.3.3.dist-info/top_level.txt,sha256=dipJdaRda5ruTZkoGfZU60bY4l9dtPlmOWwxK_oGSF0,8
82
+ quasarr-2.3.3.dist-info/RECORD,,