Browse Source

Merge branch '2.3.x'

tags/2.3.9
Safihre 6 years ago
parent
commit
89996482a1
  1. 1
      .travis.yml
  2. 2
      ABOUT.txt
  3. 2
      INSTALL.txt
  4. 4
      PKG-INFO
  5. 29
      README.mkd
  6. 12
      SABnzbd.py
  7. 2
      interfaces/Glitter/templates/queue.tmpl
  8. 8
      interfaces/Glitter/templates/static/javascripts/glitter.main.js
  9. BIN
      osx/unrar/unrar
  10. 20
      po/main/SABnzbd.pot
  11. 30
      po/main/da.po
  12. 30
      po/main/de.po
  13. 30
      po/main/es.po
  14. 30
      po/main/fi.po
  15. 32
      po/main/fr.po
  16. 32
      po/main/he.po
  17. 30
      po/main/nb.po
  18. 34
      po/main/nl.po
  19. 30
      po/main/pl.po
  20. 30
      po/main/pt_BR.po
  21. 30
      po/main/ro.po
  22. 22
      po/main/ru.po
  23. 30
      po/main/sr.po
  24. 30
      po/main/sv.po
  25. 30
      po/main/zh_CN.po
  26. 10
      sabnzbd/api.py
  27. 3
      sabnzbd/bpsmeter.py
  28. 18
      sabnzbd/database.py
  29. 3
      sabnzbd/decoder.py
  30. 38
      sabnzbd/directunpacker.py
  31. 6
      sabnzbd/downloader.py
  32. 1
      sabnzbd/misc.py
  33. 14
      sabnzbd/newsunpack.py
  34. 4
      sabnzbd/nzbqueue.py
  35. 8
      sabnzbd/nzbstuff.py
  36. 3
      sabnzbd/osxmenu.py
  37. 1
      sabnzbd/par2file.py
  38. 31
      sabnzbd/postproc.py
  39. 8
      sabnzbd/skintext.py
  40. 2
      sabnzbd/utils/systrayiconthread.py
  41. 4
      sabnzbd/version.py
  42. BIN
      win/par2/multipar/par2j.exe
  43. BIN
      win/par2/multipar/par2j64.exe
  44. BIN
      win/unrar/UnRAR.exe
  45. BIN
      win/unrar/x64/UnRAR.exe

1
.travis.yml

@ -3,6 +3,7 @@ matrix:
include: include:
- os: linux - os: linux
language: python language: python
python: 2.7
env: env:
- secure: iMXx74c2eUhDPJrukvAFxCFNWYDk8JB2alQ89Hc3T1ckXfDS37vgUplTze1aGo+AefUkDSFmTreFk9hVJvd4SQTHz4wS+qp7HQJFWECjR16jZwobIbukNPNU1JamozZoOa2igoVIJ8/tVIdIpfcsGfzj9WogwUlpChWHIiI8SM/Fc0WK+M9rDPKBpgjEN2yom73jbC2ETxuQ/HMdMNnNS9S1vS7MY+2W69+xi5Kl9hP0HUBIG/JtVXu1a4SO5NgqL5aW4cgKtgg0IjpedBRMcC0rpyEz+lDtl2jXYR+mXQEO8uNZOwzV7SLrq/ROGwW+DMtfiiySKxmuYoL/JOm4kcLyEup51dgnTQc1RdEcaYfk0twDry67prnQ/sXAQphzjl0StrTpLfzWUsCvgXRp7+XWhX9ElHN4KelOcAc7YeTSXoPY6bENk8LSy1woJ2HbH5TkSvtVJ6xrmssV3bEMp7aGx7qv1D/uvyAEMulB79WwdLyoDxmG9eIgXfp3nICko4p9kisrzK0hVCGDRCHSYgTnDBGTMJU/SlRRNUepmXHXQUrqWyTWvy2HTMUTjuYBaaNcUqZvyHyyaDq0MNBotwDCmes5o8fZu456lB/B26LwUu7cOSbCw19ePlGBNnbjA9NmNoQGOo66era3NEVJLYv+H91PAPQyWpzOt0X53Gk= - secure: iMXx74c2eUhDPJrukvAFxCFNWYDk8JB2alQ89Hc3T1ckXfDS37vgUplTze1aGo+AefUkDSFmTreFk9hVJvd4SQTHz4wS+qp7HQJFWECjR16jZwobIbukNPNU1JamozZoOa2igoVIJ8/tVIdIpfcsGfzj9WogwUlpChWHIiI8SM/Fc0WK+M9rDPKBpgjEN2yom73jbC2ETxuQ/HMdMNnNS9S1vS7MY+2W69+xi5Kl9hP0HUBIG/JtVXu1a4SO5NgqL5aW4cgKtgg0IjpedBRMcC0rpyEz+lDtl2jXYR+mXQEO8uNZOwzV7SLrq/ROGwW+DMtfiiySKxmuYoL/JOm4kcLyEup51dgnTQc1RdEcaYfk0twDry67prnQ/sXAQphzjl0StrTpLfzWUsCvgXRp7+XWhX9ElHN4KelOcAc7YeTSXoPY6bENk8LSy1woJ2HbH5TkSvtVJ6xrmssV3bEMp7aGx7qv1D/uvyAEMulB79WwdLyoDxmG9eIgXfp3nICko4p9kisrzK0hVCGDRCHSYgTnDBGTMJU/SlRRNUepmXHXQUrqWyTWvy2HTMUTjuYBaaNcUqZvyHyyaDq0MNBotwDCmes5o8fZu456lB/B26LwUu7cOSbCw19ePlGBNnbjA9NmNoQGOo66era3NEVJLYv+H91PAPQyWpzOt0X53Gk=
- secure: Cryq31K8wxt+q212/q7IHlLf4flH4riaiHssxR0/VfGACtMp3jOAVZ5RAOvX03LPYp+BuX2KAHFXDHeGHGzYmESkpzPCToZ3GpaOwP3ymc3RNeU6bd98yEQyQtM/wtY4uxPUWdwz5Uw5kkeynxw3y/QFsYceipB3u3oCvfB9n8SqWShjWpBFyFhSKS/SJjUqgNcAaA0pTP8l/crquZNhkug/J8Nlc/nC0H6ZSJKGu8UhkhZ0VSEY8dofZZkGG6YCIIEAqGasQqkra6x/D0uECfQnnDrTqekvklUG31/zy+awQXl+0NjLTIKyl2rHp5AUpSTlbPO2mDYdbWEWcRYmNsEEiGfvy3R9kGGbNijB5b57jvgsJapH8DkGRWseISdCBWqLH7C/OafNuMGzQ4s3UCN1aazqqN/IAJplVjSWiKA76Nbh385x88E8RaH7Gnvx1ZK88Lgf7Bz8Ar/O1dMviyP8WbM/vQQkVMdOk89y5O6G8ZwHFoj/v8w383irWMN2iU0Mf7GKW91ughpKrrKbXCmkT1bR9+tNYpKWU1O+1jgnGk65149GNC0K+9exWt0TK3pNSUa7b2nVzxeAqdCJjCoKBi2pLiRxYVI50V80M2p5Xw+5iiSiOhTLzFLT3YRi2VBjjBFa8BHJHBS9Pua4DaFc1w06XNej6K8rRV5We0s= - secure: Cryq31K8wxt+q212/q7IHlLf4flH4riaiHssxR0/VfGACtMp3jOAVZ5RAOvX03LPYp+BuX2KAHFXDHeGHGzYmESkpzPCToZ3GpaOwP3ymc3RNeU6bd98yEQyQtM/wtY4uxPUWdwz5Uw5kkeynxw3y/QFsYceipB3u3oCvfB9n8SqWShjWpBFyFhSKS/SJjUqgNcAaA0pTP8l/crquZNhkug/J8Nlc/nC0H6ZSJKGu8UhkhZ0VSEY8dofZZkGG6YCIIEAqGasQqkra6x/D0uECfQnnDrTqekvklUG31/zy+awQXl+0NjLTIKyl2rHp5AUpSTlbPO2mDYdbWEWcRYmNsEEiGfvy3R9kGGbNijB5b57jvgsJapH8DkGRWseISdCBWqLH7C/OafNuMGzQ4s3UCN1aazqqN/IAJplVjSWiKA76Nbh385x88E8RaH7Gnvx1ZK88Lgf7Bz8Ar/O1dMviyP8WbM/vQQkVMdOk89y5O6G8ZwHFoj/v8w383irWMN2iU0Mf7GKW91ughpKrrKbXCmkT1bR9+tNYpKWU1O+1jgnGk65149GNC0K+9exWt0TK3pNSUa7b2nVzxeAqdCJjCoKBi2pLiRxYVI50V80M2p5Xw+5iiSiOhTLzFLT3YRi2VBjjBFa8BHJHBS9Pua4DaFc1w06XNej6K8rRV5We0s=

