Compare commits

...

38 Commits

Author SHA1 Message Date
Safihre
dd9c7488c6 Update text files for 4.4.0Beta2 2024-11-18 15:29:25 +01:00
Safihre
754b862a29 Build release using Python 3.13 2024-11-17 21:10:48 +01:00
Safihre
0ddf343bb7 Generalize wildcard addition in par2cmdline call 2024-11-17 21:06:30 +01:00
SABnzbd Automation
7a8a45b811 Update translatable texts
[skip ci]
2024-11-17 19:56:02 +00:00
Safihre
66c525ef95 Remove any custom Multipar parameters when updating 2024-11-17 20:54:59 +01:00
SABnzbd Automation
7cd3e50ded Update translatable texts
[skip ci]
2024-11-17 19:45:37 +00:00
Safihre
d5094e1aa6 Switch to modified par2cmdline-turbo-utf8 2024-11-17 20:35:33 +01:00
renovate[bot]
bca9559783 Update all dependencies (#2961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 14:34:43 +00:00
Safihre
0cbb8af7a0 More compatibility fixes for Python 3.8 2024-11-12 15:14:53 +01:00
Safihre
afab90ca68 Ignore package updates that are unsupported on Python 3.8 2024-11-12 08:58:42 +01:00
SABnzbd Automation
92ecfc4930 Update translatable texts
[skip ci]
2024-11-11 11:17:53 +00:00
Safihre
b064f112cd Fix version of blinker for Python 3.8 2024-11-11 12:16:56 +01:00
renovate[bot]
629da51be7 Update all dependencies 2024-11-04 08:08:53 +00:00
Safihre
0fa0f7286c Let renovate also update uvicorn branch 2024-11-03 20:47:24 +01:00
Safihre
6cd8f3e333 Add server note to the main servers display
Closes #2957
2024-11-03 16:45:52 +01:00
Safihre
ff18fe03e9 Update the release builder configuration 2024-10-31 21:33:34 +01:00
SABnzbd Automation
a1e30d19e3 Update translatable texts
[skip ci]
2024-10-31 20:23:25 +00:00
Safihre
3d74c19f41 Update text files for 4.4.0Beta1 2024-10-31 21:22:40 +01:00
SABnzbd Automation
33a831e87c Update translatable texts
[skip ci]
2024-10-29 21:03:01 +00:00
Safihre
7b04917f0e Kill unrar if it reports disk full, since it can hang
See #2948
2024-10-29 22:02:17 +01:00
SABnzbd Automation
2f62b76279 Update translatable texts
[skip ci]
2024-10-29 20:17:28 +00:00
Safihre
bd43bca1cf Include dateutil timezone file that would show warning in executables 2024-10-29 21:16:41 +01:00
Safihre
d200f0a618 Small refactor of improved warnings for weird ports
Not needed, but I liked it
2024-10-29 21:08:49 +01:00
SABnzbd Automation
c5314569db Update translatable texts
[skip ci]
2024-10-29 11:11:35 +00:00
Sander
001e215b7d Better analysis & better user info if newsserver connection fails (#2951)
* Better analysis & better user info if newsserver connection fails

* make Black happy

* make Black happy

* make Black happy

* make Black happy ... corrected

* make Black happy ... corrected

* make Black happy ... corrected

* make Black happy ... corrected

* Safihre's feedback handled

* more Safihre's feedback handled

---------

Co-authored-by: sanderjo <sander.jonkers+github@github.com>
2024-10-29 12:10:45 +01:00
SABnzbd Automation
3a628a0025 Update translatable texts
[skip ci]
2024-10-28 01:04:25 +00:00
renovate[bot]
7e48207fbc Update all dependencies 2024-10-28 01:03:38 +00:00
renovate[bot]
48a6d6b289 Update all dependencies (#2949)
Co-authored-by: Safihre <safihre@sabnzbd.org>
2024-10-22 12:19:15 +02:00
SABnzbd Automation
21f05ad3d9 Update translatable texts
[skip ci]
2024-10-21 06:56:44 +00:00
Safihre
d93c861eb3 Add disk full error to Direct Unpacker
Closes #2948
2024-10-21 08:55:56 +02:00
Safihre
fb0ef21768 The tests folder was ignored by default by Renovate 2024-10-15 11:55:26 +02:00
Safihre
277679ef53 Add Python 3.13 to CI tests 2024-10-15 10:10:24 +02:00
Safihre
e7e47bbcb0 Do not compare articles just based on article-ID
Turns out that there are NZBs that contain duplicate article-ID's within 1 file. This causes all "article in nzf.article" comparisons to return the wrong comparison.
2024-10-15 09:44:04 +02:00
Safihre
65ffb5ca81 All resets of try lists should be locked fully 2024-10-15 09:43:55 +02:00
SABnzbd Automation
6cf308e441 Update translatable texts
[skip ci]
2024-10-14 01:47:23 +00:00
renovate[bot]
870fa40c91 Update all dependencies 2024-10-14 01:46:42 +00:00
Safihre
39d9eaec2a Create new history database in case of no such table error 2024-10-08 21:06:59 +02:00
SABnzbd Automation
6fd4d0882c Update translatable texts
[skip ci]
2024-10-08 07:39:00 +00:00
80 changed files with 609 additions and 155 deletions

View File

@@ -7,6 +7,7 @@
"schedule": [
"before 8am on Monday"
],
"baseBranches": ["develop", "feature/uvicorn"],
"pip_requirements": {
"fileMatch": [
"requirements.txt",
@@ -15,14 +16,14 @@
"builder/release-requirements.txt"
]
},
"ignorePaths": [],
"ignoreDeps": [
"jaraco.text",
"jaraco.context",
"jaraco.collections",
"sabctools",
"paho-mqtt",
"werkzeug",
"pyinstaller"
"werkzeug"
],
"packageRules": [
{

View File

@@ -13,10 +13,10 @@ jobs:
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.12 (64bit)
- name: Set up Python 3.13 (64bit)
uses: actions/setup-python@v5
with:
python-version: "3.12"
python-version: "3.13"
architecture: "x64"
cache: pip
cache-dependency-path: "**/requirements.txt"
@@ -69,18 +69,18 @@ jobs:
# We need the official Python, because the GA ones only support newer macOS versions
# The deployment target is picked up by the Python build tools automatically
# If updated, make sure to also set LSMinimumSystemVersion in SABnzbd.spec
PYTHON_VERSION: "3.12.6"
PYTHON_VERSION: "3.13.0"
MACOSX_DEPLOYMENT_TARGET: "10.13"
# We need to force compile for universal2 support
CFLAGS: -arch x86_64 -arch arm64
ARCHFLAGS: -arch x86_64 -arch arm64
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.12
- name: Set up Python 3.13.0
# Only use this for the caching of pip packages!
uses: actions/setup-python@v5
with:
python-version: "3.12"
python-version: "3.13"
cache: pip
cache-dependency-path: "**/requirements.txt"
- name: Cache Python download

View File

@@ -31,18 +31,18 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
python-architecture: ["x64"]
name: ["Linux"]
os: [ubuntu-latest]
include:
- name: macOS
os: macos-latest
python-version: "3.12"
python-version: "3.13"
python-architecture: "x64"
- name: Windows
os: windows-latest
python-version: "3.12"
python-version: "3.13"
python-architecture: "x64"
- name: Windows (32bit)
os: windows-latest

View File

@@ -1,17 +1,22 @@
Release Notes - SABnzbd 4.4.0 Alpha 2
Release Notes - SABnzbd 4.4.0 Beta 2
=========================================================
This is the first test release of SABnzbd 4.4.0.
This is the second beta release of SABnzbd 4.4.0.
## New features since 4.3.0
* Subtitle files will be deobfuscated if required.
* Show server `Personal notes` on the main servers display.
* Windows: Use par2cmdline-turbo by default (thanks to @dnzbk).
* macOS: Dropped support for macOS 10.12 and below.
* macOS and Windows: Use Python 3.13 for release.
## Bug fixes since 4.3.0
* Toggling of Servers could result in jobs being stuck at 99%.
* Corrupt NZB's could also result in jobs being stuck at 99%.
* Config restart would always determine redirect URL instead of using current.
* Correctly handle `disk full` errors from Unrar.
* Create new history database in case of `no such table` error.
## Upgrade notices

View File

@@ -13,7 +13,7 @@ from builder.constants import EXTRA_FILES, EXTRA_FOLDERS, RELEASE_VERSION, RELEA
extra_pyinstaller_files = []
# Add hidden imports
extra_hiddenimports = ["Cheetah.DummyTransaction", "cheroot.ssl.builtin", "certifi", "pkg_resources.extern"]
extra_hiddenimports = ["Cheetah.DummyTransaction", "cheroot.ssl.builtin", "certifi"]
extra_hiddenimports.extend(collect_submodules("apprise"))
extra_hiddenimports.extend(collect_submodules("babelfish.converters"))
extra_hiddenimports.extend(collect_submodules("guessit.data"))
@@ -40,7 +40,7 @@ else:
)
# Windows
extra_hiddenimports.extend(["win32timezone", "winrt.windows.foundation.collections"])
extra_hiddenimports.extend(["win32timezone"])
EXTRA_FOLDERS += ["win/multipar/", "win/par2/", "win/unrar/", "win/7zip/"]
EXTRA_FILES += ["portable.cmd"]
@@ -88,6 +88,7 @@ for folder_item in EXTRA_FOLDERS:
extra_pyinstaller_files.extend(collect_data_files("babelfish"))
extra_pyinstaller_files.extend(collect_data_files("guessit"))
extra_pyinstaller_files.extend(collect_data_files("apprise"))
extra_pyinstaller_files.extend(collect_data_files("dateutil"))
pyi_analysis = Analysis(
["SABnzbd.py"],

View File

@@ -1,2 +1,2 @@
PyGithub==2.4.0
praw==7.7.1
PyGithub==2.5.0
praw==7.8.1

View File

@@ -1,19 +1,20 @@
# Basic build requirements
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
pyinstaller==5.13.2
packaging==24.1
pyinstaller-hooks-contrib==2024.8
pyinstaller==6.11.1
packaging==24.2
pyinstaller-hooks-contrib==2024.10
altgraph==0.17.4
wrapt==1.16.0
setuptools==75.1.0
setuptools # List version-less for Python 3.8 to just get latest supported
setuptools==75.4.0; python_version > '3.8'
# Required on 32bit Windows, exclude it based on Python-version
importlib_metadata==8.5.0; python_version < '3.10'
importlib_resources==6.4.5; python_version < '3.10'
zipp==3.20.2; python_version < '3.10'
zipp; python_version < '3.10' # List version-less for Python 3.8 to just get latest supported
# orjson does not support 32bit Windows, also exclude based on Python-version
orjson==3.10.7; python_version > '3.8'
orjson==3.10.11; python_version > '3.8'
# For the Windows build
pefile==2024.8.26; sys_platform == 'win32'

View File

@@ -171,6 +171,9 @@
</table>
<button type="button" class="btn btn-default showserver"><span class="glyphicon glyphicon-pencil"></span> $T('showDetails')</button>
<button type="button" class="btn btn-default clrServer"><span class="glyphicon glyphicon-remove"></span> $T('button-clrServer')</button>
<!--#if $server['notes'] #-->
<p>$server['notes'].replace('\n', '<br>')</p>
<!--#end if#-->
</div>
<div class="col1" style="display:none;">
<input type="hidden" name="enable" id="enable$cur" value="$int($server['enable'])" />
@@ -459,8 +462,8 @@
When finished loading
**/
jQuery(document).ready(function(){
// Exception when change of priority, reload
jQuery('input[name="priority"], input[name="displayname"]').on('change', function() {
// Reload form in case we change items that make the servers appear different
jQuery('input[name="priority"], input[name="displayname"], textarea[name="notes"]').on('change', function() {
jQuery('.fullform').submit(function() {
// No ajax this time
jQuery('input[name="ajax"]').val('')

View File

@@ -165,6 +165,9 @@ input[type="checkbox"]+.desc {
color: #666;
margin: 1em 0;
}
.col2 p {
margin-left: 3px;
}
.field-pair {
padding: 6px;
clear: both;

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"

View File

@@ -3,7 +3,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
"MIME-Version: 1.0\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: ION, 2020\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"

View File

@@ -3,7 +3,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Italian (https://app.transifex.com/sabnzbd/teams/111101/it/)\n"
"MIME-Version: 1.0\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
@@ -168,6 +168,14 @@ msgstr ""
msgid "Could not connect to %s on port %s. It appears that %s operates as a web server (port 80), possibly an indexer, not a usenet server. You have to fill a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid "Could not connect to %s on port %s. Use the default usenet settings: port 563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid "Could not connect to %s on port %s. Use the default usenet settings: port 119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr ""
@@ -327,6 +335,11 @@ msgstr ""
msgid "Do not use a folder in the application folder as your Scripts Folder, it might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -872,6 +885,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr ""

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
@@ -188,6 +188,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Adresa serveru \"%s:%s\" není správná."
@@ -362,6 +374,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -933,6 +951,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr "Rozbalování selhalo, chyba zápisu nebo plný disk?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Rozbalování selhalo, cesta k souboru je příliš dlouhá."

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
@@ -188,6 +188,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Serveradressen \"%s:%s\" er ikke gyldigt."
@@ -365,6 +377,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -941,6 +959,10 @@ msgstr "Udpakningen fejlede, da filen er for stor til filsystemet (FAT?)"
msgid "Unpacking failed, write error or disk is full?"
msgstr "Udpakning mislykkedes, skrivefejl eller disken fuld?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Udpakningen mislykkedes, stien er for lang"

View File

@@ -18,7 +18,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Stefan Rodriguez Galeano, 2024\n"
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
@@ -212,6 +212,18 @@ msgstr ""
"als sei %s ein Webserver (Port 80), vielleicht ein Indexer, aber kein "
"Usenet-Server. Trage einen Usenet-Server ein."
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Server-Adresse \"%s:%s\" ist ungültig."
@@ -402,6 +414,12 @@ msgstr ""
"Verwenden Sie keinen Ordner im Anwendungsordner als Ihren Skriptordner, er "
"könnte während Updates geleert werden."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -1004,6 +1022,10 @@ msgid "Unpacking failed, write error or disk is full?"
msgstr ""
"Entpacken fehlgeschlagen. Fehler beim Schreiben oder volle Festplatte?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Entpacken fehlgeschlagen, Pfad ist zu lang"

View File

@@ -8,7 +8,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
@@ -197,6 +197,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "La dirección del servidor «%s:%s» no es válida."
@@ -380,6 +392,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -974,6 +992,10 @@ msgid "Unpacking failed, write error or disk is full?"
msgstr ""
"Error al descomprimir; ¿Error de escritura, o tal vez el disco está lleno?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Aperture de archivo fallo, la via es muy larga"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
@@ -190,6 +190,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Palvelimen osoite \"%s:%s\" ei ole kelvollinen."
@@ -361,6 +373,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -936,6 +954,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr "Purkaminen epäonnistui, kirjoitusvirhe tai levy täynnä?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Purkaminen epäonnistui, polku on liian pitkä"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2024\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
@@ -203,6 +203,22 @@ msgstr ""
"comme un serveur web (port 80), peut-être un indexeur, et non comme un "
"serveur Usenet. Vous devez spécifier un serveur Usenet."
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
"Impossible de se connecter à %s sur le port %s. Utilisez les paramètres "
"usenet par défaut : port 563 et SSL activés"
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
"Impossible de se connecter à %s sur le port %s. Utilisez les paramètres "
"usenet par défaut : port 119 et SSL désactivés"
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "L' adresse du serveur \"%s:%s\" n'est pas valide."
@@ -395,6 +411,12 @@ msgstr ""
"N'utilisez pas un dossier à l'intérieur du dossier de l'application pour y "
"stocker les scripts, il pourrait être vidé lors des mises à jour."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -998,6 +1020,10 @@ msgid "Unpacking failed, write error or disk is full?"
msgstr ""
"Échec de l'extraction, erreur d'écriture ou espace disque insuffisant ?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr "Échec de l'extraction, disque plein"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Extraction échoué, le chemin est trop long"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: ION, 2024\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
@@ -189,6 +189,18 @@ msgstr ""
"לא היה ניתן להתחבר אל %s על פתחה %s. נראה כי %s פועל כשרת רשת (פתחה 80), "
"כנראה מדדן, לא שרת Usenet. אתה חייב למלא שרת Usenet."
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "כתובת השרת \"%s:%s\" אינה תקפה."
@@ -365,6 +377,12 @@ msgstr ""
"אל תשתמש בתיקייה בתוך תיקיית היישום כתיקיית התסריטים שלך, היא עשויה להתרוקן "
"במהלך עדכונים."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -944,6 +962,10 @@ msgstr "פריקה נכשלה, קובץ גדול מדי עבור מערכת הק
msgid "Unpacking failed, write error or disk is full?"
msgstr "פריקה נכשלה, שגיאת כתיבה או דיסק מלא?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "פריקה נכשלה, נתיב ארוך מדי"

View File

@@ -3,7 +3,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Language-Team: Italian (https://app.transifex.com/sabnzbd/teams/111101/it/)\n"
"MIME-Version: 1.0\n"
@@ -178,6 +178,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr ""
@@ -348,6 +360,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -908,6 +926,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr ""

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
@@ -186,6 +186,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Serveradressen \"%s:%s\" er ikke gyldig."
@@ -359,6 +371,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -933,6 +951,10 @@ msgstr "Utpakking feilet, filen er for stor for filsystemet (FAT?)"
msgid "Unpacking failed, write error or disk is full?"
msgstr "Utpakking mislyktes, skrivefeil eller er disken full?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Utpakking feilet, stien er for lang"

View File

@@ -8,7 +8,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2024\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
@@ -198,6 +198,18 @@ msgstr ""
"functioneert als een webserver (poort 80), mogelijk een indexer, geen "
"usenetserver. Vul een usenetserver in."
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Serveradres \"%s:%s\" is niet geldig."
@@ -386,6 +398,12 @@ msgstr ""
"automatisch verwijderd worden tijdens updates. We adviseren een andere "
"locatie te gebruiken voor je scripts."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -987,6 +1005,10 @@ msgstr "Uitplakken mislukt, bestand te groot voor het bestandssysteem (FAT?)"
msgid "Unpacking failed, write error or disk is full?"
msgstr "Uitpakken mislukt, schrijffout of schijf vol?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Uitpakken mislukt, bestandspad is te lang"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
@@ -184,6 +184,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Nieprawidłowy adres serwera \"%s:%s\"."
@@ -358,6 +370,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -936,6 +954,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr "Rozpakowywanie nie powiodło się, błąd zapisu lub zapełniony dysk?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Rozpakowywanie nie powiodło się, zbyt długa ścieżka"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
@@ -191,6 +191,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Endereço de servidor \"%s:%s\" não é válido."
@@ -370,6 +382,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -948,6 +966,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr "A descompactação falhou. Erro de escrita ou disco cheio?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Descompactação falhou, o caminho é muito extenso"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
@@ -192,6 +192,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Adresa server \"%s:%s\" nu este validă"
@@ -374,6 +386,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -959,6 +977,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr "Dezarhivare nereuşită, eroare scriere sau disc plin?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Dezarhivare eșuată, calea este prea lungă"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
@@ -186,6 +186,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Адрес сервера «%s:%s» является недопустимым."
@@ -358,6 +370,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -932,6 +950,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr "Не удалось распаковать: ошибка записи или на диске нет места?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr ""

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
@@ -184,6 +184,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Adresa servera \"%s:%s\" je neispravna"
@@ -355,6 +367,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -928,6 +946,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr "Neuspašno raspakivanje, greška u pisanju ili je disk pun?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Neuspešno raspakivanje, putanja je predugačka"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
@@ -185,6 +185,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Serveradressen \"%s:%s\" är ej giltig."
@@ -355,6 +367,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -930,6 +948,10 @@ msgstr ""
msgid "Unpacking failed, write error or disk is full?"
msgstr "Uppackning misslyckades, skrivfel eller disken full?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "Uppackning misslyckades, sökvägen är för lång"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Kangwei Li <lkw20010211@gmail.com>, 2023\n"
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
@@ -183,6 +183,18 @@ msgid ""
" a usenet server."
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"563 and SSL turned on"
msgstr ""
#: sabnzbd/api.py
msgid ""
"Could not connect to %s on port %s. Use the default usenet settings: port "
"119 and SSL turned off"
msgstr ""
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "服务器地址 \"%s:%s\" 无效。"
@@ -353,6 +365,12 @@ msgid ""
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"The par2 application was switched, any custom par2 parameters were removed"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -923,6 +941,10 @@ msgstr "解压失败,文件太大文件系统不支持 (FAT?)"
msgid "Unpacking failed, write error or disk is full?"
msgstr "解压失败,写入出错或磁盘已满?"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, disk full"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr "解压失败,路径过长"

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Pavel C <quoing_transifex@mess.cz>, 2022\n"
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"

View File

@@ -9,7 +9,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Lorenz B, 2024\n"
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Ester Molla Aragones <moarages@gmail.com>, 2020\n"
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2024\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: ION, 2024\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"

View File

@@ -3,7 +3,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Italian (https://app.transifex.com/sabnzbd/teams/111101/it/)\n"
"MIME-Version: 1.0\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2024\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Petter Ramme, 2024\n"
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.4.0Alpha1\n"
"Project-Id-Version: SABnzbd-4.4.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"

View File

@@ -2,7 +2,7 @@
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
apprise==1.9.0
sabctools==8.2.5
CT3==3.3.3.post1
CT3==3.4.0b4
cffi==1.17.1
pycparser==2.22
feedparser==6.0.11
@@ -31,20 +31,20 @@ rebulk==3.2.0
# Recent cryptography versions require Rust. If you run into issues compiling this
# SABnzbd will also work with older pre-Rust versions such as cryptography==3.3.2
cryptography==43.0.1
cryptography==43.0.3
# We recommend using "orjson" as it is 2x as fast as "ujson". However, it requires
# Rust so SABnzbd works just as well with "ujson" or the Python built in "json" module
ujson==5.10.0
# Windows system integration
pywin32==307; sys_platform == 'win32'
pywin32==308; sys_platform == 'win32'
windows-toasts==1.3.0; sys_platform == 'win32' and python_version > '3.8'
winrt-runtime==2.2.0; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Data.Xml.Dom==2.2.0; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Foundation==2.2.0; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Foundation.Collections==2.2.0; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.UI.Notifications==2.2.0; sys_platform == 'win32' and python_version > '3.8'
winrt-runtime==2.3.0; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Data.Xml.Dom==2.3.0; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Foundation==2.3.0; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Foundation.Collections==2.3.0; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.UI.Notifications==2.3.0; sys_platform == 'win32' and python_version > '3.8'
# macOS system calls
pyobjc-core==10.3.1; sys_platform == 'darwin'
@@ -61,13 +61,14 @@ markdown==3.7
paho-mqtt==1.6.1 # Pinned, newer versions don't work with AppRise yet
# Requests Requirements
charset_normalizer==3.3.2
charset_normalizer==3.4.0
idna==3.10
urllib3==2.2.3
certifi==2024.8.30
oauthlib==3.2.2
PyJWT==2.9.0
blinker==1.8.2
blinker # List version-less for Python 3.8 to just get latest supported
blinker==1.9.0; python_version > '3.8'
# Optional support for *nix tray icon.
# Note that pygobject depends on pycairo, which requires pkg-config and cairo headers.

View File

@@ -1317,15 +1317,39 @@ def test_nntp_server_dict(kwargs: Dict[str, Union[str, List[str]]]) -> Tuple[boo
# All exceptions are caught internally
test_server.request_addrinfo_blocking()
if not test_server.addrinfo:
# Try if we can connect on port 80 (so web server), forcing a short timeout
test_server.port = 80
test_server.timeout = DEF_NETWORKING_TEST_TIMEOUT
test_server.request_addrinfo_blocking()
if test_server.addrinfo:
# so NNTP connection was tried, but did not succeed: no addrinfo. Possible causes:
# - user has filled out an indexer as newsserver. Not good.
# - user has filled out a weird port on which there is no newsserver
# - generic network problem (?)
test_server.timeout = DEF_NETWORKING_TEST_TIMEOUT # force a short timeout
# let's try well-known ports: HTTP and NTTP(S)
port_working = {80: False, 119: False, 563: False}
for port_to_check in port_working:
# Don't re-check if it was already tried by user
if port_to_check != port:
test_server.port = port_to_check
test_server.request_addrinfo_blocking()
port_working[port_to_check] = bool(test_server.addrinfo)
if not port_working[119] and not port_working[563] and port_working[80]:
# That's a webserver, not a newsserver!
return False, T(
"Could not connect to %s on port %s. It appears that %s operates as a web server (port 80), "
"possibly an indexer, not a usenet server. You have to fill a usenet server."
) % (host, port, host)
elif port not in (119, 563):
# User specified a weird port, so check if regular ones do work
if port_working[563]:
return False, T(
"Could not connect to %s on port %s. Use the default usenet settings: port 563 and SSL turned on"
) % (host, port)
if port_working[119]:
return False, T(
"Could not connect to %s on port %s. Use the default usenet settings: port 119 and SSL turned off"
) % (host, port)
# Sorry, no clever analysis:
return False, T('Server address "%s:%s" is not valid.') % (host, port)
try:

View File

@@ -448,7 +448,7 @@ start_paused = OptionBool("misc", "start_paused", False)
preserve_paused_state = OptionBool("misc", "preserve_paused_state", False)
enable_par_cleanup = OptionBool("misc", "enable_par_cleanup", True)
process_unpacked_par2 = OptionBool("misc", "process_unpacked_par2", True)
enable_multipar = OptionBool("misc", "enable_multipar", True)
disable_par2cmdline = OptionBool("misc", "disable_par2cmdline", False)
enable_unrar = OptionBool("misc", "enable_unrar", True)
enable_7zip = OptionBool("misc", "enable_7zip", True)
enable_filejoin = OptionBool("misc", "enable_filejoin", True)
@@ -785,6 +785,17 @@ def config_conversions():
# url_base conversion
if config_conversion_version() < 2:
logging.info("Config conversion set 2")
# We did not end up applying this conversion, so we skip this conversion_version
pass
logging.info("Config conversion set 2")
config_conversion_version.set(2)
# Switch to par2cmdline-turbo on Windows
if config_conversion_version() < 3:
logging.info("Config conversion set 3")
if sabnzbd.WIN32 and par_option():
# Just empty it, so we don't pass the wrong parameters
logging.warning(T("The par2 application was switched, any custom par2 parameters were removed"))
par_option.set("")
# Done
config_conversion_version.set(3)

View File

@@ -35,7 +35,7 @@ from sabnzbd.constants import DB_HISTORY_NAME, STAGES, Status, PP_LOOKUP
from sabnzbd.bpsmeter import this_week, this_month
from sabnzbd.decorators import synchronized
from sabnzbd.encoding import ubtou, utob
from sabnzbd.misc import caller_name, opts_to_pp, to_units, bool_conv
from sabnzbd.misc import caller_name, opts_to_pp, to_units, bool_conv, match_str
from sabnzbd.filesystem import remove_file, clip_path
DB_LOCK = threading.Lock()
@@ -129,7 +129,7 @@ class HistoryDB:
logging.error(T("Cannot write to History database, check access rights!"))
# Report back success, because there's no recovery possible
return True
elif "not a database" in error or "malformed" in error or "duplicate column name" in error:
elif match_str(error, ("not a database", "malformed", "no such table", "duplicate column name")):
logging.error(T("Damaged History database, created empty replacement"))
logging.info("Traceback: ", exc_info=True)
self.close()
@@ -141,7 +141,7 @@ class HistoryDB:
self.connect()
# Return False in case of "duplicate column" error
# because the column addition in connect() must be terminated
return "duplicate column name" not in error
return True
else:
logging.error(T("SQL Command Failed, see log"))
logging.info("SQL: %s", command)

View File

@@ -92,7 +92,7 @@ def decode(article: Article, data_view: memoryview):
sabnzbd.Downloader.pause()
# This article should be fetched again
sabnzbd.NzbQueue.reset_try_lists(article)
article.allow_new_fetcher()
return
except BadData as error:

View File

@@ -214,7 +214,7 @@ class DirectUnpacker(threading.Thread):
"in the encrypted file",
"CRC failed",
"checksum failed",
"You need to start extraction from a previous volume",
"not enough space on the disk",
"password is incorrect",
"Incorrect password",
"Write error",

View File

@@ -202,7 +202,7 @@ class Server:
articles getting stuck in the Server when enabled/disabled"""
logging.debug("Resetting article queue for %s (%s)", self, self.article_queue)
for article in self.article_queue:
sabnzbd.NzbQueue.reset_try_lists(article)
article.allow_new_fetcher()
self.article_queue = []
def request_addrinfo(self):
@@ -968,9 +968,9 @@ class Downloader(Thread):
self.decode(nw.article)
nw.article.tries = 0
else:
# Allow all servers again on this server
# Allow all servers again for this article
# Do not use the article_queue, as the server could already have been disabled when we get here!
sabnzbd.NzbQueue.reset_try_lists(nw.article)
nw.article.allow_new_fetcher()
# Reset connection object
nw.hard_reset(wait)

View File

@@ -70,10 +70,12 @@ class AddrInfo:
canonname: str
sockaddr: Union[Tuple[str, int], Tuple[str, int, int, int]]
ipaddress: str = ""
port: int = 0
def __post_init__(self):
# For easy access
self.ipaddress = self.sockaddr[0]
self.port = self.sockaddr[1]
def family_type(family) -> str:
@@ -98,16 +100,18 @@ def do_socket_connect(result_queue: queue.Queue, addrinfo: AddrInfo, timeout: in
s.connect(addrinfo.sockaddr)
result_queue.put(addrinfo)
logging.debug(
"Happy Eyeballs connected to %s (%s) in %dms",
"Happy Eyeballs connected to %s (%s, port=%d) in %dms",
addrinfo.ipaddress,
addrinfo.canonname,
addrinfo.port,
1000 * (time.time() - start),
)
except socket.error:
logging.debug(
"Happy Eyeballs failed to connect to %s (%s) in %dms",
"Happy Eyeballs failed to connect to %s (%s, port=%d) in %dms",
addrinfo.ipaddress,
addrinfo.canonname,
addrinfo.port,
1000 * (time.time() - start),
)
finally:

View File

@@ -843,7 +843,7 @@ SPECIAL_BOOL_LIST = (
"api_warnings",
"helpful_warnings",
"ampm",
"enable_multipar",
"disable_par2cmdline",
"enable_unrar",
"enable_7zip",
"enable_filejoin",

View File

@@ -734,6 +734,7 @@ def rar_extract_core(
extracted = []
rarfiles = []
fail = 0
requires_kill = False
inrecovery = False
lines = []
@@ -789,6 +790,14 @@ def rar_extract_core(
nzo.set_unpack_info("Unpack", msg, setname)
fail = 1
elif line.startswith("There is not enough space on the disk"):
msg = T("Unpacking failed, disk full")
nzo.fail_msg = msg
nzo.set_unpack_info("Unpack", msg, setname)
fail = 1
# After this is a line that requires user input ([R]etry, [A]bort), which hangs, so we need a kill
requires_kill = True
elif line.startswith("Cannot create"):
line2 = p.stdout.readline()
if "must not exceed 260" in line2:
@@ -799,7 +808,7 @@ def rar_extract_core(
nzo.set_unpack_info("Unpack", msg, setname)
fail = 1
# Kill the process (can stay in endless loop on Windows Server)
p.kill()
requires_kill = True
elif line.startswith("ERROR: "):
nzo.fail_msg = line
@@ -844,9 +853,10 @@ def rar_extract_core(
extracted.append(real_path(extraction_path, unpacked_file))
if fail:
if p.stdout:
p.stdout.close()
p.wait()
if requires_kill:
p.kill()
else:
p.wait()
logging.debug("UNRAR output: \n%s", "\n".join(lines))
return fail, [], []
@@ -1059,7 +1069,7 @@ def par2_repair(nzo: NzbObject, setname: str) -> Tuple[bool, bool]:
joinables, _, _, _ = build_filelists(nzo.download_path, check_rar=False)
# Multipar on Windows, par2cmdline on the other platforms
if cfg.enable_multipar() and sabnzbd.WIN32:
if cfg.disable_par2cmdline() and sabnzbd.WIN32:
finished, readd, used_joinables, used_for_repair = multipar_verify(parfile, nzo, setname, joinables)
else:
finished, readd, used_joinables, used_for_repair = par2cmdline_verify(parfile, nzo, setname, joinables)
@@ -1150,13 +1160,7 @@ def par2cmdline_verify(
else:
# Normal case, everything is named after set
wildcard = setname + "*"
if sabnzbd.MACOS or sabnzbd.WIN32:
command.append(os.path.join(parfolder, wildcard))
else:
# For Unix systems, remove folders, due to bug in some par2cmdline versions
flist = [item for item in globber_full(parfolder, wildcard) if os.path.isfile(item)]
command.extend(flist)
command.append(os.path.join(parfolder, wildcard))
# We need to check for the bad par2cmdline that skips blocks
# Or the one that complains about basepath

View File

@@ -669,16 +669,6 @@ class NzbQueue:
except:
return -1
@staticmethod
def reset_try_lists(article: Article, remove_fetcher_from_trylist: bool = True):
"""Let article get new fetcher and reset trylists"""
if remove_fetcher_from_trylist:
article.remove_from_try_list(article.fetcher)
article.fetcher = None
article.tries = 0
article.nzf.reset_try_list()
article.nzf.nzo.reset_try_list()
def has_forced_jobs(self) -> bool:
"""Check if the queue contains any Forced
Priority jobs to download while paused
@@ -885,7 +875,7 @@ class NzbQueue:
logging.info("Found idle job %s", nzo.final_name)
empty.append(nzo)
# Stall prevention by checking if all servers are in the trylist
# Stall prevention by checking if all servers are in the try list
# This is a CPU-cheaper alternative to prevent stalling
if nzo.all_servers_in_try_list(active_servers):
# Maybe the NZF's need a reset too?
@@ -904,7 +894,7 @@ class NzbQueue:
logging.info("Resetting bad trylist for file %s in job %s", nzf.filename, nzo.final_name)
nzf.reset_try_list()
# Reset main trylist, minimal performance impact
# Reset main try list, minimal performance impact
logging.info("Resetting bad trylist for job %s", nzo.final_name)
nzo.reset_try_list()

View File

@@ -111,7 +111,7 @@ RE_RAR = re.compile(r"(\.rar|\.r\d\d|\.s\d\d|\.t\d\d|\.u\d\d|\.v\d\d)$", re.I)
# Trylist
##############################################################################
TRYLIST_LOCK = threading.Lock()
TRYLIST_LOCK = threading.RLock()
class TryList:
@@ -203,12 +203,25 @@ class Article(TryList):
self.crc32: Optional[int] = None
self.nzf: NzbFile = nzf
@synchronized(TRYLIST_LOCK)
def reset_try_list(self):
"""In addition to resetting the try list, also reset fetcher so all servers are tried again"""
"""In addition to resetting the try list, also reset fetcher so all servers
are tried again. Locked so fetcher setting changes are also protected."""
self.fetcher = None
self.fetcher_priority = 0
super().reset_try_list()
@synchronized(TRYLIST_LOCK)
def allow_new_fetcher(self, remove_fetcher_from_try_list: bool = True):
"""Let article get new fetcher and reset try lists of file and job.
Locked so all resets are performed at once"""
if remove_fetcher_from_try_list:
self.remove_from_try_list(self.fetcher)
self.fetcher = None
self.tries = 0
self.nzf.reset_try_list()
self.nzf.nzo.reset_try_list()
def get_article(self, server: Server, servers: List[Server]):
"""Return article when appropriate for specified server"""
if self.fetcher or self.server_in_try_list(server):
@@ -249,7 +262,7 @@ class Article(TryList):
if server.priority >= self.fetcher.priority:
self.tries = 0
# Allow all servers for this nzo and nzf again (but not this fetcher for this article)
sabnzbd.NzbQueue.reset_try_lists(self, remove_fetcher_from_trylist=False)
self.allow_new_fetcher(remove_fetcher_from_try_list=False)
return True
logging.info("Article %s unavailable on all servers, discarding", self.article)
@@ -276,17 +289,6 @@ class Article(TryList):
self.fetcher_priority = 0
self.tries = 0
def __eq__(self, other):
"""Articles with the same usenet address are the same"""
return self.article == other.article
def __hash__(self):
"""Required because we implement eq. Articles with the same
usenet address can appear in different NZF's. So we make every
article object unique, even though it is bad practice.
"""
return id(self)
def __repr__(self):
return "<Article: article=%s, bytes=%s, art_id=%s>" % (self.article, self.bytes, self.art_id)
@@ -431,8 +433,11 @@ class NzbFile(TryList):
self.add_to_try_list(server)
return articles
@synchronized(TRYLIST_LOCK)
def reset_all_try_lists(self):
"""Clear all lists of visited servers"""
"""Reset all try lists. Locked so reset is performed
for all items at the same time without chance of another
thread changing any of the items while we are resetting"""
for art in self.articles:
art.reset_try_list()
self.reset_try_list()
@@ -481,10 +486,12 @@ class NzbFile(TryList):
"""Assume it's the same file if the number bytes and first article
are the same or if there are no articles left, use the filenames.
Some NZB's are just a mess and report different sizes for the same article.
We used to compare (__eq__) articles based on article-ID, however, this failed
because some NZB's had the same article-ID twice within one NZF.
"""
if other and (self.bytes == other.bytes or len(self.decodetable) == len(other.decodetable)):
if self.decodetable and other.decodetable:
return self.decodetable[0] == other.decodetable[0]
return self.decodetable[0].article == other.decodetable[0].article
# Fallback to filename comparison
return self.filename == other.filename
return False
@@ -1001,7 +1008,11 @@ class NzbObject(TryList):
except:
logging.debug("The lastrar swap did not go well")
@synchronized(TRYLIST_LOCK)
def reset_all_try_lists(self):
"""Reset all try lists. Locked so reset is performed
for all items at the same time without chance of another
thread changing any of the items while we are resetting"""
for nzf in self.files:
nzf.reset_all_try_lists()
self.reset_try_list()
@@ -1212,7 +1223,7 @@ class NzbObject(TryList):
# Abort the job due to failure
if not job_can_succeed:
self.fail_msg = T("Aborted, cannot be completed") + " - https://sabnzbd.org/not-complete"
self.set_unpack_info("Download", self.fail_msg, unique=False)
self.set_unpack_info("Download", self.fail_msg)
logging.debug('Abort job "%s", due to impossibility to complete it', self.final_name)
return True, True, True
@@ -1442,7 +1453,7 @@ class NzbObject(TryList):
@synchronized(NZO_LOCK)
def add_parfile(self, parfile: NzbFile) -> bool:
"""Add parfile to the files to be downloaded
Resets trylist just to be sure
Resets try list just to be sure
Adjust download-size accordingly
Returns False when the file couldn't be added
"""

View File

@@ -6,5 +6,5 @@
# You MUST use double quotes (so " and not ')
# Do not forget to update the appdata file for every major release!
__version__ = "4.4.0Alpha2"
__version__ = "4.4.0Beta2"
__baseline__ = "unknown"

View File

@@ -1,5 +1,5 @@
# Testing requirements
pytest==7.4.4
pytest
setuptools
selenium
requests

View File

@@ -175,7 +175,7 @@ class TestPar2Repair:
]
)
if sabnzbd.WIN32 and cfg.enable_multipar():
if sabnzbd.WIN32 and cfg.disable_par2cmdline():
# Multipar output status updates
nzo.set_action_line.assert_has_calls(
[
@@ -238,7 +238,7 @@ class TestPar2Repair:
# There are no renames in case of filejoin by par2repair!
nzo.renamed_file.assert_not_called()
if sabnzbd.WIN32 and cfg.enable_multipar():
if sabnzbd.WIN32 and cfg.disable_par2cmdline():
# Multipar output status updates, which is limited because Multipar doesn't say much..
nzo.set_action_line.assert_has_calls(
[
@@ -301,7 +301,7 @@ class TestPar2Repair:
# All joinable files should be removed
assert dir_contents == ["__ADMIN__", "par2test.bin"]
if sabnzbd.WIN32 and cfg.enable_multipar():
if sabnzbd.WIN32 and cfg.disable_par2cmdline():
# Multipar output status updates, which is limited because Multipar doesn't say much..
nzo.set_action_line.assert_has_calls(
[

View File

Binary file not shown.

View File

Binary file not shown.