mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2026-01-07 23:18:26 -05:00
Compare commits
324 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e7e44e25f | ||
|
|
5c4dfa4cc6 | ||
|
|
b7e3401e8e | ||
|
|
90cee7fb31 | ||
|
|
8e0e3cf35e | ||
|
|
7f72584537 | ||
|
|
8f0d606892 | ||
|
|
9fafe64cff | ||
|
|
94b42e0597 | ||
|
|
b2c1960d93 | ||
|
|
9d24b4cc35 | ||
|
|
3d675b033c | ||
|
|
0d2d9be8b3 | ||
|
|
6e9b6dab97 | ||
|
|
44a1717f6d | ||
|
|
4f51c74297 | ||
|
|
87c64a8c5d | ||
|
|
b6c6635f22 | ||
|
|
5a7abcb07c | ||
|
|
65232d134b | ||
|
|
d7b4bdefe5 | ||
|
|
6d9174bea1 | ||
|
|
921edfd4c5 | ||
|
|
786d5b0667 | ||
|
|
e846c71f20 | ||
|
|
0108e2ef5a | ||
|
|
9a81277ff6 | ||
|
|
06cc2ff316 | ||
|
|
7cdf4cb48c | ||
|
|
c34c547f1f | ||
|
|
9507294db7 | ||
|
|
ae7dd62d9f | ||
|
|
52e309cb09 | ||
|
|
b580373982 | ||
|
|
ec7bde5bb2 | ||
|
|
3516eeec5b | ||
|
|
52351192e6 | ||
|
|
3a6f04496d | ||
|
|
47f2df2112 | ||
|
|
363a26b8a1 | ||
|
|
7e50a00f55 | ||
|
|
a7d6a80e82 | ||
|
|
e7da95b2ac | ||
|
|
74fca23d59 | ||
|
|
0a12fa1253 | ||
|
|
1263068140 | ||
|
|
916c191b18 | ||
|
|
d8c0220353 | ||
|
|
4ab425d15c | ||
|
|
74e5633d1c | ||
|
|
89d36bbc61 | ||
|
|
1877ac18a5 | ||
|
|
5e42e25617 | ||
|
|
c27c9564cf | ||
|
|
c4b0da335d | ||
|
|
fab36ec008 | ||
|
|
8a2b875779 | ||
|
|
efaffb8298 | ||
|
|
e004eb3f00 | ||
|
|
43e8f6dc81 | ||
|
|
f5bff8fe7c | ||
|
|
fad8484b93 | ||
|
|
7664b54f89 | ||
|
|
21cbc353dd | ||
|
|
8d66306ec4 | ||
|
|
479daf0e76 | ||
|
|
bf0fbb7b10 | ||
|
|
d3c91f1585 | ||
|
|
ca165b328a | ||
|
|
fa2ffeea92 | ||
|
|
0d00965ac3 | ||
|
|
7d7bec1f80 | ||
|
|
b6fd915365 | ||
|
|
fecae72267 | ||
|
|
7bffd91e3f | ||
|
|
f859521a7e | ||
|
|
a869386fac | ||
|
|
8bc7885b7a | ||
|
|
78be46738d | ||
|
|
6fce73855c | ||
|
|
fa844a6223 | ||
|
|
906379dd09 | ||
|
|
37cded612f | ||
|
|
73e8fade61 | ||
|
|
758cc7afab | ||
|
|
d74b7b06d2 | ||
|
|
39009f2f71 | ||
|
|
9fdc1c6813 | ||
|
|
c5568fe830 | ||
|
|
bad81f84b9 | ||
|
|
2ac08dd0e6 | ||
|
|
408ffc4539 | ||
|
|
eb958327c5 | ||
|
|
e157d77a1e | ||
|
|
e961c9ea8f | ||
|
|
258c4f769d | ||
|
|
b31fedd857 | ||
|
|
eafe69500b | ||
|
|
ae09990c43 | ||
|
|
cf54b65c32 | ||
|
|
7974421fa1 | ||
|
|
847a098d4e | ||
|
|
eb4de0ae0f | ||
|
|
bca9f3b753 | ||
|
|
cad8a9a5d3 | ||
|
|
f5f36d21e8 | ||
|
|
c51435c114 | ||
|
|
2a7f1780b4 | ||
|
|
98a44e40fb | ||
|
|
65cf6fa9a1 | ||
|
|
b2e32d1720 | ||
|
|
f0bfedbe8e | ||
|
|
fd4e059c13 | ||
|
|
a53575e154 | ||
|
|
4a73484603 | ||
|
|
03b380f90b | ||
|
|
a2bd3b2dfe | ||
|
|
56fe140ebf | ||
|
|
4fafcce740 | ||
|
|
02352c4ae6 | ||
|
|
4b74aab335 | ||
|
|
2d67ac189d | ||
|
|
8ece62e23d | ||
|
|
56c2bdd77d | ||
|
|
1f555f1930 | ||
|
|
8496432c14 | ||
|
|
1672ffa670 | ||
|
|
6aab199f12 | ||
|
|
46d0c379a4 | ||
|
|
99240f145a | ||
|
|
3c9079d73c | ||
|
|
0eb98b9a6c | ||
|
|
76bfd98b77 | ||
|
|
3348640c88 | ||
|
|
d81c64fd2b | ||
|
|
8b4c919617 | ||
|
|
76c58953df | ||
|
|
4ddc5caa49 | ||
|
|
694663bd95 | ||
|
|
62aba5844e | ||
|
|
d0d60cef05 | ||
|
|
3d293fdcb0 | ||
|
|
96e9528046 | ||
|
|
4ea24b3203 | ||
|
|
a756eea25a | ||
|
|
210020e489 | ||
|
|
e586ead024 | ||
|
|
14c80bf1dc | ||
|
|
bdd56e794a | ||
|
|
a544548934 | ||
|
|
e06c1d61fb | ||
|
|
600c5209c6 | ||
|
|
bee90366ee | ||
|
|
e9bc4e9417 | ||
|
|
f01ff15761 | ||
|
|
356ada159d | ||
|
|
cc831e16d8 | ||
|
|
b8dc46ad01 | ||
|
|
d8ab19087d | ||
|
|
ec8a79eedd | ||
|
|
f1e2a8e9d8 | ||
|
|
4042a5fe5d | ||
|
|
a4752751ed | ||
|
|
e23ecf46d1 | ||
|
|
70a8c597a6 | ||
|
|
fa639bdb53 | ||
|
|
233bdd5b1d | ||
|
|
a0ab6d35c7 | ||
|
|
bd29680ce7 | ||
|
|
7139e92554 | ||
|
|
897df53466 | ||
|
|
58281711f6 | ||
|
|
b524383aa3 | ||
|
|
75a16e3588 | ||
|
|
1453032ad6 | ||
|
|
824ab4afad | ||
|
|
73dd41c67f | ||
|
|
59ee77355d | ||
|
|
5c758773ad | ||
|
|
46de49df06 | ||
|
|
d1c54a9a74 | ||
|
|
e7527c45cd | ||
|
|
7d5207aa67 | ||
|
|
654302e691 | ||
|
|
ee673b57fd | ||
|
|
2be374b841 | ||
|
|
906e1eda89 | ||
|
|
ece02cc4fa | ||
|
|
876ad60ddf | ||
|
|
862da354ac | ||
|
|
8fd477b979 | ||
|
|
2d7005655c | ||
|
|
7322f8348a | ||
|
|
e3e3a12e73 | ||
|
|
77cdd057a4 | ||
|
|
e8206fbdd9 | ||
|
|
589f15a77b | ||
|
|
7bb443678a | ||
|
|
6390415101 | ||
|
|
4abf192e11 | ||
|
|
1fed37f9da | ||
|
|
a9d86a7447 | ||
|
|
2abe4c3cef | ||
|
|
0542c25003 | ||
|
|
1b8ee4e290 | ||
|
|
51128cba55 | ||
|
|
3612432581 | ||
|
|
deca000a1b | ||
|
|
39cccb5653 | ||
|
|
f6838dc985 | ||
|
|
8cd4d92395 | ||
|
|
3bf9906f45 | ||
|
|
9f7daf96ef | ||
|
|
67de4df155 | ||
|
|
bc51a4bd1c | ||
|
|
bb54616018 | ||
|
|
6bcff5e014 | ||
|
|
8970a03a9a | ||
|
|
3ad717ca35 | ||
|
|
b14f72c67a | ||
|
|
45d036804f | ||
|
|
8f606db233 | ||
|
|
3766ba5402 | ||
|
|
e851813cef | ||
|
|
4d49ad9141 | ||
|
|
16618b3af2 | ||
|
|
0e5c0f664f | ||
|
|
7be9281431 | ||
|
|
ee0327fac1 | ||
|
|
9930de3e7f | ||
|
|
e8503e89c6 | ||
|
|
1d9ed419eb | ||
|
|
0207652e3e | ||
|
|
0f1e99c5cb | ||
|
|
f134bc7efb | ||
|
|
dcd7c7180e | ||
|
|
fbbfcd075b | ||
|
|
f42d2e4140 | ||
|
|
88882cebbc | ||
|
|
17a979675c | ||
|
|
4642850c79 | ||
|
|
e8d6eebb04 | ||
|
|
864c5160c0 | ||
|
|
99b5a00c12 | ||
|
|
85ee1f07d7 | ||
|
|
e58b4394e0 | ||
|
|
1e91a57bf1 | ||
|
|
39cee52a7e | ||
|
|
72068f939d | ||
|
|
096d0d3cad | ||
|
|
2472ab0121 | ||
|
|
00421717b8 | ||
|
|
ae96d93f94 | ||
|
|
8522c40c8f | ||
|
|
23f86e95f1 | ||
|
|
eed2045189 | ||
|
|
217785bf0f | ||
|
|
6aef50dc5d | ||
|
|
16b6e3caa7 | ||
|
|
3de4c99a8a | ||
|
|
980aa19a75 | ||
|
|
fb4b57e056 | ||
|
|
03638365ea | ||
|
|
157cb1c83d | ||
|
|
e51f11c2b1 | ||
|
|
1ad0961dd8 | ||
|
|
46ff7dd4e2 | ||
|
|
8b067df914 | ||
|
|
ef43b13272 | ||
|
|
e8e9974224 | ||
|
|
feebbb9f04 | ||
|
|
bc4f06dd1d | ||
|
|
971e4fc909 | ||
|
|
51cc765949 | ||
|
|
19c6a4fffa | ||
|
|
105ac32d2f | ||
|
|
57550675d2 | ||
|
|
e674abc5c0 | ||
|
|
f965c96f51 | ||
|
|
c76b8ed9e0 | ||
|
|
4fbd0d8a7b | ||
|
|
2186c0fff6 | ||
|
|
1adca9a9c1 | ||
|
|
9408353f2b | ||
|
|
84f4d453d2 | ||
|
|
d10209f2a1 | ||
|
|
3ae149c72f | ||
|
|
47385acc3b | ||
|
|
814eeaa900 | ||
|
|
5f2ea13aad | ||
|
|
41ca217931 | ||
|
|
b57d36e8dd | ||
|
|
9a4be70734 | ||
|
|
a8443595a6 | ||
|
|
fd0a70ac58 | ||
|
|
8a8685c968 | ||
|
|
9e6cb8da8e | ||
|
|
054ec54d51 | ||
|
|
272ce773cb | ||
|
|
050b925f7b | ||
|
|
0087940898 | ||
|
|
e323c014f9 | ||
|
|
cc465c7554 | ||
|
|
14cb37564f | ||
|
|
094db56c3b | ||
|
|
aabb709b8b | ||
|
|
0833dd2db9 | ||
|
|
cd3f912be4 | ||
|
|
665c516db6 | ||
|
|
b670da9fa0 | ||
|
|
80bee9bffe | ||
|
|
d85a70e8ad | ||
|
|
8f21533e76 | ||
|
|
89996482a1 | ||
|
|
03c10dce91 | ||
|
|
bd5331be05 | ||
|
|
46e1645289 | ||
|
|
4ce3965747 | ||
|
|
9d4af19db3 | ||
|
|
48e034f4be | ||
|
|
f8959baa2f | ||
|
|
8ed5997eae | ||
|
|
daf9f50ac8 | ||
|
|
6b11013c1a |
3
.github/renovate.json
vendored
3
.github/renovate.json
vendored
@@ -22,8 +22,7 @@
|
||||
"ignoreDeps": [
|
||||
"jaraco.text",
|
||||
"sabctools",
|
||||
"werkzeug",
|
||||
"pyinstaller"
|
||||
"werkzeug"
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
|
||||
6
.github/workflows/build_release.yml
vendored
6
.github/workflows/build_release.yml
vendored
@@ -39,7 +39,7 @@ jobs:
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: "*-win64-bin.zip"
|
||||
name: Windows standalone binary (64bit)
|
||||
name: Windows Windows standalone binary (64bit)
|
||||
- name: Upload Windows installer (64bit)
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
@@ -71,7 +71,7 @@ jobs:
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: "*-win32-bin.zip"
|
||||
name: Windows standalone binary (32bit and legacy)
|
||||
name: Windows Windows standalone binary (32bit and legacy)
|
||||
|
||||
build_macos:
|
||||
name: Build macOS binary
|
||||
@@ -81,7 +81,7 @@ 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.2"
|
||||
PYTHON_VERSION: "3.12.1"
|
||||
MACOSX_DEPLOYMENT_TARGET: "10.9"
|
||||
# We need to force compile for universal2 support
|
||||
CFLAGS: -arch x86_64 -arch arm64
|
||||
|
||||
37
README.mkd
37
README.mkd
@@ -1,40 +1,7 @@
|
||||
Release Notes - SABnzbd 4.2.3 Release Candidate 2
|
||||
Release Notes - SABnzbd 4.2.0
|
||||
=========================================================
|
||||
|
||||
This is the third bug-fix release of SABnzbd 4.2.0.
|
||||
|
||||
## Bug-fixes and changes since 4.2.2:
|
||||
|
||||
* **Bug-fixes:**
|
||||
* Handle new status code for missing articles, which could result in timeouts.
|
||||
* Retry of failed job would not use the password provided.
|
||||
* Optimize database handling in order to prevent locking errors.
|
||||
* macOS: System standby after finishing the queue would not always work.
|
||||
|
||||
* **Changes:**
|
||||
* Remove `Send Group` option for Servers.
|
||||
|
||||
## Bug-fixes and changes since 4.2.1:
|
||||
|
||||
* **Bug-fixes:**
|
||||
* RSS readout could result in a crash if Duplicate Detection was enabled.
|
||||
* Passwords were not always correctly parsed.
|
||||
* Warnings could show even if `helpful_warnings` was disabled.
|
||||
* Duplicate Detection would trigger again on URLs if they were resumed.
|
||||
* Windows: Fatal crash could occur if ran as Service or on older Windows versions.
|
||||
|
||||
* **Changes:**
|
||||
* Parsing of filenames from the NZB was extended to allow more exotic formatting.
|
||||
* Windows: Installer will automatically shutdown SABnzbd if it is running.
|
||||
|
||||
## Bug-fixes and changes since 4.2.0:
|
||||
|
||||
* **Bug-fixes:**
|
||||
* New downloads did not appear in the History after the update to 4.2.0.
|
||||
|
||||
* **Changes:**
|
||||
* The external IPv6-address is shown, instead of the internal address.
|
||||
* Windows: Network drives as `Download Folder` are no longer blocked, only warned against.
|
||||
This is the latest stable SABnzbd release, version 4.2.0, which includes several new features and bug fixes.
|
||||
|
||||
## Key changes since 4.1.0
|
||||
|
||||
|
||||
@@ -103,7 +103,8 @@ import sabnzbd.config as config
|
||||
import sabnzbd.cfg
|
||||
import sabnzbd.notifier as notifier
|
||||
import sabnzbd.zconfig
|
||||
from sabnzbd.getipaddress import local_ipv4
|
||||
from sabnzbd.getipaddress import localipv4, publicipv4, ipv6, dnslookup
|
||||
from sabnzbd.utils.getperformance import getpystone, getcpu
|
||||
import sabnzbd.utils.ssdp as ssdp
|
||||
|
||||
try:
|
||||
@@ -1473,7 +1474,7 @@ def main():
|
||||
external_host = cherryhost
|
||||
else:
|
||||
# Fall back to the IPv4 address of the LAN interface
|
||||
external_host = local_ipv4()
|
||||
external_host = localipv4()
|
||||
logging.debug("Using %s as host address for Bonjour and SSDP", external_host)
|
||||
|
||||
# Only broadcast to local network addresses. If local ranges have been defined, further
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Basic build requirements
|
||||
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
|
||||
pyinstaller==5.13.2
|
||||
pyinstaller==6.3.0
|
||||
packaging==23.2
|
||||
pyinstaller-hooks-contrib==2024.0
|
||||
pyinstaller-hooks-contrib==2023.11
|
||||
altgraph==0.17.4
|
||||
wrapt==1.16.0
|
||||
setuptools==69.0.3
|
||||
@@ -14,7 +14,7 @@ importlib_resources==6.1.1; python_version < '3.10'
|
||||
zipp==3.17.0; python_version < '3.10'
|
||||
|
||||
# orjson does not support 32bit Windows, also exclude based on Python-version
|
||||
orjson==3.9.12; python_version > '3.8'
|
||||
orjson==3.9.10; python_version > '3.8'
|
||||
|
||||
# For the Windows build
|
||||
pefile==2023.2.7; sys_platform == 'win32'
|
||||
|
||||
@@ -170,24 +170,6 @@ Section "SABnzbd" SecDummy
|
||||
SetOutPath "$INSTDIR"
|
||||
SetShellVarContext all
|
||||
|
||||
DetailPrint $(MsgShutting)
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Shutdown any running service
|
||||
|
||||
!insertmacro SERVICE "stop" "SABnzbd" ""
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Terminate SABnzbd.exe
|
||||
loop:
|
||||
${nsProcess::FindProcess} "SABnzbd.exe" $R0
|
||||
StrCmp $R0 0 0 endcheck
|
||||
${nsProcess::CloseProcess} "SABnzbd.exe" $R0
|
||||
Sleep 500
|
||||
Goto loop
|
||||
endcheck:
|
||||
${nsProcess::Unload}
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Make sure old versions are gone (reg-key already read in onInt)
|
||||
StrCmp $PREV_INST_DIR "" noPrevInstallRemove
|
||||
@@ -309,6 +291,31 @@ Function .onInit
|
||||
; Display language chooser
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; make sure user terminates sabnzbd.exe or else abort
|
||||
;
|
||||
loop:
|
||||
${nsProcess::FindProcess} "SABnzbd.exe" $R0
|
||||
StrCmp $R0 0 0 endcheck
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgCloseSab) IDOK loop IDCANCEL exitinstall
|
||||
exitinstall:
|
||||
${nsProcess::Unload}
|
||||
Abort
|
||||
endcheck:
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; make sure both services aren't running
|
||||
;
|
||||
!insertmacro SERVICE "running" "SABnzbd" ""
|
||||
Pop $0 ;response
|
||||
!insertmacro SERVICE "running" "SABHelper" ""
|
||||
Pop $1
|
||||
${If} $0 == true
|
||||
${OrIf} $1 == true
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgCloseSab) IDOK loop IDCANCEL exitinstall
|
||||
; exitinstall already defined above
|
||||
${EndIf}
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Tell users about the service change
|
||||
;
|
||||
@@ -316,8 +323,7 @@ Function .onInit
|
||||
Pop $0 ;response
|
||||
${If} $0 == true
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgServChange) IDOK removeservices IDCANCEL exitinstall
|
||||
exitinstall:
|
||||
Abort
|
||||
; exitinstall already defined above
|
||||
removeservices:
|
||||
!insertmacro SERVICE "delete" "SABHelper" ""
|
||||
!insertmacro SERVICE "delete" "SABnzbd" ""
|
||||
@@ -339,9 +345,9 @@ UninstallText $(MsgUninstall)
|
||||
|
||||
Section "un.$(MsgDelProgram)" Uninstall
|
||||
;make sure sabnzbd.exe isn't running..if so shut it down
|
||||
DetailPrint $(MsgShutting)
|
||||
${nsProcess::KillProcess} "SABnzbd.exe" $R0
|
||||
${nsProcess::Unload}
|
||||
DetailPrint "Process Killed"
|
||||
|
||||
; add delete commands to delete whatever files/registry keys/etc you installed here.
|
||||
Delete "$INSTDIR\uninstall.exe"
|
||||
@@ -403,14 +409,14 @@ SectionEnd
|
||||
|
||||
LangString MsgSupportUs ${LANG_ENGLISH} "Support the project, Donate!"
|
||||
|
||||
LangString MsgCloseSab ${LANG_ENGLISH} "Please close $\"SABnzbd.exe$\" first"
|
||||
|
||||
LangString MsgServChange ${LANG_ENGLISH} "The SABnzbd Windows Service changed in SABnzbd 3.0.0. $\nYou will need to reinstall the SABnzbd service. $\n$\nClick `OK` to remove the existing services or `Cancel` to cancel this upgrade."
|
||||
|
||||
LangString MsgOnly64bit ${LANG_ENGLISH} "The installer only supports 64-bit Windows, use the standalone version to run on 32-bit Windows."
|
||||
|
||||
LangString MsgNoWin7 ${LANG_ENGLISH} "The installer only supports Windows 8.1 and above, use the standalone legacy version to run on older Windows version."
|
||||
|
||||
LangString MsgShutting ${LANG_ENGLISH} "Shutting down SABnzbd"
|
||||
|
||||
LangString MsgUninstall ${LANG_ENGLISH} "This will uninstall SABnzbd from your system"
|
||||
|
||||
LangString MsgRunAtStart ${LANG_ENGLISH} "Run at startup"
|
||||
|
||||
@@ -29,8 +29,18 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">OpenSSL:</th>
|
||||
<td>$ssl_version</td>
|
||||
<td>
|
||||
$ssl_version
|
||||
</td>
|
||||
</tr>
|
||||
<!--#if not $certificate_validation#-->
|
||||
<tr>
|
||||
<th scope="row"></th>
|
||||
<td>
|
||||
<span class="label label-danger">$T('warning')</span> $T('explain-nosslcontext')
|
||||
</td>
|
||||
</tr>
|
||||
<!--#end if#-->
|
||||
<!--#if not $windows and not $macos#-->
|
||||
<tr>
|
||||
<th scope="row">Par2cmdline-turbo:</th>
|
||||
@@ -79,7 +89,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">$T('menu-live-chat') </th>
|
||||
<td><a href="https://sabnzbd.org/live-chat/" target="_blank">https://sabnzbd.org/live-chat/</a> (IRC & Discord)</td>
|
||||
<td><a href="https://sabnzbd.org/live-chat/" target="_blank">https://sabnzbd.org/live-chat/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">$T('menu-issues') </th>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<span class="desc">$T('explain-enable_https')</span>
|
||||
<span class="desc"><span class="label label-warning">$T('warning').upper()</span> $T('explain-enable_https_warning')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="web_dir">$T('opt-web_dir')</label>
|
||||
<select name="web_dir" id="web_dir">
|
||||
<!--#for $webline in $web_list#-->
|
||||
@@ -172,10 +172,11 @@
|
||||
<option value="1" <!--#if $check_new_rel == 1 then 'selected="selected"' else ""#--> >$T('on')</option>
|
||||
<option value="2" <!--#if $check_new_rel == 2 then 'selected="selected"' else ""#--> >$T('also-test')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-check_new_rel')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<div class="field-pair advanced-settings <!--#if int($certificate_validation) == 0 then "disabled" else ""#-->">
|
||||
<label class="config" for="enable_https_verification">$T('opt-enable_https_verification')</label>
|
||||
<input type="checkbox" name="enable_https_verification" id="enable_https_verification" value="1" <!--#if int($enable_https_verification) > 0 then 'checked="checked"' else ""#--> />
|
||||
<input type="checkbox" name="enable_https_verification" id="enable_https_verification" value="1" <!--#if int($enable_https_verification) > 0 then 'checked="checked"' else ""#--> <!--#if int($certificate_validation) == 0 then "disabled=\"disabled\"" else ""#--> />
|
||||
<span class="desc">$T('explain-enable_https_verification')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
|
||||
@@ -91,9 +91,9 @@
|
||||
<label class="config" for="timeout">$T('srv-timeout')</label>
|
||||
<input type="number" name="timeout" id="timeout" min="20" max="240" /> <i>$T('seconds')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<div class="field-pair <!--#if int($certificate_validation) == 0 then "disabled" else ""#--> advanced-settings">
|
||||
<label class="config" for="ssl_verify">$T('opt-ssl_verify')</label>
|
||||
<select name="ssl_verify" id="ssl_verify">
|
||||
<select name="ssl_verify" id="ssl_verify" <!--#if int($certificate_validation) == 0 then "disabled=\"disabled\"" else ""#-->>
|
||||
<option value="2" selected>$T('ssl_verify-strict')</option>
|
||||
<option value="1">$T('ssl_verify-normal')</option>
|
||||
<option value="0">$T('ssl_verify-disabled')</option>
|
||||
@@ -106,6 +106,11 @@
|
||||
<span class="desc">$T('explain-ssl_ciphers') <br>$T('readwiki')
|
||||
<a href="https://sabnzbd.org/wiki/advanced/ssl-ciphers" target="_blank">https://sabnzbd.org/wiki/advanced/ssl-ciphers</a></span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="send_group">$T('srv-send_group')</label>
|
||||
<input type="checkbox" name="send_group" id="send_group" value="1" />
|
||||
<span class="desc">$T('srv-explain-send_group')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="required">$T('srv-required')</label>
|
||||
<input type="checkbox" name="required" id="required" value="1" />
|
||||
@@ -218,9 +223,9 @@
|
||||
<input type="number" name="timeout" id="timeout$cur" value="$server['timeout']" min="20" max="240" required /> <i>$T('seconds')</i>
|
||||
</div>
|
||||
|
||||
<div class="field-pair advanced-settings">
|
||||
<div class="field-pair <!--#if int($certificate_validation) == 0 then "disabled" else ""#--> advanced-settings">
|
||||
<label class="config" for="ssl_verify$cur">$T('opt-ssl_verify')</label>
|
||||
<select name="ssl_verify" id="ssl_verify$cur">
|
||||
<select name="ssl_verify" id="ssl_verify$cur" <!--#if int($certificate_validation) == 0 then "disabled=\"disabled\"" else ""#-->>
|
||||
<option value="2" <!--#if $server['ssl_verify'] == 2 then 'selected="selected"' else ""#--> >$T('ssl_verify-strict')</option>
|
||||
<option value="1" <!--#if $server['ssl_verify'] == 1 then 'selected="selected"' else ""#--> >$T('ssl_verify-normal')</option>
|
||||
<option value="0" <!--#if $server['ssl_verify'] == 0 then 'selected="selected"' else ""#--> >$T('ssl_verify-disabled')</option>
|
||||
@@ -243,6 +248,11 @@
|
||||
<input type="checkbox" name="optional" id="optional$cur" value="1" <!--#if int($server['optional']) != 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-optional')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="send_group$cur">$T('srv-send_group')</label>
|
||||
<input type="checkbox" name="send_group" id="send_group$cur" value="1" <!--#if int($server['send_group']) != 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('srv-explain-send_group')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="expire_date$cur">$T('srv-expire_date')</label>
|
||||
<input type="date" name="expire_date" id="expire_date$cur" value="$server['expire_date']" />
|
||||
|
||||
@@ -47,7 +47,6 @@ textarea,
|
||||
.navbar-default .navbar-nav>.open>a:hover,
|
||||
.navbar-default .navbar-nav>li>a.active,
|
||||
.navbar-default .navbar-nav>li>a:hover,
|
||||
.navbar-default .navbar-nav>li>a:focus,
|
||||
.navbar-logo:hover,
|
||||
.quoteBlock,
|
||||
.selected,
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<a href="#" class="hover-button" title="$T('nzo-delete')" data-bind="visible: history.isMultiEditing(), click: history.doMultiDelete">
|
||||
<a href="#" class="hover-button" data-bind="visible: history.isMultiEditing(), click: history.doMultiDelete">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
<a href="#modal-purge-history" class="hover-button" title="$T('purgeHist')" data-bind="visible: !history.isMultiEditing()" data-toggle="modal" data-tooltip="true" data-placement="left">
|
||||
|
||||
@@ -665,9 +665,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
$T('Glitter-retryNoChecks')
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-default"><span class="glyphicon glyphicon-repeat"></span> $T('button-retry')</button>
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
<label for="multiedit-checkall-queue">
|
||||
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-queue" title="$T('Glitter-checkAll')" data-bind="click: queue.checkAllJobs" data-tooltip="true" data-placement="top" />
|
||||
</label>
|
||||
<a href="#" class="hover-button" title="$T('removeNZB-Files')" data-bind="click: queue.doMultiDelete">
|
||||
<a href="#" class="hover-button" data-bind="click: queue.doMultiDelete">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -140,12 +140,6 @@ select.form-control,
|
||||
color: #EBEBEB;
|
||||
}
|
||||
|
||||
.btn-default:not(.navbar-btn):hover,
|
||||
select:hover,
|
||||
input:hover {
|
||||
background-color: #666666;
|
||||
}
|
||||
|
||||
/* Needed to force the text-color */
|
||||
.table-striped>tbody>tr:nth-child(odd)>td,
|
||||
.table>tbody>tr:nth-child(odd)>td,
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<div class="form-group">
|
||||
<label for="ssl_verify" class="col-sm-4 control-label">$T('opt-ssl_verify')</label>
|
||||
<div class="col-sm-8">
|
||||
<select name="ssl_verify" id="ssl_verify" class="form-control">
|
||||
<select name="ssl_verify" id="ssl_verify" class="form-control" <!--#if int($certificate_validation) == 0 then "disabled=\"disabled\"" else ""#-->>
|
||||
<option value="2" <!--#if $ssl_verify == 2 then 'selected="selected"' else ""#--> >$T('ssl_verify-strict')</option>
|
||||
<option value="1" <!--#if $ssl_verify == 1 then 'selected="selected"' else ""#--> >$T('ssl_verify-normal')</option>
|
||||
<option value="0" <!--#if $ssl_verify == 0 then 'selected="selected"' else ""#--> >$T('ssl_verify-disabled')</option>
|
||||
|
||||
@@ -30,10 +30,7 @@
|
||||
<url type="faq">https://sabnzbd.org/wiki/faq</url>
|
||||
<url type="contact">https://sabnzbd.org/live-chat.html</url>
|
||||
<releases>
|
||||
<release version="4.2.3" date="2024-03-10" type="stable"/>
|
||||
<release version="4.2.2" date="2024-01-31" type="stable"/>
|
||||
<release version="4.2.1" date="2024-01-05" type="stable"/>
|
||||
<release version="4.2.0" date="2024-01-03" type="stable"/>
|
||||
<release version="4.2.0" date="2024-01-05" type="stable"/>
|
||||
<release version="4.1.0" date="2023-09-26" type="stable"/>
|
||||
<release version="4.0.3" date="2023-06-16" type="stable"/>
|
||||
<release version="4.0.2" date="2023-06-09" type="stable"/>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2RC1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# ION, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
113
po/email/it.po
113
po/email/it.po
@@ -1,113 +0,0 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\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"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Default Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> job $name\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"<!--#if $status #-->\n"
|
||||
"SABnzbd has downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
"<!--#else#-->\n"
|
||||
"SABnzbd has failed to download \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
"<!--#end if#-->\n"
|
||||
"Finished at $end_time\n"
|
||||
"Downloaded $size\n"
|
||||
"\n"
|
||||
"Results of the job:\n"
|
||||
"<!--#for $stage in $stages #-->\n"
|
||||
"Stage $stage <!--#slurp#-->\n"
|
||||
"<!--#for $result in $stages[$stage]#-->\n"
|
||||
" $result <!--#slurp#-->\n"
|
||||
"<!--#end for#-->\n"
|
||||
"<!--#end for#-->\n"
|
||||
"<!--#if $script!=\"\" #-->\n"
|
||||
"Output from user script \"$script\" (Exit code = $script_ret):\n"
|
||||
"$script_output\n"
|
||||
"<!--#end if#-->\n"
|
||||
"<!--#if $status #-->\n"
|
||||
"Enjoy!\n"
|
||||
"<!--#else#-->\n"
|
||||
"Sorry!\n"
|
||||
"<!--#end if#-->\n"
|
||||
msgstr ""
|
||||
|
||||
#: email/rss.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## RSS Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has added $amount job(s) to the queue.\n"
|
||||
"They are from RSS feed \"$feed\".\n"
|
||||
"<!--#for $job in $jobs#-->\n"
|
||||
" $job <!--#slurp#-->\n"
|
||||
"<!--#end for#-->\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2RC1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
@@ -253,9 +253,8 @@ msgstr ""
|
||||
msgid "Permissions setting of %s might deny SABnzbd access to the files and folders it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -678,10 +677,6 @@ msgstr ""
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr ""
|
||||
@@ -2416,6 +2411,10 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will be encrypted, however, validating a server's identity using its certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed up repairs by installing par2cmdline-turbo, it is available for many platforms."
|
||||
msgstr ""
|
||||
@@ -2466,11 +2465,11 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgid "Web Interface"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgid "Choose a skin."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3064,6 +3063,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr ""
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4081,10 +4084,6 @@ msgstr ""
|
||||
msgid "Fetch"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr ""
|
||||
@@ -4189,10 +4188,6 @@ msgstr ""
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr ""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Pavel C <quoing_transifex@mess.cz>, 2023
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -280,9 +280,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -729,11 +728,6 @@ msgstr "CHYBA:"
|
||||
msgid "Back"
|
||||
msgstr "Zpět"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2506,6 +2500,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Povolit 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2558,11 +2560,11 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Webové rozhraní"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgid "Choose a skin."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3214,6 +3216,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr ""
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4276,10 +4282,6 @@ msgstr ""
|
||||
msgid "Fetch"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Webové rozhraní"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr ""
|
||||
@@ -4384,12 +4386,6 @@ msgstr ""
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr ""
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -280,9 +280,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -737,11 +736,6 @@ msgstr "FEJL:"
|
||||
msgid "Back"
|
||||
msgstr "Tilbage"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2547,6 +2541,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Aktivere 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2599,12 +2601,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Port som SABnzbd ska lytte på."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Webgrænseflade"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Vælg et Web-grænseflade udseende."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3288,6 +3290,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Kontroller for ny version"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Kontroller for ny version af SABnzbd hver uge."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4374,10 +4380,6 @@ msgstr "ADVARSEL:"
|
||||
msgid "Fetch"
|
||||
msgstr "Hent"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Webgrænseflade"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Opdateringsfrekvens"
|
||||
@@ -4482,12 +4484,6 @@ msgstr "Øverst"
|
||||
msgid "Bottom"
|
||||
msgstr "Bunden"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Vis scriptlog"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# C E <githubce@eiselt.ch>, 2020
|
||||
@@ -12,13 +12,12 @@
|
||||
# reloxx13 <reloxx@interia.pl>, 2022
|
||||
# kameb, 2023
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
# HandyDandy04, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: HandyDandy04, 2024\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -301,9 +300,8 @@ msgstr ""
|
||||
"Die aktuellen Zugriffseinstellungen (%s) könnte SABnzbd den Zugriff auf die "
|
||||
"erstellten Dateien und Ordner von SABnzbd verweigern."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr "Netzwerkpfad \"%s\" ist hier nicht erlaubt"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -783,13 +781,6 @@ msgstr "FEHLER:"
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
"Um alle hilfreichen Warnungen zu verbergen, deaktiviere die extra "
|
||||
"Einstellung 'helpful_warnings'."
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "t"
|
||||
@@ -2179,7 +2170,7 @@ msgstr "Forum"
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Live Chat"
|
||||
msgstr "Echtzeit Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2630,13 +2621,23 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "7zip aktivieren"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
"Sichere (SSL) Verbindungen von SABnzbd zu Newsserver und Webseiten sind "
|
||||
"verschlüsselt, aber das Validieren der Server Identität mit dessen "
|
||||
"Zertifikat ist nicht möglich. Vorraussetzungen dafür sind OpenSSL 1.0.2 oder"
|
||||
" höher und aktuelle lokale CA Zertifikate."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
"platforms."
|
||||
msgstr ""
|
||||
"Erhöhe Reparaturgeschwindigkeit durch installation von Multicore Par2, "
|
||||
"verfügbar auf vielen Plattformen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Version"
|
||||
@@ -2684,12 +2685,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Port, auf dem SABnzbd auf Anfragen warten soll."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Web-Oberfläche"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Gestaltung der Web-Oberfläche verändern."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3244,20 +3245,19 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Identical download detection"
|
||||
msgstr "Erkennung identischer Downloads"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
"Erkenne identische Downloads anhand des Dateinamens oder des NZB-Inhalts."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr "Intelligente Duplikat Erkennung"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr "Erkenne Duplikate durch Analyse der Dateinamen."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Allow proper releases"
|
||||
@@ -3268,8 +3268,6 @@ msgid ""
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
"Umgehe intelligente Duplikat-Erkennung, wenn PROPER, REAL oder REPACK im "
|
||||
"Download-Namen erkannt wird"
|
||||
|
||||
#. Four way switch for duplicates
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3367,8 +3365,6 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
"Wurde nach Fertigstellung des Downloads der eingereihten Aufträge "
|
||||
"ausgeführt."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
@@ -3428,6 +3424,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Auf neue Version prüfen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Wöchentlich überprüfen, ob eine neue SABnzbd-Version verfügbar ist."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4552,10 +4552,6 @@ msgstr "WARNUNG:"
|
||||
msgid "Fetch"
|
||||
msgstr "Abrufen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Web-Oberfläche"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Aktualisierungsrate"
|
||||
@@ -4660,12 +4656,6 @@ msgstr "Ganz nach oben"
|
||||
msgid "Bottom"
|
||||
msgstr "Ganz nach unten"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Skript-Protokoll anzeigen"
|
||||
@@ -4720,7 +4710,7 @@ msgstr "Tastaturkürzel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Shift+Arrow key: Browse Queue and History pages"
|
||||
msgstr "Shift+Pfeil-Taste: Durchsuche eingereihte Aufträge und Verlaufsseiten"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "How long or untill when do you want to pause? (in English!)"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Ester Molla Aragones <moarages@gmail.com>, 2020
|
||||
@@ -8,7 +8,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -295,9 +295,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -761,11 +760,6 @@ msgstr "ERROR:"
|
||||
msgid "Back"
|
||||
msgstr "Atrás"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2607,6 +2601,20 @@ msgstr "Cuando tu dirección IP cambie o reinicies SABnzbd, la sesión caduca."
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Habilitar 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
"Las conexiones seguras (capa de puertos seguros, SSL) de SABnzbd a los "
|
||||
"newsservers (servidores de notícias) y páginas web HTTPS estarán "
|
||||
"codificadas. Sin embargo, no es posible validar la identidad de un servidor "
|
||||
"utilizando sus certificados. Se necesitan certificados OpenSSL 1.0.2 o "
|
||||
"versiones posteriores y certificados actualizados AC (autoridad de "
|
||||
"certificación) locales."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2659,12 +2667,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Puerto en que SABnzbd debería escuchar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Interfaz web"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Elije una piel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3368,6 +3376,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Buscar Nva Versión"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Chequear semanalmente por nuevas versiones de SABnzbd."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4471,10 +4483,6 @@ msgstr "AVISO:"
|
||||
msgid "Fetch"
|
||||
msgstr "Obtener"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Interfaz web"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Frecuencia de actualización"
|
||||
@@ -4579,12 +4587,6 @@ msgstr "Superior"
|
||||
msgid "Bottom"
|
||||
msgstr "Último"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Ver bitacora de Scripts"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -278,9 +278,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -734,11 +733,6 @@ msgstr "VIRHE:"
|
||||
msgid "Back"
|
||||
msgstr "Takaisin"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "pv"
|
||||
@@ -2543,6 +2537,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "7zip käytössä"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2595,12 +2597,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Portti jota SABnzbdn tulisi kuunnella."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Web-käyttöliittymä"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Valitse teema."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3297,6 +3299,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Tarkista uusi versio"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Tarkistaa viikottain uusimman SABnzbd version."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4382,10 +4388,6 @@ msgstr "VAROITUS:"
|
||||
msgid "Fetch"
|
||||
msgstr "Nouda"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Web-käyttöliittymä"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Päivitysväli"
|
||||
@@ -4490,12 +4492,6 @@ msgstr "Ylin"
|
||||
msgid "Bottom"
|
||||
msgstr "Alin"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Näytä skriptien loki"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
# Fred L <88com88@gmail.com>, 2024
|
||||
# Fred L <88com88@gmail.com>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2024\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2023\n"
|
||||
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -299,10 +299,9 @@ msgstr ""
|
||||
"Le réglage des permissions de %s pourrait refuser à SABnzbd l'accès aux "
|
||||
"fichiers et dossiers qu'il crée."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgstr "Le chemin réseau \"%s\" ne devrait pas être utilisé ici"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr "Le chemin réseau \"%s\" n'est pas autorisé ici"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
@@ -777,13 +776,6 @@ msgstr "ERREUR:"
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
"Pour éviter tous les avertissements utiles, désactivez le paramètre spécial "
|
||||
"'helpful_warnings'."
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "j"
|
||||
@@ -2621,6 +2613,18 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Activer 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
"Les connexions sécurisées (SSL) de SABnzbd aux serveurs de news et aux sites"
|
||||
" web HTTPS seront cryptées, cependant, la validation de l'identité d'un des "
|
||||
"serveur à l'aide de ses certificats n'est pas possible. OpenSSL 1.0.2, ou "
|
||||
"supérieur, et des certificats locaux AC à jour sont requis."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2675,11 +2679,11 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Port que SABnzbd doit surveiller."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr "Thème de l'interface web"
|
||||
msgid "Web Interface"
|
||||
msgstr "Interface Web"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgid "Choose a skin."
|
||||
msgstr "Choisissez un thème."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3418,6 +3422,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Vérifier les mises à jour"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Vérifier chaque semaine les mises à jour de SABnzbd."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4545,10 +4553,6 @@ msgstr "AVERTISSEMENT :"
|
||||
msgid "Fetch"
|
||||
msgstr "Charger"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Interface Web"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Taux de rafraîchissement"
|
||||
@@ -4653,14 +4657,6 @@ msgstr "Tout en haut"
|
||||
msgid "Bottom"
|
||||
msgstr "Tout en bas"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
"Lorsque vous réessayez une tâche, la \"Détection des doublons\" et "
|
||||
"\"Abandonner les travaux qui ne peuvent pas être terminés\" sont désactivés."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Afficher le journal des scripts"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: ION, 2023\n"
|
||||
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
|
||||
@@ -277,10 +277,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"הגדרת הרשאות של %s עשויה לדחות גישה מן SABnzbd אל הקבצים והתיקיות שהוא יוצר."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgstr ""
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr "נתיב הרשת \"%s\" אינו מותר כאן"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
@@ -738,11 +737,6 @@ msgstr "שגיאה:"
|
||||
msgid "Back"
|
||||
msgstr "הקודם"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "י"
|
||||
@@ -2553,6 +2547,17 @@ msgstr "כאשר כתובת ה־IP שלך משתנה או כאשר SABnzbd מו
|
||||
msgid "Enable 7zip"
|
||||
msgstr "אפשר חילוץ 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
"חיבורים מאובטחים (SSL) מן SABnzbd אל שרתי חדשות ואל אתרי HTTPS יוצפנו, עם "
|
||||
"זאת, וידוא זהות של שרת ע״י שימוש בתעודות שלו הוא בלתי אפשרי. OpenSSL 1.0.2 "
|
||||
"ומעלה ותעודות CA מקומיות עדכניות דרושים."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2606,12 +2611,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "פתחה אשר SABnzbd צריך להאזין אליה."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "ממשק רשת"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "בחר עור."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3301,6 +3306,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "בדוק אחר שחרור חדש"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "בדוק פעם בשבוע אחר שחרור SABnzbd חדש."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4392,10 +4401,6 @@ msgstr "אזהרה:"
|
||||
msgid "Fetch"
|
||||
msgstr "משוך"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "ממשק רשת"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "קצב רענון"
|
||||
@@ -4500,12 +4505,6 @@ msgstr "ראש"
|
||||
msgid "Bottom"
|
||||
msgstr "תחתית"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "הצג יומן תסריטים"
|
||||
|
||||
4663
po/main/it.po
4663
po/main/it.po
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -274,9 +274,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -729,11 +728,6 @@ msgstr "FEIL:"
|
||||
msgid "Back"
|
||||
msgstr "Tilbake"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2537,6 +2531,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Aktiver 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2589,12 +2591,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Porten som SABnzbd skal bruke."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Webgrensesnitt"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Velg et skall."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3274,6 +3276,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Se etter ny utgave"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Se etter ny utgave av SABnzbd hver uke."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4354,10 +4360,6 @@ msgstr "ADVARSEL:"
|
||||
msgid "Fetch"
|
||||
msgstr "Hent"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Webgrensesnitt"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Oppdateringsfrekvens"
|
||||
@@ -4462,12 +4464,6 @@ msgstr "Topp"
|
||||
msgid "Bottom"
|
||||
msgstr "Bunn"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Se skriptlogg"
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Rik Brouwer, 2022
|
||||
# Robert Lampe, 2023
|
||||
# Safihre <safihre@sabnzbd.org>, 2024
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2024\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -292,10 +292,9 @@ msgstr ""
|
||||
"Ingestelde rechten van %s zouden kunnen beletten dat SABnzbd toegang heeft "
|
||||
"tot de aangemaakte bestanden en mappen."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgstr "We raden af hier de netwerk-locatie \"%s\" te gebruiken"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr "Netwerk-pad \"%s\" hier niet toegestaan."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
@@ -774,13 +773,6 @@ msgstr "FOUT:"
|
||||
msgid "Back"
|
||||
msgstr "Terug"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
"Om alle waarschuwingen met mogelijke problemen te blokkeren kan de Speciale "
|
||||
"optie 'helpful_warnings' uitgezet worden."
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2603,6 +2595,18 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "7Zip toestaan"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
"Beveiligde (SSL) verbindingen van SABnzbd naar nieuwsservers en HTTPS "
|
||||
"websites worden versleuteld, maar het is niet mogelijk de identiteit van de "
|
||||
"servers te verifiëren. Voor correcte identificatie zijn OpenSSL 1.0.2 of "
|
||||
"hoger en bijgewerkte CA-certificaten benodigd."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2657,12 +2661,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Poort waar op SABnzbd luistert."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr "Webinterface Stijl"
|
||||
msgid "Web Interface"
|
||||
msgstr "Webinterface"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr "Kies een stijl voor de webinterface."
|
||||
msgid "Choose a skin."
|
||||
msgstr "Kies een bedieningsstijl (<i>herstart nodig</i>)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3385,6 +3389,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Periodieke controle voor nieuwe versies"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Controleer elke week of er een nieuwe SABnzbd versie beschikbaar is."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4504,10 +4512,6 @@ msgstr "WAARSCHUWING:"
|
||||
msgid "Fetch"
|
||||
msgstr "Ophalen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Webinterface"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Ververssnelheid"
|
||||
@@ -4612,15 +4616,6 @@ msgstr "Boven"
|
||||
msgid "Bottom"
|
||||
msgstr "Onder"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
"Wanneer een download Opnieuw geprobeerd wordt, staan 'Identieke/Slimme "
|
||||
"downloaddetectie' en 'Download afbreken als deze zeker niet kan worden "
|
||||
"voltooid' uit."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Toon Script resultaat"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -270,9 +270,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -729,11 +728,6 @@ msgstr "BŁĄD:"
|
||||
msgid "Back"
|
||||
msgstr "Powrót"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2542,6 +2536,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Włącz 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2594,12 +2596,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Port, na którym ma nasłuchiwać SABnzbd"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Interfejs WWW"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Wybierz skórkę"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3282,6 +3284,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Sprawdzaj aktualizacje"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Sprawdzaj co tydzień dostępność nowych wydań SABnzbd"
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4363,10 +4369,6 @@ msgstr "UWAGA:"
|
||||
msgid "Fetch"
|
||||
msgstr "Pobierz"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Interfejs WWW"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Częstotliwość odświeżania"
|
||||
@@ -4471,12 +4473,6 @@ msgstr "Na górę"
|
||||
msgid "Bottom"
|
||||
msgstr "Na dół"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Zobacz log skryptu"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Henrique Moreno, 2023
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -285,9 +285,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -744,11 +743,6 @@ msgstr "ERRO:"
|
||||
msgid "Back"
|
||||
msgstr "Voltar"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2556,6 +2550,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Ativar 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2608,12 +2610,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Porta onde o SABnzbd será ativado."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Interface Web"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Escolha uma skin."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3297,6 +3299,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Procurar por nova versão"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Checar semanalmente por nova versão do SABnzbd."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4377,10 +4383,6 @@ msgstr "AVISO:"
|
||||
msgid "Fetch"
|
||||
msgstr "Obter"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Interface Web"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Taxa de atualização"
|
||||
@@ -4485,12 +4487,6 @@ msgstr "Topo"
|
||||
msgid "Bottom"
|
||||
msgstr "Base"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Exibir Log do Script"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Eduard Baniceru <war4peace@gmail.com>, 2021
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -285,9 +285,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -750,11 +749,6 @@ msgstr "EROARE:"
|
||||
msgid "Back"
|
||||
msgstr "Înapoi"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2575,6 +2569,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Activează 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2627,12 +2629,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Portul pe care SABnzbd îl va asculta."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Interfață Web"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Alege o temă."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3314,6 +3316,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Verifică Versiuni Noi"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Verificare săptămânală versiuni noi SABnzbd."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4394,10 +4400,6 @@ msgstr "ATENŢIE:"
|
||||
msgid "Fetch"
|
||||
msgstr "Descarcă"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Interfață Web"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Rată actualizare"
|
||||
@@ -4502,12 +4504,6 @@ msgstr "Vârf"
|
||||
msgid "Bottom"
|
||||
msgstr "Coadă"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Vezi Jurnal Script"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -274,9 +274,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -729,11 +728,6 @@ msgstr "ОШИБКА"
|
||||
msgid "Back"
|
||||
msgstr "Назад"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "д"
|
||||
@@ -2539,6 +2533,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2591,12 +2593,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Порт, по которому будет доступна служба SABnzbd."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Веб-интерфейс"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Выберите тему."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3277,6 +3279,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Проверять наличие обновлений"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Еженедельно проверять доступность новых версий SABnzbd."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4361,10 +4367,6 @@ msgstr "ПРЕДУПРЕЖДЕНИЕ"
|
||||
msgid "Fetch"
|
||||
msgstr "Загрузить"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Веб-интерфейс"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Частота обновления"
|
||||
@@ -4469,12 +4471,6 @@ msgstr "В начало"
|
||||
msgid "Bottom"
|
||||
msgstr "В конец"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Просмотреть журнал сценария"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -272,9 +272,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -726,11 +725,6 @@ msgstr "ГРЕШКА:"
|
||||
msgid "Back"
|
||||
msgstr "Назад"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "д"
|
||||
@@ -2531,6 +2525,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Омогући 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2583,12 +2585,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Порт на који SABnzbd чека везе."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Веб интерфејс"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Odaberi izgled"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3265,6 +3267,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Провери нове верзије"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Недељно проверавај за новије верзије програма."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4341,10 +4347,6 @@ msgstr "ПАЖЊА:"
|
||||
msgid "Fetch"
|
||||
msgstr "Преузми"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Веб интерфејс"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Брзина освежавања"
|
||||
@@ -4449,12 +4451,6 @@ msgstr "Врх"
|
||||
msgid "Bottom"
|
||||
msgstr "Дно"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Види извештај скрипта"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -272,9 +272,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -728,11 +727,6 @@ msgstr "FEL:"
|
||||
msgid "Back"
|
||||
msgstr "Bakåt"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "d"
|
||||
@@ -2539,6 +2533,14 @@ msgstr ""
|
||||
msgid "Enable 7zip"
|
||||
msgstr "Aktivera 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2591,12 +2593,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "Port som SABnzbd ska lyssna på."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Webbkontrollsutseende"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "Välj ett skin."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3275,6 +3277,10 @@ msgstr ""
|
||||
msgid "Check for New Release"
|
||||
msgstr "Kolla efter ny utgåva"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "Kolla efter ny utgåva av SABnzbd varje vecka."
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4353,10 +4359,6 @@ msgstr "VARNING:"
|
||||
msgid "Fetch"
|
||||
msgstr "Hämta"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Webbkontrollsutseende"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Uppdateringsfrekvens"
|
||||
@@ -4461,12 +4463,6 @@ msgstr "Topp"
|
||||
msgid "Bottom"
|
||||
msgstr "Botten"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "Visa skriptlogg"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\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"
|
||||
@@ -271,9 +271,8 @@ msgid ""
|
||||
" it creates."
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Network path \"%s\" should not be used here"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -722,11 +721,6 @@ msgstr "错误:"
|
||||
msgid "Back"
|
||||
msgstr "返回"
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid ""
|
||||
"To prevent all helpful warnings, disable Special setting 'helpful_warnings'."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py
|
||||
msgid "d"
|
||||
msgstr "天"
|
||||
@@ -2519,6 +2513,14 @@ msgstr "每当您的 IP 地址发生变化,或当 SABnzbd 重启,登录会
|
||||
msgid "Enable 7zip"
|
||||
msgstr "启用 7zip"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will"
|
||||
" be encrypted, however, validating a server's identity using its "
|
||||
"certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA"
|
||||
" certificates are required."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
@@ -2571,12 +2573,12 @@ msgid "Port SABnzbd should listen on."
|
||||
msgstr "SABnzbd 应监听的端口。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface Theme"
|
||||
msgstr ""
|
||||
msgid "Web Interface"
|
||||
msgstr "Web 界面"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Choose a theme."
|
||||
msgstr ""
|
||||
msgid "Choose a skin."
|
||||
msgstr "选择皮肤。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "SABnzbd Username"
|
||||
@@ -3225,6 +3227,10 @@ msgstr "在文章发布时长尚不足该值时暂停下载文章。将任务优
|
||||
msgid "Check for New Release"
|
||||
msgstr "检查新版本"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Weekly check for new SABnzbd release."
|
||||
msgstr "每周检查 SABnzbd 的新版本。"
|
||||
|
||||
#. Pick list for weekly test for new releases
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Also test releases"
|
||||
@@ -4293,10 +4299,6 @@ msgstr "警告:"
|
||||
msgid "Fetch"
|
||||
msgstr "装取"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Web Interface"
|
||||
msgstr "Web 界面"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "刷新频率"
|
||||
@@ -4401,12 +4403,6 @@ msgstr "置顶"
|
||||
msgid "Bottom"
|
||||
msgstr "置底"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be "
|
||||
"completed' are disabled."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "View Script Log"
|
||||
msgstr "查看脚本日志"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2RC1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
@@ -20,6 +20,10 @@ msgstr ""
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing services or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
@@ -32,10 +36,6 @@ msgstr ""
|
||||
msgid "The installer only supports Windows 8.1 and above, use the standalone legacy version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr ""
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Pavel C <quoing_transifex@mess.cz>, 2022
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr ""
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Podpořte projekt!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr ""
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "Vis udgivelsesbemærkninger"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Støt projektet, donér!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Luk venligst \"SABnzbd.exe\" først"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dette vil afinstallere SABnzbd fra dit system"
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
# reloxx13 <reloxx@interia.pl>, 2022
|
||||
# HandyDandy04, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC4\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: HandyDandy04, 2024\n"
|
||||
"Last-Translator: reloxx13 <reloxx@interia.pl>, 2022\n"
|
||||
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -26,6 +25,10 @@ msgstr "Versionshinweise anzeigen"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Bitte unterstützen Sie das Projekt durch eine Spende!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Schliessen Sie bitte zuerst \"SABnzbd.exe\"."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -51,10 +54,6 @@ msgstr ""
|
||||
"Der Installer unterstützt nur Windows 8.1 und höher. Benutze die Standalone-"
|
||||
"Version für ältere Windows Versionen."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr "Beende SABnzbd"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dies entfernt SABnzbd von Ihrem System"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -25,6 +25,10 @@ msgstr "Mostrar notas de la versión"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "¡Apoye el proyecto, haga una donación!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Por favor cierre primero \"SABnzbd.exe\""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -50,10 +54,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Esto desinstalará SABnzbd de su sistema"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "Näytä julkaisutiedot"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Tue projektia, lahjoita!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Ole hyvä ja sulje \"SABnzbd.exe\" ensin"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Tämä poistaa SABnzbd:n tietokoneestasi"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
# Fred L <88com88@gmail.com>, 2024
|
||||
# Fred L <88com88@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2024\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2021\n"
|
||||
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -25,6 +25,10 @@ msgstr "Afficher les notes de version"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Soutenez le projet, faites un don !"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Merci de fermer \"SABnzbd.exe\" avant l'installation"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -52,10 +56,6 @@ msgstr ""
|
||||
" utilisez la version autonome legacy pour les versions antérieures de "
|
||||
"Windows."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr "Arrêt de SABnzbd"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Ceci désinstallera SABnzbd de votre système"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: ION, 2021\n"
|
||||
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
|
||||
@@ -25,6 +25,10 @@ msgstr "הראה הערות שחרור"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "תמוך במיזם, תרום!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "אנא סגור את \"SABnzbd.exe\" תחילה"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -51,10 +55,6 @@ msgstr ""
|
||||
"המתקין תומך רק במערכת Windows 8.1 ומעלה, השתמש בגרסה העצמאית המיושנת כדי "
|
||||
"להריץ על גרסת Windows ישנה יותר."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "זה יסיר את SABnzbd מהמערכת שלך"
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.2Beta1\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"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
|
||||
"services or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The installer only supports 64-bit Windows, use the standalone version to "
|
||||
"run on 32-bit Windows."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The installer only supports Windows 8.1 and above, use the standalone legacy"
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Run at startup"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Desktop Icon"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "NZB File association"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Program"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Settings"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
|
||||
"the previous version or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Your settings and data will be preserved."
|
||||
msgstr ""
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "Vis versjonsmerknader"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Støtt prosjektet, donèr!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Vennligst lukk \"SABnzbd.exe\" først"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dette vil avinstallere SABnzbd fra ditt system"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2024
|
||||
# Safihre <safihre@sabnzbd.org>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC4\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2024\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2021\n"
|
||||
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -24,6 +24,10 @@ msgstr "Toon opmerkingen bij deze uitgave"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Steun het project, doneer!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Sluit \"SABnzbd.exe\" eerst af"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -50,10 +54,6 @@ msgstr ""
|
||||
" de standalone legacy versie om SABnzbd uit te voeren op oudere versies van "
|
||||
"Windows."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr "SABnzbd wordt afgesloten"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dit verwijdert SABnzbd van je systeem"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "Pokaż informacje o wydaniu"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Wspomóż projekt!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Najpierw zamknij SABnzbd.exe"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "To odinstaluje SABnzbd z systemu"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "Mostrar Notas de Lançamento"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Apoie o projeto. Faça uma doação!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Por favor, feche \"SABnzbd.exe\" primeiro"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Isso irá desinstalar SABnzbd de seu sistema"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "Arată Notele de Publicare"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Susţine proiectul, Donează!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Închideţi mai întâi \"SABnzbd.exe\""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Acest lucru va dezinstala SABnzbd din sistem"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "Показать заметки о выпуске"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Поддержите проект. Сделайте пожертвование!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Завершите сначала работу процесса SABnzbd.exe"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Приложение SABnzbd будет удалено из вашей системы"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "Прикажи белешке о издању"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Подржите пројекат, дајте добровољан прилог!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Прво затворите „SABnzbd.exe“"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Ово ће уклонити САБнзбд са вашег система"
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
# Petter Ramme, 2024
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Petter Ramme, 2024\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -25,35 +24,28 @@ msgstr "Visa releasenoteringar"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Donera och stöd detta projekt!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Var vänlig stäng \"SABnzbd.exe\" först"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
|
||||
"services or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
"SABnzbd Windows tjänsten ändrades i SABnzbd 3.0.0.\\nSABnzbd tjänsten "
|
||||
"behöver installeras om.\\n\\Välj OK` för att ta bort den befintliga "
|
||||
"tjänsten, eller välj `Cancel`för att avbryta uppdateringen."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The installer only supports 64-bit Windows, use the standalone version to "
|
||||
"run on 32-bit Windows."
|
||||
msgstr ""
|
||||
"Installationen stödjer endast 64-bitars Windows, använd den fristående "
|
||||
"versionen för att köra installationen på 32-bitars Windows."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The installer only supports Windows 8.1 and above, use the standalone legacy"
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
"Installationen kräver Windows 8.1 eller högre. Använd en fristående äldre "
|
||||
"version av installationen för en äldre version av Windows."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr "Stänger av SABnzbd."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.2.1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC3\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"
|
||||
@@ -24,6 +24,10 @@ msgstr "显示版本说明"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "支持该项目,捐助!"
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "请先关闭 \"SABnzbd.exe\""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
@@ -43,10 +47,6 @@ msgid ""
|
||||
" version to run on older Windows version."
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
msgstr ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "这将从您的系统中卸载 SABnzbd"
|
||||
|
||||
@@ -14,7 +14,7 @@ jaraco.collections==5.0.0
|
||||
jaraco.text==3.8.1 # Newer version introduces irrelevant extra dependencies
|
||||
jaraco.classes==3.3.0
|
||||
jaraco.context==4.3.0
|
||||
more-itertools==10.2.0
|
||||
more-itertools==10.1.0
|
||||
zc.lockfile==3.0.post1
|
||||
python-dateutil==2.8.2
|
||||
tempora==5.5.0
|
||||
|
||||
@@ -150,6 +150,7 @@ LOG_ALL = False
|
||||
WIN_SERVICE = None # Instance of our Win32 Service Class
|
||||
BROWSER_URL = None
|
||||
|
||||
CERTIFICATE_VALIDATION = True
|
||||
NO_DOWNLOADING = False # When essentials are missing (SABCTools/par2/unrar)
|
||||
|
||||
WEB_DIR = None
|
||||
|
||||
@@ -69,15 +69,11 @@ from sabnzbd.misc import (
|
||||
calc_age,
|
||||
opts_to_pp,
|
||||
format_time_left,
|
||||
is_none,
|
||||
history_updated,
|
||||
request_repair,
|
||||
change_queue_complete_action,
|
||||
)
|
||||
from sabnzbd.filesystem import diskspace, get_ext, clip_path, remove_all, list_scripts, purge_log_files
|
||||
from sabnzbd.encoding import xml_name, utob
|
||||
from sabnzbd.utils.servertests import test_nntp_server_dict
|
||||
from sabnzbd.getipaddress import local_ipv4, public_ipv4, public_ipv6, dnslookup, active_socks5_proxy
|
||||
from sabnzbd.getipaddress import localipv4, publicipv4, ipv6, dnslookup, active_socks5_proxy
|
||||
from sabnzbd.database import HistoryDB
|
||||
from sabnzbd.lang import is_rtl
|
||||
from sabnzbd.nzbstuff import NzbObject
|
||||
@@ -209,7 +205,7 @@ def _api_queue_rename(value, kwargs):
|
||||
|
||||
def _api_queue_change_complete_action(value, kwargs):
|
||||
"""API: accepts value(=action)"""
|
||||
change_queue_complete_action(value)
|
||||
sabnzbd.misc.change_queue_complete_action(value)
|
||||
return report()
|
||||
|
||||
|
||||
@@ -398,7 +394,7 @@ def _api_change_cat(name, kwargs):
|
||||
if value and value2:
|
||||
nzo_id = value
|
||||
cat = value2
|
||||
if is_none(cat):
|
||||
if cat == "None":
|
||||
cat = None
|
||||
result = sabnzbd.NzbQueue.change_cat(nzo_id, cat)
|
||||
return report(keyword="status", data=bool(result > 0))
|
||||
@@ -413,7 +409,7 @@ def _api_change_script(name, kwargs):
|
||||
if value and value2:
|
||||
nzo_id = value
|
||||
script = value2
|
||||
if is_none(script):
|
||||
if script.lower() == "none":
|
||||
script = None
|
||||
result = sabnzbd.NzbQueue.change_script(nzo_id, script)
|
||||
return report(keyword="status", data=bool(result > 0))
|
||||
@@ -532,7 +528,7 @@ def _api_history(name, kwargs):
|
||||
history_db.remove_failed(search)
|
||||
if special in ("all", "completed"):
|
||||
history_db.remove_completed(search)
|
||||
history_updated()
|
||||
sabnzbd.misc.history_updated()
|
||||
return report()
|
||||
elif value:
|
||||
jobs = value.split(",")
|
||||
@@ -544,7 +540,7 @@ def _api_history(name, kwargs):
|
||||
if del_files:
|
||||
remove_all(history_db.get_incomplete_path(job), recursive=True)
|
||||
history_db.remove_history(job)
|
||||
history_updated()
|
||||
sabnzbd.misc.history_updated()
|
||||
return report()
|
||||
else:
|
||||
return report(_MSG_NO_VALUE)
|
||||
@@ -657,7 +653,7 @@ def _api_warnings(name, kwargs):
|
||||
LOG_JSON_RE = re.compile(rb"'(apikey|api|username|password)': '(.*?)'", re.I)
|
||||
LOG_INI_HIDE_RE = re.compile(
|
||||
rb"(apikey|api|user|username|password|email_pwd|email_account|email_to|email_from|pushover_token|pushover_userkey"
|
||||
rb"|pushbullet_apikey|prowl_apikey|growl_password|growl_server|IPv[4|6] address|Public address IPv[4|6]-only|Local IPv6 address)\s?=.*",
|
||||
rb"|pushbullet_apikey|prowl_apikey|growl_password|growl_server|IPv[4|6] address)\s?=.*",
|
||||
re.I,
|
||||
)
|
||||
LOG_HASH_RE = re.compile(rb"([a-zA-Z\d]{25})", re.I)
|
||||
@@ -727,7 +723,7 @@ def _api_restart(name, kwargs):
|
||||
|
||||
def _api_restart_repair(name, kwargs):
|
||||
logging.info("Queue repair requested by API")
|
||||
request_repair()
|
||||
sabnzbd.misc.request_repair()
|
||||
# Do the shutdown async to still send goodbye to browser
|
||||
Thread(target=sabnzbd.trigger_restart, kwargs={"timeout": 1}).start()
|
||||
return report()
|
||||
@@ -1307,9 +1303,9 @@ def build_status(calculate_performance: bool = False, skip_dashboard: bool = Fal
|
||||
# Dashboard: Connection information
|
||||
if not int_conv(skip_dashboard):
|
||||
info["active_socks5_proxy"] = active_socks5_proxy()
|
||||
info["localipv4"] = local_ipv4()
|
||||
info["publicipv4"] = public_ipv4()
|
||||
info["ipv6"] = public_ipv6()
|
||||
info["localipv4"] = localipv4()
|
||||
info["publicipv4"] = publicipv4()
|
||||
info["ipv6"] = ipv6()
|
||||
info["dnslookup"] = dnslookup()
|
||||
|
||||
info["servers"] = []
|
||||
@@ -1562,7 +1558,7 @@ def del_job_files(job_paths):
|
||||
|
||||
def Tspec(txt):
|
||||
"""Translate special terms"""
|
||||
if is_none(txt):
|
||||
if txt == "None":
|
||||
return T("None")
|
||||
elif txt in ("Default", "*"):
|
||||
return T("Default")
|
||||
|
||||
@@ -190,7 +190,7 @@ def validate_script(value: str) -> ValidateResult:
|
||||
"""Check if value is a valid script"""
|
||||
if not sabnzbd.__INITIALIZED__ or (value and is_valid_script(value)):
|
||||
return None, value
|
||||
elif sabnzbd.misc.is_none(value):
|
||||
elif (value and value == "None") or not value:
|
||||
return None, "None"
|
||||
return T("%s is not a valid script") % value, None
|
||||
|
||||
@@ -219,10 +219,10 @@ def validate_permissions(value: str) -> ValidateResult:
|
||||
def validate_safedir(root: str, value: str, default: str) -> ValidateResult:
|
||||
"""Allow only when queues are empty and not a network-path"""
|
||||
if not sabnzbd.__INITIALIZED__ or (sabnzbd.PostProcessor.empty() and sabnzbd.NzbQueue.is_empty()):
|
||||
# We allow it, but send a warning
|
||||
if is_network_path(real_path(root, value)):
|
||||
sabnzbd.misc.helpful_warning(T('Network path "%s" should not be used here'), value)
|
||||
return validate_default_if_empty(root, value, default)
|
||||
return T('Network path "%s" is not allowed here') % value, None
|
||||
else:
|
||||
return validate_default_if_empty(root, value, default)
|
||||
else:
|
||||
return T("Queue not empty, cannot change folder."), None
|
||||
|
||||
@@ -277,9 +277,6 @@ def validate_default_if_empty(root: str, value: str, default: str) -> Tuple[None
|
||||
# Special settings
|
||||
##############################################################################
|
||||
|
||||
# This should be here so it's initialized first when the config is read
|
||||
helpful_warnings = OptionBool("misc", "helpful_warnings", True)
|
||||
|
||||
queue_complete = OptionStr("misc", "queue_complete")
|
||||
queue_complete_pers = OptionBool("misc", "queue_complete_pers", False)
|
||||
bandwidth_perc = OptionNumber("misc", "bandwidth_perc", 100, minval=0, maxval=100)
|
||||
@@ -455,7 +452,7 @@ rss_filenames = OptionBool("misc", "rss_filenames", False)
|
||||
api_logging = OptionBool("misc", "api_logging", True)
|
||||
html_login = OptionBool("misc", "html_login", True)
|
||||
warn_dupl_jobs = OptionBool("misc", "warn_dupl_jobs", False)
|
||||
|
||||
helpful_warnings = OptionBool("misc", "helpful_warnings", True)
|
||||
keep_awake = OptionBool("misc", "keep_awake", True)
|
||||
tray_icon = OptionBool("misc", "tray_icon", True)
|
||||
allow_incomplete_nzb = OptionBool("misc", "allow_incomplete_nzb", False)
|
||||
|
||||
@@ -447,6 +447,7 @@ class ConfigServer:
|
||||
self.expire_date = OptionStr(name, "expire_date", add=False)
|
||||
self.quota = OptionStr(name, "quota", add=False)
|
||||
self.usage_at_start = OptionNumber(name, "usage_at_start", add=False)
|
||||
self.send_group = OptionBool(name, "send_group", False, add=False)
|
||||
self.priority = OptionNumber(name, "priority", 0, 0, 99, add=False)
|
||||
self.notes = OptionStr(name, "notes", add=False)
|
||||
|
||||
@@ -472,6 +473,7 @@ class ConfigServer:
|
||||
"ssl",
|
||||
"ssl_verify",
|
||||
"ssl_ciphers",
|
||||
"send_group",
|
||||
"enable",
|
||||
"required",
|
||||
"optional",
|
||||
@@ -514,6 +516,7 @@ class ConfigServer:
|
||||
output_dict["expire_date"] = self.expire_date()
|
||||
output_dict["quota"] = self.quota()
|
||||
output_dict["usage_at_start"] = self.usage_at_start()
|
||||
output_dict["send_group"] = self.send_group()
|
||||
output_dict["priority"] = self.priority()
|
||||
output_dict["notes"] = self.notes()
|
||||
return output_dict
|
||||
@@ -553,6 +556,13 @@ class ConfigCat:
|
||||
except KeyError:
|
||||
continue
|
||||
|
||||
# TODO: Remove after next release
|
||||
if "alt.bin" in self.newzbin.get_string():
|
||||
sabnzbd.misc.helpful_warning(
|
||||
"You have set a newsgroup for category %s. Could you let us know why? https://github.com/sabnzbd/sabnzbd/discussions/2758",
|
||||
self.__name,
|
||||
)
|
||||
|
||||
def get_dict(self, for_public_api: bool = False) -> Dict[str, Any]:
|
||||
"""Return a dictionary with all attributes"""
|
||||
output_dict = {}
|
||||
|
||||
@@ -75,7 +75,6 @@ DEF_LOG_CHERRY = "cherrypy.log"
|
||||
DEF_ARTICLE_CACHE_DEFAULT = "500M"
|
||||
DEF_ARTICLE_CACHE_MAX = "1G"
|
||||
DEF_TIMEOUT = 60
|
||||
DEF_TEST_TIMEOUT = 10
|
||||
DEF_SCANRATE = 5
|
||||
DEF_HTTPS_CERT_FILE = "server.cert"
|
||||
DEF_HTTPS_KEY_FILE = "server.key"
|
||||
@@ -172,7 +171,6 @@ class DuplicateStatus:
|
||||
DUPLICATE_ALTERNATIVE = "Duplicate Alternative" # Alternative duplicate for a queued job
|
||||
SMART_DUPLICATE = "Smart Duplicate" # Simple Series duplicate
|
||||
SMART_DUPLICATE_ALTERNATIVE = "Smart Duplicate Alternative" # Alternative duplicate for a queued job
|
||||
DUPLICATE_IGNORED = "Duplicate Ignored"
|
||||
|
||||
|
||||
class AddNzbFileResult:
|
||||
|
||||
@@ -38,7 +38,7 @@ from sabnzbd.encoding import ubtou, utob
|
||||
from sabnzbd.misc import int_conv, caller_name, opts_to_pp, to_units
|
||||
from sabnzbd.filesystem import remove_file, clip_path
|
||||
|
||||
DB_LOCK = threading.Lock()
|
||||
DB_LOCK = threading.RLock()
|
||||
|
||||
|
||||
class HistoryDB:
|
||||
@@ -50,73 +50,70 @@ class HistoryDB:
|
||||
|
||||
# These class attributes will be accessed directly because
|
||||
# they need to be shared by all instances
|
||||
db_path = None # Full path to history database
|
||||
startup_done = False
|
||||
db_path = None # Will contain full path to history database
|
||||
done_cleaning = False # Ensure we only do one Vacuum per session
|
||||
|
||||
@synchronized(DB_LOCK)
|
||||
def __init__(self):
|
||||
"""Determine database path and create connection"""
|
||||
self.connection: Optional[Connection] = None
|
||||
self.cursor: Optional[Cursor] = None
|
||||
if not HistoryDB.db_path:
|
||||
HistoryDB.db_path = os.path.join(sabnzbd.cfg.admin_dir.get_path(), DB_HISTORY_NAME)
|
||||
self.connect()
|
||||
|
||||
def connect(self):
|
||||
"""Create a connection to the database"""
|
||||
if not HistoryDB.db_path:
|
||||
HistoryDB.db_path = os.path.join(sabnzbd.cfg.admin_dir.get_path(), DB_HISTORY_NAME)
|
||||
create_table = not HistoryDB.startup_done and not os.path.exists(HistoryDB.db_path)
|
||||
|
||||
create_table = not os.path.exists(HistoryDB.db_path)
|
||||
self.connection = sqlite3.connect(HistoryDB.db_path)
|
||||
self.connection.isolation_level = None # autocommit attribute only introduced in Python 3.12
|
||||
self.connection.row_factory = sqlite3.Row
|
||||
self.cursor = self.connection.cursor()
|
||||
|
||||
# Perform initialization only once
|
||||
if not HistoryDB.startup_done:
|
||||
if create_table:
|
||||
self.create_history_db()
|
||||
|
||||
if create_table:
|
||||
self.create_history_db()
|
||||
elif not HistoryDB.done_cleaning:
|
||||
# Run VACUUM on sqlite
|
||||
# When an object (table, index, or trigger) is dropped from the database, it leaves behind empty space
|
||||
# http://www.sqlite.org/lang_vacuum.html
|
||||
HistoryDB.done_cleaning = True
|
||||
self.execute("VACUUM")
|
||||
|
||||
# See if we need to perform any updates
|
||||
self.execute("PRAGMA user_version;")
|
||||
try:
|
||||
version = self.cursor.fetchone()["user_version"]
|
||||
except (IndexError, TypeError):
|
||||
version = 0
|
||||
self.execute("PRAGMA user_version;")
|
||||
try:
|
||||
version = self.cursor.fetchone()["user_version"]
|
||||
except IndexError:
|
||||
version = 0
|
||||
|
||||
# Add any new columns added since last DB version
|
||||
# Use "and" to stop when database has been reset due to corruption
|
||||
if version < 1:
|
||||
_ = (
|
||||
self.execute("PRAGMA user_version = 1;")
|
||||
and self.execute("ALTER TABLE history ADD COLUMN series TEXT;")
|
||||
and self.execute("ALTER TABLE history ADD COLUMN md5sum TEXT;")
|
||||
)
|
||||
if version < 2:
|
||||
_ = self.execute("PRAGMA user_version = 2;") and self.execute(
|
||||
"ALTER TABLE history ADD COLUMN password TEXT;"
|
||||
)
|
||||
if version < 3:
|
||||
# Transfer data to new column (requires WHERE-hack), original column should be removed later
|
||||
_ = (
|
||||
self.execute("PRAGMA user_version = 3;")
|
||||
and self.execute("ALTER TABLE history ADD COLUMN duplicate_key TEXT;")
|
||||
and self.execute("UPDATE history SET duplicate_key = series WHERE 1 = 1;")
|
||||
)
|
||||
HistoryDB.startup_done = True
|
||||
# Add any new columns added since last DB version
|
||||
# Use "and" to stop when database has been reset due to corruption
|
||||
if version < 1:
|
||||
_ = (
|
||||
self.execute("PRAGMA user_version = 1;")
|
||||
and self.execute("ALTER TABLE history ADD COLUMN series TEXT;")
|
||||
and self.execute("ALTER TABLE history ADD COLUMN md5sum TEXT;")
|
||||
)
|
||||
if version < 2:
|
||||
_ = self.execute("PRAGMA user_version = 2;") and self.execute(
|
||||
"ALTER TABLE history ADD COLUMN password TEXT;"
|
||||
)
|
||||
if version < 3:
|
||||
# Transfer data to new column (requires WHERE-hack), original column should be removed later
|
||||
_ = (
|
||||
self.execute("PRAGMA user_version = 3;")
|
||||
and self.execute("ALTER TABLE history ADD COLUMN duplicate_key TEXT;")
|
||||
and self.execute("UPDATE history SET duplicate_key = series WHERE 1 = 1;")
|
||||
)
|
||||
|
||||
def execute(self, command: str, args: Sequence = ()) -> bool:
|
||||
def execute(self, command: str, args: Sequence = (), save: bool = False) -> bool:
|
||||
"""Wrapper for executing SQL commands"""
|
||||
for tries in (4, 3, 2, 1, 0):
|
||||
for tries in range(5, 0, -1):
|
||||
try:
|
||||
self.cursor.execute(command, args)
|
||||
if save:
|
||||
self.connection.commit()
|
||||
return True
|
||||
except:
|
||||
error = str(sys.exc_info()[1])
|
||||
if tries > 0 and "is locked" in error:
|
||||
if tries >= 0 and "is locked" in error:
|
||||
logging.debug("Database locked, wait and retry")
|
||||
time.sleep(0.5)
|
||||
continue
|
||||
@@ -132,7 +129,6 @@ class HistoryDB:
|
||||
remove_file(HistoryDB.db_path)
|
||||
except:
|
||||
pass
|
||||
HistoryDB.startup_done = False
|
||||
self.connect()
|
||||
# Return False in case of "duplicate column" error
|
||||
# because the column addition in connect() must be terminated
|
||||
@@ -145,7 +141,6 @@ class HistoryDB:
|
||||
try:
|
||||
self.connection.rollback()
|
||||
except:
|
||||
# Can fail in case of automatic rollback
|
||||
logging.debug("Rollback Failed:", exc_info=True)
|
||||
return False
|
||||
|
||||
@@ -200,7 +195,9 @@ class HistoryDB:
|
||||
"""Remove all completed jobs from the database, optional with `search` pattern"""
|
||||
search = convert_search(search)
|
||||
logging.info("Removing all completed jobs from history")
|
||||
return self.execute("""DELETE FROM history WHERE name LIKE ? AND status = ?""", (search, Status.COMPLETED))
|
||||
return self.execute(
|
||||
"""DELETE FROM history WHERE name LIKE ? AND status = ?""", (search, Status.COMPLETED), save=True
|
||||
)
|
||||
|
||||
def get_failed_paths(self, search=None):
|
||||
"""Return list of all storage paths of failed jobs (may contain non-existing or empty paths)"""
|
||||
@@ -217,7 +214,9 @@ class HistoryDB:
|
||||
"""Remove all failed jobs from the database, optional with `search` pattern"""
|
||||
search = convert_search(search)
|
||||
logging.info("Removing all failed jobs from history")
|
||||
return self.execute("""DELETE FROM history WHERE name LIKE ? AND status = ?""", (search, Status.FAILED))
|
||||
return self.execute(
|
||||
"""DELETE FROM history WHERE name LIKE ? AND status = ?""", (search, Status.FAILED), save=True
|
||||
)
|
||||
|
||||
def remove_history(self, jobs=None):
|
||||
"""Remove all jobs in the list `jobs`, empty list will remove all completed jobs"""
|
||||
@@ -228,7 +227,7 @@ class HistoryDB:
|
||||
jobs = [jobs]
|
||||
|
||||
for job in jobs:
|
||||
self.execute("""DELETE FROM history WHERE nzo_id = ?""", (job,))
|
||||
self.execute("""DELETE FROM history WHERE nzo_id = ?""", (job,), save=True)
|
||||
logging.info("[%s] Removing job %s from history", caller_name(), job)
|
||||
|
||||
def auto_history_purge(self):
|
||||
@@ -247,7 +246,9 @@ class HistoryDB:
|
||||
if days_to_keep > 0:
|
||||
logging.info("Removing completed jobs older than %s days from history", days_to_keep)
|
||||
return self.execute(
|
||||
"""DELETE FROM history WHERE status = ? AND completed < ?""", (Status.COMPLETED, seconds_to_keep)
|
||||
"""DELETE FROM history WHERE status = ? AND completed < ?""",
|
||||
(Status.COMPLETED, seconds_to_keep),
|
||||
save=True,
|
||||
)
|
||||
else:
|
||||
# How many to keep?
|
||||
@@ -259,6 +260,7 @@ class HistoryDB:
|
||||
SELECT id FROM history WHERE status = ? ORDER BY completed DESC LIMIT ?
|
||||
)""",
|
||||
(Status.COMPLETED, Status.COMPLETED, to_keep),
|
||||
save=True,
|
||||
)
|
||||
|
||||
def add_history_db(self, nzo, storage: str, postproc_time: int, script_output: str, script_line: str):
|
||||
@@ -271,6 +273,7 @@ class HistoryDB:
|
||||
downloaded, fail_message, url_info, bytes, duplicate_key, md5sum, password)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
|
||||
t,
|
||||
save=True,
|
||||
)
|
||||
logging.info("Added job %s to history", nzo.final_name)
|
||||
|
||||
|
||||
0
sabnzbd/deobfuscate_filenames.py
Normal file → Executable file
0
sabnzbd/deobfuscate_filenames.py
Normal file → Executable file
@@ -80,6 +80,7 @@ class Server:
|
||||
"required",
|
||||
"optional",
|
||||
"retention",
|
||||
"send_group",
|
||||
"username",
|
||||
"password",
|
||||
"busy_threads",
|
||||
@@ -110,6 +111,7 @@ class Server:
|
||||
use_ssl,
|
||||
ssl_verify,
|
||||
ssl_ciphers,
|
||||
send_group,
|
||||
username=None,
|
||||
password=None,
|
||||
required=False,
|
||||
@@ -132,6 +134,15 @@ class Server:
|
||||
self.required: bool = required
|
||||
self.optional: bool = optional
|
||||
self.retention: int = retention
|
||||
self.send_group: bool = send_group
|
||||
|
||||
# TODO: Remove after next release
|
||||
if send_group:
|
||||
helpful_warning(
|
||||
"You have 'Send Group' enabled for %s. Could you let us know why? https://github.com/sabnzbd/sabnzbd/discussions/2715",
|
||||
self.displayname,
|
||||
)
|
||||
|
||||
self.username: Optional[str] = username
|
||||
self.password: Optional[str] = password
|
||||
|
||||
@@ -212,13 +223,7 @@ class Server:
|
||||
def request_addrinfo_blocking(self):
|
||||
"""Blocking attempt to run getaddrinfo() and Happy Eyeballs for specified server"""
|
||||
logging.debug("Retrieving server address information for %s", self.host)
|
||||
|
||||
# Disable IPV6 if desired
|
||||
family = socket.AF_UNSPEC
|
||||
if not cfg.ipv6_servers():
|
||||
family = socket.AF_INET
|
||||
|
||||
self.addrinfo = happyeyeballs(self.host, self.port, self.timeout, family)
|
||||
self.addrinfo = happyeyeballs(self.host, self.port, self.timeout)
|
||||
if not self.addrinfo:
|
||||
self.bad_cons += self.threads
|
||||
# Notify next call to maybe_block_server
|
||||
@@ -320,6 +325,7 @@ class Downloader(Thread):
|
||||
required = srv.required()
|
||||
optional = srv.optional()
|
||||
retention = int(srv.retention() * 24 * 3600) # days ==> seconds
|
||||
send_group = srv.send_group()
|
||||
create = True
|
||||
|
||||
if oldserver:
|
||||
@@ -346,6 +352,7 @@ class Downloader(Thread):
|
||||
ssl,
|
||||
ssl_verify,
|
||||
ssl_ciphers,
|
||||
send_group,
|
||||
username,
|
||||
password,
|
||||
required,
|
||||
@@ -518,6 +525,10 @@ class Downloader(Thread):
|
||||
sabnzbd.decoder.decode(article, data_view)
|
||||
|
||||
def run(self):
|
||||
# Verify SSL certificate checking
|
||||
sabnzbd.CERTIFICATE_VALIDATION = sabnzbd.misc.test_cert_checking()
|
||||
logging.debug("SSL verification test: %s", sabnzbd.CERTIFICATE_VALIDATION)
|
||||
|
||||
# Warn if there are servers defined, but none are valid
|
||||
if config.get_servers() and not self.servers:
|
||||
logging.warning(T("There are no active servers!"))
|
||||
@@ -741,7 +752,13 @@ class Downloader(Thread):
|
||||
done = True
|
||||
logging.debug("Article <%s> is present", article.article)
|
||||
|
||||
elif nw.status_code in (411, 423, 430, 451):
|
||||
elif nw.status_code == 211:
|
||||
logging.debug("group command ok -> %s", nw.nntp_msg)
|
||||
nw.group = nw.article.nzf.nzo.group
|
||||
nw.reset_data_buffer()
|
||||
self.__request_article(nw)
|
||||
|
||||
elif nw.status_code in (411, 423, 430):
|
||||
done = True
|
||||
logging.debug(
|
||||
"Thread %s@%s: Article %s missing (error=%s)",
|
||||
@@ -764,18 +781,6 @@ class Downloader(Thread):
|
||||
nw.reset_data_buffer()
|
||||
self.__request_article(nw)
|
||||
|
||||
else:
|
||||
logging.warning(
|
||||
T("%s@%s: Received unknown status code %s for article %s: %s"),
|
||||
nw.thrdnum,
|
||||
nw.server.host,
|
||||
nw.status_code,
|
||||
article.article,
|
||||
nw.nntp_msg.splitlines()[0],
|
||||
)
|
||||
done = True
|
||||
nw.reset_data_buffer()
|
||||
|
||||
if done:
|
||||
# Successful data, clear "bad" counter
|
||||
server.bad_cons = 0
|
||||
@@ -968,9 +973,16 @@ class Downloader(Thread):
|
||||
|
||||
def __request_article(self, nw: NewsWrapper):
|
||||
try:
|
||||
if sabnzbd.LOG_ALL:
|
||||
logging.debug("Thread %s@%s: BODY %s", nw.thrdnum, nw.server.host, nw.article.article)
|
||||
nw.body()
|
||||
nzo = nw.article.nzf.nzo
|
||||
if nw.server.send_group and nzo.group != nw.group:
|
||||
group = nzo.group
|
||||
if sabnzbd.LOG_ALL:
|
||||
logging.debug("Thread %s@%s: GROUP <%s>", nw.thrdnum, nw.server.host, group)
|
||||
nw.send_group(group)
|
||||
else:
|
||||
if sabnzbd.LOG_ALL:
|
||||
logging.debug("Thread %s@%s: BODY %s", nw.thrdnum, nw.server.host, nw.article.article)
|
||||
nw.body()
|
||||
# Mark as ready to be read
|
||||
self.add_socket(nw.nntp.fileno, nw)
|
||||
except socket.error as err:
|
||||
|
||||
@@ -351,15 +351,6 @@ def sanitize_files(folder: Optional[str] = None, filelist: Optional[List[str]] =
|
||||
return output_filelist
|
||||
|
||||
|
||||
def strip_extensions(name: str, ext_to_remove: Tuple[str, ...] = (".nzb", ".par", ".par2")):
|
||||
"""Strip extensions from a filename, without sanitizing the filename"""
|
||||
name_base, ext = os.path.splitext(name)
|
||||
while ext.lower() in ext_to_remove:
|
||||
name = name_base
|
||||
name_base, ext = os.path.splitext(name)
|
||||
return name
|
||||
|
||||
|
||||
def real_path(loc: str, path: str) -> str:
|
||||
"""When 'path' is relative, return normalized join of 'loc' and 'path'
|
||||
When 'path' is absolute, return normalized path
|
||||
@@ -1208,7 +1199,7 @@ def load_admin(data_id: str, remove=False, silent=False) -> Any:
|
||||
def wait_for_download_folder():
|
||||
"""Wait for download folder to become available"""
|
||||
while not sabnzbd.cfg.download_dir.test_path():
|
||||
logging.info("Waiting for incomplete folder")
|
||||
logging.debug("Waiting for incomplete folder")
|
||||
time.sleep(2.0)
|
||||
|
||||
|
||||
|
||||
@@ -19,20 +19,18 @@
|
||||
sabnzbd.getipaddress
|
||||
"""
|
||||
|
||||
import functools
|
||||
import logging
|
||||
import socket
|
||||
import time
|
||||
import urllib.error
|
||||
import functools
|
||||
import urllib.request
|
||||
from typing import Callable
|
||||
|
||||
import urllib.error
|
||||
import socks
|
||||
import logging
|
||||
import time
|
||||
from typing import Callable
|
||||
|
||||
import sabnzbd
|
||||
import sabnzbd.cfg
|
||||
from sabnzbd.encoding import ubtou
|
||||
from sabnzbd.happyeyeballs import happyeyeballs, family_type
|
||||
|
||||
|
||||
def timeout(max_timeout: float):
|
||||
@@ -90,7 +88,7 @@ def dnslookup():
|
||||
return result
|
||||
|
||||
|
||||
def local_ipv4():
|
||||
def localipv4():
|
||||
try:
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s_ipv4:
|
||||
# Option: use 100.64.1.1 (IANA-Reserved IPv4 Prefix for Shared Address Space)
|
||||
@@ -103,57 +101,59 @@ def local_ipv4():
|
||||
return ipv4
|
||||
|
||||
|
||||
def public_ip(family=socket.AF_UNSPEC):
|
||||
"""
|
||||
Reports the client's public IP address (IPv4 or IPv6, if specified by family), as reported by selftest host
|
||||
def publicipv4():
|
||||
"""Because of dual IPv4/IPv6 clients, finding the
|
||||
public ipv4 needs special attention, meaning forcing
|
||||
IPv4 connections, and not allowing IPv6 connections
|
||||
Function uses sabnzbd.cfg.selftest_host(), which must report our public IPv4 address over which we access it
|
||||
"""
|
||||
start = time.time()
|
||||
if resolvehostaddress := happyeyeballs(sabnzbd.cfg.selftest_host(), port=443, family=family):
|
||||
resolvehostip = resolvehostaddress.ipaddress
|
||||
else:
|
||||
logging.debug("Error resolving my IP address: resolvehost not found")
|
||||
return None
|
||||
|
||||
if sabnzbd.misc.is_ipv4_addr(resolvehostip):
|
||||
resolveurl = f"http://{resolvehostip}/?ipv4test"
|
||||
elif sabnzbd.misc.is_ipv6_addr(resolvehostip):
|
||||
resolveurl = f"http://[{resolvehostip}]/?ipv6test" # including square brackets
|
||||
else:
|
||||
logging.debug("Error resolving public IP address: no valid IPv4 or IPv6 address found")
|
||||
return None
|
||||
|
||||
try:
|
||||
req = urllib.request.Request(resolveurl)
|
||||
req.add_header("Host", sabnzbd.cfg.selftest_host())
|
||||
req.add_header("User-Agent", "SABnzbd/%s" % sabnzbd.__version__)
|
||||
with urllib.request.urlopen(req, timeout=2) as open_req:
|
||||
client_ip = ubtou(open_req.read().strip())
|
||||
# look up IPv4 addresses of selftest_host
|
||||
lookup_result_iv4 = addresslookup4(sabnzbd.cfg.selftest_host())
|
||||
|
||||
# Make sure it's a valid IPv4 or IPv6 address
|
||||
if not sabnzbd.misc.is_ipv4_addr(client_ip) and not sabnzbd.misc.is_ipv6_addr(client_ip):
|
||||
raise ValueError
|
||||
except urllib.error.URLError:
|
||||
logging.debug(
|
||||
"Failed to get public address from %s (%s)",
|
||||
sabnzbd.cfg.selftest_host(),
|
||||
family_type(family),
|
||||
exc_info=True,
|
||||
)
|
||||
# Make sure there is a result, abort otherwise
|
||||
if not lookup_result_iv4:
|
||||
raise Exception
|
||||
except Exception:
|
||||
# something very bad: no name resolving of selftest_host
|
||||
logging.debug("Failed to detect public IPv4 address: looking up %s failed", sabnzbd.cfg.selftest_host())
|
||||
return None
|
||||
|
||||
# If text is updated, make sure to update log-anonymization
|
||||
logging.debug("Public address %s = %s (in %.2f seconds)", family_type(family), client_ip, time.time() - start)
|
||||
return client_ip
|
||||
public_ipv4 = None
|
||||
# we got one or more IPv4 address(es) for selftest_host, so let's connect and ask for our own public IPv4
|
||||
for item in lookup_result_iv4:
|
||||
# get next IPv4 address of sabnzbd.cfg.selftest_host()
|
||||
selftest_ipv4 = item[4][0]
|
||||
try:
|
||||
# put the selftest_host's IPv4 address into the URL
|
||||
req = urllib.request.Request("http://" + selftest_ipv4 + "/")
|
||||
# specify the User-Agent, because certain sites refuse connections with "python urllib2" as User-Agent:
|
||||
req.add_header("User-Agent", "SABnzbd/%s" % sabnzbd.__version__)
|
||||
# specify the Host, because we only provide the IPv4 address in the URL:
|
||||
req.add_header("Host", sabnzbd.cfg.selftest_host())
|
||||
# get the response, timeout 2 seconds, in case the website is not accessible
|
||||
public_ipv4 = ubtou(urllib.request.urlopen(req, timeout=2).read())
|
||||
# ... check the response is indeed an IPv4 address:
|
||||
# if we got anything else than a plain IPv4 address, this will raise an exception
|
||||
socket.inet_aton(public_ipv4)
|
||||
# if we get here without exception, we found our public IPv4, and we're done:
|
||||
break
|
||||
except (socket.error, urllib.error.URLError):
|
||||
# the connect OR the inet_aton raised an exception, so:
|
||||
public_ipv4 = None # reset
|
||||
# continue the for loop to try next server IPv4 address
|
||||
pass
|
||||
|
||||
if not public_ipv4:
|
||||
logging.debug("Failed to get public IPv4 address from %s", sabnzbd.cfg.selftest_host())
|
||||
return None
|
||||
|
||||
logging.debug("Public IPv4 address = %s (in %.2f seconds)", public_ipv4, time.time() - start)
|
||||
return public_ipv4
|
||||
|
||||
|
||||
def public_ipv4():
|
||||
return public_ip(family=socket.AF_INET)
|
||||
|
||||
|
||||
def local_ipv6():
|
||||
"""
|
||||
return IPv6 address on local LAN interface. So a first check if there is IPv6 connectivity
|
||||
"""
|
||||
def ipv6():
|
||||
try:
|
||||
with socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) as s_ipv6:
|
||||
# IPv6 prefix for documentation purpose
|
||||
@@ -162,14 +162,5 @@ def local_ipv6():
|
||||
except:
|
||||
ipv6_address = None
|
||||
|
||||
# If text is updated, make sure to update log-anonymization
|
||||
logging.debug("Local IPv6 address = %s", ipv6_address)
|
||||
logging.debug("IPv6 address = %s", ipv6_address)
|
||||
return ipv6_address
|
||||
|
||||
|
||||
def public_ipv6():
|
||||
if local_address := local_ipv6():
|
||||
if public_address := public_ip(family=socket.AF_INET6):
|
||||
return public_address
|
||||
elif not sabnzbd.misc.is_lan_addr(local_address):
|
||||
return local_address
|
||||
|
||||
@@ -33,6 +33,7 @@ from dataclasses import dataclass
|
||||
from typing import Tuple, Union, Optional
|
||||
from more_itertools import roundrobin
|
||||
|
||||
from sabnzbd import cfg as cfg
|
||||
from sabnzbd.constants import DEF_TIMEOUT
|
||||
from sabnzbd.decorators import cache_maintainer
|
||||
|
||||
@@ -57,17 +58,6 @@ class AddrInfo:
|
||||
self.ipaddress = self.sockaddr[0]
|
||||
|
||||
|
||||
def family_type(family) -> str:
|
||||
"""Human-readable socket type"""
|
||||
if family not in (socket.AF_INET, socket.AF_INET6, socket.AF_UNSPEC):
|
||||
raise ValueError("Invalid family")
|
||||
if family == socket.AF_INET:
|
||||
return "IPv4-only"
|
||||
elif family == socket.AF_INET6:
|
||||
return "IPv6-only"
|
||||
return "IPv4 and IPv6"
|
||||
|
||||
|
||||
# Called by each thread
|
||||
def do_socket_connect(result_queue: queue.Queue, addrinfo: AddrInfo, timeout: int):
|
||||
"""Connect to the ip, and put the result into the queue"""
|
||||
@@ -99,12 +89,16 @@ def do_socket_connect(result_queue: queue.Queue, addrinfo: AddrInfo, timeout: in
|
||||
|
||||
@cache_maintainer(clear_time=10)
|
||||
@functools.lru_cache(maxsize=None)
|
||||
def happyeyeballs(host: str, port: int, timeout: int = DEF_TIMEOUT, family=socket.AF_UNSPEC) -> Optional[AddrInfo]:
|
||||
def happyeyeballs(host: str, port: int, timeout: int = DEF_TIMEOUT) -> Optional[AddrInfo]:
|
||||
"""Return the fastest result of getaddrinfo() based on RFC 6555/8305 (Happy Eyeballs),
|
||||
including IPv6 addresses if desired. Returns None in case no addresses were returned
|
||||
by getaddrinfo or if no connection could be made to any of the addresses.
|
||||
If family is specified, only that family is tried"""
|
||||
by getaddrinfo or if no connection could be made to any of the addresses"""
|
||||
try:
|
||||
# Get address information, by default both IPV4 and IPV6
|
||||
family = socket.AF_UNSPEC
|
||||
if not cfg.ipv6_servers():
|
||||
family = socket.AF_INET
|
||||
|
||||
ipv4_addrinfo = []
|
||||
ipv6_addrinfo = []
|
||||
last_canonname = ""
|
||||
@@ -134,10 +128,9 @@ def happyeyeballs(host: str, port: int, timeout: int = DEF_TIMEOUT, family=socke
|
||||
raise
|
||||
|
||||
logging.debug(
|
||||
"Available addresses for %s (port=%d, %s): %d IPv4 and %d IPv6",
|
||||
"Available addresses for %s (port=%d): %d IPv4 and %d IPv6",
|
||||
host,
|
||||
port,
|
||||
family_type(family),
|
||||
len(ipv4_addrinfo),
|
||||
len(ipv6_addrinfo),
|
||||
)
|
||||
@@ -166,14 +159,7 @@ def happyeyeballs(host: str, port: int, timeout: int = DEF_TIMEOUT, family=socke
|
||||
except queue.Empty:
|
||||
raise ConnectionError("No addresses could be resolved")
|
||||
|
||||
logging.info(
|
||||
"Quickest IP address for %s (port=%d, %s): %s (%s)",
|
||||
host,
|
||||
port,
|
||||
family_type(family),
|
||||
result.ipaddress,
|
||||
result.canonname,
|
||||
)
|
||||
logging.info("Quickest IP address for %s (port=%d): %s (%s)", host, port, result.ipaddress, result.canonname)
|
||||
return result
|
||||
except Exception as e:
|
||||
logging.debug("Failed Happy Eyeballs lookup: %s", e)
|
||||
|
||||
@@ -50,9 +50,8 @@ from sabnzbd.misc import (
|
||||
is_lan_addr,
|
||||
is_local_addr,
|
||||
is_loopback_addr,
|
||||
helpful_warning,
|
||||
recursive_html_escape,
|
||||
is_none,
|
||||
get_cpu_name,
|
||||
)
|
||||
from sabnzbd.happyeyeballs import happyeyeballs
|
||||
from sabnzbd.filesystem import (
|
||||
@@ -69,6 +68,7 @@ import sabnzbd.cfg as cfg
|
||||
import sabnzbd.notifier as notifier
|
||||
import sabnzbd.newsunpack
|
||||
from sabnzbd.utils.servertests import test_nntp_server_dict
|
||||
from sabnzbd.utils.getperformance import getcpu
|
||||
import sabnzbd.utils.ssdp
|
||||
from sabnzbd.constants import (
|
||||
DEF_STD_CONFIG,
|
||||
@@ -80,7 +80,7 @@ from sabnzbd.constants import (
|
||||
GUESSIT_SORT_TYPES,
|
||||
VALID_NZB_FILES,
|
||||
VALID_ARCHIVES,
|
||||
DEF_TEST_TIMEOUT,
|
||||
DEF_TIMEOUT,
|
||||
)
|
||||
from sabnzbd.lang import list_languages
|
||||
from sabnzbd.api import (
|
||||
@@ -429,7 +429,7 @@ class MainPage:
|
||||
info["have_rss_defined"] = bool(config.get_rss())
|
||||
info["have_watched_dir"] = bool(cfg.dirscan_dir())
|
||||
|
||||
info["cpumodel"] = get_cpu_name()
|
||||
info["cpumodel"] = getcpu()
|
||||
info["cpusimd"] = sabnzbd.decoder.SABCTOOLS_SIMD
|
||||
|
||||
# Have logout only with HTML and if inet=5, only when we are external
|
||||
@@ -517,6 +517,7 @@ class Wizard:
|
||||
cfg.language.set(kwargs.get("lang"))
|
||||
|
||||
info = build_header(sabnzbd.WIZARD_DIR)
|
||||
info["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
|
||||
|
||||
# Just in case, add server
|
||||
servers = config.get_servers()
|
||||
@@ -681,8 +682,11 @@ class ConfigPage:
|
||||
conf["configfn"] = clip_path(config.get_filename())
|
||||
conf["cmdline"] = sabnzbd.CMDLINE
|
||||
conf["build"] = sabnzbd.__baseline__[:7]
|
||||
|
||||
conf["have_7zip"] = bool(sabnzbd.newsunpack.SEVENZIP_COMMAND)
|
||||
conf["have_par2_turbo"] = sabnzbd.newsunpack.PAR2_TURBO
|
||||
|
||||
conf["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
|
||||
conf["ssl_version"] = ssl.OPENSSL_VERSION
|
||||
|
||||
return template_filtered_response(
|
||||
@@ -796,6 +800,8 @@ class ConfigSwitches:
|
||||
@secured_expose(check_configlock=True)
|
||||
def index(self, **kwargs):
|
||||
conf = build_header(sabnzbd.WEB_DIR_CONFIG)
|
||||
|
||||
conf["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
|
||||
conf["have_nice"] = bool(sabnzbd.newsunpack.NICE_COMMAND)
|
||||
conf["have_ionice"] = bool(sabnzbd.newsunpack.IONICE_COMMAND)
|
||||
|
||||
@@ -951,6 +957,8 @@ class ConfigGeneral:
|
||||
def index(self, **kwargs):
|
||||
conf = build_header(sabnzbd.WEB_DIR_CONFIG)
|
||||
|
||||
conf["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
|
||||
|
||||
web_list = []
|
||||
for interface_dir in globber_full(sabnzbd.DIR_INTERFACES):
|
||||
# Ignore the config
|
||||
@@ -1064,6 +1072,7 @@ class ConfigServer:
|
||||
|
||||
conf["servers"] = new
|
||||
conf["cats"] = list_cats(default=True)
|
||||
conf["certificate_validation"] = sabnzbd.CERTIFICATE_VALIDATION
|
||||
|
||||
return template_filtered_response(
|
||||
file=os.path.join(sabnzbd.WEB_DIR_CONFIG, "config_server.tmpl"),
|
||||
@@ -1143,7 +1152,7 @@ def handle_server(kwargs, root=None, new_svr=False):
|
||||
kwargs["connections"] = "1"
|
||||
|
||||
if kwargs.get("enable") == "1":
|
||||
if not happyeyeballs(host, int_conv(port), int_conv(kwargs.get("timeout"), default=DEF_TEST_TIMEOUT)):
|
||||
if not happyeyeballs(host, int_conv(port), int_conv(kwargs.get("timeout"), default=DEF_TIMEOUT)):
|
||||
return badParameterResponse(T('Server address "%s:%s" is not valid.') % (host, port), ajax)
|
||||
|
||||
# Default server name is just the host name
|
||||
@@ -1161,7 +1170,7 @@ def handle_server(kwargs, root=None, new_svr=False):
|
||||
if new_svr:
|
||||
server = unique_svr_name(server)
|
||||
|
||||
for kw in ("ssl", "enable", "required", "optional"):
|
||||
for kw in ("ssl", "send_group", "enable", "required", "optional"):
|
||||
if kw not in kwargs.keys():
|
||||
kwargs[kw] = None
|
||||
if svr and not new_svr:
|
||||
@@ -1377,7 +1386,7 @@ class ConfigRss:
|
||||
raise rssRaiser(self.__root, kwargs)
|
||||
|
||||
pp = kwargs.get("pp", "")
|
||||
if is_none(pp):
|
||||
if pp.lower() == "none":
|
||||
pp = ""
|
||||
script = ConvertSpecials(kwargs.get("script"))
|
||||
cat = ConvertSpecials(kwargs.get("cat"))
|
||||
|
||||
@@ -82,8 +82,8 @@ def internetspeed(test_time_limit: int = TIME_LIMIT) -> float:
|
||||
socket_speed = {}
|
||||
|
||||
try:
|
||||
addrinfo = happyeyeballs(TEST_HOSTNAME, TEST_PORT, SOCKET_TIMEOUT)
|
||||
for _ in range(NR_CONNECTIONS):
|
||||
addrinfo = happyeyeballs(TEST_HOSTNAME, TEST_PORT, SOCKET_TIMEOUT)
|
||||
sock = socket.socket(addrinfo.family, addrinfo.type)
|
||||
sock.settimeout(SOCKET_TIMEOUT)
|
||||
sock.connect(addrinfo.sockaddr)
|
||||
|
||||
@@ -20,11 +20,9 @@ sabnzbd.misc - misc classes
|
||||
"""
|
||||
|
||||
import os
|
||||
import platform
|
||||
import ssl
|
||||
import sys
|
||||
import logging
|
||||
import functools
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
import re
|
||||
@@ -53,13 +51,11 @@ from sabnzbd.constants import (
|
||||
)
|
||||
import sabnzbd.config as config
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.decorators import cache_maintainer
|
||||
from sabnzbd.encoding import ubtou, platform_btou
|
||||
from sabnzbd.encoding import ubtou
|
||||
from sabnzbd.filesystem import userxbit, make_script_path, remove_file
|
||||
|
||||
if sabnzbd.WIN32:
|
||||
try:
|
||||
import winreg
|
||||
import win32process
|
||||
import win32con
|
||||
|
||||
@@ -87,12 +83,11 @@ RE_IP6 = re.compile(r"inet6\s+(addr:\s*)?([0-9a-f:]+)", re.I)
|
||||
HAVE_AMPM = bool(time.strftime("%p"))
|
||||
|
||||
|
||||
def helpful_warning(msg, *args, **kwargs):
|
||||
def helpful_warning(*args, **kwargs):
|
||||
"""Wrapper to ignore helpful warnings if desired"""
|
||||
if cfg.helpful_warnings():
|
||||
msg = "%s\n%s" % (msg, T("To prevent all helpful warnings, disable Special setting 'helpful_warnings'."))
|
||||
return logging.warning(msg, *args, **kwargs)
|
||||
return logging.info(msg, *args, **kwargs)
|
||||
return logging.warning(*args, **kwargs)
|
||||
return logging.info(*args, **kwargs)
|
||||
|
||||
|
||||
def duplicate_warning(*args, **kwargs):
|
||||
@@ -172,11 +167,6 @@ def safe_lower(txt: Any) -> str:
|
||||
return ""
|
||||
|
||||
|
||||
def is_none(inp: Any) -> bool:
|
||||
"""Check for 'not X' but also if it's maybe the string 'None'"""
|
||||
return not inp or (isinstance(inp, str) and inp.lower() == "none")
|
||||
|
||||
|
||||
def cmp(x, y):
|
||||
"""
|
||||
Replacement for built-in function cmp that was removed in Python 3
|
||||
@@ -345,7 +335,7 @@ def cat_convert(cat):
|
||||
If no match found, but the indexer-cat starts with the user-cat, return user-cat
|
||||
If no match found, return None
|
||||
"""
|
||||
if not is_none(cat):
|
||||
if cat and cat.lower() != "none":
|
||||
cats = config.get_ordered_categories()
|
||||
raw_cats = config.get_categories()
|
||||
for ucat in cats:
|
||||
@@ -385,6 +375,8 @@ _SERVICE_PARM = "CommandLine"
|
||||
|
||||
def get_serv_parms(service):
|
||||
"""Get the service command line parameters from Registry"""
|
||||
import winreg
|
||||
|
||||
service_parms = []
|
||||
try:
|
||||
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, _SERVICE_KEY + service)
|
||||
@@ -404,6 +396,8 @@ def get_serv_parms(service):
|
||||
|
||||
def set_serv_parms(service, args):
|
||||
"""Set the service command line parameters in Registry"""
|
||||
import winreg
|
||||
|
||||
serv = []
|
||||
for arg in args:
|
||||
serv.append(arg[0])
|
||||
@@ -482,7 +476,7 @@ def check_latest_version():
|
||||
# Fetch version info
|
||||
data = get_from_url("https://sabnzbd.org/latest.txt")
|
||||
if not data:
|
||||
logging.info("Cannot retrieve version information from sabnzbd.org")
|
||||
logging.info("Cannot retrieve version information from GitHub.com")
|
||||
logging.debug("Traceback: ", exc_info=True)
|
||||
return
|
||||
|
||||
@@ -739,51 +733,6 @@ def get_macos_memory():
|
||||
return float(system_output.split()[1])
|
||||
|
||||
|
||||
@cache_maintainer(clear_time=3600)
|
||||
@functools.lru_cache(maxsize=None)
|
||||
def get_cpu_name():
|
||||
"""Find the CPU name (which needs a different method per OS), and return it
|
||||
If none found, return platform.platform()"""
|
||||
|
||||
cputype = None
|
||||
|
||||
try:
|
||||
if sabnzbd.WIN32:
|
||||
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"Hardware\Description\System\CentralProcessor\0")
|
||||
cputype = winreg.QueryValueEx(key, "ProcessorNameString")[0]
|
||||
winreg.CloseKey(key)
|
||||
|
||||
elif sabnzbd.MACOS:
|
||||
cputype = subprocess.check_output(["sysctl", "-n", "machdep.cpu.brand_string"]).strip()
|
||||
|
||||
else:
|
||||
with open("/proc/cpuinfo") as fp:
|
||||
for myline in fp.readlines():
|
||||
if myline.startswith("model name"):
|
||||
# Typical line:
|
||||
# model name : Intel(R) Xeon(R) CPU E5335 @ 2.00GHz
|
||||
cputype = myline.split(":", 1)[1] # get everything after the first ":"
|
||||
break # we're done
|
||||
cputype = platform_btou(cputype)
|
||||
except:
|
||||
# An exception, maybe due to a subprocess call gone wrong
|
||||
pass
|
||||
|
||||
if cputype:
|
||||
# OK, found. Remove unwanted spaces:
|
||||
cputype = " ".join(cputype.split())
|
||||
else:
|
||||
try:
|
||||
# Not found, so let's fall back to platform()
|
||||
cputype = platform.platform()
|
||||
except:
|
||||
# Can fail on special platforms (like Snapcraft or embedded)
|
||||
pass
|
||||
|
||||
logging.debug("CPU model = %s", cputype)
|
||||
return cputype
|
||||
|
||||
|
||||
def on_cleanup_list(filename: str, skip_nzb: bool = False) -> bool:
|
||||
"""Return True if a filename matches the clean-up list"""
|
||||
cleanup_list = cfg.cleanup_list()
|
||||
@@ -1277,6 +1226,33 @@ def set_https_verification(value):
|
||||
return prev
|
||||
|
||||
|
||||
def test_cert_checking():
|
||||
"""Test quality of certificate validation"""
|
||||
# User disabled the test, assume proper SSL certificates
|
||||
if not cfg.selftest_host():
|
||||
return True
|
||||
|
||||
# Try a connection to our test-host
|
||||
try:
|
||||
ctx = ssl.create_default_context()
|
||||
base_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
ssl_sock = ctx.wrap_socket(base_sock, server_hostname=cfg.selftest_host())
|
||||
ssl_sock.settimeout(2.0)
|
||||
ssl_sock.connect((cfg.selftest_host(), 443))
|
||||
ssl_sock.close()
|
||||
return True
|
||||
except (socket.gaierror, socket.timeout):
|
||||
# Non-SSL related error.
|
||||
# We now assume that certificates work instead of forcing
|
||||
# lower quality just because some (temporary) internet problem
|
||||
logging.info("Could not determine system certificate validation quality due to connection problems")
|
||||
return True
|
||||
except:
|
||||
# Seems something is still wrong
|
||||
set_https_verification(False)
|
||||
return False
|
||||
|
||||
|
||||
def request_repair():
|
||||
"""Request a full repair on next restart"""
|
||||
path = os.path.join(cfg.admin_dir.get_path(), REPAIR_REQUEST)
|
||||
|
||||
@@ -43,7 +43,6 @@ from sabnzbd.misc import (
|
||||
run_command,
|
||||
build_and_run_command,
|
||||
format_time_left,
|
||||
is_none,
|
||||
)
|
||||
from sabnzbd.filesystem import (
|
||||
make_script_path,
|
||||
@@ -2144,7 +2143,7 @@ def pre_queue(nzo: NzbObject, pp, cat):
|
||||
|
||||
def fix(p):
|
||||
# If added via API, some items can still be "None" (as a string)
|
||||
if is_none(p):
|
||||
if not p or str(p).lower() == "none":
|
||||
return ""
|
||||
return str(p)
|
||||
|
||||
|
||||
@@ -177,6 +177,13 @@ class NewsWrapper:
|
||||
self.nntp.sock.sendall(command)
|
||||
self.reset_data_buffer()
|
||||
|
||||
def send_group(self, group: str):
|
||||
"""Send the NNTP GROUP command"""
|
||||
self.timeout = time.time() + self.server.timeout
|
||||
command = utob("GROUP %s\r\n" % group)
|
||||
self.nntp.sock.sendall(command)
|
||||
self.reset_data_buffer()
|
||||
|
||||
def recv_chunk(self) -> Tuple[int, bool]:
|
||||
"""Receive data, return #bytes, done, skip"""
|
||||
# Resize the buffer in the extremely unlikely case that it got full
|
||||
@@ -301,6 +308,11 @@ class NNTP:
|
||||
# We want a modern TLS (1.2 or higher), so we disallow older protocol versions (<= TLS 1.1)
|
||||
self.nw.server.ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
|
||||
|
||||
# Disable any verification if the setup is bad
|
||||
if not sabnzbd.CERTIFICATE_VALIDATION:
|
||||
self.nw.server.ssl_context.check_hostname = False
|
||||
self.nw.server.ssl_context.verify_mode = ssl.CERT_NONE
|
||||
|
||||
# Create socket and store fileno of the socket
|
||||
self.sock: Union[socket.socket, ssl.SSLSocket] = socket.socket(self.addrinfo.family, self.addrinfo.type)
|
||||
self.fileno: int = self.sock.fileno()
|
||||
@@ -383,7 +395,7 @@ class NNTP:
|
||||
|
||||
# Ignore if the socket was already closed, resulting in errors
|
||||
if not self.closed:
|
||||
msg = T("Failed to connect: %s %s@%s:%s (%s)") % (
|
||||
msg = "Failed to connect: %s %s@%s:%s (%s)" % (
|
||||
str(error),
|
||||
self.nw.thrdnum,
|
||||
self.nw.server.host,
|
||||
|
||||
@@ -23,7 +23,6 @@ sabnzbd.notifier - Send notifications to any notification services
|
||||
|
||||
import os.path
|
||||
import logging
|
||||
import platform
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
import http.client
|
||||
@@ -35,7 +34,7 @@ import sabnzbd
|
||||
import sabnzbd.cfg
|
||||
from sabnzbd.encoding import utob
|
||||
from sabnzbd.filesystem import make_script_path
|
||||
from sabnzbd.misc import build_and_run_command, int_conv
|
||||
from sabnzbd.misc import build_and_run_command
|
||||
from sabnzbd.newsunpack import create_env
|
||||
|
||||
if sabnzbd.WIN32:
|
||||
@@ -43,15 +42,11 @@ if sabnzbd.WIN32:
|
||||
from win32comext.shell import shell
|
||||
from windows_toasts import InteractableWindowsToaster, Toast, ToastActivatedEventArgs, ToastButton
|
||||
|
||||
# Only Windows 10 and above are supported
|
||||
if int_conv(platform.release()) < 10:
|
||||
raise OSError
|
||||
|
||||
# Set a custom AUMID to display the right icon, it is written to the registry by the installer
|
||||
shell.SetCurrentProcessExplicitAppUserModelID("SABnzbd")
|
||||
_HAVE_WINDOWS_TOASTER = True
|
||||
except:
|
||||
# Sending toasts on non-supported platforms results in segfaults
|
||||
# Only supported on Windows 10 and above
|
||||
_HAVE_WINDOWS_TOASTER = False
|
||||
|
||||
try:
|
||||
@@ -215,7 +210,6 @@ def send_notify_osd(title, message):
|
||||
def send_notification_center(title: str, msg: str, notification_type: str, actions: Optional[Dict[str, str]] = None):
|
||||
"""Send message to macOS Notification Center.
|
||||
Only 1 button is possible on macOS!"""
|
||||
logging.debug("Sending macOS notification")
|
||||
try:
|
||||
subtitle = T(NOTIFICATION_TYPES.get(notification_type, "other"))
|
||||
button_text = button_action = None
|
||||
@@ -234,7 +228,7 @@ def send_notification_center(title: str, msg: str, notification_type: str, actio
|
||||
|
||||
def send_prowl(title, msg, notification_type, force=False, test=None):
|
||||
"""Send message to Prowl"""
|
||||
logging.debug("Sending Prowl notification")
|
||||
|
||||
if test:
|
||||
apikey = test.get("prowl_apikey")
|
||||
else:
|
||||
@@ -267,7 +261,7 @@ def send_prowl(title, msg, notification_type, force=False, test=None):
|
||||
|
||||
def send_pushover(title, msg, notification_type, force=False, test=None):
|
||||
"""Send message to pushover"""
|
||||
logging.debug("Sending Pushover notification")
|
||||
|
||||
if test:
|
||||
apikey = test.get("pushover_token")
|
||||
userkey = test.get("pushover_userkey")
|
||||
@@ -334,7 +328,7 @@ def do_send_pushover(body):
|
||||
|
||||
def send_pushbullet(title, msg, notification_type, force=False, test=None):
|
||||
"""Send message to Pushbullet"""
|
||||
logging.debug("Sending Pushbullet notification")
|
||||
|
||||
if test:
|
||||
apikey = test.get("pushbullet_apikey")
|
||||
device = test.get("pushbullet_device")
|
||||
@@ -369,7 +363,6 @@ def send_pushbullet(title, msg, notification_type, force=False, test=None):
|
||||
|
||||
def send_nscript(title, msg, notification_type, force=False, test=None):
|
||||
"""Run user's notification script"""
|
||||
logging.debug("Sending notification script notification")
|
||||
if test:
|
||||
script = test.get("nscript_script")
|
||||
env_params = {"notification_parameters": test.get("nscript_parameters")}
|
||||
@@ -413,12 +406,6 @@ def send_nscript(title, msg, notification_type, force=False, test=None):
|
||||
|
||||
|
||||
def send_windows(title: str, msg: str, notification_type: str, actions: Optional[Dict[str, str]] = None):
|
||||
"""Send Windows notifications, either fancy with buttons (Windows 10+) or basic ones"""
|
||||
# Skip any notifications if ran as a Windows Service, it can result in crashes
|
||||
if sabnzbd.WIN_SERVICE:
|
||||
return None
|
||||
|
||||
logging.debug("Sending Windows notification")
|
||||
try:
|
||||
if _HAVE_WINDOWS_TOASTER:
|
||||
notification_sender = InteractableWindowsToaster("SABnzbd", notifierAUMID="SABnzbd")
|
||||
|
||||
@@ -62,7 +62,6 @@ def add_nzbfile(
|
||||
reuse: Optional[str] = None,
|
||||
password: Optional[str] = None,
|
||||
nzo_id: Optional[str] = None,
|
||||
dup_check: bool = True,
|
||||
):
|
||||
"""Add file, either a single NZB-file or an archive.
|
||||
All other parameters are passed to the NZO-creation.
|
||||
@@ -120,7 +119,6 @@ def add_nzbfile(
|
||||
url=url,
|
||||
password=password,
|
||||
nzo_id=nzo_id,
|
||||
dup_check=dup_check,
|
||||
)
|
||||
else:
|
||||
return process_single_nzb(
|
||||
@@ -138,7 +136,6 @@ def add_nzbfile(
|
||||
url=url,
|
||||
password=password,
|
||||
nzo_id=nzo_id,
|
||||
dup_check=dup_check,
|
||||
)
|
||||
|
||||
|
||||
@@ -154,10 +151,10 @@ def process_nzb_archive_file(
|
||||
nzbname: Optional[str] = None,
|
||||
reuse: Optional[str] = None,
|
||||
nzo_info: Optional[Dict[str, Any]] = None,
|
||||
dup_check: bool = True,
|
||||
url: Optional[str] = None,
|
||||
password: Optional[str] = None,
|
||||
nzo_id: Optional[str] = None,
|
||||
dup_check: bool = True,
|
||||
) -> Tuple[AddNzbFileResult, List[str]]:
|
||||
"""Analyse archive and create job(s).
|
||||
Accepts archive files with ONLY nzb/nfo/folder files in it.
|
||||
@@ -269,10 +266,10 @@ def process_single_nzb(
|
||||
nzbname: Optional[str] = None,
|
||||
reuse: Optional[str] = None,
|
||||
nzo_info: Optional[Dict[str, Any]] = None,
|
||||
dup_check: bool = True,
|
||||
url: Optional[str] = None,
|
||||
password: Optional[str] = None,
|
||||
nzo_id: Optional[str] = None,
|
||||
dup_check: bool = True,
|
||||
) -> Tuple[AddNzbFileResult, List[str]]:
|
||||
"""Analyze file and create a job from it
|
||||
Supports NZB, NZB.BZ2, NZB.GZ and GZ.NZB-in-disguise
|
||||
|
||||
@@ -979,7 +979,7 @@ class NzbQueue:
|
||||
|
||||
# Unfortunately we need a copy, since we might remove items from the list
|
||||
for nzo in self.__nzo_list[:]:
|
||||
if not nzo.duplicate or nzo.duplicate == DuplicateStatus.DUPLICATE_IGNORED:
|
||||
if not nzo.duplicate:
|
||||
continue
|
||||
|
||||
# URL's do not have an MD5!
|
||||
|
||||
@@ -88,7 +88,6 @@ from sabnzbd.filesystem import (
|
||||
save_compressed,
|
||||
backup_nzb,
|
||||
remove_data,
|
||||
strip_extensions,
|
||||
)
|
||||
from sabnzbd.par2file import FilePar2Info
|
||||
from sabnzbd.decorators import synchronized
|
||||
@@ -103,7 +102,7 @@ from sabnzbd.deobfuscate_filenames import is_probably_obfuscated
|
||||
# In the subject, we expect the filename within double quotes
|
||||
RE_SUBJECT_FILENAME_QUOTES = re.compile(r'"([^"]*)"')
|
||||
# Otherwise something that looks like a filename
|
||||
RE_SUBJECT_BASIC_FILENAME = re.compile(r"\b([\w\-+()' .,]+(?:\[[\w\-/+()' .,]*][\w\-+()' .,]*)*\.[A-Za-z0-9]{2,4})\b")
|
||||
RE_SUBJECT_BASIC_FILENAME = re.compile(r"([\w\-+()'\s.,]{6,}\.[A-Za-z0-9]{2,4})[^A-Za-z0-9]")
|
||||
RE_RAR = re.compile(r"(\.rar|\.r\d\d|\.s\d\d|\.t\d\d|\.u\d\d|\.v\d\d)$", re.I)
|
||||
|
||||
|
||||
@@ -1433,13 +1432,12 @@ class NzbObject(TryList):
|
||||
# If user resumes after encryption warning, no more auto-pauses
|
||||
self.encrypted = 2
|
||||
# If user resumes after warning, reset duplicate/oversized/incomplete/unwanted indicators
|
||||
self.duplicate = None
|
||||
self.oversized = False
|
||||
self.incomplete = False
|
||||
if self.unwanted_ext:
|
||||
# If user resumes after "unwanted" warning, no more auto-pauses
|
||||
self.unwanted_ext = 2
|
||||
if self.duplicate:
|
||||
self.duplicate = DuplicateStatus.DUPLICATE_IGNORED
|
||||
|
||||
@synchronized(NZO_LOCK)
|
||||
def add_parfile(self, parfile: NzbFile) -> bool:
|
||||
@@ -1815,10 +1813,8 @@ class NzbObject(TryList):
|
||||
|
||||
# Delete all, or just basic files
|
||||
if self.futuretype:
|
||||
# If duplicate is discarded during URL-fetches, no nzo_id is known yet
|
||||
if self.nzo_id:
|
||||
# Remove temporary file left from URL-fetches
|
||||
remove_data(self.nzo_id, self.admin_path)
|
||||
# Remove temporary file left from URL-fetches
|
||||
remove_data(self.nzo_id, self.admin_path)
|
||||
elif delete_all_data:
|
||||
remove_all(self.download_path, recursive=True)
|
||||
else:
|
||||
@@ -1884,15 +1880,11 @@ class NzbObject(TryList):
|
||||
return None, None, None
|
||||
|
||||
# Only a subset we want to apply directly to the NZO
|
||||
for attrib in ("final_name", "priority", "url"):
|
||||
for attrib in ("final_name", "priority", "password", "url"):
|
||||
# Only set if it is present and has a value
|
||||
if attribs.get(attrib):
|
||||
setattr(self, attrib, attribs[attrib])
|
||||
|
||||
# Only set password if it wasn't already set
|
||||
if not self.password and attribs.get("password"):
|
||||
self.password = attribs["password"]
|
||||
|
||||
# Rest is to be used directly in the NZO-init flow
|
||||
return attribs["cat"], attribs["pp"], attribs["script"]
|
||||
|
||||
@@ -2116,8 +2108,14 @@ def nzf_cmp_name(nzf1: NzbFile, nzf2: NzbFile):
|
||||
def create_work_name(name: str) -> str:
|
||||
"""Remove ".nzb" and ".par(2)" and sanitize, skip URL's"""
|
||||
if name.find("://") < 0:
|
||||
# Invalid charters need to be removed before and after (see unit-tests)
|
||||
return sanitize_foldername(strip_extensions(sanitize_foldername(name)))
|
||||
# In case it was one of these, there might be more
|
||||
# Need to remove any invalid characters before starting
|
||||
name_base, ext = os.path.splitext(sanitize_foldername(name))
|
||||
while ext.lower() in (".nzb", ".par", ".par2"):
|
||||
name = name_base
|
||||
name_base, ext = os.path.splitext(name)
|
||||
# And make sure we remove invalid characters again
|
||||
return sanitize_foldername(name)
|
||||
else:
|
||||
return name.strip()
|
||||
|
||||
@@ -2127,10 +2125,6 @@ def scan_password(name: str) -> Tuple[str, Optional[str]]:
|
||||
if "http://" in name or "https://" in name:
|
||||
return name, None
|
||||
|
||||
# Strip any unwanted usenet-related extensions
|
||||
name = strip_extensions(name)
|
||||
|
||||
# Identify any braces
|
||||
braces = name[1:].find("{{")
|
||||
if braces < 0:
|
||||
braces = len(name)
|
||||
|
||||
@@ -46,7 +46,6 @@ from sabnzbd.misc import (
|
||||
history_updated,
|
||||
change_queue_complete_action,
|
||||
run_script,
|
||||
is_none,
|
||||
)
|
||||
from sabnzbd.filesystem import (
|
||||
real_path,
|
||||
@@ -1099,7 +1098,7 @@ def handle_empty_queue():
|
||||
)
|
||||
|
||||
# Perform end-of-queue script
|
||||
if not is_none(cfg.end_queue_script()):
|
||||
if cfg.end_queue_script():
|
||||
logging.info("Queue has finished, launching script: %s ", cfg.end_queue_script())
|
||||
run_script(cfg.end_queue_script())
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ def osx_shutdown():
|
||||
def osx_standby():
|
||||
"""Make macOS system sleep, returns after wakeup"""
|
||||
try:
|
||||
subprocess.call(["pmset", "sleepnow"])
|
||||
subprocess.call(["osascript", "-e", 'tell app "System Events" to sleep'])
|
||||
time.sleep(10)
|
||||
except:
|
||||
logging.error(T("Failed to standby system"))
|
||||
|
||||
@@ -252,6 +252,9 @@ SKIN_TEXT = {
|
||||
"confirmWithoutSavingPrompt": TT("Changes have not been saved, and will be lost."),
|
||||
"explain-sessionExpire": TT("When your IP address changes or SABnzbd is restarted the session will expire."),
|
||||
"opt-enable_7zip": TT("Enable 7zip"),
|
||||
"explain-nosslcontext": TT(
|
||||
"Secure (SSL) connections from SABnzbd to newsservers and HTTPS websites will be encrypted, however, validating a server's identity using its certificates is not possible. OpenSSL 1.0.2 or above and up-to-date local CA certificates are required."
|
||||
),
|
||||
"explain-getpar2turbo": TT("Speed up repairs by installing par2cmdline-turbo, it is available for many platforms."),
|
||||
"version": TT("Version"),
|
||||
"uptime": TT("Uptime"),
|
||||
@@ -265,8 +268,8 @@ SKIN_TEXT = {
|
||||
"explain-host": TT("Host SABnzbd should listen on."),
|
||||
"opt-port": TT("SABnzbd Port"),
|
||||
"explain-port": TT("Port SABnzbd should listen on."),
|
||||
"opt-web_dir": TT("Web Interface Theme"),
|
||||
"explain-web_dir": TT("Choose a theme."),
|
||||
"opt-web_dir": TT("Web Interface"),
|
||||
"explain-web_dir": TT("Choose a skin."),
|
||||
"opt-web_username": TT("SABnzbd Username"),
|
||||
"explain-web_username": TT("Optional authentication username."),
|
||||
"opt-web_password": TT("SABnzbd Password"),
|
||||
@@ -470,6 +473,7 @@ SKIN_TEXT = {
|
||||
"Posts will be paused untill they are at least this age. Setting job priority to Force will skip the delay."
|
||||
),
|
||||
"opt-check_new_rel": TT("Check for New Release"),
|
||||
"explain-check_new_rel": TT("Weekly check for new SABnzbd release."),
|
||||
"also-test": TT("Also test releases"), #: Pick list for weekly test for new releases
|
||||
"opt-replace_spaces": TT("Replace Spaces in Foldername"),
|
||||
"explain-replace_spaces": TT("Replace spaces with underscores in folder names."),
|
||||
@@ -567,6 +571,8 @@ SKIN_TEXT = {
|
||||
"button-clrServer": TT("Clear Counters"), #: Button: Clear server's byte counters
|
||||
"srv-testing": TT("Testing server details..."),
|
||||
"srv-bandwidth": TT("Bandwidth"),
|
||||
"srv-send_group": TT("Send Group"),
|
||||
"srv-explain-send_group": TT("Send group command before requesting articles."),
|
||||
"srv-notes": TT("Personal notes"),
|
||||
"srv-article-availability": TT("Article availability"),
|
||||
"srv-articles-tried": TT(
|
||||
@@ -829,9 +835,6 @@ SKIN_TEXT = {
|
||||
"Glitter-top": TT("Top"),
|
||||
"Glitter-bottom": TT("Bottom"),
|
||||
"Glitter-retryJob": TT("Retry"),
|
||||
"Glitter-retryNoChecks": TT(
|
||||
"When you Retry a job, 'Duplicate Detection' and 'Abort jobs that cannot be completed' are disabled."
|
||||
),
|
||||
"Glitter-more": TT("More"),
|
||||
"Glitter-scriptLog": TT("View Script Log"),
|
||||
"Glitter-clearHistory": TT("Purge History"),
|
||||
|
||||
@@ -678,7 +678,7 @@ def guess_what(name: str) -> MatchesDict:
|
||||
or (
|
||||
name.lower().startswith(("http://", "https://"))
|
||||
and name.lower().endswith(".nzb")
|
||||
and guess.get("container") == "nzb"
|
||||
and guess.get("container" == "nzb")
|
||||
) # URL to an nzb file, can happen when pre-queue script rejects a job
|
||||
):
|
||||
guess["type"] = "unknown"
|
||||
|
||||
@@ -34,7 +34,7 @@ import base64
|
||||
from typing import Tuple, Optional, Union, List, Dict, Any
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.constants import DEF_TIMEOUT, FUTURE_Q_FOLDER, VALID_NZB_FILES, Status, VALID_ARCHIVES, DuplicateStatus
|
||||
from sabnzbd.constants import DEF_TIMEOUT, FUTURE_Q_FOLDER, VALID_NZB_FILES, Status, VALID_ARCHIVES
|
||||
import sabnzbd.misc as misc
|
||||
import sabnzbd.filesystem
|
||||
import sabnzbd.cfg as cfg
|
||||
@@ -243,10 +243,6 @@ class URLGrabber(Thread):
|
||||
|
||||
# Check if nzb file
|
||||
if sabnzbd.filesystem.get_ext(filename) in VALID_ARCHIVES + VALID_NZB_FILES:
|
||||
# If the user resumed a duplicate detected URL, skip the check
|
||||
dup_check = future_nzo.duplicate != DuplicateStatus.DUPLICATE_IGNORED
|
||||
|
||||
# Add the new job to the queue
|
||||
res, _ = sabnzbd.nzbparser.add_nzbfile(
|
||||
path,
|
||||
pp=future_nzo.pp,
|
||||
@@ -259,7 +255,6 @@ class URLGrabber(Thread):
|
||||
keep=False,
|
||||
password=future_nzo.password,
|
||||
nzo_id=future_nzo.nzo_id,
|
||||
dup_check=dup_check,
|
||||
)
|
||||
if res is AddNzbFileResult.RETRY:
|
||||
logging.info("Incomplete NZB, retry after 5 min %s", url)
|
||||
|
||||
@@ -13,7 +13,7 @@ from cryptography.x509.oid import NameOID
|
||||
import datetime
|
||||
import socket
|
||||
|
||||
from sabnzbd.getipaddress import local_ipv4
|
||||
from sabnzbd.getipaddress import localipv4
|
||||
|
||||
|
||||
def generate_key(key_size=2048, output_file="key.pem"):
|
||||
@@ -29,7 +29,7 @@ def generate_key(key_size=2048, output_file="key.pem"):
|
||||
private_key.private_bytes(
|
||||
encoding=serialization.Encoding.PEM,
|
||||
format=serialization.PrivateFormat.TraditionalOpenSSL,
|
||||
encryption_algorithm=serialization.NoEncryption(),
|
||||
encryption_algorithm=serialization.NoEncryption()
|
||||
# encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase")
|
||||
)
|
||||
)
|
||||
@@ -64,7 +64,7 @@ def generate_local_cert(private_key, days_valid=3560, output_file="cert.cert", L
|
||||
san_list.append(x509.IPAddress(ipaddress.IPv6Address("::1")))
|
||||
|
||||
# append local v4 ip
|
||||
mylocalipv4 = local_ipv4()
|
||||
mylocalipv4 = localipv4()
|
||||
if mylocalipv4:
|
||||
san_list.append(x509.IPAddress(ipaddress.IPv4Address(str(mylocalipv4))))
|
||||
except:
|
||||
|
||||
@@ -1,9 +1,56 @@
|
||||
import platform
|
||||
import subprocess
|
||||
import locale
|
||||
import logging
|
||||
import time
|
||||
|
||||
from .pystone import pystones
|
||||
|
||||
|
||||
def getcpu():
|
||||
# find the CPU name (which needs a different method per OS), and return it
|
||||
# If none found, return platform.platform().
|
||||
|
||||
cputype = None
|
||||
|
||||
try:
|
||||
if platform.system() == "Windows":
|
||||
import winreg
|
||||
|
||||
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"Hardware\Description\System\CentralProcessor\0")
|
||||
cputype = winreg.QueryValueEx(key, "ProcessorNameString")[0]
|
||||
winreg.CloseKey(key)
|
||||
|
||||
elif platform.system() == "Darwin":
|
||||
cputype = subprocess.check_output(["sysctl", "-n", "machdep.cpu.brand_string"]).strip()
|
||||
|
||||
elif platform.system() == "Linux":
|
||||
with open("/proc/cpuinfo") as fp:
|
||||
for myline in fp.readlines():
|
||||
if myline.startswith("model name"):
|
||||
# Typical line:
|
||||
# model name : Intel(R) Xeon(R) CPU E5335 @ 2.00GHz
|
||||
cputype = myline.split(":", 1)[1] # get everything after the first ":"
|
||||
break # we're done
|
||||
cputype = cputype.decode(locale.getpreferredencoding())
|
||||
except:
|
||||
# An exception, maybe due to a subprocess call gone wrong
|
||||
pass
|
||||
|
||||
if cputype:
|
||||
# OK, found. Remove unwanted spaces:
|
||||
cputype = " ".join(cputype.split())
|
||||
else:
|
||||
try:
|
||||
# Not found, so let's fall back to platform()
|
||||
cputype = platform.platform()
|
||||
except:
|
||||
# Can fail on special platforms (like Snapcraft or embedded)
|
||||
pass
|
||||
|
||||
logging.debug("CPU model = %s", cputype)
|
||||
return cputype
|
||||
|
||||
|
||||
def getpystone():
|
||||
# Start calculation
|
||||
maxpystone = 0
|
||||
@@ -22,3 +69,4 @@ def getpystone():
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(getpystone())
|
||||
print(getcpu())
|
||||
|
||||
@@ -241,6 +241,7 @@ kDNSServiceInterfaceIndexLocalOnly = -1
|
||||
|
||||
|
||||
class BonjourError(Exception):
|
||||
|
||||
"""
|
||||
|
||||
Exception representing an error returned by the DNS-SD library.
|
||||
@@ -320,6 +321,7 @@ _DNSServiceErrorType = ctypes.c_int32
|
||||
|
||||
|
||||
class DNSRecordRef(ctypes.c_void_p):
|
||||
|
||||
"""
|
||||
|
||||
A DNSRecordRef pointer. DO NOT CREATE INSTANCES OF THIS CLASS!
|
||||
@@ -365,6 +367,7 @@ class _DNSRecordRef_or_null(DNSRecordRef):
|
||||
|
||||
|
||||
class DNSServiceRef(DNSRecordRef):
|
||||
|
||||
"""
|
||||
|
||||
A DNSServiceRef pointer. DO NOT CREATE INSTANCES OF THIS CLASS!
|
||||
@@ -1737,6 +1740,7 @@ def DNSServiceConstructFullName(service=None, regtype=_NO_DEFAULT, domain=_NO_DE
|
||||
|
||||
|
||||
class TXTRecord(object):
|
||||
|
||||
"""
|
||||
|
||||
A mapping representing a DNS TXT record. The TXT record's
|
||||
|
||||
@@ -20,8 +20,9 @@ sabnzbd.utils.servertests - Debugging server connections. Currently only NNTP se
|
||||
"""
|
||||
|
||||
import socket
|
||||
import sys
|
||||
|
||||
from sabnzbd.constants import DEF_TEST_TIMEOUT
|
||||
from sabnzbd.constants import DEF_TIMEOUT
|
||||
from sabnzbd.newswrapper import NewsWrapper, NNTPPermanentError
|
||||
from sabnzbd.downloader import Server, clues_login, clues_too_many
|
||||
from sabnzbd.config import get_servers
|
||||
@@ -36,7 +37,7 @@ def test_nntp_server_dict(kwargs):
|
||||
password = kwargs.get("password", "").strip()
|
||||
server = kwargs.get("server", "").strip()
|
||||
connections = int_conv(kwargs.get("connections", 0))
|
||||
timeout = int_conv(kwargs.get("timeout", DEF_TEST_TIMEOUT))
|
||||
timeout = int_conv(kwargs.get("timeout", DEF_TIMEOUT))
|
||||
ssl = int_conv(kwargs.get("ssl", 0))
|
||||
ssl_verify = int_conv(kwargs.get("ssl_verify", 1))
|
||||
ssl_ciphers = kwargs.get("ssl_ciphers", "").strip()
|
||||
@@ -55,7 +56,7 @@ def test_nntp_server_dict(kwargs):
|
||||
|
||||
if not timeout:
|
||||
# Lower value during new server testing
|
||||
timeout = DEF_TEST_TIMEOUT
|
||||
timeout = 10
|
||||
|
||||
if "*" in password and not password.strip("*"):
|
||||
# If the password is masked, try retrieving it from the config
|
||||
@@ -77,6 +78,7 @@ def test_nntp_server_dict(kwargs):
|
||||
use_ssl=ssl,
|
||||
ssl_verify=ssl_verify,
|
||||
ssl_ciphers=ssl_ciphers,
|
||||
send_group=False,
|
||||
username=username,
|
||||
password=password,
|
||||
)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user