2
ABOUT.txt

@ -1,5 +1,5 @@
******************************************* *******************************************
*** This is SABnzbd 2.3.8 *** *** This is SABnzbd 2.3.9 ***
******************************************* *******************************************
SABnzbd is an open-source cross-platform binary newsreader. SABnzbd is an open-source cross-platform binary newsreader.
It simplifies the process of downloading from Usenet dramatically, It simplifies the process of downloading from Usenet dramatically,

2
INSTALL.txt

@ -1,4 +1,4 @@
SABnzbd 2.3.8 SABnzbd 2.3.9
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
0) LICENSE 0) LICENSE

4
PKG-INFO

@ -1,7 +1,7 @@
Metadata-Version: 1.0 Metadata-Version: 1.0
Name: SABnzbd Name: SABnzbd
Version: 2.3.8 Version: 2.3.9
Summary: SABnzbd-2.3.8 Summary: SABnzbd-2.3.9
Home-page: https://sabnzbd.org Home-page: https://sabnzbd.org
Author: The SABnzbd Team Author: The SABnzbd Team
Author-email: team@sabnzbd.org Author-email: team@sabnzbd.org

29
README.mkd

@ -1,16 +1,21 @@
Release Notes - SABnzbd 2.3.8 Release Notes - SABnzbd 2.3.9
========================================================= =========================================================
## Improvements and bug fixes since 2.3.7 ## Improvements and bug fixes since 2.3.8
- Changes to newsserver configuration could be delayed - Duplicate job detection would not compare job names
- Filenames would not be sanitized when using "Make Windows compatible" - Propagation delay could show even if it was not configured
- Sorting could fail on root-folders - Ignore Samples deleted all files of jobs containing the words Sample/Proof
- 7z-files were not listed as supported NZB archives - Warning "Unable to stop the unrar process" was shown too often
- SSL cipher settings were ignored during server test - Direct Unpack could hang forever on Unicode downloads
- Windows: update 7zip to 19.00 - Test Download could fail if clicked on the icon instead of the button
- Windows: update MultiPar to v1.3.0.4 - Series Duplicate detection did not always work with Direct Unpack enabled
- Windows and macOS: update Python to 2.7.16 - Adding a job with non-existing category was not set to Default (*) category
- Windows and macOS: update UnRar to 5.70 - Only delete completed jobs from history when using History Retention option
- Renamed Server Load-balancing to Server IP address selection
- Linux: remove sabnzbd.error.log file at start-up if it grew too large
- Windows: double-click delay increased to avoid accidental pausing
- Windows: update MultiPar to v1.3.0.5
- Windows and macOS: update UnRar to 5.71
## Upgrading from 2.2.x and older ## Upgrading from 2.2.x and older
- Finish queue - Finish queue
@ -24,7 +29,7 @@ Release Notes - SABnzbd 2.3.8
URL's that did not finish fetching before the upgrade will be lost. URL's that did not finish fetching before the upgrade will be lost.
- The organization of the download queue is different from 0.7.x releases. - The organization of the download queue is different from 0.7.x releases.
This version will not see the 0.7.x queue, but you can restore the jobs This version will not see the 0.7.x queue, but you can restore the jobs
by going to Status page and using Queue Repair. by going to the Status and Interface Settings window and using Queue Repair.
## Known problems and solutions ## Known problems and solutions
- Read the file "ISSUES.txt" - Read the file "ISSUES.txt"

12
SABnzbd.py

@ -89,7 +89,7 @@ import sabnzbd.newsunpack
from sabnzbd.misc import real_path, \ from sabnzbd.misc import real_path, \
check_latest_version, exit_sab, get_from_url, \ check_latest_version, exit_sab, get_from_url, \
split_host, get_ext, create_https_certificates, \ split_host, get_ext, create_https_certificates, \
windows_variant, ip_extract, set_serv_parms, get_serv_parms, globber_full windows_variant, ip_extract, set_serv_parms, get_serv_parms, globber_full, remove_file
from sabnzbd.panic import panic_tmpl, panic_port, panic_host, \ from sabnzbd.panic import panic_tmpl, panic_port, panic_host, \
panic_sqlite, panic, launch_a_browser panic_sqlite, panic, launch_a_browser
import sabnzbd.scheduler as scheduler import sabnzbd.scheduler as scheduler
@ -1126,8 +1126,14 @@ def main():
try: try:
x = sys.stderr.fileno x = sys.stderr.fileno
x = sys.stdout.fileno x = sys.stdout.fileno
ol_path = os.path.join(logdir, DEF_LOG_ERRFILE)
out_log = file(ol_path, 'a+', 0) # Get log file path and remove the log file if it got too large
log_path = os.path.join(logdir, DEF_LOG_ERRFILE)
if os.path.exists(log_path) and os.path.getsize(log_path) > sabnzbd.cfg.log_size.get_int():
remove_file(log_path)
# Redirect stderr/stdout
out_log = file(log_path, 'a+', 0)
sys.stderr.flush() sys.stderr.flush()
sys.stdout.flush() sys.stdout.flush()
os.dup2(out_log.fileno(), sys.stderr.fileno()) os.dup2(out_log.fileno(), sys.stderr.fileno())

2
interfaces/Glitter/templates/queue.tmpl

@ -35,6 +35,6 @@
<!--#else if float($mbleft) < 0.1#--> <!--#else if float($mbleft) < 0.1#-->
SABnzbd SABnzbd
<!--#else#--> <!--#else#-->
<!--#if float($kbpersec) > 1023 #-->$speed<!--#else#--><!--#echo "%.0f" % float($kbpersec)#--> K<!--#end if#-->B/s - $sizeleft $T('Glitter-left') - SABnzbd ${speed}B/s - $sizeleft $T('Glitter-left') - SABnzbd
<!--#end if#--> <!--#end if#-->
|||<!--#echo "%.0f" % float($kbpersec)#--> |||<!--#echo "%.0f" % float($kbpersec)#-->

8
interfaces/Glitter/templates/static/javascripts/glitter.main.js

