Compare commits

..

66 Commits

Author SHA1 Message Date
Safihre
3ce5679298 Update text files for 4.3.2RC2 2024-05-23 10:23:41 +02:00
jcfp
47e1d40943 set basic systemd hardening options (#2865) 2024-05-22 13:52:23 +02:00
Safihre
1687130107 Ignore shutdown exception in cheroot
Closes #2857
2024-05-22 10:20:09 +02:00
SABnzbd Automation
8e59146d60 Update translatable texts
[skip ci]
2024-05-20 00:41:49 +00:00
renovate[bot]
4b37d2772f Update all dependencies 2024-05-20 00:41:01 +00:00
thezoggy
ea9d690a90 Switch discord link to vanity link. Add binhex as docker maintainer entry (#2861) 2024-05-17 07:16:25 +02:00
Safihre
3a2e967a03 Add 4.3.2 to appdata 2024-05-16 21:45:00 +02:00
SABnzbd Automation
a2eb0cc2c3 Update translatable texts
[skip ci]
2024-05-16 19:44:14 +00:00
Safihre
8b9341023a Update text files for 4.3.2RC1 2024-05-16 21:39:42 +02:00
Safihre
54314c0198 Only remove Windows shortcuts on uninstall
Closes #2850
2024-05-16 21:32:53 +02:00
Safihre
b0e4c4c5bf Pin paho-mqtt to 1.6.1
Closes #2855
2024-05-16 15:28:05 +02:00
Safihre
989e215acc Update sabctools to 8.2.0 2024-05-16 15:00:26 +02:00
thezoggy
ba88bb15a9 Update unrar 7.01 and 7zip to 24.05 (#2860)
* Update unrar to 7.01

* Upgrade 7zip to 24.05
2024-05-16 09:10:14 +02:00
SABnzbd Automation
0cac0d942c Update translatable texts
[skip ci]
2024-05-15 11:04:15 +00:00
Chris Caron
b24a9ee781 Added tests cases to wrap calls to the Apprise integration (#2856)
* Added tests cases to wrap calls to the Apprise integration

* workaround to default config getting lost from test_misc.py

* 100% test coverage in send_apprise()
2024-05-15 13:03:26 +02:00
SABnzbd Automation
25ae29235f Update translatable texts
[skip ci]
2024-05-13 01:51:57 +00:00
renovate[bot]
a8d4de2d3d Update all dependencies 2024-05-13 01:51:12 +00:00
SABnzbd Automation
ccb3e0522c Update translatable texts
[skip ci]
2024-05-09 20:56:42 +00:00
Safihre
a9f1838b52 Update History Retention wording 2024-05-09 22:55:27 +02:00
SABnzbd Automation
d744c293fb Update translatable texts
[skip ci]
2024-05-09 20:49:42 +00:00
Safihre
94848979ad Add disable_archive for users that want to always skip it
Relates to #2848
2024-05-09 22:47:31 +02:00
SABnzbd Automation
2732326b3d Update translatable texts
[skip ci]
2024-05-06 00:22:01 +00:00
renovate[bot]
ea8328c199 Update all dependencies 2024-05-06 00:21:22 +00:00
Safihre
f1e42707a0 Update appdata for 4.3.1 2024-05-03 17:00:20 +02:00
SABnzbd Automation
c1bdc3abff Update translatable texts
[skip ci]
2024-05-03 13:29:51 +00:00
Safihre
5cbb569b38 Update text files for 4.3.1 2024-05-03 15:28:03 +02:00
Safihre
d4a3f0ea79 Correct missing winrt and apprise imports on macOS/Windows builds 2024-05-03 14:04:00 +02:00
SABnzbd Automation
b31fe2cf49 Update translatable texts
[skip ci]
2024-05-01 19:43:17 +00:00
Safihre
65d748fc9f Update text files for 4.3.0 2024-05-01 21:42:27 +02:00
Safihre
ab2da15bc9 Add SAB_API_KEY and SAB_API_URL to script environment variables 2024-04-29 21:45:00 +02:00
renovate[bot]
bf8bef3cd0 Update all dependencies to v2.0.1 2024-04-29 07:23:08 +00:00
renovate[bot]
adbe2f3c96 Update all dependencies 2024-04-29 02:18:10 +00:00
Safihre
dadb8ee71b Add version 4.3.0 to appdata 2024-04-24 12:11:24 +02:00
SABnzbd Automation
7d30f12532 Update translatable texts
[skip ci]
2024-04-24 10:11:10 +00:00
Safihre
9c41cbd2f3 Update text files for 4.3.0RC2 2024-04-24 12:10:27 +02:00
Safihre
5ce9a0c17d Update cheroot to 10.0.1 2024-04-24 08:53:36 +02:00
Safihre
7b2d2df299 Prevent crash on invalid server expiration date 2024-04-24 08:53:36 +02:00
renovate[bot]
285ff00c12 Update all dependencies 2024-04-22 01:25:16 +00:00
SABnzbd Automation
04ca95cc83 Update translatable texts
[skip ci]
2024-04-21 18:20:26 +00:00
Chris Caron
3b25a07522 drop check for apprise_prio as it's not applicable (#2838) 2024-04-21 20:19:44 +02:00
SABnzbd Automation
14aa449c35 Update translatable texts
[skip ci]
2024-04-19 12:14:24 +00:00
Safihre
d88c035c23 Correct reading of startup shortcut setting on Windows 2024-04-19 14:13:23 +02:00
SABnzbd Automation
6d2d90b1e5 Update translatable texts
[skip ci]
2024-04-16 08:47:17 +00:00
Safihre
e2ca39fb36 Update text files for 4.3.0RC1 2024-04-16 10:46:26 +02:00
Safihre
6a37780b8e Create loop right away, so socks5 proxy doesn't break it 2024-04-16 10:42:50 +02:00
SABnzbd Automation
146f33f38e Update translatable texts
[skip ci]
2024-04-16 08:30:17 +00:00
Safihre
c6c26c5de4 Update Python to 3.12.3 2024-04-16 10:27:31 +02:00
Safihre
262cc8dbbd Limit pyfakefs 2024-04-14 19:20:13 +00:00
renovate[bot]
5bec8e99a5 Update all dependencies 2024-04-14 19:20:13 +00:00
Safihre
2e0e6749ca Ignore jaraco.collections updates in renovate 2024-04-14 20:48:14 +02:00
SABnzbd Automation
c0ef18e8b3 Update translatable texts
[skip ci]
2024-04-14 18:19:47 +00:00
Safihre
52173804f1 Ignore jaraco.context updates in renovate 2024-04-14 20:18:58 +02:00
Safihre
2d8cf69140 Prevent Queue flicker if just single item deleted 2024-04-03 15:36:37 +02:00
Safihre
e2603d74ca Show Apprise version in Config 2024-04-03 14:03:48 +02:00
SABnzbd Automation
9df9238d56 Update translatable texts
[skip ci]
2024-04-01 01:09:30 +00:00
renovate[bot]
b697165392 Update all dependencies 2024-04-01 01:08:51 +00:00
SABnzbd Automation
16bfcc27d8 Update translatable texts
[skip ci]
2024-03-29 13:25:52 +00:00
Safihre
be3f47539d Update text files for 4.3.0Beta1 2024-03-29 14:25:01 +01:00
Safihre
f3fd63cd70 Update Multipar to v1.3.3.2 2024-03-29 14:25:00 +01:00
SABnzbd Automation
aafdf7620e Update translatable texts
[skip ci]
2024-03-29 13:17:06 +00:00
thezoggy
4f3b0541eb Unrar/7zip updates for Windows/MacOS (#2814)
* unrar 7.00

* 7zip 24.03b
2024-03-29 14:16:24 +01:00
Safihre
04fb73fd4a Add extra newline to Reddit release notes 2024-03-25 08:38:35 +01:00
SABnzbd Automation
b1a7924c75 Update translatable texts
[skip ci]
2024-03-25 00:53:29 +00:00
renovate[bot]
4e618206a8 Update all dependencies 2024-03-25 00:52:46 +00:00
jcfp
8a510331df update appstream xml (#2828) 2024-03-20 14:30:13 +01:00
SABnzbd Automation
81035964ca Update translatable texts
[skip ci]
2024-03-18 15:39:49 +00:00
100 changed files with 878 additions and 363 deletions

View File

@@ -21,6 +21,7 @@ body:
options:
- linuxserver
- hotio
- binhex
- Other
- type: textarea
attributes:

View File

@@ -4,7 +4,7 @@ contact_links:
url: https://forums.sabnzbd.org/
about: Support questions can be asked on our forums, Reddit or Discord server.
- name: Discord
url: https://discord.gg/KQzDe7fvNU
url: https://discord.sabnzbd.org
about: Support questions can be asked on our forums, Reddit or Discord server.
- name: Reddit - r/sabnzbd
url: https://www.reddit.com/r/sabnzbd

View File

@@ -17,7 +17,10 @@
},
"ignoreDeps": [
"jaraco.text",
"jaraco.context",
"jaraco.collections",
"sabctools",
"paho-mqtt",
"werkzeug",
"pyinstaller"
],

View File

@@ -63,13 +63,13 @@ jobs:
build_macos:
name: Build macOS binary
runs-on: macos-13
runs-on: macos-14
timeout-minutes: 30
env:
# 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.3"
MACOSX_DEPLOYMENT_TARGET: "10.9"
# We need to force compile for universal2 support
CFLAGS: -arch x86_64 -arch arm64
@@ -101,7 +101,7 @@ jobs:
run: |
python3 --version
pip3 install --upgrade pip wheel
pip3 install --upgrade -r requirements.txt --no-binary cffi,CT3,PyYAML --no-dependencies
pip3 install --upgrade -r requirements.txt --no-binary cffi,CT3,PyYAML,charset_normalizer --no-dependencies
PYINSTALLER_COMPILE_BOOTLOADER=1 pip3 install --upgrade -r builder/requirements.txt --no-binary pyinstaller --no-dependencies
- name: Import macOS codesign certificates
# Taken from https://github.com/Apple-Actions/import-codesign-certs/pull/27 (comments)

View File

@@ -30,7 +30,7 @@ jobs:
run: |
python3 tools/make_mo.py
- name: Push translatable and translated texts back to repo
uses: stefanzweifel/git-auto-commit-action@v5.0.0
uses: stefanzweifel/git-auto-commit-action@v5.0.1
if: env.TX_TOKEN
with:
commit_message: |

View File

@@ -2,7 +2,7 @@ SABnzbd - The automated Usenet download tool
============================================
[![License](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
[![Join our Discord](https://img.shields.io/discord/976737547558461480?color=7289DA&label=Discord&logo=Discord&logoColor=white)](https://discord.gg/KQzDe7fvNU)
[![Join our Discord](https://img.shields.io/discord/976737547558461480?color=7289DA&label=Discord&logo=Discord&logoColor=white)](https://discord.sabnzbd.org)
SABnzbd is an Open Source Binary Newsreader written in Python.

View File

@@ -1,7 +1,16 @@
Release Notes - SABnzbd 4.3.0 Alpha 1
Release Notes - SABnzbd 4.3.2 Release Candidate 2
=========================================================
This is the first pre-release of SABnzbd 4.3.0.
This is the second bug fix release of SABnzbd 4.3.0.
## Bug fixes and changes since 4.3.1
* Added Special option `disable_archive` for jobs to always be permanently deleted.
* Specific AppRise notifications could fail to send.
* Update of the article decoder core (`rapidyenc`).
* Windows: After some time the interface would no longer load.
* Windows: Custom shortcuts would be removed by the installer.
* Windows/macOS: Updated Unrar to 7.01 and 7zip to 24.05.
## Key changes since 4.2.0
@@ -24,10 +33,16 @@ This is the first pre-release of SABnzbd 4.3.0.
* Handling of multiple inputs to several API methods was improved.
* File browser dialog is available to select file paths in the Config.
* Users will be warned if they configure an Indexer as a Server.
* Added `SAB_API_KEY` and `SAB_API_URL` to script environment variables.
* Windows/macOS: Updated Python to 3.12.3, Multipar to v1.3.3.2,
Unrar to 7.00 and 7zip to 24.03.
## Bug fixes since 4.2.0
* Incorrect warnings of unknown status codes could be thrown.
* Watched Folder would not work if Socks5 proxy was active.
* Prevent crash on invalid Server Expiration Date.
* Windows: Installer could create duplicate shortcuts.
## Upgrade notices

View File

@@ -47,6 +47,7 @@ try:
import feedparser
import configobj
import cherrypy
import cheroot.errors
import portend
import cryptography
import chardet
@@ -1094,8 +1095,7 @@ def main():
sys.exit(1)
if clean_up:
xlist = globber_full(logdir)
for x in xlist:
for x in globber_full(logdir):
if RSS_FILE_NAME not in x:
try:
os.remove(x)
@@ -1347,6 +1347,13 @@ def main():
}
)
# Catch shutdown errors that can break cherrypy/cheroot
# See https://github.com/cherrypy/cheroot/issues/710
try:
cheroot.errors.acceptable_sock_shutdown_exceptions += (OSError,)
except AttributeError:
pass
# Do we want CherryPy Logging? Cannot be done via the config
cherrypy.log.screen = False
cherrypy.log.access_log.propagate = False
@@ -1414,21 +1421,15 @@ def main():
if full_path := getattr(sabnzbd.cfg, setting).get_path():
sabnzbd.CONFIG_BACKUP_HTTPS_OK.append(full_path)
if sabnzbd.WIN32:
if enable_https:
mode = "s"
else:
mode = ""
api_url = "http%s://%s:%s%s/api?apikey=%s" % (
mode,
browserhost,
cherryport,
sabnzbd.cfg.url_base(),
sabnzbd.cfg.api_key(),
)
# Set URL for browser
if enable_https:
sabnzbd.BROWSER_URL = "https://%s:%s%s" % (browserhost, cherryport, sabnzbd.cfg.url_base())
else:
sabnzbd.BROWSER_URL = "http://%s:%s%s" % (browserhost, cherryport, sabnzbd.cfg.url_base())
# Write URL directly to registry
set_connection_info(api_url)
if sabnzbd.WIN32:
# Write URL for uploads and version check directly to registry
set_connection_info(f"{sabnzbd.BROWSER_URL}/api?apikey={sabnzbd.cfg.api_key()}")
if pid_path or pid_file:
sabnzbd.pid_file(pid_path, pid_file, cherryport)
@@ -1453,15 +1454,8 @@ def main():
for upload_nzb in upload_nzbs:
sabnzbd.nzbparser.add_nzbfile(upload_nzb)
# Set URL for browser
if enable_https:
browser_url = "https://%s:%s%s" % (browserhost, cherryport, sabnzbd.cfg.url_base())
else:
browser_url = "http://%s:%s%s" % (browserhost, cherryport, sabnzbd.cfg.url_base())
sabnzbd.BROWSER_URL = browser_url
if not autorestarted:
launch_a_browser(browser_url)
launch_a_browser(sabnzbd.BROWSER_URL)
notifier.send_notification("SABnzbd", T("SABnzbd %s started") % sabnzbd.__version__, "startup")
autorestarted = False

View File

@@ -15,6 +15,7 @@ extra_pyinstaller_files = []
# Add hidden imports
extra_hiddenimports = ["Cheetah.DummyTransaction", "cheroot.ssl.builtin", "certifi"]
extra_hiddenimports.extend(collect_submodules("apprise"))
extra_hiddenimports.extend(collect_submodules("babelfish.converters"))
extra_hiddenimports.extend(collect_submodules("guessit.data"))
@@ -40,7 +41,7 @@ else:
)
# Windows
extra_hiddenimports.append("win32timezone")
extra_hiddenimports.extend(["win32timezone", "winrt.windows.foundation.collections"])
EXTRA_FOLDERS += ["win/multipar/", "win/par2/", "win/unrar/", "win/7zip/"]
EXTRA_FILES += ["portable.cmd"]
@@ -91,12 +92,14 @@ for folder_item in EXTRA_FOLDERS:
# Add babelfish data files
extra_pyinstaller_files.extend(collect_data_files("babelfish"))
extra_pyinstaller_files.extend(collect_data_files("guessit"))
extra_pyinstaller_files.extend(collect_data_files("apprise"))
pyi_analysis = Analysis(
["SABnzbd.py"],
datas=extra_pyinstaller_files,
hiddenimports=extra_hiddenimports,
excludes=["ujson", "FixTk", "tcl", "tk", "_tkinter", "tkinter", "Tkinter", "pydoc", "pydoc_data.topics"],
module_collection_mode={"apprise.plugins": "py"},
)
pyz = PYZ(pyi_analysis.pure, pyi_analysis.zipped_data)

View File

@@ -1,2 +1,2 @@
PyGithub==2.2.0
PyGithub==2.3.0
praw==7.7.1

View File

@@ -233,7 +233,7 @@ if RELEASE_THIS and gh_token:
readme_lines = readme_file.readlines()
# Put the download link after the title
readme_lines[2] = "## https://sabnzbd.org/downloads\n"
readme_lines[2] = "## https://sabnzbd.org/downloads\n\n"
# Use the header in the readme as title
title = readme_lines[0]

View File

@@ -2,18 +2,18 @@
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
pyinstaller==5.13.2
packaging==24.0
pyinstaller-hooks-contrib==2024.3
pyinstaller-hooks-contrib==2024.6
altgraph==0.17.4
wrapt==1.16.0
setuptools==69.2.0
setuptools==69.5.1
# Required on 32bit Windows, exclude it based on Python-version
importlib_metadata==7.0.2; python_version < '3.10'
importlib_resources==6.3.1; python_version < '3.10'
zipp==3.18.1; python_version < '3.10'
importlib_metadata==7.1.0; python_version < '3.10'
importlib_resources==6.4.0; python_version < '3.10'
zipp==3.18.2; python_version < '3.10'
# orjson does not support 32bit Windows, also exclude based on Python-version
orjson==3.9.15; python_version > '3.8'
orjson==3.10.3; python_version > '3.8'
# For the Windows build
pefile==2023.2.7; sys_platform == 'win32'

View File

@@ -42,13 +42,36 @@ Unicode true
RMDir /r "${idir}"
!macroend
!define RemovePrevShortcuts "!insertmacro RemovePrevShortcuts"
!macro RemovePrevShortcuts
; Remove shortcuts, starting with current user ones (from old installs)
SetShellVarContext current
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - SafeMode.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - Documentation.url"
RMDir "$SMPROGRAMS\$MUI_TEMP"
Delete "$SMPROGRAMS\Startup\SABnzbd.lnk"
Delete "$DESKTOP\SABnzbd.lnk"
SetShellVarContext all
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - SafeMode.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - Documentation.url"
RMDir "$SMPROGRAMS\$MUI_TEMP"
Delete "$SMPROGRAMS\Startup\SABnzbd.lnk"
Delete "$DESKTOP\SABnzbd.lnk"
!macroend
;------------------------------------------------------------------
; Define names of the product
Name "${SAB_PRODUCT}"
OutFile "${SAB_FILE}"
InstallDir "$PROGRAMFILES\SABnzbd"
;------------------------------------------------------------------
; Some default compiler settings (uncomment and change at will):
SetCompress auto ; (can be off or force)
@@ -285,8 +308,9 @@ Function .onInit
;------------------------------------------------------------------
; Check what the user has currently set for install options
SetShellVarContext current
IfFileExists "$SMPROGRAMS\Startup\SABnzbd.lnk" 0 endCheckStartup
IfFileExists "$SMPROGRAMS\Startup\SABnzbd.lnk" 0 endCheckStartupCurrent
SectionSetFlags ${startup} 1
endCheckStartupCurrent:
SetShellVarContext all
IfFileExists "$SMPROGRAMS\Startup\SABnzbd.lnk" 0 endCheckStartup
SectionSetFlags ${startup} 1
@@ -294,11 +318,12 @@ Function .onInit
SetShellVarContext current
IfFileExists "$DESKTOP\SABnzbd.lnk" endCheckDesktop 0
SectionSetFlags ${desktop} 0 ; SAB is installed but desktop-icon not, so uncheck it
SetShellVarContext all
IfFileExists "$DESKTOP\SABnzbd.lnk" endCheckDesktop 0
SectionSetFlags ${desktop} 0 ; SAB is installed but desktop-icon not, so uncheck it
; If not present for current user, first check all user folder
SetShellVarContext all
IfFileExists "$DESKTOP\SABnzbd.lnk" endCheckDesktop 0
SectionSetFlags ${desktop} 0 ; SAB is installed but desktop-icon not, so uncheck it
endCheckDesktop:
SetShellVarContext all
Push $1
ReadRegStr $1 HKCR ".nzb" "" ; read current file association
@@ -352,39 +377,12 @@ Section "un.$(MsgDelProgram)" Uninstall
DeleteRegKey HKEY_CURRENT_USER "Software\SABnzbd"
${RemovePrev} "$INSTDIR"
${RemovePrevShortcuts}
; Remove firewall entries
liteFirewallW::RemoveRule "$INSTDIR\SABnzbd.exe" "SABnzbd"
liteFirewallW::RemoveRule "$INSTDIR\SABnzbd-console.exe" "SABnzbd-console"
SetShellVarContext all
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - SafeMode.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - Documentation.url"
RMDir "$SMPROGRAMS\$MUI_TEMP"
Delete "$SMPROGRAMS\Startup\SABnzbd.lnk"
Delete "$DESKTOP\SABnzbd.lnk"
SetShellVarContext current
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - SafeMode.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - Documentation.url"
RMDir "$SMPROGRAMS\$MUI_TEMP"
Delete "$SMPROGRAMS\Startup\SABnzbd.lnk"
Delete "$DESKTOP\SABnzbd.lnk"
${unregisterExtension} ".nzb" "NZB File"
${RefreshShellIcons}

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -2,6 +2,8 @@
<!--#set global $help_uri = $confighelpuri + "notifications"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#import apprise#-->
<!--#def show_notify_checkboxes($section_label)#-->
<!--#for $type in $notify_types#-->
<div class="field-pair">
@@ -185,7 +187,9 @@
<td><label for="apprise_enable"> $T('opt-apprise_enable')</label></td>
</tr>
</table>
<em>$T('explain-apprise_enable')</em>
<em>$T('explain-apprise_enable')</em><br>
<p>$T('version'): ${apprise.__version__}</p>
$show_cat_box('apprise')
</div>
<div class="col1" <!--#if int($apprise_enable) > 0 then '' else 'style="display:none"'#-->>

View File

@@ -398,7 +398,6 @@ function HistoryListModel(parent) {
archive: (!skipArchive) * 1,
value: strIDsHistory
}).then(function(response) {
// Make sure no flickering (if there are more items left) and then remove
self.historyItems.removeAll(self.deleteItems());
self.multiEditItems.removeAll(self.deleteItems())
self.parent.refresh();

View File

@@ -440,8 +440,6 @@ function QueueListModel(parent) {
del_files: 1,
value: strIDs
}).then(function(response) {
// Make sure no flickering (if there are more items left) and then remove
self.isLoading(true)
self.queueItems.removeAll(self.deleteItems());
self.multiEditItems.removeAll(self.deleteItems())
self.parent.refresh();

View File

@@ -30,6 +30,9 @@
<url type="faq">https://sabnzbd.org/wiki/faq</url>
<url type="contact">https://sabnzbd.org/live-chat.html</url>
<releases>
<release version="4.3.2" date="2024-05-30" type="stable"/>
<release version="4.3.1" date="2024-05-03" type="stable"/>
<release version="4.3.0" date="2024-05-01" type="stable"/>
<release version="4.2.2" date="2024-02-01" type="stable"/>
<release version="4.2.1" date="2024-01-05" type="stable"/>
<release version="4.2.0" date="2024-01-03" type="stable"/>
@@ -51,11 +54,13 @@
<control>touch</control>
</supports>
<recommends>
<display_length compare="ge">small</display_length>
<display_length compare="ge">640</display_length>
<internet>always</internet>
</recommends>
<project_license>GPL-2.0-or-later</project_license>
<developer_name>The SABnzbd-Team</developer_name>
<developer id="org.sabnzbd">
<name>The SABnzbd-Team</name>
</developer>
<screenshots>
<screenshot type="default">
<image>https://sabnzbd.org/images/landing/screenshots/interface.png</image>

View File

@@ -22,6 +22,11 @@ ExecStart=/opt/sabnzbd/SABnzbd.py --disable-file-log --logging 1 --browser 0
User=%I
Type=simple
Restart=on-failure
ProtectSystem=full
DeviceAllow=/dev/null rw
DeviceAllow=/dev/urandom r
DevicePolicy=strict
NoNewPrivileges=yes
[Install]
WantedBy=multi-user.target

View File

Binary file not shown.

View File

@@ -1,88 +1,144 @@
7-Zip
~~~~~
License for use and distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7-Zip Copyright (C) 1999-2021 Igor Pavlov.
The licenses for 7zz file are:
- The "GNU LGPL" as main license for most of the code
- The "GNU LGPL" with "unRAR license restriction" for some code
- The "BSD 3-clause License" for some code
Redistributions in binary form must reproduce related license information from this file.
Note:
You can use 7-Zip on any computer, including a computer in a commercial
organization. You don't need to register or pay for 7-Zip.
GNU LGPL information
--------------------
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You can receive a copy of the GNU Lesser General Public License from
http://www.gnu.org/
BSD 3-clause License
--------------------
The "BSD 3-clause License" is used for the code in 7z.dll that implements LZFSE data decompression.
That code was derived from the code in the "LZFSE compression library" developed by Apple Inc,
that also uses the "BSD 3-clause License":
----
Copyright (c) 2015-2016, Apple Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder(s) nor the names of any contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----
unRAR license restriction
-------------------------
The decompression engine for RAR archives was developed using source
code of unRAR program.
All copyrights to original unRAR code are owned by Alexander Roshal.
The license for original unRAR code has the following restriction:
The unRAR sources cannot be used to re-create the RAR compression algorithm,
which is proprietary. Distribution of modified unRAR sources in separate form
or as a part of other software is permitted, provided that it is clearly
stated in the documentation and source comments that the code may
not be used to develop a RAR (WinRAR) compatible archiver.
--
Igor Pavlov
7-Zip for Linux and macOS
~~~~~~~~~~~~~~~~~~~~~~~~~
License for use and distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7-Zip Copyright (C) 1999-2024 Igor Pavlov.
The licenses for 7zz and 7zzs files are:
- The "GNU LGPL" as main license for most of the code
- The "GNU LGPL" with "unRAR license restriction" for some code
- The "BSD 3-clause License" for some code
- The "BSD 2-clause License" for some code
Redistributions in binary form must reproduce related license information from this file.
Note:
You can use 7-Zip on any computer, including a computer in a commercial
organization. You don't need to register or pay for 7-Zip.
GNU LGPL information
--------------------
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You can receive a copy of the GNU Lesser General Public License from
http://www.gnu.org/
BSD 3-clause License in 7-Zip code
----------------------------------
The "BSD 3-clause License" is used for the following code in 7z.dll
1) LZFSE data decompression.
That code was derived from the code in the "LZFSE compression library" developed by Apple Inc,
that also uses the "BSD 3-clause License".
2) ZSTD data decompression.
that code was developed using original zstd decoder code as reference code.
The original zstd decoder code was developed by Facebook Inc,
that also uses the "BSD 3-clause License".
Copyright (c) 2015-2016, Apple Inc. All rights reserved.
Copyright (c) Facebook, Inc. All rights reserved.
Copyright (c) 2023-2024 Igor Pavlov.
Text of the "BSD 3-clause License"
----------------------------------
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may
be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---
BSD 2-clause License in 7-Zip code
----------------------------------
The "BSD 2-clause License" is used for the XXH64 code in 7-Zip.
XXH64 code in 7-Zip was derived from the original XXH64 code developed by Yann Collet.
Copyright (c) 2012-2021 Yann Collet.
Copyright (c) 2023-2024 Igor Pavlov.
Text of the "BSD 2-clause License"
----------------------------------
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---
unRAR license restriction
-------------------------
The decompression engine for RAR archives was developed using source
code of unRAR program.
All copyrights to original unRAR code are owned by Alexander Roshal.
The license for original unRAR code has the following restriction:
The unRAR sources cannot be used to re-create the RAR compression algorithm,
which is proprietary. Distribution of modified unRAR sources in separate form
or as a part of other software is permitted, provided that it is clearly
stated in the documentation and source comments that the code may
not be used to develop a RAR (WinRAR) compatible archiver.
--

View File

Binary file not shown.

View File

Binary file not shown.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.2RC1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
@@ -1082,6 +1082,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2697,7 +2702,7 @@ msgid "Move jobs to the archive if the history exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid "Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2705,7 +2710,7 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid "Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1154,6 +1154,11 @@ msgstr "Nepodařilo se odeslat macOS oznámení"
msgid "Failed to send Prowl message"
msgstr "Nepodařilo se odeslat Prowl zprávu"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2809,7 +2814,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2817,7 +2823,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1161,6 +1161,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr "Kunne ikke sende Prowl besked"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2859,7 +2864,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2867,7 +2873,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -13,12 +13,13 @@
# kameb, 2023
# HandyDandy04, 2024
# Safihre <safihre@sabnzbd.org>, 2024
# Gjelbrim Haskaj, 2024
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2024\n"
"Last-Translator: Gjelbrim Haskaj, 2024\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"
@@ -206,6 +207,9 @@ msgid ""
"server (port 80), possibly an indexer, not a usenet server. You have to fill"
" a usenet server."
msgstr ""
"Verbindung zu %s auf Port %s konnte nicht hergestellt werden. Es scheint, "
"als sei %s ein Webserver (Port 80), vielleicht ein Indexer, aber kein "
"Usenet-Server. Trage einen Usenet-Server ein."
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
@@ -1152,7 +1156,7 @@ msgstr "Wiki"
#: sabnzbd/newswrapper.py
msgid "Failed to connect: %s %s@%s:%s (%s)"
msgstr ""
msgstr "Verbindung fehlgeschlagen: %s %s@%s:%s(%s)"
#. Notification
#: sabnzbd/notifier.py
@@ -1224,6 +1228,11 @@ msgstr "Senden von macOS Benachrichtigung fehlgeschlagen"
msgid "Failed to send Prowl message"
msgstr "Prowl-Nachricht konnte nicht versendet werden"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2964,7 +2973,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2972,7 +2982,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -8,7 +8,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1201,6 +1201,11 @@ msgstr "Fallo al enviar la notificación macOS"
msgid "Failed to send Prowl message"
msgstr "No se pudo enviar el mensaje de Prowl"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2926,7 +2931,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2934,7 +2940,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1153,6 +1153,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr "Prowl viestin lähetys epäonnistui"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2857,7 +2862,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2865,7 +2871,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.2RC1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2024\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
@@ -1220,6 +1220,11 @@ msgstr "Échec de l'envoi de la notification macOS"
msgid "Failed to send Prowl message"
msgstr "Échec d'envoi du message Prowl"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr "Échec d'envoi du message Apprise - aucune URLs définies"
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2958,9 +2963,11 @@ msgstr ""
"tâches spécifié"
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
"Supprimer les tâches si l'historique dépasse le nombre de tâches spécifié"
"Supprimer les tâches si l'historique et les archives dépassent le nombre de "
"tâches spécifié"
#: sabnzbd/skintext.py
msgid "Move jobs to the archive after specified number of days"
@@ -2968,8 +2975,11 @@ msgstr ""
"Déplacer les tâches vers les archives après le nombre de jours spécifié"
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgstr "Supprimer les tâches après le nombre de jours spécifié"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
"Supprimer les tâches de l'historique et des archives après le nombre de "
"jours spécifié"
#: sabnzbd/skintext.py
msgid "Move all completed jobs to archive"

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: ION, 2024\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
@@ -186,6 +186,8 @@ msgid ""
"server (port 80), possibly an indexer, not a usenet server. You have to fill"
" a usenet server."
msgstr ""
"לא היה ניתן להתחבר אל %s על פתחה %s. נראה כי %s פועל כשרת רשת (פתחה 80), "
"כנראה מדדן, לא שרת Usenet. אתה חייב למלא שרת Usenet."
#: sabnzbd/api.py, sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
@@ -512,7 +514,7 @@ msgstr "שגיאה גורלית במורידן"
#. Warning message
#: sabnzbd/downloader.py
msgid "%s@%s: Received unknown status code %s for article %s"
msgstr ""
msgstr "%s@%s: קוד בלתי ידוע של מעמד התקבל %s עבור מאמר %s"
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
@@ -1088,7 +1090,7 @@ msgstr "וויקי"
#: sabnzbd/newswrapper.py
msgid "Failed to connect: %s %s@%s:%s (%s)"
msgstr ""
msgstr "כישלון בהתחברות: %s %s@%s:%s (%s)"
#. Notification
#: sabnzbd/notifier.py
@@ -1160,6 +1162,11 @@ msgstr "כישלון בשליחת התראת macOS"
msgid "Failed to send Prowl message"
msgstr "כישלון בשליחת הודעת Prowl"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2345,7 +2352,7 @@ msgstr "למחוק את כל הפריטים מהתור?"
#. Delete confirmation popup
#: sabnzbd/skintext.py
msgid "Are you sure you want to remove these jobs?"
msgstr ""
msgstr "האם אתה בטוח שאתה רוצה להסיר עבודות אלו?"
#. Queue page button
#: sabnzbd/skintext.py
@@ -2370,7 +2377,7 @@ msgstr "הסר NZB ומחק קבצים"
#. Checkbox if job should be added to Archive
#: sabnzbd/skintext.py
msgid "Permanently delete (skip archive)"
msgstr ""
msgstr "מחק לצמיתות (דלג על ארכיון)"
#. Caption for missing articles in Queue
#: sabnzbd/skintext.py
@@ -2393,7 +2400,7 @@ msgstr "אפס מכסה כעת"
#: sabnzbd/skintext.py
msgid "Archive"
msgstr ""
msgstr "ארכיון"
#. Button/link hiding History job details
#: sabnzbd/skintext.py
@@ -2418,7 +2425,7 @@ msgstr "הראה הכל"
#. Button showing all archived jobs
#: sabnzbd/skintext.py
msgid "Show Archive"
msgstr ""
msgstr "הראה ארכיון"
#. History table header - Size of the download quota
#: sabnzbd/skintext.py
@@ -2866,27 +2873,29 @@ msgstr "שמור את כל העבודות"
#: sabnzbd/skintext.py
msgid ""
"Move jobs to the archive if the history exceeds specified number of jobs"
msgstr ""
msgstr "העבר עבודות אל הארכיון אם ההיסטוריה חורגת ממספר מצוין של ימים"
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
msgid "Move jobs to the archive after specified number of days"
msgstr ""
msgstr "העבר עבודות אל הארכיון לאחר מספר מצוין של ימים"
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Move all completed jobs to archive"
msgstr ""
msgstr "העבר את כל העבודות השלמות אל הארכיון"
#: sabnzbd/skintext.py
msgid "Delete all completed jobs"
msgstr ""
msgstr "מחק את כל העבודות השלמות"
#: sabnzbd/skintext.py
msgid "Jobs"

View File

@@ -3,7 +3,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Language-Team: Italian (https://app.transifex.com/sabnzbd/teams/111101/it/)\n"
"MIME-Version: 1.0\n"
@@ -1124,6 +1124,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2779,7 +2784,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2787,7 +2793,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1151,6 +1151,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr "Klarte ikke å sende Prowl melding"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2849,7 +2854,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2857,7 +2863,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -8,7 +8,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2024\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
@@ -543,7 +543,7 @@ msgstr "Onherstelbare fout in de Downloader"
#. Warning message
#: sabnzbd/downloader.py
msgid "%s@%s: Received unknown status code %s for article %s"
msgstr ""
msgstr "%s@%s: Onbekende statuscode %s ontvangen voor artikel %s"
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
@@ -1210,6 +1210,11 @@ msgstr "Kon macOS notificatie niet verzenden"
msgid "Failed to send Prowl message"
msgstr "Verzenden van Prowl-bericht mislukt"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2937,10 +2942,9 @@ msgstr ""
"opgegeven aantal voltooide downloads overschrijdt."
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
"Verwijder voltooide downloads als de geschiedenis het opgegeven aantal "
"voltooide downloads overschrijdt."
#: sabnzbd/skintext.py
msgid "Move jobs to the archive after specified number of days"
@@ -2948,8 +2952,9 @@ msgstr ""
"Verplaats voltooide downloads naar het archief na het opgegeven aantal dagen"
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgstr "Verwijder voltooide downloads na het opgegeven aantal dagen"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Move all completed jobs to archive"

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1156,6 +1156,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr "Błąd wysyłania wiadomości Prowl"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2860,7 +2865,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2868,7 +2874,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1165,6 +1165,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr "Falha ao enviar mensagem Prowl"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2870,7 +2875,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2878,7 +2884,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1181,6 +1181,11 @@ msgstr "Eșuare la trimiterea notificării macOS"
msgid "Failed to send Prowl message"
msgstr "Nu am putu trimite mesajul Prowl"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2889,7 +2894,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2897,7 +2903,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1151,6 +1151,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2849,7 +2854,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2857,7 +2863,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1146,6 +1146,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr "Неуспешно слање Prowl поруке"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2840,7 +2845,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2848,7 +2854,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1150,6 +1150,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr "Misslyckades att skicka Prowlmeddelande"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2849,7 +2854,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2857,7 +2863,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-4.3.0-develop\n"
"Project-Id-Version: SABnzbd-4.3.1\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"
@@ -1139,6 +1139,11 @@ msgstr ""
msgid "Failed to send Prowl message"
msgstr "无法发送 Prowl 消息"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Apprise message - no URLs defined"
msgstr ""
#. Warning message
#: sabnzbd/notifier.py
msgid "One or more Apprise URLs could not be loaded."
@@ -2822,7 +2827,8 @@ msgid ""
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs if the history exceeds specified number of jobs"
msgid ""
"Delete jobs if the history and archive exceeds specified number of jobs"
msgstr ""
#: sabnzbd/skintext.py
@@ -2830,7 +2836,8 @@ msgid "Move jobs to the archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py
msgid "Delete jobs after specified number of days"
msgid ""
"Delete jobs from the history and archive after specified number of days"
msgstr ""
#: sabnzbd/skintext.py

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,19 +1,19 @@
# Main requirements
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
apprise==1.7.4
sabctools==8.1.0
apprise==1.8.0
sabctools==8.2.0
CT3==3.3.3.post1
cffi==1.16.0
pycparser==2.21
pycparser==2.22
feedparser==6.0.11
configobj==5.0.8
cheroot==10.0.0
cheroot==10.0.1
six==1.16.0
cherrypy==18.9.0
jaraco.functools==4.0.0
jaraco.functools==4.0.1
jaraco.collections==5.0.0
jaraco.text==3.8.1 # Newer version introduces irrelevant extra dependencies
jaraco.classes==3.3.1
jaraco.classes==3.4.0
jaraco.context==4.3.0
more-itertools==10.2.0
zc.lockfile==3.0.post1
@@ -24,27 +24,27 @@ sgmllib3k==1.0.0
portend==3.2.0
chardet==5.2.0
PySocks==1.7.1
puremagic==1.21
puremagic==1.23
guessit==3.8.0
babelfish==0.6.0
babelfish==0.6.1
rebulk==3.2.0
# Recent cryptography versions require Rust. If you run into issues compiling this
# SABnzbd will also work with older pre-Rust versions such as cryptography==3.3.2
cryptography==42.0.5
cryptography==42.0.7
# We recommend using "orjson" as it is 2x as fast as "ujson". However, it requires
# Rust so SABnzbd works just as well with "ujson" or the Python built in "json" module
ujson==5.9.0
ujson==5.10.0
# Windows system integration
pywin32==306; sys_platform == 'win32'
windows-toasts==1.1.0; sys_platform == 'win32' and python_version > '3.8'
winrt-runtime==2.0.0b2; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Data.Xml.Dom==2.0.0b2; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Foundation==2.0.0b2; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Foundation.Collections==2.0.0b2; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.UI.Notifications==2.0.0b2; sys_platform == 'win32' and python_version > '3.8'
windows-toasts==1.1.1; sys_platform == 'win32' and python_version > '3.8'
winrt-runtime==2.0.1; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Data.Xml.Dom==2.0.1; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Foundation==2.0.1; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.Foundation.Collections==2.0.1; sys_platform == 'win32' and python_version > '3.8'
winrt-Windows.UI.Notifications==2.0.1; sys_platform == 'win32' and python_version > '3.8'
# macOS system calls
pyobjc-core==10.2; sys_platform == 'darwin'
@@ -55,19 +55,19 @@ notify2==0.3.1; sys_platform != 'win32' and sys_platform != 'darwin'
# Apprise Requirements
requests==2.31.0
requests-oauthlib==1.4.0
requests-oauthlib==2.0.0
PyYAML==6.0.1
markdown==3.6
paho-mqtt==2.0.0
paho-mqtt==1.6.1 # Pinned, newer versions don't work with AppRise yet
# Requests Requirements
charset_normalizer==3.3.2
idna==3.6
idna==3.7
urllib3==2.2.1
certifi==2024.2.2
oauthlib==3.2.2
PyJWT==2.8.0
blinker==1.7.0
blinker==1.8.2
# Optional support for *nix tray icon.
# Note that pygobject depends on pycairo, which requires pkg-config and cairo headers.

View File

@@ -494,7 +494,7 @@ def _api_history(name: str, kwargs: Dict[str, Union[str, List[str]]]) -> bytes:
if name == "delete":
# Only skip archive if specifically requested
if kwargs.get("archive") == "0":
if kwargs.get("archive") == "0" or cfg.disable_archive():
archive = False
special = value.lower()

View File

@@ -456,6 +456,7 @@ wait_for_dfolder = OptionBool("misc", "wait_for_dfolder", False)
rss_filenames = OptionBool("misc", "rss_filenames", False)
api_logging = OptionBool("misc", "api_logging", True)
html_login = OptionBool("misc", "html_login", True)
disable_archive = OptionBool("misc", "disable_archive", False)
warn_dupl_jobs = OptionBool("misc", "warn_dupl_jobs", False)
keep_awake = OptionBool("misc", "keep_awake", True)

View File

@@ -49,7 +49,7 @@ RENAMES_FILE = "__renames__"
ATTRIB_FILE = "SABnzbd_attrib"
REPAIR_REQUEST = "repair-all.sab"
SABCTOOLS_VERSION_REQUIRED = "8.1.0"
SABCTOOLS_VERSION_REQUIRED = "8.2.0"
DB_HISTORY_VERSION = 1
DB_HISTORY_NAME = "history%s.db" % DB_HISTORY_VERSION

View File

@@ -64,7 +64,8 @@ class DirScanner(threading.Thread):
def __init__(self):
super().__init__()
self.loop: Optional[asyncio.AbstractEventLoop] = None
# Create loop right away, so socks5 proxy doesn't break it
self.loop = asyncio.new_event_loop()
self.scanner_task: Optional[asyncio.Task] = None
self.lock: Optional[asyncio.Lock] = None # Prevents concurrent scans
self.error_reported = False # Prevents multiple reporting of missing watched folder
@@ -109,8 +110,6 @@ class DirScanner(threading.Thread):
def run(self):
"""Start the scanner"""
logging.info("Dirscanner starting up")
self.loop = asyncio.new_event_loop()
try:
self.start_scanner()
self.loop.run_forever()

View File

@@ -19,14 +19,14 @@
sabnzbd.downloader - download engine
"""
import time
import select
import logging
from math import ceil
from threading import Thread, RLock, current_thread
import socket
import sys
import ssl
import time
from datetime import date
from typing import List, Dict, Optional, Union, Set
import sabnzbd
@@ -1120,9 +1120,12 @@ def check_server_expiration():
"""Check if user should get warning about server date expiration"""
for server in config.get_servers().values():
if server.expire_date():
days_to_expire = ceil(
(time.mktime(time.strptime(server.expire_date(), "%Y-%m-%d")) - time.time()) / (60 * 60 * 24)
)
try:
days_to_expire = (date.fromisoformat(server.expire_date()) - date.today()).days
except ValueError:
# In case of invalid date, just warn
days_to_expire = 0
# Notify from 5 days in advance
if days_to_expire < 6:
logging.warning(T("Server %s is expiring in %s day(s)"), server.displayname(), days_to_expire)

View File

@@ -857,6 +857,7 @@ SPECIAL_BOOL_LIST = (
"empty_postproc",
"new_nzb_on_failure",
"html_login",
"disable_archive",
"wait_for_dfolder",
"enable_broadcast",
"warn_dupl_jobs",

View File

@@ -1783,6 +1783,8 @@ def create_env(nzo: Optional[NzbObject] = None, extra_env_fields: Dict[str, Any]
extra_env_fields.update(
{
"program_dir": sabnzbd.DIR_PROG,
"api_key": cfg.api_key(),
"api_url": f"{sabnzbd.BROWSER_URL}/api",
"par2_command": sabnzbd.newsunpack.PAR2_COMMAND,
"multipar_command": sabnzbd.newsunpack.MULTIPAR_COMMAND,
"rar_command": sabnzbd.newsunpack.RAR_COMMAND,
@@ -1968,6 +1970,7 @@ def sevenzip_check(sevenzip: str) -> str:
try:
seven_command_output = run_command([sevenzip])
# Example: 7-Zip (z) 21.06 (x64) : Copyright (c) 1999-2021 Igor Pavlov : 2021-11-24
# 7-Zip (a) 24.03 (x86) : Copyright (c) 1999-2024 Igor Pavlov : 2024-03-23
return re.search(r"(\d+\.\d+).*Copyright", seven_command_output).group(1)
except:
pass

View File

@@ -28,9 +28,9 @@ import urllib.request
import urllib.parse
import http.client
import json
import apprise
from threading import Thread
from typing import Optional, Dict, Union
import apprise
import sabnzbd
import sabnzbd.cfg
@@ -116,7 +116,7 @@ def get_prio(notification_type: str, section: str) -> int:
return -1000
def get_target(notification_type: str, section: str) -> Union[str, bool, None]:
def get_targets(notification_type: str, section: str) -> Union[str, bool, None]:
"""Check target of `notification_type` in `section` if enabled is set"""
try:
if sabnzbd.config.get_config(section, "%s_target_%s_enable" % (section, notification_type))() > 0:
@@ -182,7 +182,9 @@ def send_notification(
# Apprise
if sabnzbd.cfg.apprise_enable() and check_cat("apprise", job_cat):
if sabnzbd.cfg.apprise_urls() and check_classes(notification_type, "apprise"):
# it is possible to not define global apprise_urls() but only URLs for a specific type
# such as complete or disk_full.
if get_targets(notification_type, "apprise"):
Thread(target=send_apprise, args=(title, msg, notification_type)).start()
# Notification script.
@@ -326,8 +328,6 @@ def send_apprise(title, msg, notification_type, force=False, test=None):
app_id="SABnzbd",
app_desc="SABnzbd Notification",
app_url="https://sabnzbd.org/",
image_path_mask=os.path.join(sabnzbd.DIR_PROG, "icons", "apprise", "apprise-{TYPE}.png"),
image_url_mask="https://sabnzbd.org/images/icons/apprise/{TYPE}.png",
image_url_logo="https://sabnzbd.org/images/icons/apple-touch-icon-180x180-precomposed.png",
)
@@ -336,8 +336,12 @@ def send_apprise(title, msg, notification_type, force=False, test=None):
if not test:
# Get a list of tags that are set to use the common list
if target := get_target(notification_type, "apprise"):
if target := get_targets(notification_type, "apprise"):
if target is True:
if not urls:
# Nothing to notify
logging.warning(T("Failed to send Apprise message - no URLs defined"))
return ""
# Use default list
apobj.add(urls)
elif not apobj.add(target):

View File

@@ -317,9 +317,9 @@ SKIN_TEXT = {
"opt-history_retention": TT("History Retention"),
"history_retention-all": TT("Keep all jobs"),
"history_retention-number-archive": TT("Move jobs to the archive if the history exceeds specified number of jobs"),
"history_retention-number-delete": TT("Delete jobs if the history exceeds specified number of jobs"),
"history_retention-number-delete": TT("Delete jobs if the history and archive exceeds specified number of jobs"),
"history_retention-days-archive": TT("Move jobs to the archive after specified number of days"),
"history_retention-days-delete": TT("Delete jobs after specified number of days"),
"history_retention-days-delete": TT("Delete jobs from the history and archive after specified number of days"),
"history_retention-archive": TT("Move all completed jobs to archive"),
"history_retention-none": TT("Delete all completed jobs"),
"history_retention-limit": TT("Jobs"),

View File

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

View File

@@ -3,7 +3,7 @@ pytest==7.4.4
setuptools
selenium
requests
pyfakefs
pyfakefs<5.4.0
werkzeug<2.1.0 # Breaks httpbin in newer versions
pytest-httpbin
pytest-httpserver

200
tests/test_notifier.py Normal file
View File

@@ -0,0 +1,200 @@
#!/usr/bin/python3 -OO
# Copyright 2007-2024 by The SABnzbd-Team (sabnzbd.org)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""
tests.test_notifier - Testing notification functionality
"""
import re
from sabnzbd.notifier import send_notification, send_apprise, NOTIFICATION_TYPES
from unittest import mock, TestCase
import sabnzbd.cfg as cfg
from sabnzbd.config import Option
from importlib import reload
class TestNotifier(TestCase):
@classmethod
def setUpClass(self):
# hack since test_misc uses @set_config decorator eliminating all of the default configuration
# We wnat to test with the default configuration in place; This safely resets all fields and
# replaces them correctly in memory
reload(cfg)
# capture state of config so we can reverse it
self._saved_cfg = {}
for attr in dir(cfg):
if isinstance(getattr(cfg, attr), Option):
# Backup configuration as it was before entering this test object
self._saved_cfg[attr] = getattr(cfg, attr).get()
# Set our value to be a default
getattr(cfg, attr).set(getattr(cfg, attr).default)
@classmethod
def setUp(self):
# Enforce our default values associated with the class
for attr in dir(cfg):
if isinstance(getattr(cfg, attr), Option):
getattr(cfg, attr).set(getattr(cfg, attr).default)
@classmethod
def tearDownClass(self):
# rollback our assignments to be as they were
for k, v in self._saved_cfg.items():
getattr(cfg, k).set(v)
@mock.patch("sabnzbd.DIR_PROG")
@mock.patch("apprise.Apprise.notify")
@mock.patch("apprise.Apprise.add")
def test_send_apprise_notification(self, mock_add, mock_notify, mock_sabdir):
"""
Test send_apprise() outside of threading call to verify it handles requests properly
"""
#
# Mocks below pertain to testing
#
# Asset just needs to be anything at all
mock_sabdir.return_value = "/tmp"
cfg.apprise_enable.set(True)
urls = ", ".join(
[
"json://localhost",
"xml://localhost",
"pbul://credentials",
]
)
cfg.apprise_urls.set(urls)
mock_notify.return_value = True
# Startup is disabled by default
assert send_apprise("title", "body", "startup") == ""
assert mock_notify.call_count == 0
mock_notify.reset_mock()
mock_add.reset_mock()
cfg.apprise_target_startup_enable.set(True)
assert send_apprise("title", "body", "startup") == ""
assert mock_notify.call_count == 1
mock_add.assert_called_once_with(urls)
mock_notify.reset_mock()
mock_add.reset_mock()
for attr in dir(cfg):
# Enable all of our apprise attributes
if isinstance(getattr(cfg, attr), Option) and re.match("^apprise_target_.+_enable$", attr):
getattr(cfg, attr).set(True)
for t in NOTIFICATION_TYPES.keys():
mock_notify.reset_mock()
mock_add.reset_mock()
assert send_apprise("title", "body", t) == ""
assert mock_notify.call_count == 1
assert mock_add.call_count == 1
mock_add.assert_called_once_with(urls)
# Garbage in, get's garbage out
mock_notify.reset_mock()
mock_add.reset_mock()
assert send_apprise("title", "body", "garbage_type") == ""
# Nothing sent
assert mock_notify.call_count == 0
assert mock_add.call_count == 0
# No URLs defined
cfg.apprise_urls.set("")
mock_notify.reset_mock()
mock_add.reset_mock()
assert send_apprise("title", "body", "other") == ""
assert mock_notify.call_count == 0
assert mock_add.call_count == 0
# Special Targets
mock_notify.reset_mock()
mock_add.reset_mock()
cfg.apprise_target_other.set("xml://custom/other")
assert send_apprise("title", "body", "other") == ""
assert mock_notify.call_count == 1
assert mock_add.call_count == 1
# Target value over-rides; this tests that a user can provide
# over-rides to the Apprise URLs
mock_add.assert_called_once_with("xml://custom/other")
# Over-ride is still set even if general URLS are provided
cfg.apprise_urls.set(urls)
mock_notify.reset_mock()
mock_add.reset_mock()
assert send_apprise("title", "body", "other") == ""
assert mock_notify.call_count == 1
assert mock_add.call_count == 1
# Target value over-rides; this tests that a user can provide
# over-rides to the Apprise URLs
mock_add.assert_called_once_with("xml://custom/other")
# Test case where notify() fails
mock_notify.return_value = False
mock_notify.reset_mock()
mock_add.reset_mock()
# A non-string is returned
assert send_apprise("title", "body", "other") != ""
assert mock_notify.call_count == 1
assert mock_add.call_count == 1
# Test other exception handlings
mock_notify.return_value = None
mock_notify.side_effect = AttributeError
mock_notify.reset_mock()
mock_add.reset_mock()
# A non-string is returned
assert send_apprise("title", "body", "other") != ""
assert mock_notify.call_count == 1
assert mock_add.call_count == 1
# Test Mode
# Return the status to being a proper return value
mock_notify.return_value = True
mock_notify.side_effect = None
mock_notify.reset_mock()
mock_add.reset_mock()
# Download is enabled by default; set Test flag
assert send_apprise("title", "body", "download", test={"apprise_urls": urls}) == ""
assert mock_notify.call_count == 1
assert mock_add.call_count == 1
mock_add.assert_called_once_with(urls)
@mock.patch("threading.Thread.start")
def test_send_notification_as_apprise(self, mock_thread):
"""
Test send_apprise() inside it's threaded check environment
"""
# Set up our config the way we want it
cfg.apprise_enable.set(True)
cfg.apprise_urls.set("okay://")
# startup is disabled by default
assert not cfg.apprise_target_startup_enable.get()
send_notification("title", "body", "startup")
assert mock_thread.call_count == 0
mock_thread.reset_mock()
cfg.apprise_target_startup_enable.set(True)
assert cfg.apprise_target_startup_enable.get()
send_notification("title", "body", "startup")
assert mock_thread.call_count == 1
mock_thread.reset_mock()

View File

Binary file not shown.

View File

@@ -1,31 +1,125 @@
7-Zip Extra
~~~~~~~~~~~
License for use and distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Copyright (C) 1999-2019 Igor Pavlov.
7-Zip Extra files are under the GNU LGPL license.
Notes:
You can use 7-Zip Extra on any computer, including a computer in a commercial
organization. You don't need to register or pay for 7-Zip.
GNU LGPL information
--------------------
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You can receive a copy of the GNU Lesser General Public License from
http://www.gnu.org/
7-Zip Extra
~~~~~~~~~~~
License for use and distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Copyright (C) 1999-2024 Igor Pavlov.
7-Zip Copyright (C) 1999-2024 Igor Pavlov.
The licenses for files are:
- 7za.exe:
- The "GNU LGPL" as main license for most of the code
- The "BSD 3-clause License" for some code
- The "BSD 2-clause License" for some code
- All other files: the "GNU LGPL".
Redistributions in binary form must reproduce related license information from this file.
Note:
You can use 7-Zip Extra on any computer, including a computer in a commercial
organization. You don't need to register or pay for 7-Zip.
It is allowed to digitally sign DLL and EXE files included into this package
with arbitrary signatures of third parties.
GNU LGPL information
--------------------
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You can receive a copy of the GNU Lesser General Public License from
http://www.gnu.org/
BSD 3-clause License in 7-Zip code
----------------------------------
The "BSD 3-clause License" is used for the following code in 7za.exe
- ZSTD data decompression.
that code was developed using original zstd decoder code as reference code.
The original zstd decoder code was developed by Facebook Inc,
that also uses the "BSD 3-clause License".
Copyright (c) Facebook, Inc. All rights reserved.
Copyright (c) 2023-2024 Igor Pavlov.
Text of the "BSD 3-clause License"
----------------------------------
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may
be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---
BSD 2-clause License in 7-Zip code
----------------------------------
The "BSD 2-clause License" is used for the XXH64 code in 7za.exe.
XXH64 code in 7-Zip was derived from the original XXH64 code developed by Yann Collet.
Copyright (c) 2012-2021 Yann Collet.
Copyright (c) 2023-2024 Igor Pavlov.
Text of the "BSD 2-clause License"
----------------------------------
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---

View File

@@ -18,14 +18,14 @@ faster repairing, smaller recovery files, batch scripting, and so on.
MultiPar supports both PAR 1.0 and PAR 2.0 specifications.
See "http://parchive.sourceforge.net/" for details of Parchive.
MultiPar uses UTF-8 or UTF-16 to treat filenames with non-ASCII characters.
While MultiPar and par2_tbb can treat sub-directory and UTF-8 filename,
While MultiPar and par2cmdline can treat sub-directory and UTF-8 filename,
QuickPar and other PAR2 clients cannot treat them.
Almost all PAR2 clients don't support UTF-16 filename and comment.
Be careful to use those special features.
[ System requirement ]
MultiPar requires a PC with Windows XP or later (Windows Vista, 7, 8, 10, etc).
MultiPar requires a PC with Windows Vista or later (Windows 7, 8, 10).
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -71,14 +71,13 @@ Don't send current PAR3 files to others, who may not have the same version.
[ How to install or uninstall with installer package ]
Double click setup file ( MultiPar129_setup.exe or something like this name ),
Double click setup file ( MultiPar133_setup.exe or something like this name ),
and follow the installer dialog.
At version up, if you want to use previous setting, overwrite install is possible.
Before overwrite install, you should un-check "Integrate MultiPar into Shell".
You may need to re-start OS after overwrite install or uninstall rarely.
To install under "Program Files" directory on Windows Vista/7/8,
you must start the installer with administrative privileges by selecting
"Run as administrator" on right-click menu.
To install under "Program Files" or "Program Files (x86)" directory,
you must select "Install for all users" at the first dialog.
You can uninstall through the Windows OS's Control Panel,
or double click unins000.exe in a folder which MultiPar was installed.
@@ -100,7 +99,7 @@ In either case, user made icons and association are available for the user only.
[ How to install with archive version ]
Unpack compressed file ( MultiPar129.zip or something like this name ) in a folder.
Unpack compressed file ( MultiPar133.zip or something like this name ) in a folder.
MultiPar.exe is the interface of MultiPar.
You can create short-cut icon or send-to link at Option window later.
@@ -119,8 +118,8 @@ so you need to delete the folder.
you must clear the check before un-install.
If you have deleted MultiPar.exe already, you can un-install the DLL manually.
Open "Command Prompt" and change directory to MultiPar's folder,
then type "RegSvr32.exe /u MultiParShlExt.dll" to remove shell extension.
You cannot delete "MultiParShlExt.dll", while it is used by OS or Explorer.
then type "RegSvr32.exe /u MultiParShlExt64.dll" to remove shell extension.
You cannot delete "MultiParShlExt64.dll", while it is used by OS or Explorer.
You may log-off and log-on again to OS before deleting the file.
[ How to change installed folder of archive version ]
@@ -142,7 +141,7 @@ They are written by Yutaka Sawada.
Though console applications are open source (PAR clients are GPL),
GUI application is closed source.
Some article are available at my web site.
(URL: "http://hp.vector.co.jp/authors/VA021385/")
(URL: "https://hp.vector.co.jp/authors/VA021385/")
If you want source code, contact with me by e-mail.
@@ -150,8 +149,8 @@ If you want source code, contact with me by e-mail.
[ Support ]
Because I cannot connect to the Internet so often, I may check mails once a week.
Please wait very long to receive my mail reply.
I use GitHub issue's page as a web-forum for MultiPar users.
(URL: "https://github.com/Yutaka-Sawada/MultiPar/issues")
My name is Yutaka Sawada.
E-mail address is "tenfon (at mark) outlook.jp".
@@ -165,15 +164,14 @@ The (at mark) is format to avoid junk mails, and replace it with "@".
I get many spam mails from oversea.
If an e-mail is detected as junk mail or suspicious,
mail server may delete it automatically, and I won't see it.
When you never get reply, you may ask at a web-forum.
[ Link ]
I use Vector 's author page to introduce MultiPar.
(URL: "http://hp.vector.co.jp/authors/VA021385/")
(URL: "https://hp.vector.co.jp/authors/VA021385/")
Because there is another official download page,
(URL: "http://www.vector.co.jp/soft/dl/winnt/util/se460801.html")
(URL: "https://www.vector.co.jp/soft/dl/winnt/util/se460801.html")
using direct link to files on the page isn't preferable.
When you write a link on somewhere, please don't include filename.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.