quasarr 2.4.5__tar.gz → 2.4.6__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.

Files changed (95) hide show
  1. {quasarr-2.4.5 → quasarr-2.4.6}/.github/workflows/Beta.yml +17 -12
  2. {quasarr-2.4.5 → quasarr-2.4.6}/.github/workflows/Release.yml +23 -19
  3. {quasarr-2.4.5 → quasarr-2.4.6}/.gitignore +2 -2
  4. {quasarr-2.4.5 → quasarr-2.4.6}/PKG-INFO +1 -1
  5. {quasarr-2.4.5 → quasarr-2.4.6}/docker/Dockerfile +4 -1
  6. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/shared_state.py +2 -1
  7. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/version.py +1 -1
  8. {quasarr-2.4.5 → quasarr-2.4.6}/.github/Changelog.md +0 -0
  9. {quasarr-2.4.5 → quasarr-2.4.6}/.github/FUNDING.yml +0 -0
  10. {quasarr-2.4.5 → quasarr-2.4.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  11. {quasarr-2.4.5 → quasarr-2.4.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  12. {quasarr-2.4.5 → quasarr-2.4.6}/.github/workflows/HostnameRedaction.yml +0 -0
  13. {quasarr-2.4.5 → quasarr-2.4.6}/.github/workflows/PrVersionBumpCheck.yml +0 -0
  14. {quasarr-2.4.5 → quasarr-2.4.6}/LICENSE +0 -0
  15. {quasarr-2.4.5 → quasarr-2.4.6}/Quasarr.png +0 -0
  16. {quasarr-2.4.5 → quasarr-2.4.6}/Quasarr.py +0 -0
  17. {quasarr-2.4.5 → quasarr-2.4.6}/README.md +0 -0
  18. {quasarr-2.4.5 → quasarr-2.4.6}/docker/dev-services-compose.yml +0 -0
  19. {quasarr-2.4.5 → quasarr-2.4.6}/docker/dev-setup.md +0 -0
  20. {quasarr-2.4.5 → quasarr-2.4.6}/docker/docker-compose.yml +0 -0
  21. {quasarr-2.4.5 → quasarr-2.4.6}/pyproject.toml +0 -0
  22. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/__init__.py +0 -0
  23. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/api/__init__.py +0 -0
  24. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/api/arr/__init__.py +0 -0
  25. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/api/captcha/__init__.py +0 -0
  26. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/api/config/__init__.py +0 -0
  27. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/api/packages/__init__.py +0 -0
  28. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/api/sponsors_helper/__init__.py +0 -0
  29. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/api/statistics/__init__.py +0 -0
  30. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/__init__.py +0 -0
  31. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/linkcrypters/__init__.py +0 -0
  32. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/linkcrypters/al.py +0 -0
  33. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/linkcrypters/filecrypt.py +0 -0
  34. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/linkcrypters/hide.py +0 -0
  35. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/packages/__init__.py +0 -0
  36. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/__init__.py +0 -0
  37. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/al.py +0 -0
  38. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/by.py +0 -0
  39. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/dd.py +0 -0
  40. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/dj.py +0 -0
  41. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/dl.py +0 -0
  42. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/dt.py +0 -0
  43. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/dw.py +0 -0
  44. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/he.py +0 -0
  45. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/mb.py +0 -0
  46. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/nk.py +0 -0
  47. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/nx.py +0 -0
  48. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/sf.py +0 -0
  49. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/sj.py +0 -0
  50. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/sl.py +0 -0
  51. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/wd.py +0 -0
  52. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/downloads/sources/wx.py +0 -0
  53. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/__init__.py +0 -0
  54. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/auth.py +0 -0
  55. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/cloudflare.py +0 -0
  56. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/hostname_issues.py +0 -0
  57. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/html_images.py +0 -0
  58. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/html_templates.py +0 -0
  59. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/imdb_metadata.py +0 -0
  60. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/jd_cache.py +0 -0
  61. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/log.py +0 -0
  62. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/myjd_api.py +0 -0
  63. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/notifications.py +0 -0
  64. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/obfuscated.py +0 -0
  65. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/sessions/__init__.py +0 -0
  66. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/sessions/al.py +0 -0
  67. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/sessions/dd.py +0 -0
  68. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/sessions/dl.py +0 -0
  69. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/sessions/nx.py +0 -0
  70. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/statistics.py +0 -0
  71. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/utils.py +0 -0
  72. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/providers/web_server.py +0 -0
  73. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/__init__.py +0 -0
  74. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/__init__.py +0 -0
  75. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/al.py +0 -0
  76. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/by.py +0 -0
  77. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/dd.py +0 -0
  78. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/dj.py +0 -0
  79. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/dl.py +0 -0
  80. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/dt.py +0 -0
  81. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/dw.py +0 -0
  82. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/fx.py +0 -0
  83. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/he.py +0 -0
  84. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/mb.py +0 -0
  85. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/nk.py +0 -0
  86. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/nx.py +0 -0
  87. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/sf.py +0 -0
  88. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/sj.py +0 -0
  89. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/sl.py +0 -0
  90. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/wd.py +0 -0
  91. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/search/sources/wx.py +0 -0
  92. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/storage/__init__.py +0 -0
  93. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/storage/config.py +0 -0
  94. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/storage/setup.py +0 -0
  95. {quasarr-2.4.5 → quasarr-2.4.6}/quasarr/storage/sqlite_database.py +0 -0
@@ -24,7 +24,6 @@ jobs:
24
24
  - name: Install uv
25
25
  uses: astral-sh/setup-uv@v5
26
26
  with:
27
- # Fixed: Added glob to silence warning since you might not have uv.lock
28
27
  enable-cache: true
29
28
  cache-dependency-glob: "pyproject.toml"
30
29
  - name: Get Version
@@ -35,6 +34,10 @@ jobs:
35
34
  build-wheel:
36
35
  name: Build Wheel
37
36
  runs-on: ubuntu-latest
37
+ permissions:
38
+ contents: read
39
+ id-token: write
40
+ attestations: write
38
41
  steps:
39
42
  - uses: actions/checkout@v6
40
43
  - uses: actions/setup-python@v5
@@ -47,6 +50,12 @@ jobs:
47
50
  cache-dependency-glob: "pyproject.toml"
48
51
  - name: Build wheel
49
52
  run: uv build
53
+
54
+ - name: Generate artifact attestation
55
+ uses: actions/attest-build-provenance@v2
56
+ with:
57
+ subject-path: "dist/*.whl"
58
+
50
59
  - uses: actions/upload-artifact@v4
51
60
  with:
52
61
  name: wheel
@@ -66,26 +75,26 @@ jobs:
66
75
  - uses: actions/setup-python@v5
67
76
  with:
68
77
  python-version: '3.12'
78
+
69
79
  - name: Install uv
70
80
  uses: astral-sh/setup-uv@v5
71
81
  with:
72
82
  enable-cache: true
73
83
  cache-dependency-glob: "pyproject.toml"
74
- - uses: actions/cache@v4
75
- with:
76
- path: ~\AppData\Local\pyinstaller
77
- key: ${{ runner.os }}-pyinstaller-${{ hashFiles('pyproject.toml') }}
78
- restore-keys: ${{ runner.os }}-pyinstaller-
84
+
79
85
  - name: Disable Windows Defender
80
86
  shell: powershell
81
87
  run: Set-MpPreference -DisableRealtimeMonitoring $true
88
+
82
89
  - name: Install dependencies
83
90
  run: |
84
91
  uv sync --group build
92
+
85
93
  - name: Build exe
86
94
  run: |
87
95
  uv run python quasarr/providers/version.py --create-version-file
88
96
  uv run pyinstaller --clean --onefile -y --version-file "file_version_info.txt" "Quasarr.py" -n "quasarr-${{ needs.version.outputs.version }}-standalone-win64"
97
+
89
98
  - uses: actions/upload-artifact@v4
90
99
  with:
91
100
  name: exe-amd64
@@ -162,7 +171,6 @@ jobs:
162
171
  runs-on: ubuntu-latest
163
172
  needs: [ version, build-docker-amd64, build-docker-arm64 ]
164
173
  steps:
165
- # Fixed: Added setup-buildx-action to ensure 'imagetools' supports annotations correctly
166
174
  - uses: docker/setup-buildx-action@v3
167
175
  - uses: docker/login-action@v3
168
176
  with:
@@ -171,20 +179,17 @@ jobs:
171
179
  password: ${{ secrets.GITHUB_TOKEN }}
172
180
  - name: Create and Push Manifests
173
181
  run: |
174
- # 1. Define source tags
175
182
  TAG_AMD64="${{ needs.version.outputs.version }}-beta-amd64"
176
183
  TAG_ARM64="${{ needs.version.outputs.version }}-beta-arm64"
177
-
178
- # Fixed: Use shell variable directly and 'index:' prefix to strictly target the manifest list
179
184
  ANNOTATION="index:org.opencontainers.image.description=$DESCRIPTION"
180
185
 
181
- # 2. Create manifest for GHCR :beta
186
+ # Manifest for :beta
182
187
  docker buildx imagetools create -t ${{ env.GHCR_ENDPOINT }}:beta \
183
188
  --annotation "$ANNOTATION" \
184
189
  ${{ env.GHCR_ENDPOINT }}:beta-amd64 \
185
190
  ${{ env.GHCR_ENDPOINT }}:beta-arm64
186
191
 
187
- # 3. Create manifest for GHCR :version-beta
192
+ # Manifest for :version-beta
188
193
  docker buildx imagetools create -t ${{ env.GHCR_ENDPOINT }}:${{ needs.version.outputs.version }}-beta \
189
194
  --annotation "$ANNOTATION" \
190
195
  ${{ env.GHCR_ENDPOINT }}:${TAG_AMD64} \
@@ -33,7 +33,6 @@ jobs:
33
33
  - name: Install uv
34
34
  uses: astral-sh/setup-uv@v5
35
35
  with:
36
- # Fixed: Added glob to silence warning
37
36
  enable-cache: true
38
37
  cache-dependency-glob: "pyproject.toml"
39
38
  - name: Get Version
@@ -44,6 +43,10 @@ jobs:
44
43
  build-wheel:
45
44
  name: Build Wheel
46
45
  runs-on: ubuntu-latest
46
+ permissions:
47
+ contents: read
48
+ id-token: write
49
+ attestations: write
47
50
  steps:
48
51
  - uses: actions/checkout@v6
49
52
  - uses: actions/setup-python@v5
@@ -56,6 +59,10 @@ jobs:
56
59
  cache-dependency-glob: "pyproject.toml"
57
60
  - name: Build wheel
58
61
  run: uv build
62
+ - name: Generate artifact attestation
63
+ uses: actions/attest-build-provenance@v2
64
+ with:
65
+ subject-path: "dist/*.whl"
59
66
  - uses: actions/upload-artifact@v4
60
67
  with:
61
68
  name: wheel
@@ -75,26 +82,26 @@ jobs:
75
82
  - uses: actions/setup-python@v5
76
83
  with:
77
84
  python-version: '3.12'
85
+
78
86
  - name: Install uv
79
87
  uses: astral-sh/setup-uv@v5
80
88
  with:
81
89
  enable-cache: true
82
90
  cache-dependency-glob: "pyproject.toml"
83
- - uses: actions/cache@v4
84
- with:
85
- path: ~\AppData\Local\pyinstaller
86
- key: ${{ runner.os }}-pyinstaller-${{ hashFiles('pyproject.toml') }}
87
- restore-keys: ${{ runner.os }}-pyinstaller-
91
+
88
92
  - name: Disable Windows Defender
89
93
  shell: powershell
90
94
  run: Set-MpPreference -DisableRealtimeMonitoring $true
95
+
91
96
  - name: Install dependencies
92
97
  run: |
93
98
  uv sync --group build
99
+
94
100
  - name: Build exe
95
101
  run: |
96
102
  uv run python quasarr/providers/version.py --create-version-file
97
103
  uv run pyinstaller --clean --onefile -y --version-file "file_version_info.txt" "Quasarr.py" -n "quasarr-${{ needs.version.outputs.version }}-standalone-win64"
104
+
98
105
  - uses: actions/upload-artifact@v4
99
106
  with:
100
107
  name: exe-amd64
@@ -183,7 +190,6 @@ jobs:
183
190
  runs-on: ubuntu-latest
184
191
  needs: [ version, build-docker-amd64, build-docker-arm64 ]
185
192
  steps:
186
- # Fixed: Added setup-buildx-action
187
193
  - uses: docker/setup-buildx-action@v3
188
194
  - uses: docker/login-action@v3
189
195
  with:
@@ -196,29 +202,23 @@ jobs:
196
202
  password: ${{ secrets.GITHUB_TOKEN }}
197
203
  - name: Create and Push Manifests
198
204
  run: |
199
- # 1. Define source tags
200
205
  TAG_AMD64="${{ needs.version.outputs.version }}-amd64"
201
206
  TAG_ARM64="${{ needs.version.outputs.version }}-arm64"
202
- # Fixed: Added index: prefix and using shell variable
203
207
  ANNOTATION="index:org.opencontainers.image.description=$DESCRIPTION"
204
208
 
205
- # 2. Create manifest for DockerHub :latest
206
209
  docker buildx imagetools create -t ${{ env.ENDPOINT }}:latest \
207
210
  ${{ env.ENDPOINT }}:latest-amd64 \
208
211
  ${{ env.ENDPOINT }}:latest-arm64
209
212
 
210
- # 3. Create manifest for DockerHub :version
211
213
  docker buildx imagetools create -t ${{ env.ENDPOINT }}:${{ needs.version.outputs.version }} \
212
214
  ${{ env.ENDPOINT }}:${TAG_AMD64} \
213
215
  ${{ env.ENDPOINT }}:${TAG_ARM64}
214
216
 
215
- # 4. Create manifest for GHCR :latest
216
217
  docker buildx imagetools create -t ${{ env.GHCR_ENDPOINT }}:latest \
217
218
  --annotation "$ANNOTATION" \
218
219
  ${{ env.GHCR_ENDPOINT }}:latest-amd64 \
219
220
  ${{ env.GHCR_ENDPOINT }}:latest-arm64
220
221
 
221
- # 5. Create manifest for GHCR :version
222
222
  docker buildx imagetools create -t ${{ env.GHCR_ENDPOINT }}:${{ needs.version.outputs.version }} \
223
223
  --annotation "$ANNOTATION" \
224
224
  ${{ env.GHCR_ENDPOINT }}:${TAG_AMD64} \
@@ -234,6 +234,7 @@ jobs:
234
234
  - uses: actions/checkout@v6
235
235
  with:
236
236
  fetch-depth: 0
237
+
237
238
  - uses: actions/download-artifact@v4
238
239
  with:
239
240
  name: wheel
@@ -242,6 +243,14 @@ jobs:
242
243
  with:
243
244
  name: exe-amd64
244
245
  path: ./exe-amd64
246
+
247
+ - name: Install uv
248
+ uses: astral-sh/setup-uv@v5
249
+
250
+ - name: Publish to PyPI
251
+ if: ${{ !inputs.skip_pypi }}
252
+ run: uv publish ./wheel/* --token ${{ secrets.PYPI_TOKEN }}
253
+
245
254
  - name: Generate changelog
246
255
  id: changelog
247
256
  uses: metcalfc/changelog-generator@v4.6.2
@@ -257,6 +266,7 @@ jobs:
257
266
  fi
258
267
  - name: Append changelog
259
268
  run: echo -e "\n${{ steps.changelog.outputs.changelog }}" >> .github/Changelog.md
269
+
260
270
  - name: Create Release
261
271
  uses: ncipollo/release-action@v1
262
272
  with:
@@ -264,9 +274,3 @@ jobs:
264
274
  artifactErrorsFailBuild: true
265
275
  bodyFile: ".github/Changelog.md"
266
276
  tag: v.${{ needs.version.outputs.version }}
267
- - name: Install uv
268
- uses: astral-sh/setup-uv@v5
269
- - name: Upload to PyPI
270
- if: ${{ !inputs.skip_pypi }}
271
- run: |
272
- uv run --with twine --with packaging python -m twine upload ./wheel/* -u __token__ -p ${{ secrets.PYPI_TOKEN }}
@@ -4,8 +4,8 @@
4
4
  *.pyc
5
5
  *.bak
6
6
 
7
- # Build Tools
8
- venv
7
+ # Virtual Environment by uv
8
+ uv.lock
9
9
  .venv
10
10
 
11
11
  # PyCharm
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quasarr
3
- Version: 2.4.5
3
+ Version: 2.4.6
4
4
  Summary: Quasarr connects JDownloader with Radarr, Sonarr and LazyLibrarian. It also decrypts links protected by CAPTCHAs.
5
5
  Author-email: rix1337 <rix1337@users.noreply.github.com>
6
6
  License-File: LICENSE
@@ -12,7 +12,10 @@ COPY --from=uv /uv /usr/local/bin/uv
12
12
 
13
13
  # install local package
14
14
  COPY dist/*.whl /tmp/
15
- RUN uv tool install /tmp/*.whl --force && rm /tmp/*.whl
15
+
16
+ # Updated: Added cache mount for uv to speed up installation
17
+ RUN --mount=type=cache,target=/root/.cache/uv \
18
+ uv tool install /tmp/*.whl --force && rm /tmp/*.whl
16
19
 
17
20
  # Ensure the binary is in the PATH
18
21
  ENV PATH="/root/.local/bin:$PATH"
@@ -7,10 +7,11 @@ import os
7
7
  import re
8
8
  import time
9
9
  import traceback
10
- import unicodedata
11
10
  from datetime import datetime, timedelta, date
12
11
  from urllib import parse
13
12
 
13
+ import unicodedata
14
+
14
15
  import quasarr
15
16
  from quasarr.providers.log import info, debug
16
17
  from quasarr.providers.myjd_api import Myjdapi, TokenExpiredException, RequestTimeoutException, MYJDException, Jddevice
@@ -5,7 +5,7 @@
5
5
  import re
6
6
  import sys
7
7
 
8
- __version__ = "2.4.5"
8
+ __version__ = "2.4.6"
9
9
 
10
10
 
11
11
  def get_version():
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