@ -96,7 +96,7 @@ function ViewModel() {
// Dynamic speed text function // Dynamic speed text function
self.speedText = ko.pureComputed(function() { self.speedText = ko.pureComputed(function() {
return self.speed() + ' ' + (self.speedMetrics[self.speedMetric()] ? self.speedMetrics[self.speedMetric()] : "KB/s"); return self.speed() + ' ' + (self.speedMetrics[self.speedMetric()] ? self.speedMetrics[self.speedMetric()] : "B/s");
}); });
// Dynamic icon // Dynamic icon
@ -852,6 +852,12 @@ function ViewModel() {
// Download a test-NZB // Download a test-NZB
self.testDownload = function(data, event) { self.testDownload = function(data, event) {
var nzbSize = $(event.target).data('size') var nzbSize = $(event.target).data('size')
// Maybe it was a click on the icon?
if(nzbSize == undefined) {
nzbSize = $(event.target.parentElement).data('size')
}
// Build request // Build request
var theCall = { var theCall = {
mode: "addurl", mode: "addurl",

BIN
osx/unrar/unrar

Binary file not shown.

20
po/main/SABnzbd.pot

@ -5,14 +5,14 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SABnzbd-2.4.0-develop\n" "Project-Id-Version: SABnzbd-2.3.8\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: shypike@sabnzbd.org\n" "Last-Translator: shypike@sabnzbd.org\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ASCII\n" "Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 7bit\n" "Content-Transfer-Encoding: 7bit\n"
"POT-Creation-Date: 2019-01-04 12:49+W. Europe Standard Time\n" "POT-Creation-Date: 2019-05-07 09:00+W. Europe Daylight Time\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
@ -413,10 +413,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "" msgstr ""
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3275,19 +3271,19 @@ msgid "Comma separated list"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
@ -4155,10 +4151,6 @@ msgid "Optionally specify a filename"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr ""
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "" msgstr ""

30
po/main/da.po

@ -6,15 +6,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2019-01-26 09:26+0000\n" "PO-Revision-Date: 2019-01-26 09:26+0000\n"
"Last-Translator: B.E. <Unknown>\n" "Last-Translator: B.E. <Unknown>\n"
"Language-Team: Danish\n" "Language-Team: Danish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-27 05:44+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:48+0000\n"
"X-Generator: Launchpad (build 18857)\n" "X-Generator: Launchpad (build 18958)\n"
"Language: da\n" "Language: da\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
@ -442,10 +442,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Udpakket %s filer/mapper i %s" msgstr "Udpakket %s filer/mapper i %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3541,20 +3537,20 @@ msgid "Comma separated list"
msgstr "Kommasepareret liste" msgstr "Kommasepareret liste"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Server belastningsjustering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Forhindre belastningsjustering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Tillad belastningsjustering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Giver mulighed for belastningsjustering med optimering for IPv6" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4452,10 +4448,6 @@ msgid "Optionally specify a filename"
msgstr "Angiv et valgfrit filnavn" msgstr "Angiv et valgfrit filnavn"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formater: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Tilføj" msgstr "Tilføj"

30
po/main/de.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-05-31 06:22+0000\n" "PO-Revision-Date: 2018-05-31 06:22+0000\n"
"Last-Translator: scope <Unknown>\n" "Last-Translator: scope <Unknown>\n"
"Language-Team: German <de@li.org>\n" "Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:41+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -458,10 +458,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "%s Datei(en)/Ordner entpackt in %s" msgstr "%s Datei(en)/Ordner entpackt in %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "Direkt entpacken wurde automatisch aktiviert" msgstr "Direkt entpacken wurde automatisch aktiviert"
@ -3646,20 +3642,20 @@ msgid "Comma separated list"
msgstr "Durch Komma getrennte Liste" msgstr "Durch Komma getrennte Liste"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Server Lastverteilung" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Lastverteilung verhindern" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Lastverteilung zulassen" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Lastverteilung mit IPv6-Optimierung zulassen" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4563,10 +4559,6 @@ msgid "Optionally specify a filename"
msgstr "Wahlweise einen Dateinamen angeben:" msgstr "Wahlweise einen Dateinamen angeben:"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formate: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Senden" msgstr "Senden"

30
po/main/es.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n" "PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Spanish <es@li.org>\n" "Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -440,10 +440,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Descompresos %s archivos/directorios en %s" msgstr "Descompresos %s archivos/directorios en %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3558,20 +3554,20 @@ msgid "Comma separated list"
msgstr "Lista separada por comas" msgstr "Lista separada por comas"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Balanceo de carga del servidor" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Evitar el balanceo de carga" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Permitir balanceo de carga" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Permitir balanceo de carga con optimización para IPv6" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4468,10 +4464,6 @@ msgid "Optionally specify a filename"
msgstr "Opcionalmente especificar un nombre de fichero" msgstr "Opcionalmente especificar un nombre de fichero"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formatos: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Enviar" msgstr "Enviar"

30
po/main/fi.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:19+0000\n" "PO-Revision-Date: 2018-02-14 14:19+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Finnish <fi@li.org>\n" "Language-Team: Finnish <fi@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:41+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -439,10 +439,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Purettiin %s tiedostoa/kansiota kohteeseen %s" msgstr "Purettiin %s tiedostoa/kansiota kohteeseen %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3547,20 +3543,20 @@ msgid "Comma separated list"
msgstr "Pilkulla erotettu lista" msgstr "Pilkulla erotettu lista"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Palvelimen kuormantasaus" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Estä kuormantasaus" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Salli kuormantasaus" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Salli kuormantasaus IPv6 optimoinnille" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4460,10 +4456,6 @@ msgid "Optionally specify a filename"
msgstr "Vaihtoehtoisesti anna tiedostonimi" msgstr "Vaihtoehtoisesti anna tiedostonimi"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Tiedostomuodot: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Lähetä" msgstr "Lähetä"

32
po/main/fr.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2019-01-05 12:50+0000\n" "PO-Revision-Date: 2019-05-14 00:00+0000\n"
"Last-Translator: Fred <88com88@gmail.com>\n" "Last-Translator: Fred <88com88@gmail.com>\n"
"Language-Team: French <fr@li.org>\n" "Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-06 04:48+0000\n" "X-Launchpad-Export-Date: 2019-05-15 04:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18962)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -460,10 +460,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "%s fichier(s)/dossier(s) extrait(s) en %s" msgstr "%s fichier(s)/dossier(s) extrait(s) en %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr "Impossible d'arrêter le processus unrar."
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "La Décompression Directe a été activée automatiquement." msgstr "La Décompression Directe a été activée automatiquement."
@ -3654,20 +3650,20 @@ msgid "Comma separated list"
msgstr "Liste séparée par des virgules" msgstr "Liste séparée par des virgules"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Equilibrage de charge du serveur" msgstr "Sélection de l'adresse IP du serveur"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Empêcher l'équilibrage de charge" msgstr "Première adresse IP"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Autoriser l'équilibrage de charge" msgstr "Adresse IP sélectionnée au hasard"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Autoriser l'équilibrage de charge avec l'optimisation pour IPv6" msgstr "Adresse IP la plus rapide, IPv6 de préférence"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4577,10 +4573,6 @@ msgid "Optionally specify a filename"
msgstr "Vous pouvez également indiquer un nom de fichier" msgstr "Vous pouvez également indiquer un nom de fichier"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formats : .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Soumettre" msgstr "Soumettre"

32
po/main/he.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2019-01-14 07:17+0000\n" "PO-Revision-Date: 2019-05-07 23:12+0000\n"
"Last-Translator: ION IL <Unknown>\n" "Last-Translator: ION IL <Unknown>\n"
"Language-Team: Hebrew <he@li.org>\n" "Language-Team: Hebrew <he@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-15 04:50+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18855)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -433,10 +433,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "פורקו %s קבצים/תיקיות תוך %s" msgstr "פורקו %s קבצים/תיקיות תוך %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr "לא היה ניתן לעצור את תהליך החילוץ"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr ".פריקה ישירה אופשרה באופן אוטומטי" msgstr ".פריקה ישירה אופשרה באופן אוטומטי"
@ -3518,20 +3514,20 @@ msgid "Comma separated list"
msgstr "רשימה מופרדת בפסיקים" msgstr "רשימה מופרדת בפסיקים"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "איזון-עומס של שרת" msgstr "של שרת IP בחירת כתובת"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "מנע איזון-עומס" msgstr "ראשונה IP כתובת"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "התר איזון-עומס" msgstr "נבחרת באופן אקראי IP כתובת"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "IPv6 התר איזון-עומס עם ייעול עבור" msgstr "IPv6 הזריזה ביותר, העדפה אל IP כתובת"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4426,10 +4422,6 @@ msgid "Optionally specify a filename"
msgstr "ציין באופן רשותי שם קובץ" msgstr "ציין באופן רשותי שם קובץ"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr ".nzb, .rar, .zip, .gz, .bz2 :תסדירים"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "הגש" msgstr "הגש"

30
po/main/nb.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n" "PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n" "Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:41+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -435,10 +435,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Utpakket %s filer/mapper på %s" msgstr "Utpakket %s filer/mapper på %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3512,20 +3508,20 @@ msgid "Comma separated list"
msgstr "Kommaseparert liste" msgstr "Kommaseparert liste"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Serverlastbalansering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Forhindre lastbalansering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Tillat lastbalansering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Tillat lastbalansering med optimalisering for IPv6" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4419,10 +4415,6 @@ msgid "Optionally specify a filename"
msgstr "Valgfritt spesifiser filnavn" msgstr "Valgfritt spesifiser filnavn"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formater: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Send" msgstr "Send"

34
po/main/nl.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2019-01-10 08:23+0000\n" "PO-Revision-Date: 2019-05-15 19:07+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Dennis Versteegen <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n" "Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-11 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-16 05:47+0000\n"
"X-Generator: Launchpad (build 18855)\n" "X-Generator: Launchpad (build 18962)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -453,10 +453,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "%s bestanden/mappen uitgepakt in %s" msgstr "%s bestanden/mappen uitgepakt in %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr "Het was niet mogelijk het unrar process te stoppen."
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "Direct Uitpakken is automatisch ingeschakeld." msgstr "Direct Uitpakken is automatisch ingeschakeld."
@ -3601,20 +3597,20 @@ msgid "Comma separated list"
msgstr "Door komma's gescheiden lijst" msgstr "Door komma's gescheiden lijst"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Balanceren van server belasting" msgstr "Server IP adres selectie"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Schakel balancering uit" msgstr "Eerste IP adres"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Schakel balancering in" msgstr "willekeurig geselecteerd IP adres"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Schakel balancering met optimalisatie voor IPv6 in" msgstr "Snelste IP adres, voorkeur voor IPv6"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4521,10 +4517,6 @@ msgid "Optionally specify a filename"
msgstr "Geef eventueel een andere naam" msgstr "Geef eventueel een andere naam"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formaten: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Verstuur" msgstr "Verstuur"

30
po/main/pl.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n" "PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Polish <pl@li.org>\n" "Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -435,10 +435,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Rozpakowano %s plików/katalogów w %s" msgstr "Rozpakowano %s plików/katalogów w %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3529,20 +3525,20 @@ msgid "Comma separated list"
msgstr "Lista wartości oddzielonych przecinkami" msgstr "Lista wartości oddzielonych przecinkami"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Równoważenie obciążenia serwerów" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Zapobiegaj równoważeniu obciążenia" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Zezwól na równoważenie obciążenia" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Zezwól na równoważenie obciążenia, preferując IPv6" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4436,10 +4432,6 @@ msgid "Optionally specify a filename"
msgstr "Opcjonalnie podaj nazwę pliku" msgstr "Opcjonalnie podaj nazwę pliku"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formaty: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Wyślij" msgstr "Wyślij"

30
po/main/pt_BR.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:16+0000\n" "PO-Revision-Date: 2018-02-14 14:16+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n" "Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:50+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -437,10 +437,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Descompactados %s arquivos/pastas em %s" msgstr "Descompactados %s arquivos/pastas em %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3527,20 +3523,20 @@ msgid "Comma separated list"
msgstr "Lista separada por vírgulas" msgstr "Lista separada por vírgulas"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Balanceamento de carga do servidor" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Prevenir balanceamento de carga" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Permitir balanceamento de carga" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Permitir balanceamento de carga com optimização para IPv6" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4435,10 +4431,6 @@ msgid "Optionally specify a filename"
msgstr "Opcionalmente, especifique um nome de arquivo" msgstr "Opcionalmente, especifique um nome de arquivo"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formatos: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Enviar" msgstr "Enviar"

30
po/main/ro.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n" "PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Romanian <ro@li.org>\n" "Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -439,10 +439,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Dezarhivat %s fişierele/dosarele în %s" msgstr "Dezarhivat %s fişierele/dosarele în %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3529,20 +3525,20 @@ msgid "Comma separated list"
msgstr "Listă separată prin virgulă" msgstr "Listă separată prin virgulă"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Server de load-balancing" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Previne load-balancing" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Permite load-balancing" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Permite load-balancing cu o optimizare pentru IPv6" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4435,10 +4431,6 @@ msgid "Optionally specify a filename"
msgstr "Opţional specifică un nume de fişier" msgstr "Opţional specifică un nume de fişier"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formate: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Trimite" msgstr "Trimite"

22
po/main/ru.po

@ -2,15 +2,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: SABnzbd-0.7.x\n" "Project-Id-Version: SABnzbd-0.7.x\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2013-05-05 14:50+0000\n" "PO-Revision-Date: 2013-05-05 14:50+0000\n"
"Last-Translator: Pavel Maryanov <Unknown>\n" "Last-Translator: Pavel Maryanov <Unknown>\n"
"Language-Team: Russian <gmu@mx.ru>\n" "Language-Team: Russian <gmu@mx.ru>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
@ -428,10 +428,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Распаковка %s файлов или папок в %s" msgstr "Распаковка %s файлов или папок в %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3504,19 +3500,19 @@ msgid "Comma separated list"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
@ -4416,10 +4412,6 @@ msgid "Optionally specify a filename"
msgstr "Имя файла (необязательно)" msgstr "Имя файла (необязательно)"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr ""
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "" msgstr ""

30
po/main/sr.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: ОZZII <ozzii.translate@gmail.com>\n" "Report-Msgid-Bugs-To: ОZZII <ozzii.translate@gmail.com>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n" "PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Serbian <sr@li.org>\n" "Language-Team: Serbian <sr@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -432,10 +432,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Издвојено %s датотека/фасцикла у %s" msgstr "Издвојено %s датотека/фасцикла у %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3498,20 +3494,20 @@ msgid "Comma separated list"
msgstr "Lista razdvojena zarezom" msgstr "Lista razdvojena zarezom"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Balansiranje opterećenja servera" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Onemogući balansiranje opterećenja" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Omogući balansiranje opterećenja" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Omogući balansiranje opterećenja sa optimizacijom za IPv6" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4403,10 +4399,6 @@ msgid "Optionally specify a filename"
msgstr "Опционо специфирати име" msgstr "Опционо специфирати име"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formati: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Пошаљи" msgstr "Пошаљи"

30
po/main/sv.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:19+0000\n" "PO-Revision-Date: 2018-02-14 14:19+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Swedish <sv@li.org>\n" "Language-Team: Swedish <sv@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -433,10 +433,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "Uppackad %s filer/mappar i %s" msgstr "Uppackad %s filer/mappar i %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3512,20 +3508,20 @@ msgid "Comma separated list"
msgstr "Kommaseparerad lista" msgstr "Kommaseparerad lista"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "Serverbelastad-balansering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "Undvik belastningsbalansering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "Tillåt belastningsbalansering" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "Tillåt bellastningsbalansering med optimering för IPv6" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4417,10 +4413,6 @@ msgid "Optionally specify a filename"
msgstr "Alternativt ange ett filnamn" msgstr "Alternativt ange ett filnamn"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Format: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "Skicka" msgstr "Skicka"

30
po/main/zh_CN.po

@ -7,15 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sabnzbd\n" "Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n" "POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2017-06-22 07:06+0000\n" "PO-Revision-Date: 2017-06-22 07:06+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n" "Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n" "Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n" "X-Launchpad-Export-Date: 2019-05-08 05:50+0000\n"
"X-Generator: Launchpad (build 18847)\n" "X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message] #: SABnzbd.py [Error message]
msgid "Failed to start web-interface" msgid "Failed to start web-interface"
@ -427,10 +427,6 @@ msgid "Unpacked %s files/folders in %s"
msgstr "已解压 %s 个文件/文件夹,耗时 %s" msgstr "已解压 %s 个文件/文件夹,耗时 %s"
#: sabnzbd/directunpacker.py [Warning message] #: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled." msgid "Direct Unpack was automatically enabled."
msgstr "" msgstr ""
@ -3441,20 +3437,20 @@ msgid "Comma separated list"
msgstr "逗号分隔的列表" msgstr "逗号分隔的列表"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Server load-balancing" msgid "Server IP address selection"
msgstr "服务器负载均衡" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Prevent load-balancing" msgid "First IP address"
msgstr "避免负载均衡" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing" msgid "Randomly selected IP address"
msgstr "允许负载均衡" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6" msgid "Quickest IP address, preferring IPv6"
msgstr "允许负载均衡,并对 IPv6 优化" msgstr ""
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address" msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@ -4343,10 +4339,6 @@ msgid "Optionally specify a filename"
msgstr "可以选择指定文件名" msgstr "可以选择指定文件名"
#: sabnzbd/skintext.py #: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "格式: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit" msgid "Submit"
msgstr "提交" msgstr "提交"

10
sabnzbd/api.py

@ -1406,7 +1406,7 @@ def fast_queue():
""" Return paused, bytes_left, bpsnow, time_left """ """ Return paused, bytes_left, bpsnow, time_left """
bytes_left = NzbQueue.do.remaining() bytes_left = NzbQueue.do.remaining()
paused = Downloader.do.paused paused = Downloader.do.paused
bpsnow = BPSMeter.do.get_bps() bpsnow = BPSMeter.do.bps
time_left = calc_timeleft(bytes_left, bpsnow) time_left = calc_timeleft(bytes_left, bpsnow)
return paused, bytes_left, bpsnow, time_left return paused, bytes_left, bpsnow, time_left
@ -1468,9 +1468,9 @@ def rss_qstatus():
item = Item() item = Item()
item.title = 'Total ETA: %s - Queued: %.2f MB - Speed: %.2f kB/s' % \ item.title = 'Total ETA: %s - Queued: %.2f MB - Speed: %.2f kB/s' % \
( (
calc_timeleft(qnfo.bytes_left, BPSMeter.do.get_bps()), calc_timeleft(qnfo.bytes_left, BPSMeter.do.bps),
qnfo.bytes_left / MEBI, qnfo.bytes_left / MEBI,
BPSMeter.do.get_bps() / KIBI BPSMeter.do.bps / KIBI
) )
rss.addItem(item) rss.addItem(item)
@ -1501,7 +1501,7 @@ def rss_qstatus():
status_line.append('<dt>Remain/Total: %.2f/%.2f MB</dt>' % (bytesleft, bytes)) status_line.append('<dt>Remain/Total: %.2f/%.2f MB</dt>' % (bytesleft, bytes))
# ETA # ETA
sum_bytesleft += pnfo.bytes_left sum_bytesleft += pnfo.bytes_left
status_line.append("<dt>ETA: %s </dt>" % calc_timeleft(sum_bytesleft, BPSMeter.do.get_bps())) status_line.append("<dt>ETA: %s </dt>" % calc_timeleft(sum_bytesleft, BPSMeter.do.bps))
status_line.append("<dt>Age: %s</dt>" % calc_age(pnfo.avg_date)) status_line.append("<dt>Age: %s</dt>" % calc_age(pnfo.avg_date))
status_line.append("</tr>") status_line.append("</tr>")
item.description = ''.join(status_line) item.description = ''.join(status_line)
@ -1695,7 +1695,7 @@ def build_queue_header(search=None, start=0, limit=0, output=None):
header = build_header(output=output) header = build_header(output=output)
bytespersec = BPSMeter.do.get_bps() bytespersec = BPSMeter.do.bps
qnfo = NzbQueue.do.queue_info(search=search, start=start, limit=limit) qnfo = NzbQueue.do.queue_info(search=search, start=start, limit=limit)
bytesleft = qnfo.bytes_left bytesleft = qnfo.bytes_left

3
sabnzbd/bpsmeter.py

@ -320,9 +320,6 @@ class BPSMeter(object):
del self.timeline_total[server] del self.timeline_total[server]
self.save() self.save()
def get_bps(self):
return self.bps
def get_bps_list(self): def get_bps_list(self):
refresh_rate = int(cfg.refresh_rate()) if cfg.refresh_rate() else 1 refresh_rate = int(cfg.refresh_rate()) if cfg.refresh_rate() else 1
self.add_empty_time() self.add_empty_time()

18
sabnzbd/database.py

@ -36,7 +36,7 @@ import threading
import sabnzbd import sabnzbd
import sabnzbd.cfg import sabnzbd.cfg
from sabnzbd.constants import DB_HISTORY_NAME, STAGES from sabnzbd.constants import DB_HISTORY_NAME, STAGES, Status
from sabnzbd.encoding import unicoder from sabnzbd.encoding import unicoder
from sabnzbd.bpsmeter import this_week, this_month from sabnzbd.bpsmeter import this_week, this_month
from sabnzbd.decorators import synchronized from sabnzbd.decorators import synchronized
@ -259,11 +259,11 @@ class HistoryDB(object):
to_keep = int_conv(sabnzbd.cfg.history_retention()) to_keep = int_conv(sabnzbd.cfg.history_retention())
if to_keep > 0: if to_keep > 0:
logging.info('Removing all but last %s completed jobs from history', to_keep) logging.info('Removing all but last %s completed jobs from history', to_keep)
return self.execute("""DELETE FROM history WHERE id NOT IN ( SELECT id FROM history WHERE status = 'Completed' ORDER BY completed DESC LIMIT ? )""", (to_keep,), save=True) return self.execute("""DELETE FROM history WHERE status = ? AND id NOT IN ( SELECT id FROM history WHERE status = ? ORDER BY completed DESC LIMIT ? )""", (Status.COMPLETED, Status.COMPLETED, to_keep), save=True)
def add_history_db(self, nzo, storage, path, postproc_time, script_output, script_line): def add_history_db(self, nzo, storage, path, postproc_time, script_output, script_line):
""" Add a new job entry to the database """ """ Add a new job entry to the database """
t = build_history_info(nzo, storage, path, postproc_time, script_output, script_line) t = build_history_info(nzo, storage, path, postproc_time, script_output, script_line, series_info=True)
self.execute("""INSERT INTO history (completed, name, nzb_name, category, pp, script, report, self.execute("""INSERT INTO history (completed, name, nzb_name, category, pp, script, report,
url, status, nzo_id, storage, path, script_log, script_line, download_time, postproc_time, stage_log, url, status, nzo_id, storage, path, script_log, script_line, download_time, postproc_time, stage_log,
@ -319,7 +319,6 @@ class HistoryDB(object):
def have_episode(self, series, season, episode): def have_episode(self, series, season, episode):
""" Check whether History contains this series episode """ """ Check whether History contains this series episode """
total = 0 total = 0
series = series.lower().replace('.', ' ').replace('_', ' ').replace(' ', ' ')
if series and season and episode: if series and season and episode:
pattern = '%s/%s/%s' % (series, season, episode) pattern = '%s/%s/%s' % (series, season, episode)
res = self.execute("select count(*) from History WHERE series = ? AND STATUS != 'Failed'", (pattern,)) res = self.execute("select count(*) from History WHERE series = ? AND STATUS != 'Failed'", (pattern,))
@ -330,10 +329,11 @@ class HistoryDB(object):
pass pass
return total > 0 return total > 0
def have_md5sum(self, md5sum): def have_name_or_md5sum(self, name, md5sum):
""" Check whether this md5sum already in History """ """ Check whether this name or md5sum is already in History """
total = 0 total = 0
res = self.execute("select count(*) from History WHERE md5sum = ? AND STATUS != 'Failed'", (md5sum,)) # Do the check case-insensitive
res = self.execute("SELECT count(*) FROM History WHERE ( LOWER(name) = LOWER(?) OR md5sum = ? ) AND STATUS != 'Failed'", (name, md5sum))
if res: if res:
try: try:
total = self.c.fetchone().get('count(*)') total = self.c.fetchone().get('count(*)')
@ -438,7 +438,7 @@ def dict_factory(cursor, row):
_PP_LOOKUP = {0: '', 1: 'R', 2: 'U', 3: 'D'} _PP_LOOKUP = {0: '', 1: 'R', 2: 'U', 3: 'D'}
def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_output='', script_line=''): def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_output='', script_line='', series_info=False):
""" Collects all the information needed for the database """ """ Collects all the information needed for the database """
if not downpath: if not downpath:
@ -491,7 +491,7 @@ def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_out
# Analyze series info only when job is finished # Analyze series info only when job is finished
series = u'' series = u''
if postproc_time: if series_info:
seriesname, season, episode, dummy = sabnzbd.newsunpack.analyse_show(nzo.final_name) seriesname, season, episode, dummy = sabnzbd.newsunpack.analyse_show(nzo.final_name)
if seriesname and season and episode: if seriesname and season and episode:
series = u'%s/%s/%s' % (seriesname.lower(), season, episode) series = u'%s/%s/%s' % (seriesname.lower(), season, episode)

3
sabnzbd/decoder.py

@ -175,7 +175,8 @@ class Decoder(Thread):
if nzo.precheck: if nzo.precheck:
if found and not killed: if found and not killed:
# Pre-check, proper article found, just register # Pre-check, proper article found, just register
logging.debug('Server %s has article %s', article.fetcher, art_id) if sabnzbd.LOG_ALL:
logging.debug('Server %s has article %s', article.fetcher, art_id)
register = True register = True
elif not killed and not found: elif not killed and not found:
logme = T('Badly formed yEnc article in %s') % art_id logme = T('Badly formed yEnc article in %s') % art_id

38
sabnzbd/directunpacker.py

@ -51,7 +51,6 @@ from subprocess import Popen
# Otherwise we could stop while the thread was still starting # Otherwise we could stop while the thread was still starting
START_STOP_LOCK = threading.RLock() START_STOP_LOCK = threading.RLock()
MAX_ACTIVE_UNPACKERS = 10
ACTIVE_UNPACKERS = [] ACTIVE_UNPACKERS = []
RAR_NR = re.compile(r'(.*?)(\.part(\d*).rar|\.r(\d*))$', re.IGNORECASE) RAR_NR = re.compile(r'(.*?)(\.part(\d*).rar|\.r(\d*))$', re.IGNORECASE)
@ -77,6 +76,8 @@ class DirectUnpacker(threading.Thread):
self.success_sets = {} self.success_sets = {}
self.next_sets = [] self.next_sets = []
self.duplicate_lines = 0
nzo.direct_unpacker = self nzo.direct_unpacker = self
def stop(self): def stop(self):
@ -176,10 +177,10 @@ class DirectUnpacker(threading.Thread):
break break
# Error? Let PP-handle it # Error? Let PP-handle it
if linebuf.endswith(('ERROR: ', 'Cannot create', 'in the encrypted file', 'CRC failed', if linebuf.endswith(('ERROR: ', 'Cannot create', 'in the encrypted file', 'CRC failed', 'checksum failed',
'checksum failed', 'You need to start extraction from a previous volume', 'You need to start extraction from a previous volume', 'password is incorrect',
'password is incorrect', 'Write error', 'checksum error', 'Write error', 'checksum error', 'start extraction from a previous volume'
'start extraction from a previous volume')): 'Unexpected end of archive')):
logging.info('Error in DirectUnpack of %s: %s', self.cur_setname, linebuf.strip()) logging.info('Error in DirectUnpack of %s: %s', self.cur_setname, linebuf.strip())
self.abort() self.abort()
@ -271,13 +272,16 @@ class DirectUnpacker(threading.Thread):
logging.info('DirectUnpacked volume %s for %s', self.cur_volume, self.cur_setname) logging.info('DirectUnpacked volume %s for %s', self.cur_volume, self.cur_setname)
# If lines did not change and we don't have the next volume, this download is missing files! # If lines did not change and we don't have the next volume, this download is missing files!
# In rare occasions we can get stuck forever with repeating lines
if last_volume_linebuf == linebuf: if last_volume_linebuf == linebuf:
if not self.have_next_volume(): if not self.have_next_volume() or self.duplicate_lines > 10:
logging.info('DirectUnpack failed due to missing files %s', self.cur_setname) logging.info('DirectUnpack failed due to missing files %s', self.cur_setname)
self.abort() self.abort()
else: else:
logging.debug('Duplicate output line detected: "%s"', last_volume_linebuf) logging.debug('Duplicate output line detected: "%s"', last_volume_linebuf)
self.duplicate_lines += 1
else:
self.duplicate_lines = 0
last_volume_linebuf = linebuf last_volume_linebuf = linebuf
# Show the log # Show the log
@ -398,20 +402,12 @@ class DirectUnpacker(threading.Thread):
pass pass
# Now force kill and give it a bit of time # Now force kill and give it a bit of time
self.active_instance.kill() try:
time.sleep(0.2) self.active_instance.kill()
time.sleep(0.2)
# Have to collect the return-code to avoid zombie except AttributeError:
# But it will block forever if the process is in special state. # Already killed by the Quit command
# That should never happen, but it can happen on broken unrar's pass
if self.active_instance.poll():
self.active_instance.communicate()
else:
# It is still running?!? This should never happen
# Wait a little bit longer just to be sure..
time.sleep(2.0)
if not self.active_instance.poll():
logging.warning(T('Unable to stop the unrar process.'))
# Wake up the thread # Wake up the thread
with self.next_file_lock: with self.next_file_lock:

6
sabnzbd/downloader.py

@ -600,17 +600,17 @@ class Downloader(Thread):
else: else:
if self.bandwidth_limit: if self.bandwidth_limit:
bps = BPSMeter.do.get_bps() bps = BPSMeter.do.bps
bps += bytes bps += bytes
limit = self.bandwidth_limit limit = self.bandwidth_limit
if bps > limit: if bps > limit:
while BPSMeter.do.get_bps() > limit: while BPSMeter.do.bps > limit:
time.sleep(0.05) time.sleep(0.05)
BPSMeter.do.update() BPSMeter.do.update()
BPSMeter.do.update(server.id, bytes) BPSMeter.do.update(server.id, bytes)
if nzo: if nzo:
nzo.update_download_stats(BPSMeter.do.get_bps(), server.id, bytes) nzo.update_download_stats(BPSMeter.do.bps, server.id, bytes)
if not done and nw.status_code != '222': if not done and nw.status_code != '222':
if not nw.connected or nw.status_code == '480': if not nw.connected or nw.status_code == '480':

1
sabnzbd/misc.py

@ -158,6 +158,7 @@ def cat_to_opts(cat, pp=None, script=None, priority=None):
try: try:
my_cat = config.get_categories()[cat] my_cat = config.get_categories()[cat]
except KeyError: except KeyError:
cat = '*'
my_cat = def_cat my_cat = def_cat
if pp is None: if pp is None:

14
sabnzbd/newsunpack.py

@ -33,7 +33,7 @@ from sabnzbd.encoding import TRANS, unicoder, platform_encode, deunicode
import sabnzbd.utils.rarfile as rarfile import sabnzbd.utils.rarfile as rarfile
from sabnzbd.misc import format_time_string, find_on_path, make_script_path, int_conv, \ from sabnzbd.misc import format_time_string, find_on_path, make_script_path, int_conv, \
real_path, globber, globber_full, get_all_passwords, renamer, clip_path, calc_age, \ real_path, globber, globber_full, get_all_passwords, renamer, clip_path, calc_age, \
long_path, remove_file, recursive_listdir, is_rarfile long_path, remove_file, recursive_listdir, is_rarfile, get_filename
from sabnzbd.sorting import SeriesSorter from sabnzbd.sorting import SeriesSorter
import sabnzbd.cfg as cfg import sabnzbd.cfg as cfg
from sabnzbd.constants import Status from sabnzbd.constants import Status
@ -759,7 +759,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
# unrar 3.x: "Encrypted file: CRC failed in oLKQfrcNVivzdzSG22a2xo7t001.part1.rar (password incorrect ?)" # unrar 3.x: "Encrypted file: CRC failed in oLKQfrcNVivzdzSG22a2xo7t001.part1.rar (password incorrect ?)"
# unrar 4.x: "CRC failed in the encrypted file oLKQfrcNVivzdzSG22a2xo7t001.part1.rar. Corrupt file or wrong password." # unrar 4.x: "CRC failed in the encrypted file oLKQfrcNVivzdzSG22a2xo7t001.part1.rar. Corrupt file or wrong password."
# unrar 5.x: "Checksum error in the encrypted file oLKQfrcNVivzdzSG22a2xo7t001.part1.rar. Corrupt file or wrong password." # unrar 5.x: "Checksum error in the encrypted file oLKQfrcNVivzdzSG22a2xo7t001.part1.rar. Corrupt file or wrong password."
# unrar 5.01 : "The specified password is incorrect." # unrar 5.01: "The specified password is incorrect."
m = re.search(r'encrypted file (.+)\. Corrupt file', line) m = re.search(r'encrypted file (.+)\. Corrupt file', line)
if not m: if not m:
# unrar 3.x syntax # unrar 3.x syntax
@ -767,7 +767,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
if m: if m:
filename = TRANS(m.group(1)).strip() filename = TRANS(m.group(1)).strip()
else: else:
filename = os.path.split(rarfile_path)[1] filename = get_filename(rarfile_path)
nzo.fail_msg = T('Unpacking failed, archive requires a password') nzo.fail_msg = T('Unpacking failed, archive requires a password')
msg = (u'[%s][%s] ' + T('Unpacking failed, archive requires a password')) % (setname, filename) msg = (u'[%s][%s] ' + T('Unpacking failed, archive requires a password')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg)) nzo.set_unpack_info('Unpack', unicoder(msg))
@ -779,20 +779,20 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
if m: if m:
filename = TRANS(m.group(1)).strip() filename = TRANS(m.group(1)).strip()
else: else:
filename = '???' filename = get_filename(rarfile_path)
nzo.fail_msg = T('Unusable RAR file') nzo.fail_msg = T('Unusable RAR file')
msg = ('[%s][%s] ' + T('Unusable RAR file')) % (setname, filename) msg = ('[%s][%s] ' + T('Unusable RAR file')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg)) nzo.set_unpack_info('Unpack', unicoder(msg))
fail = 3 fail = 3
elif 'checksum error' in line: elif 'checksum error' in line or 'Unexpected end of archive' in line:
# Corrupt archive # Corrupt archive or passworded, we can't know
# packed data checksum error in volume FILE # packed data checksum error in volume FILE
m = re.search(r'error in volume (.+)', line) m = re.search(r'error in volume (.+)', line)
if m: if m:
filename = TRANS(m.group(1)).strip() filename = TRANS(m.group(1)).strip()
else: else:
filename = '???' filename = get_filename(rarfile_path)
nzo.fail_msg = T('Corrupt RAR file') nzo.fail_msg = T('Corrupt RAR file')
msg = ('[%s][%s] ' + T('Corrupt RAR file')) % (setname, filename) msg = ('[%s][%s] ' + T('Corrupt RAR file')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg)) nzo.set_unpack_info('Unpack', unicoder(msg))

4
sabnzbd/nzbqueue.py

@ -722,11 +722,13 @@ class NzbQueue(object):
""" Get next article for jobs in the queue """ Get next article for jobs in the queue
Not locked for performance, since it only reads the queue Not locked for performance, since it only reads the queue
""" """
# Pre-calculate propagation delay
propagtion_delay = float(cfg.propagation_delay() * 60)
for nzo in self.__nzo_list: for nzo in self.__nzo_list:
# Not when queue paused and not a forced item # Not when queue paused and not a forced item
if nzo.status not in (Status.PAUSED, Status.GRABBING) or nzo.priority == TOP_PRIORITY: if nzo.status not in (Status.PAUSED, Status.GRABBING) or nzo.priority == TOP_PRIORITY:
# Check if past propagation delay, or forced # Check if past propagation delay, or forced
if not cfg.propagation_delay() or nzo.priority == TOP_PRIORITY or (nzo.avg_stamp + float(cfg.propagation_delay() * 60)) < time.time(): if not propagtion_delay or nzo.priority == TOP_PRIORITY or (nzo.avg_stamp + propagtion_delay) < time.time():
if not nzo.server_in_try_list(server): if not nzo.server_in_try_list(server):
article = nzo.get_article(server, servers) article = nzo.get_article(server, servers)
if article: if article:

8
sabnzbd/nzbstuff.py

@ -933,7 +933,6 @@ class NzbObject(TryList):
# Raise error, so it's not added # Raise error, so it's not added
raise TypeError raise TypeError
@synchronized(NZO_LOCK)
def update_download_stats(self, bps, serverid, bytes): def update_download_stats(self, bps, serverid, bytes):
if bps: if bps:
self.avg_bps_total += bps / 1024 self.avg_bps_total += bps / 1024
@ -1331,8 +1330,9 @@ class NzbObject(TryList):
dif = int(self.url_wait - time.time() + 0.5) dif = int(self.url_wait - time.time() + 0.5)
if dif > 0: if dif > 0:
prefix += T('WAIT %s sec') % dif + ' / ' # : Queue indicator for waiting URL fetch prefix += T('WAIT %s sec') % dif + ' / ' # : Queue indicator for waiting URL fetch
if (self.avg_stamp + float(cfg.propagation_delay() * 60)) > time.time() and self.priority != TOP_PRIORITY: propagtion_delay = float(cfg.propagation_delay() * 60)
wait_time = int((self.avg_stamp + float(cfg.propagation_delay() * 60) - time.time()) / 60 + 0.5) if propagtion_delay and (self.avg_stamp + propagtion_delay) > time.time() and self.priority != TOP_PRIORITY:
wait_time = int((self.avg_stamp + propagtion_delay - time.time()) / 60 + 0.5)
prefix += T('PROPAGATING %s min') % wait_time + ' / ' # : Queue indicator while waiting for propagation of post prefix += T('PROPAGATING %s min') % wait_time + ' / ' # : Queue indicator while waiting for propagation of post
return '%s%s' % (prefix, self.final_name) return '%s%s' % (prefix, self.final_name)
@ -1881,7 +1881,7 @@ class NzbObject(TryList):
# dupe check off nzb contents # dupe check off nzb contents
if no_dupes: if no_dupes:
res = history_db.have_md5sum(self.md5sum) res = history_db.have_name_or_md5sum(self.final_name, self.md5sum)
logging.debug('Dupe checking NZB in history: filename=%s, md5sum=%s, result=%s', self.filename, self.md5sum, res) logging.debug('Dupe checking NZB in history: filename=%s, md5sum=%s, result=%s', self.filename, self.md5sum, res)
if not res and cfg.backup_for_duplicates(): if not res and cfg.backup_for_duplicates():
res = sabnzbd.backup_exists(self.filename) res = sabnzbd.backup_exists(self.filename)

3
sabnzbd/osxmenu.py

@ -349,7 +349,6 @@ class SABnzbdDelegate(NSObject):
pnfo_list = qnfo.list pnfo_list = qnfo.list
bytesleftprogess = 0 bytesleftprogess = 0
bpsnow = BPSMeter.do.get_bps()
self.info = "" self.info = ""
self.menu_queue = NSMenu.alloc().init() self.menu_queue = NSMenu.alloc().init()
@ -366,7 +365,7 @@ class SABnzbdDelegate(NSObject):
bytesleftprogess += pnfo.bytes_left bytesleftprogess += pnfo.bytes_left
bytes = pnfo.bytes / MEBI bytes = pnfo.bytes / MEBI
nzo_id = pnfo.nzo_id nzo_id = pnfo.nzo_id
timeleft = self.calc_timeleft_(bytesleftprogess, bpsnow) timeleft = self.calc_timeleft_(bytesleftprogess, BPSMeter.do.bps)
job = "%s\t(%d/%d MB) %s" % (filename, bytesleft, bytes, timeleft) job = "%s\t(%d/%d MB) %s" % (filename, bytesleft, bytes, timeleft)
menu_queue_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(job, '', '') menu_queue_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(job, '', '')

1
sabnzbd/par2file.py

@ -131,7 +131,6 @@ def parse_par2_file_packet(f, header):
nothing = None, None, None nothing = None, None, None
if header != PAR_PKT_ID: if header != PAR_PKT_ID:
print header
return nothing return nothing
# Length must be multiple of 4 and at least 20 # Length must be multiple of 4 and at least 20

31
sabnzbd/postproc.py

@ -910,17 +910,28 @@ def get_last_line(txt):
def remove_samples(path): def remove_samples(path):
""" Remove all files that match the sample pattern """ """ Remove all files that match the sample pattern
Skip deleting if it matches all files or there is only 1 file
"""
files_to_delete = []
nr_files = 0
for root, _dirs, files in os.walk(path): for root, _dirs, files in os.walk(path):
for file_ in files: for file_to_match in files:
if RE_SAMPLE.search(file_): nr_files += 1
path = os.path.join(root, file_) if RE_SAMPLE.search(file_to_match):
try: files_to_delete.append(os.path.join(root, file_to_match))
logging.info("Removing unwanted sample file %s", path)
remove_file(path) # Make sure we skip false-positives
except: if 1 < len(files_to_delete) < nr_files:
logging.error(T('Removing %s failed'), clip_path(path)) for path in files_to_delete:
logging.info("Traceback: ", exc_info=True) try:
logging.info("Removing unwanted sample file %s", path)
remove_file(path)
except:
logging.error(T('Removing %s failed'), clip_path(path))
logging.info("Traceback: ", exc_info=True)
else:
logging.info("Skipping sample-removal, false-positive")
def rename_and_collapse_folder(oldpath, newpath, files): def rename_and_collapse_folder(oldpath, newpath, files):

8
sabnzbd/skintext.py

@ -542,10 +542,10 @@ SKIN_TEXT = {
'opt-rating_filter_downvoted' : TT('More thumbs down than up'), 'opt-rating_filter_downvoted' : TT('More thumbs down than up'),
'opt-rating_filter_keywords' : TT('Title keywords'), 'opt-rating_filter_keywords' : TT('Title keywords'),
'explain-rating_filter_keywords' : TT('Comma separated list'), 'explain-rating_filter_keywords' : TT('Comma separated list'),
'opt-load_balancing' : TT('Server load-balancing'), 'opt-load_balancing' : TT('Server IP address selection'),
'no-load-balancing' : TT('Prevent load-balancing'), 'no-load-balancing' : TT('First IP address'),
'load-balancing' : TT('Allow load-balancing'), 'load-balancing' : TT('Randomly selected IP address'),
'load-balancing-happy-eyeballs' : TT('Allow load-balancing with optimization for IPv6'), 'load-balancing-happy-eyeballs' : TT('Quickest IP address, preferring IPv6'),
'explain-load_balancing' : TT('Useful if a newsserver has more than one IPv4/IPv6 address'), 'explain-load_balancing' : TT('Useful if a newsserver has more than one IPv4/IPv6 address'),
# Config->Server # Config->Server

2
sabnzbd/utils/systrayiconthread.py

@ -190,7 +190,7 @@ class SysTrayIconThread(Thread):
# Wrapper of win32api, timeout is in ms # Wrapper of win32api, timeout is in ms
# We need to wait at least untill what user has defined as double click # We need to wait at least untill what user has defined as double click
self.stop_click_timer() self.stop_click_timer()
self.click_timer = timer.set_timer(win32gui.GetDoubleClickTime(), self.click) self.click_timer = timer.set_timer(win32gui.GetDoubleClickTime() * 2, self.click)
return True return True
def show_menu(self): def show_menu(self):

4
sabnzbd/version.py

@ -4,5 +4,5 @@
# You MUST use double quotes (so " and not ') # You MUST use double quotes (so " and not ')
__version__ = "2.3.8" __version__ = "2.3.9"
__baseline__ = "0dd1f647d8b672c8a992fc986f9b2ab5000dbbea" __baseline__ = "unknown"

BIN
win/par2/multipar/par2j.exe

Binary file not shown.

BIN
win/par2/multipar/par2j64.exe

Binary file not shown.

BIN
win/unrar/UnRAR.exe

Binary file not shown.

BIN
win/unrar/x64/UnRAR.exe

Binary file not shown.
Loading…
Cancel
Save