mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2026-01-10 00:19:18 -05:00
Compare commits
107 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b4f36be170 | ||
|
|
5e722b27f3 | ||
|
|
367a73ef29 | ||
|
|
9228bc28ff | ||
|
|
02e18be5e1 | ||
|
|
531ef59e0a | ||
|
|
54e03fb40a | ||
|
|
904bb9f85a | ||
|
|
b011e1a518 | ||
|
|
f83f71a950 | ||
|
|
4dbf5266ef | ||
|
|
05aac4e01e | ||
|
|
267c48f9a7 | ||
|
|
5168915a65 | ||
|
|
71017d0d55 | ||
|
|
a5db51a2c5 | ||
|
|
0bf2968e6a | ||
|
|
2ec5918f5e | ||
|
|
04f5a63cd7 | ||
|
|
43d8283f5b | ||
|
|
f8111121c4 | ||
|
|
b53b73c135 | ||
|
|
bd7b8a975b | ||
|
|
7ca765f276 | ||
|
|
b918a53af5 | ||
|
|
525809afc9 | ||
|
|
a7048cdc8e | ||
|
|
02888568bd | ||
|
|
203409f02f | ||
|
|
ecc8e6ac0e | ||
|
|
852636acda | ||
|
|
bc18369552 | ||
|
|
8f248a2219 | ||
|
|
2a113f7f58 | ||
|
|
6b8b9e0238 | ||
|
|
1e3e4b4118 | ||
|
|
87dfbe34d4 | ||
|
|
c56bcfaf61 | ||
|
|
a947a1d88b | ||
|
|
ad0d5726ec | ||
|
|
c52ce58b6d | ||
|
|
a90356c6e7 | ||
|
|
5c78c7855b | ||
|
|
915ee650ee | ||
|
|
58bd12b083 | ||
|
|
ecc334360a | ||
|
|
1f04343a4d | ||
|
|
70f8509f6e | ||
|
|
74a97296a5 | ||
|
|
45d3440443 | ||
|
|
c872ee16ab | ||
|
|
da473424f2 | ||
|
|
e0dc988f94 | ||
|
|
4021e6098c | ||
|
|
f521037669 | ||
|
|
246e9e421b | ||
|
|
8aaee09652 | ||
|
|
e36450a666 | ||
|
|
d84f31c116 | ||
|
|
e5fc51e9d7 | ||
|
|
291a72ec63 | ||
|
|
4dd5115b03 | ||
|
|
3bdb8407d2 | ||
|
|
a88055c491 | ||
|
|
8a676aeab4 | ||
|
|
d41276aa82 | ||
|
|
96cb0aa8db | ||
|
|
03e7889d5c | ||
|
|
5c161b884c | ||
|
|
f77cc43b7d | ||
|
|
bd709a7bdd | ||
|
|
c3832a85f7 | ||
|
|
52aa7a08d7 | ||
|
|
ee0358cf06 | ||
|
|
2344a50f6c | ||
|
|
a2774ce762 | ||
|
|
2cdf284578 | ||
|
|
3fd9e85236 | ||
|
|
f08eaa4e53 | ||
|
|
f47a6a889e | ||
|
|
14b32f30f0 | ||
|
|
20fbea6e31 | ||
|
|
53261ad311 | ||
|
|
4686bc1fa6 | ||
|
|
0d806305c2 | ||
|
|
ee0623d68b | ||
|
|
0b9b28112d | ||
|
|
3ebe7dff45 | ||
|
|
7d4b665cd9 | ||
|
|
5b7224bf4c | ||
|
|
1b67c9c13d | ||
|
|
fe849d8805 | ||
|
|
07c3ff9710 | ||
|
|
f3e18ac355 | ||
|
|
2bafefa795 | ||
|
|
c9fcd4cecc | ||
|
|
343d9b10cf | ||
|
|
3d219c9382 | ||
|
|
031ed3f01e | ||
|
|
f20a30cfc2 | ||
|
|
b5dcfe0238 | ||
|
|
d169bb5e28 | ||
|
|
25429b5b19 | ||
|
|
9638eab564 | ||
|
|
c6b84660e3 | ||
|
|
cc61e669ef | ||
|
|
3a19741edb |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -16,8 +16,9 @@ SABnzbd*.exe
|
||||
SABnzbd*.gz
|
||||
SABnzbd*.dmg
|
||||
|
||||
# WingIDE project files
|
||||
# WingIDE/PyCharm project files
|
||||
*.wp[ru]
|
||||
.idea
|
||||
|
||||
# Testing folders
|
||||
.cache
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
*******************************************
|
||||
*** This is SABnzbd 2.4.0 ***
|
||||
*** This is SABnzbd 2.3.5 ***
|
||||
*******************************************
|
||||
SABnzbd is an open-source cross-platform binary newsreader.
|
||||
It simplifies the process of downloading from Usenet dramatically,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
(c) Copyright 2007-2017 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2018 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
|
||||
The SABnzbd-team is:
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
SABnzbd 2.3.1
|
||||
SABnzbd 2.3.5
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
0) LICENSE
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
(c) Copyright 2007-2017 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2018 by "The SABnzbd-team" <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
|
||||
|
||||
@@ -66,3 +66,7 @@
|
||||
Config->Special->wait_for_dfolder to 1.
|
||||
SABnzbd will appear to hang until the drive is mounted.
|
||||
|
||||
- If you experience speed-drops to KB/s when using a VPN, try setting the number of connections
|
||||
to your servers to a total of 7. There is a CPU-usage reduction feature in SABnzbd that
|
||||
gets confused by the way some VPN's handle the state of a connection. Below 8 connections
|
||||
this feature is not active.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
(c) Copyright 2007-2017 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2018 by "The SABnzbd-team" <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
|
||||
|
||||
4
PKG-INFO
4
PKG-INFO
@@ -1,7 +1,7 @@
|
||||
Metadata-Version: 1.0
|
||||
Name: SABnzbd
|
||||
Version: 2.3.2
|
||||
Summary: SABnzbd-2.3.2
|
||||
Version: 2.3.5RC2
|
||||
Summary: SABnzbd-2.3.5RC2
|
||||
Home-page: https://sabnzbd.org
|
||||
Author: The SABnzbd Team
|
||||
Author-email: team@sabnzbd.org
|
||||
|
||||
52
README.mkd
52
README.mkd
@@ -1,37 +1,25 @@
|
||||
Release Notes - SABnzbd 2.3.2
|
||||
Release Notes - SABnzbd 2.3.5 RC 2
|
||||
=========================================================
|
||||
|
||||
## Changes since 2.3.1
|
||||
- SABYenc updated to 3.3.2 to fix rare crash during downloading
|
||||
- Minor updates of SABYenc (such as 3.3.2) are no longer mandatory
|
||||
- Article Cache is automatically set to 25% of system memory, if no
|
||||
custom value was set. Maximum set by auto-detect is 1GB
|
||||
- Simplify Config pages by hiding Advanced Settings
|
||||
- Added option '%dn' to Date Sorting to rename files as job name
|
||||
- Added 'Job Name as Folder Name' as Sorting Preset for de-obfuscation
|
||||
- Server usage graphs are now linked to make comparing servers easier
|
||||
- URLs that fail to fetch due to server errors will only be retried 10x
|
||||
- Delay between URL retries increases when not specified by server
|
||||
- First article of each file is downloaded first to identify filenames
|
||||
- Jobs finished by Direct Unpack will be post-processed first
|
||||
- If available, 7zip will be used instead of unzip
|
||||
- Job password entered by user is always shown in History
|
||||
- Password is also extracted from filename in case of custom job name
|
||||
- Add per-day download-statistics to 'server_stats' API-call
|
||||
- Added Hebrew date-time texts
|
||||
## Bug fixes since 2.3.5 RC 1
|
||||
- Overall improvements in stability and reliability
|
||||
|
||||
## Bugfixes since 2.3.1
|
||||
- Dropped connections could result in stalled downloads
|
||||
- Pre-queue scripts would fail to run
|
||||
- Pre-queue script output was not always parsed correctly
|
||||
- Notifications were always sent for 'Default' category
|
||||
- 'History Retention' also checked on start of program
|
||||
- macOS: Restore full compatibility with macOS 10.11
|
||||
- Windows: Unpacking could fail due to paths not being quoted
|
||||
- Windows: All input parameters to scripts are now quoted
|
||||
- Windows: Complete folder in root of drive could crash post-processing
|
||||
- Windows: Automatically correct 'Extra Par2 Parameters' for MultiPar
|
||||
- Windows: Prevent potential pause/unpause loop after tray icon click
|
||||
## Bug fixes since 2.3.4
|
||||
- Reworked Deobfuscate.py script for much faster renaming
|
||||
- All scripts can now receive input through environment variables
|
||||
- Unable to set only one Indexer Category per category
|
||||
- Could falsely report not enough blocks are available for repair
|
||||
- Direct Unpack could abort unnecessarily
|
||||
- Rare crash during file assembly
|
||||
- Server hostname is now used in warnings and logs
|
||||
- Improved disk performance measurement
|
||||
- Windows: Tray icon also shows remaining size when paused
|
||||
- Windows: Wizard would not default to installer language
|
||||
- Windows: Update MultiPar to 1.3.0.1
|
||||
- Windows and macOS: Update UnRar to 5.60
|
||||
|
||||
Looking for help with SABnzbd development:
|
||||
https://www.reddit.com/r/usenet/918nxv/
|
||||
|
||||
## Upgrading from 2.2.x and older
|
||||
- Finish queue
|
||||
@@ -57,4 +45,4 @@ Release Notes - SABnzbd 2.3.2
|
||||
that automatically verify, repair, extract and clean up posts downloaded
|
||||
from Usenet.
|
||||
|
||||
(c) Copyright 2007-2017 by "The SABnzbd-team" \<team@sabnzbd.org\>
|
||||
(c) Copyright 2007-2018 by "The SABnzbd-team" \<team@sabnzbd.org\>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -20,7 +20,6 @@ if sys.version_info[:2] < (2, 6) or sys.version_info[:2] >= (3, 0):
|
||||
print "Sorry, requires Python 2.6 or 2.7."
|
||||
sys.exit(1)
|
||||
|
||||
import os
|
||||
import time
|
||||
import subprocess
|
||||
|
||||
|
||||
87
SABnzbd.py
87
SABnzbd.py
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -44,7 +44,7 @@ import re
|
||||
|
||||
try:
|
||||
import Cheetah
|
||||
if Cheetah.Version[0] != '2':
|
||||
if Cheetah.Version[0] < '2':
|
||||
raise ValueError
|
||||
except ValueError:
|
||||
print "Sorry, requires Python module Cheetah 2.0rc7 or higher."
|
||||
@@ -173,7 +173,7 @@ class guiHandler(logging.Handler):
|
||||
|
||||
def print_help():
|
||||
print
|
||||
print "Usage: %s [-f <configfile>] <other options>" % sabnzbd.MY_NAME
|
||||
print "Usage: %s [-f <configfile>] <other options> [NZB (or related) file]" % sabnzbd.MY_NAME
|
||||
print
|
||||
print "Options marked [*] are stored in the config file"
|
||||
print
|
||||
@@ -204,15 +204,20 @@ def print_help():
|
||||
print " --ipv6_hosting <0|1> Listen on IPv6 address [::1] [*]"
|
||||
print " --no-login Start with username and password reset"
|
||||
print " --log-all Log all article handling (for developers)"
|
||||
print " --disable-file-log Logging is only written to console"
|
||||
print " --console Force console logging for OSX app"
|
||||
print " --new Run a new instance of SABnzbd"
|
||||
print ""
|
||||
print "NZB (or related) file:"
|
||||
print " NZB or zipped NZB file, with extension .nzb, .zip, .rar, .gz, or .bz2"
|
||||
print ""
|
||||
|
||||
|
||||
def print_version():
|
||||
print """
|
||||
%s-%s
|
||||
|
||||
Copyright (C) 2008-2017, The SABnzbd-Team <team@sabnzbd.org>
|
||||
Copyright (C) 2007-2018, The SABnzbd-Team <team@sabnzbd.org>
|
||||
SABnzbd comes with ABSOLUTELY NO WARRANTY.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions. It is licensed under the
|
||||
@@ -497,7 +502,7 @@ def all_localhosts():
|
||||
def check_resolve(host):
|
||||
""" Return True if 'host' resolves """
|
||||
try:
|
||||
dummy = socket.getaddrinfo(host, None)
|
||||
socket.getaddrinfo(host, None)
|
||||
except:
|
||||
# Does not resolve
|
||||
return False
|
||||
@@ -593,7 +598,7 @@ def get_webhost(cherryhost, cherryport, https_port):
|
||||
cherryhost = cherryhost.strip('[]')
|
||||
else:
|
||||
try:
|
||||
info = socket.getaddrinfo(cherryhost, None)
|
||||
socket.getaddrinfo(cherryhost, None)
|
||||
except:
|
||||
cherryhost = cherryhost.strip('[]')
|
||||
|
||||
@@ -723,7 +728,7 @@ def evaluate_inipath(path):
|
||||
return path
|
||||
|
||||
|
||||
def commandline_handler(frozen=True):
|
||||
def commandline_handler():
|
||||
""" Split win32-service commands are true parameters
|
||||
Returns:
|
||||
service, sab_opts, serv_opts, upload_nzbs
|
||||
@@ -756,7 +761,7 @@ def commandline_handler(frozen=True):
|
||||
opts, args = getopt.getopt(info, "phdvncwl:s:f:t:b:2:",
|
||||
['pause', 'help', 'daemon', 'nobrowser', 'clean', 'logging=',
|
||||
'weblogging', 'server=', 'templates', 'ipv6_hosting=',
|
||||
'template2', 'browser=', 'config-file=', 'force',
|
||||
'template2', 'browser=', 'config-file=', 'force', 'disable-file-log',
|
||||
'version', 'https=', 'autorestarted', 'repair', 'repair-all',
|
||||
'log-all', 'no-login', 'pid=', 'new', 'console', 'pidfile=',
|
||||
# Below Win32 Service options
|
||||
@@ -775,7 +780,7 @@ def commandline_handler(frozen=True):
|
||||
if not service:
|
||||
# Get and remove any NZB file names
|
||||
for entry in args:
|
||||
if get_ext(entry) in ('.nzb', '.zip', '.rar', '.gz', '.bz2'):
|
||||
if get_ext(entry) in VALID_NZB_FILES + VALID_ARCHIVES:
|
||||
upload_nzbs.append(os.path.abspath(entry))
|
||||
|
||||
for opt, arg in opts:
|
||||
@@ -819,11 +824,11 @@ def main():
|
||||
cherrypylogging = None
|
||||
clean_up = False
|
||||
logging_level = None
|
||||
no_file_log = False
|
||||
web_dir = None
|
||||
vista_plus = False
|
||||
win64 = False
|
||||
repair = 0
|
||||
api_url = None
|
||||
no_login = False
|
||||
sabnzbd.RESTART_ARGS = [sys.argv[0]]
|
||||
pid_path = None
|
||||
@@ -892,6 +897,8 @@ def main():
|
||||
pause = True
|
||||
elif opt in ('--log-all',):
|
||||
sabnzbd.LOG_ALL = True
|
||||
elif opt in ('--disable-file-log'):
|
||||
no_file_log = True
|
||||
elif opt in ('--no-login',):
|
||||
no_login = True
|
||||
elif opt in ('--pid',):
|
||||
@@ -998,13 +1005,13 @@ def main():
|
||||
if enable_https and https_port:
|
||||
try:
|
||||
cherrypy.process.servers.check_port(cherryhost, https_port, timeout=0.05)
|
||||
except IOError, error:
|
||||
except IOError:
|
||||
Bail_Out(browserhost, cherryport)
|
||||
except:
|
||||
Bail_Out(browserhost, cherryport, '49')
|
||||
try:
|
||||
cherrypy.process.servers.check_port(cherryhost, cherryport, timeout=0.05)
|
||||
except IOError, error:
|
||||
except IOError:
|
||||
Bail_Out(browserhost, cherryport)
|
||||
except:
|
||||
Bail_Out(browserhost, cherryport, '49')
|
||||
@@ -1041,7 +1048,7 @@ def main():
|
||||
else:
|
||||
# In case HTTPS == HTTP port
|
||||
cherryport = newport
|
||||
sabnzbd.cfg.port.set(newport)
|
||||
sabnzbd.cfg.cherryport.set(newport)
|
||||
except:
|
||||
# Something else wrong, probably badly specified host
|
||||
Bail_Out(browserhost, cherryport, '49')
|
||||
@@ -1072,11 +1079,7 @@ def main():
|
||||
# We found a port, now we never check again
|
||||
sabnzbd.cfg.fixed_ports.set(True)
|
||||
|
||||
if logging_level is None:
|
||||
logging_level = sabnzbd.cfg.log_level()
|
||||
else:
|
||||
sabnzbd.cfg.log_level.set(logging_level)
|
||||
|
||||
# Logging-checks
|
||||
logdir = sabnzbd.cfg.log_dir.get_path()
|
||||
if fork and not logdir:
|
||||
print "Error:"
|
||||
@@ -1095,19 +1098,24 @@ def main():
|
||||
# Prevent the logger from raising exceptions
|
||||
# primarily to reduce the fallout of Python issue 4749
|
||||
logging.raiseExceptions = 0
|
||||
|
||||
# Log-related constants we always need
|
||||
if logging_level is None:
|
||||
logging_level = sabnzbd.cfg.log_level()
|
||||
else:
|
||||
sabnzbd.cfg.log_level.set(logging_level)
|
||||
sabnzbd.LOGFILE = os.path.join(logdir, DEF_LOG_FILE)
|
||||
logformat = '%(asctime)s::%(levelname)s::[%(module)s:%(lineno)d] %(message)s'
|
||||
logger.setLevel(LOGLEVELS[logging_level + 1])
|
||||
|
||||
try:
|
||||
rollover_log = logging.handlers.RotatingFileHandler(
|
||||
sabnzbd.LOGFILE, 'a+',
|
||||
sabnzbd.cfg.log_size.get_int(),
|
||||
sabnzbd.cfg.log_backups())
|
||||
|
||||
logformat = '%(asctime)s::%(levelname)s::[%(module)s:%(lineno)d] %(message)s'
|
||||
rollover_log.setFormatter(logging.Formatter(logformat))
|
||||
sabnzbd.LOGHANDLER = rollover_log
|
||||
logger.addHandler(rollover_log)
|
||||
logger.setLevel(LOGLEVELS[logging_level + 1])
|
||||
if not no_file_log:
|
||||
rollover_log = logging.handlers.RotatingFileHandler(
|
||||
sabnzbd.LOGFILE, 'a+',
|
||||
sabnzbd.cfg.log_size.get_int(),
|
||||
sabnzbd.cfg.log_backups())
|
||||
rollover_log.setFormatter(logging.Formatter(logformat))
|
||||
logger.addHandler(rollover_log)
|
||||
|
||||
except IOError:
|
||||
print "Error:"
|
||||
@@ -1137,6 +1145,8 @@ def main():
|
||||
console.setLevel(LOGLEVELS[logging_level + 1])
|
||||
console.setFormatter(logging.Formatter(logformat))
|
||||
logger.addHandler(console)
|
||||
if no_file_log:
|
||||
logging.info('Console logging only')
|
||||
if noConsoleLoggingOSX:
|
||||
logging.info('Console logging for OSX App disabled')
|
||||
so = file('/dev/null', 'a+')
|
||||
@@ -1169,7 +1179,7 @@ def main():
|
||||
logging.info('Preferred encoding = ERROR')
|
||||
preferredencoding = ''
|
||||
|
||||
# On Linux/FreeBSD/Unix "UTF-8" is strongly, strongly adviced:
|
||||
# On Linux/FreeBSD/Unix "UTF-8" is strongly, strongly advised:
|
||||
if not sabnzbd.WIN32 and not sabnzbd.DARWIN and not ('utf' in preferredencoding.lower() and '8' in preferredencoding.lower()):
|
||||
logging.warning(T("SABnzbd was started with encoding %s, this should be UTF-8. Expect problems with Unicoded file and directory names in downloads.") % preferredencoding)
|
||||
|
||||
@@ -1226,8 +1236,6 @@ def main():
|
||||
|
||||
if autobrowser is not None:
|
||||
sabnzbd.cfg.autobrowser.set(autobrowser)
|
||||
else:
|
||||
autobrowser = sabnzbd.cfg.autobrowser()
|
||||
|
||||
if not sabnzbd.WIN_SERVICE and not getattr(sys, 'frozen', None) == 'macosx_app':
|
||||
signal.signal(signal.SIGINT, sabnzbd.sig_handler)
|
||||
@@ -1361,8 +1369,11 @@ def main():
|
||||
staticcfg = {'tools.staticdir.on': True, 'tools.staticdir.dir': os.path.join(sabnzbd.WEB_DIR_CONFIG, 'staticcfg'), 'tools.staticdir.content_types': forced_mime_types}
|
||||
wizard_static = {'tools.staticdir.on': True, 'tools.staticdir.dir': os.path.join(sabnzbd.WIZARD_DIR, 'static'), 'tools.staticdir.content_types': forced_mime_types}
|
||||
|
||||
appconfig = {'/api': {'tools.basic_auth.on': False},
|
||||
'/rss': {'tools.basic_auth.on': False},
|
||||
appconfig = {'/api': {
|
||||
'tools.basic_auth.on': False,
|
||||
'tools.response_headers.on': True,
|
||||
'tools.response_headers.headers': [('Access-Control-Allow-Origin', '*')]
|
||||
},
|
||||
'/static': static,
|
||||
'/wizard/static': wizard_static,
|
||||
'/favicon.ico': {'tools.staticfile.on': True, 'tools.staticfile.filename': os.path.join(sabnzbd.WEB_DIR_CONFIG, 'staticcfg', 'ico', 'favicon.ico')},
|
||||
@@ -1510,9 +1521,7 @@ def main():
|
||||
# Or special restart cases like Mac and WindowsService
|
||||
if sabnzbd.TRIGGER_RESTART:
|
||||
# Shutdown
|
||||
cherrypy.engine.exit()
|
||||
sabnzbd.halt()
|
||||
sabnzbd.SABSTOP = True
|
||||
sabnzbd.shutdown_program()
|
||||
|
||||
if sabnzbd.downloader.Downloader.do.paused:
|
||||
sabnzbd.RESTART_ARGS.append('-p')
|
||||
@@ -1589,7 +1598,7 @@ if sabnzbd.WIN32:
|
||||
win32serviceutil.ServiceFramework.__init__(self, args)
|
||||
|
||||
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
|
||||
self.overlapped = pywintypes.OVERLAPPED() # @UndefinedVariable
|
||||
self.overlapped = pywintypes.OVERLAPPED()
|
||||
self.overlapped.hEvent = win32event.CreateEvent(None, 0, 0, None)
|
||||
sabnzbd.WIN_SERVICE = self
|
||||
|
||||
@@ -1719,9 +1728,7 @@ if __name__ == '__main__':
|
||||
|
||||
def stop(self):
|
||||
logging.info('[osx] sabApp Quit - stopping main thread ')
|
||||
sabnzbd.halt()
|
||||
cherrypy.engine.exit()
|
||||
sabnzbd.SABSTOP = True
|
||||
sabnzbd.shutdown_program()
|
||||
logging.info('[osx] sabApp Quit - main thread stopped')
|
||||
|
||||
sabApp = startApp()
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
<div class="colmask">
|
||||
<div class="padding alt">
|
||||
<h5 class="copyright">Copyright © 2008-2017 The SABnzbd Team <<a href="mailto:team@sabnzbd.org">team@sabnzbd.org</a>></h5>
|
||||
<h5 class="copyright">Copyright © 2007-2018 The SABnzbd Team <<a href="mailto:team@sabnzbd.org">team@sabnzbd.org</a>></h5>
|
||||
<p class="copyright"><small>$T('yourRights')</small></p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -129,6 +129,12 @@
|
||||
</select>
|
||||
<span class="desc">$T('explain-ssl_verify').replace('. ', '.<br/>')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="ssl_ciphers">$T('opt-ssl_ciphers')</label>
|
||||
<input type="text" name="ssl_ciphers" id="ssl_ciphers" />
|
||||
<span class="desc">$T('explain-ssl_ciphers') <br>$T('readwiki')
|
||||
<a href="${helpuri}advanced/ssl-ciphers" target="_blank">${helpuri}advanced/ssl-ciphers</a></span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="send_group">$T('srv-send_group')</label>
|
||||
<input type="checkbox" name="send_group" id="send_group" value="1" />
|
||||
@@ -166,6 +172,7 @@
|
||||
<form action="saveServer" method="post" class="fullform" autocomplete="off">
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
<input type="hidden" name="server" value="$server['name']" />
|
||||
<input type="hidden" id="ajax" name="ajax" value=1 />
|
||||
|
||||
<div class="section <!--#if int($server['enable']) == 0 then 'server-disabled' else ""#-->">
|
||||
<div class="col2 <!--#if int($server['enable']) == 0 then 'server-disabled' else ""#-->">
|
||||
@@ -238,6 +245,12 @@
|
||||
</select>
|
||||
<span class="desc">$T('explain-ssl_verify').replace('. ', '.<br/>')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="ssl_ciphers">$T('opt-ssl_ciphers')</label>
|
||||
<input type="text" name="ssl_ciphers" id="ssl_ciphers" value="$server['ssl_ciphers']" />
|
||||
<span class="desc">$T('explain-ssl_ciphers') <br>$T('readwiki')
|
||||
<a href="${helpuri}advanced/ssl-ciphers" target="_blank">${helpuri}advanced/ssl-ciphers</a></span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="optional$cur">$T('srv-optional')</label>
|
||||
<input type="checkbox" name="optional" id="optional$cur" value="1" <!--#if int($server['optional']) != 0 then 'checked="checked"' else ""#--> />
|
||||
@@ -402,6 +415,8 @@
|
||||
// Exception when change of priority, reload
|
||||
\$('input[name="priority"], input[name="displayname"]').on('change', function() {
|
||||
\$('.fullform').submit(function() {
|
||||
// No ajax this time
|
||||
\$('input[name="ajax"]').val('')
|
||||
// Skip the fancy stuff, just submit
|
||||
this.submit()
|
||||
})
|
||||
@@ -465,6 +480,7 @@
|
||||
setTimeout(function() { portBox.removeClass('port-highlight') }, 2000)
|
||||
})
|
||||
|
||||
// Testing servers
|
||||
\$('.testServer').click(function(event){
|
||||
removeObfuscation()
|
||||
var theButton = \$(this)
|
||||
|
||||
@@ -25,12 +25,6 @@
|
||||
</select>
|
||||
<span class="desc">$T('explain-load_balancing')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="ssl_ciphers">$T('opt-ssl_ciphers')</label>
|
||||
<input type="text" name="ssl_ciphers" id="ssl_ciphers" value="$ssl_ciphers" />
|
||||
<span class="desc">$T('explain-ssl_ciphers') <br>$T('readwiki')
|
||||
<a href="${helpuri}advanced/ssl-ciphers" target="_blank">${helpuri}advanced/ssl-ciphers</a></span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="max_art_tries">$T('opt-max_art_tries')</label>
|
||||
<input type="number" name="max_art_tries" id="max_art_tries" value="$max_art_tries" min="2" max="2000" />
|
||||
@@ -170,6 +164,30 @@
|
||||
<input type="checkbox" name="enable_all_par" id="enable_all_par" value="1" <!--#if int($enable_all_par) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-enable_all_par').replace('. ', '.<br/>')</span>
|
||||
</div>
|
||||
<!--#if not $nt#-->
|
||||
<div class="field-pair advanced-settings <!--#if not $have_nice then "disabled" else "" #-->">
|
||||
<label class="config" for="nice">$T('opt-nice')</label>
|
||||
<input type="text" name="nice" id="nice" value="$nice" <!--#if not $have_nice then 'readonly="readonly" disabled="disabled"' else "" #--> />
|
||||
<span class="desc">$T('explain-nice')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings <!--#if not $have_ionice then "disabled" else "" #-->">
|
||||
<label class="config" for="ionice">$T('opt-ionice')</label>
|
||||
<input type="text" name="ionice" id="ionice" value="$ionice" <!--#if not $have_ionice then 'readonly="readonly" disabled="disabled"' else "" #--> />
|
||||
<span class="desc">$T('explain-ionice')</span>
|
||||
</div>
|
||||
<!--#else#-->
|
||||
<div class="field-pair advanced-settings">
|
||||
|
||||
<label class="config" for="win_process_prio">$T('opt-win_process_prio')</label>
|
||||
<select name="win_process_prio" id="win_process_prio">
|
||||
<option value="4" <!--#if int($win_process_prio) == 4 then 'selected="selected"' else ""#-->>$T('win_process_prio-high')</option>
|
||||
<option value="3" <!--#if int($win_process_prio) == 3 then 'selected="selected"' else ""#-->>$T('win_process_prio-normal')</option>
|
||||
<option value="2" <!--#if int($win_process_prio) == 2 then 'selected="selected"' else ""#-->>$T('win_process_prio-low')</option>
|
||||
<option value="1" <!--#if int($win_process_prio) == 1 then 'selected="selected"' else ""#-->>$T('win_process_prio-idle')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-win_process_prio')</span>
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="par_option">$T('opt-par_option')</label>
|
||||
<input type="text" name="par_option" id="par_option" value="$par_option" />
|
||||
@@ -205,18 +223,6 @@
|
||||
<input type="checkbox" name="new_nzb_on_failure" id="new_nzb_on_failure" value="1" <!--#if int($new_nzb_on_failure) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-new_nzb_on_failure')</span>
|
||||
</div>
|
||||
<!--#if not $nt#-->
|
||||
<div class="field-pair advanced-settings <!--#if not $have_nice then "disabled" else "" #-->">
|
||||
<label class="config" for="nice">$T('opt-nice')</label>
|
||||
<input type="text" name="nice" id="nice" value="$nice" <!--#if not $have_nice then 'readonly="readonly" disabled="disabled"' else "" #--> />
|
||||
<span class="desc">$T('explain-nice')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings <!--#if not $have_ionice then "disabled" else "" #-->">
|
||||
<label class="config" for="ionice">$T('opt-ionice')</label>
|
||||
<input type="text" name="ionice" id="ionice" value="$ionice" <!--#if not $have_ionice then 'readonly="readonly" disabled="disabled"' else "" #--> />
|
||||
<span class="desc">$T('explain-ionice')</span>
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
<div class="field-pair">
|
||||
<label class="config" for="ignore_samples">$T('opt-ignore_samples')</label>
|
||||
<input type="checkbox" name="ignore_samples" id="ignore_samples" value="1" <!--#if int($ignore_samples) > 0 then 'checked="checked"' else ""#--> />
|
||||
|
||||
@@ -529,7 +529,7 @@ tr.separator {
|
||||
}
|
||||
#filebrowser_modal .checkbox {
|
||||
float: left;
|
||||
margin: 8px 5px 0x;
|
||||
margin: 8px 5px 0px;
|
||||
}
|
||||
#filebrowser_modal .checkbox input {
|
||||
margin-top: 1px;
|
||||
@@ -1002,7 +1002,7 @@ input[type="checkbox"] {
|
||||
}
|
||||
|
||||
.Servers .col2.server-disabled .label {
|
||||
color: ##777 !important;
|
||||
color: #777 !important;
|
||||
}
|
||||
|
||||
.Servers .col2 .label:nth-child(2) {
|
||||
@@ -1141,6 +1141,7 @@ input[type="checkbox"] {
|
||||
}
|
||||
.value-and-select select {
|
||||
min-width: 30px;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
.dotOne, .dotTwo, .dotThree {
|
||||
|
||||
@@ -354,6 +354,7 @@ $(document).ready(function () {
|
||||
success: function (json) {
|
||||
if (json.error) {
|
||||
$('#config_err_msg').text(json.error);
|
||||
alert(json.error)
|
||||
config_failure()
|
||||
} else if(json.value && json.value.restart_req) {
|
||||
// Trigger restart question
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
<hr />
|
||||
<div class="row options-function-box">
|
||||
<div class="col-sm-6">
|
||||
<a href="#" data-bind="click: forceDisconnect" class="btn btn-default "><span class="glyphicon glyphicon-minus-sign"></span> $T('link-forceDisc')</a>
|
||||
<a href="#" data-bind="click: forceDisconnect" class="btn btn-default" data-tooltip="true" data-placement="top" title="$T('explain-forceDisc')"><span class="glyphicon glyphicon-minus-sign"></span> $T('link-forceDisc')</a>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<a href="#" data-bind="click: repairQueue" data-tooltip="true" data-placement="top" title="$T('explain-Repair').replace('<br>',' ').replace('<br />',' ')" class="btn btn-default">
|
||||
@@ -633,7 +633,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<hr/>
|
||||
<p><small>Copyright (C) 2008-2017, The SABnzbd Team <team@sabnzbd.org><br/>$T('yourRights') </small></p>
|
||||
<p><small>Copyright (C) 2007-2018, The SABnzbd Team <team@sabnzbd.org><br/>$T('yourRights') </small></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -76,7 +76,7 @@ legend,
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
.navbar-collapse.in .dropdown-menu, {
|
||||
.navbar-collapse.in .dropdown-menu {
|
||||
border: none;
|
||||
}
|
||||
|
||||
|
||||
@@ -1253,8 +1253,10 @@ function loadingJSON(){
|
||||
<option value="180" >3 $T("minutes")</option>
|
||||
<option value="300" >5 $T("minutes")</option>
|
||||
<option value="0" >$T("none")</option>
|
||||
</select>
|
||||
<br />SABnzbd $T('version'): $version | smpl skin</a></p>
|
||||
</select></p>
|
||||
|
||||
<p><strong>This skin is no longer supported and may lose functionality in future releases.</strong></p>
|
||||
|
||||
<!--#if $new_release#-->
|
||||
<!--#set $msg=$T('ft-newRelease@1')%($new_release)#-->
|
||||
<b>$msg <a href="$new_rel_url" target="_blank">SF.net</a></b><br/>
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
$T('explain-language')<br /><br />
|
||||
<div class="main-container">
|
||||
<!--#for $l, $language in $languages#-->
|
||||
<label class="language <!--#if $lang == $l then 'language-active' else ''#-->">
|
||||
<label class="language">
|
||||
$language<br />
|
||||
<input type="radio" name="lang" id="$l" value="$l" <!--#if $lang == $l then 'checked="checked"' else ''#--> />
|
||||
<input type="radio" name="lang" id="$l" value="$l" <!--#if $active_lang == $l then 'checked="checked"' else ''#--> />
|
||||
</label>
|
||||
<!--#end for#-->
|
||||
<!--#if not $languages#-->
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<div class="clearfix"></div>
|
||||
<iframe style="float: right; width: 325px; height: 325px;" frameborder="0" src="https://sabnzbd.org/wizard#$language"></iframe>
|
||||
<iframe style="float: right; width: 325px; height: 325px;" frameborder="0" src="https://sabnzbd.org/wizard#$active_lang"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
<p><strong>$T('opt-complete_dir')</strong></p>
|
||||
<div class="quoteBlock">
|
||||
$complete_dir
|
||||
<a href="${access_url}config/folders" class="indented"><span class="glyphicon glyphicon-cog"></span></a>
|
||||
<a href="${access_url}/config/folders#complete_dir" class="indented"><span class="glyphicon glyphicon-cog"></span></a>
|
||||
</div>
|
||||
|
||||
<p><strong>$T('opt-download_dir')</strong></p>
|
||||
<div class="quoteBlock">
|
||||
$download_dir
|
||||
<a href="${access_url}config/folders" class="indented"><span class="glyphicon glyphicon-cog"></span></a>
|
||||
<a href="${access_url}/config/folders#complete_dir" class="indented"><span class="glyphicon glyphicon-cog"></span></a>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
|
||||
BIN
osx/unrar/unrar
BIN
osx/unrar/unrar
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2017 The SABnzbd-Team
|
||||
# Copyright 2011-2018 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: Danish <da@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Thomas Lucke (Lucky) <Unknown>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: Spanish <es@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Matti Ylönen <Unknown>\n"
|
||||
"Language-Team: Finnish <fi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Fox Ace <Unknown>\n"
|
||||
"Language-Team: French <fr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2017-08-01 16:45+0000\n"
|
||||
"Last-Translator: ION IL <Unknown>\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-02 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Tomasz 'Zen' Napierala <tomasz@napierala.org>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: lrrosa <Unknown>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: nicusor <Unknown>\n"
|
||||
"Language-Team: Romanian <ro@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Pavel Maryanov <Unknown>\n"
|
||||
"Language-Team: Russian <gnu@mx.ru>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2017-06-24 19:51+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Launchpad Serbian Translators\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-27 06:00+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
"Language: sr\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2017-06-24 19:50+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Swedish <sv@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-27 06:00+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:04+0000\n"
|
||||
"PO-Revision-Date: 2015-10-24 11:05+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2017 The SABnzbd-Team
|
||||
# Copyright 2011-2018 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
msgid ""
|
||||
@@ -12,7 +12,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ASCII\n"
|
||||
"Content-Transfer-Encoding: 7bit\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:56+W. Europe Standard Time\n"
|
||||
"POT-Creation-Date: 2018-03-15 09:00+W. Europe Standard Time\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr ""
|
||||
|
||||
@@ -457,7 +457,17 @@ msgstr ""
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr ""
|
||||
|
||||
@@ -477,11 +487,6 @@ msgstr ""
|
||||
msgid "Failed login for server %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr ""
|
||||
@@ -578,6 +583,10 @@ msgstr ""
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr ""
|
||||
@@ -586,7 +595,7 @@ msgstr ""
|
||||
msgid "User logged in"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr ""
|
||||
|
||||
@@ -594,7 +603,7 @@ msgstr ""
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr ""
|
||||
|
||||
@@ -916,6 +925,7 @@ msgstr ""
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr ""
|
||||
|
||||
@@ -1101,7 +1111,7 @@ msgstr ""
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr ""
|
||||
|
||||
@@ -1211,7 +1221,7 @@ msgid "Warnings"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr ""
|
||||
|
||||
@@ -1792,11 +1802,12 @@ msgstr ""
|
||||
msgid "Moderate"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
|
||||
@@ -1804,7 +1815,7 @@ msgstr ""
|
||||
msgid "Emergency"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr ""
|
||||
|
||||
@@ -2349,6 +2360,10 @@ msgstr ""
|
||||
msgid "Force Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid "Disconnect all active connections to usenet servers. Connections will be reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr ""
|
||||
@@ -2538,7 +2553,7 @@ msgid "Backup"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr ""
|
||||
|
||||
@@ -3090,6 +3105,10 @@ msgstr ""
|
||||
msgid "IONice Parameters"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr ""
|
||||
@@ -4651,10 +4670,6 @@ msgstr ""
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-10-27 21:53+0000\n"
|
||||
"Last-Translator: Søren <Unknown>\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:16+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Danish <da@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -119,7 +119,7 @@ msgid "Error"
|
||||
msgstr "Fejl"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd lukning udført."
|
||||
|
||||
@@ -490,7 +490,17 @@ msgstr ""
|
||||
"Du skal angive den maksimale båndbredde, før du kan angive en båndbredde "
|
||||
"begrænsning"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Kan ikke tilslutte til server %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernavnet løser ikke"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Server %s vil blive ignoreret for i %s minutter"
|
||||
|
||||
@@ -510,11 +520,6 @@ msgstr "Sandsynligt delt konto"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Det lykkedes ikke at logge på serveren %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Kan ikke tilslutte til server %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Forbindelse %s@%s mislykkedes, besked %s"
|
||||
@@ -621,6 +626,10 @@ msgstr "Advarsel: Localhost er tvetydig, bruge numerisk IP-adresse."
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Serveradressen \"%s:%s\" er ikke gyldigt."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "Bruger logget på webgrænsefladen"
|
||||
@@ -629,7 +638,7 @@ msgstr "Bruger logget på webgrænsefladen"
|
||||
msgid "User logged in"
|
||||
msgstr "Bruger logget ind"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Mangler sessionsnøgle"
|
||||
|
||||
@@ -637,7 +646,7 @@ msgstr "Mangler sessionsnøgle"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Fejl: Kræver sessionsnøgle"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Fejl: Forkert sessionsnøgle"
|
||||
|
||||
@@ -985,6 +994,7 @@ msgstr "Par verificering mislykkedes på %s, mens QuickCheck lykkedes"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Reparation mislykkedes, %s"
|
||||
|
||||
@@ -1176,7 +1186,7 @@ msgstr "NZB tilføjet i køen"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Ukendt kodning"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Fil %s er tom, springer over"
|
||||
|
||||
@@ -1286,7 +1296,7 @@ msgid "Warnings"
|
||||
msgstr "Advarsler"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inaktiv"
|
||||
|
||||
@@ -1909,11 +1919,12 @@ msgstr "Meget lav"
|
||||
msgid "Moderate"
|
||||
msgstr "Moderat"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Høj"
|
||||
|
||||
@@ -1921,7 +1932,7 @@ msgstr "Høj"
|
||||
msgid "Emergency"
|
||||
msgstr "Nødsituation"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Lav"
|
||||
|
||||
@@ -2466,6 +2477,12 @@ msgstr "Et andet problem"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Gennemtving afbrydelse"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Dette vil sende en test E-mail til din konto."
|
||||
@@ -2686,7 +2703,7 @@ msgid "Backup"
|
||||
msgstr "Sikkerhedskopi"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Læs mere om dette på Wiki Help!"
|
||||
|
||||
@@ -3332,6 +3349,10 @@ msgstr "God parameter"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "IONice parametre"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Afbryd når køen er tom"
|
||||
@@ -3655,7 +3676,7 @@ msgstr "Streng"
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 er højeste prioritet, 100 er den laveste prioritet"
|
||||
msgstr "0 er højeste prioritet, 99 er den laveste prioritet"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4973,10 +4994,6 @@ msgstr "Det lykkedes ikke at omdøbe: %s til %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Kunne ikke omdøbe lignende fil: %s til %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernavnet løser ikke"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Uautoriseret adgang"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-10-10 19:03+0000\n"
|
||||
"Last-Translator: Robin Munkittrick <Unknown>\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-05-31 06:22+0000\n"
|
||||
"Last-Translator: scope <Unknown>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-06-01 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18667)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "MultiPar binary... NOT found!"
|
||||
@@ -63,7 +63,7 @@ msgstr ""
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Downloads will not unpacked."
|
||||
msgstr "Downloads werden nicht enpackt."
|
||||
msgstr "Downloads werden nicht entpackt."
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "unrar binary... NOT found"
|
||||
@@ -123,7 +123,7 @@ msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd wurde beendet"
|
||||
|
||||
@@ -306,7 +306,7 @@ msgstr "Abgebrochen, unerwünschte Dateieindung gefunden"
|
||||
|
||||
#: sabnzbd/assembler.py [Warning message]
|
||||
msgid "WARNING: Paused job \"%s\" because of rating (%s)"
|
||||
msgstr "WARNUNG: Job \"%s\" aufgrund der Bewertung (%s) pausiert."
|
||||
msgstr "WARNUNG: Aufgabe \"%s\" aufgrund der Bewertung (%s) pausiert."
|
||||
|
||||
#: sabnzbd/assembler.py [Warning message]
|
||||
msgid "WARNING: Aborted job \"%s\" because of rating (%s)"
|
||||
@@ -509,7 +509,17 @@ msgstr ""
|
||||
"Bevor ein Bandbreitenlimit gesetzt werden kann, muss die maximale Bandbreite "
|
||||
"festgelegt werden"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Verbindung zum Server %s kann nicht hergestellt werden. %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Konnte Servernamen nicht auflösen"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Server %s wird für %s Minuten ignoriert"
|
||||
|
||||
@@ -529,11 +539,6 @@ msgstr "Möglicherweise wird das Konto geteilt"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Anmelden beim Server fehlgeschlagen. %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Verbindung zum Server %s kann nicht hergestellt werden. %s"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Fehler beim Verbinden mit %s@%s, Meldung = %s"
|
||||
@@ -643,6 +648,10 @@ msgstr ""
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Server-Adresse \"%s:%s\" ist ungültig."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr "Verbindung vom Host \"%s\" abgelehnt von:"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "Benutzer im Web-Interface angemeldet"
|
||||
@@ -651,7 +660,7 @@ msgstr "Benutzer im Web-Interface angemeldet"
|
||||
msgid "User logged in"
|
||||
msgstr "Benutzer angemeldet"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Sitzungs-Schlüssel fehlt"
|
||||
|
||||
@@ -659,7 +668,7 @@ msgstr "Sitzungs-Schlüssel fehlt"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Fehler: Sitzungsschlüssel wird benötigt"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Fehler: Sitzungsschlüssel ungültig"
|
||||
|
||||
@@ -765,6 +774,8 @@ msgstr "Fehlerhafter Parameter"
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
"Der Category-Ordner darf kein Unterordner des Temporärer Download-Ordners "
|
||||
"sein."
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
@@ -1013,6 +1024,7 @@ msgstr ""
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Reparatur fehlgeschlagen. %s"
|
||||
|
||||
@@ -1214,7 +1226,7 @@ msgstr "NZB zur Warteschlange hinzugefügt"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Unbekannte Kodierung"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Die Datei %s ist leer und wird daher übersprungen"
|
||||
|
||||
@@ -1327,7 +1339,7 @@ msgid "Warnings"
|
||||
msgstr "Warnungen"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Leerlauf"
|
||||
|
||||
@@ -1966,11 +1978,12 @@ msgstr "Sehr niedrig"
|
||||
msgid "Moderate"
|
||||
msgstr "Mittel"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Hoch"
|
||||
|
||||
@@ -1978,7 +1991,7 @@ msgstr "Hoch"
|
||||
msgid "Emergency"
|
||||
msgstr "Notfall"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Gering"
|
||||
|
||||
@@ -2523,6 +2536,15 @@ msgstr "Anderes Problem"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Verbindung trennen"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
"Alle aktiven Verbindungen zu Usenet-Servern trennen. Verbindungen werden "
|
||||
"nach ein paar Sekunden wiederhergestellt, falls sich noch Artikel in der "
|
||||
"Warteschlange befinden."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Sendet eine Test-E-Mail an Ihr Konto."
|
||||
@@ -2746,7 +2768,7 @@ msgid "Backup"
|
||||
msgstr "Sicherheitskopie"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Lesen Sie dazu die Hilfe im Wiki!"
|
||||
|
||||
@@ -3270,7 +3292,8 @@ msgstr "Aktion wenn eine verschlüsselte RAR Datei geladen wird"
|
||||
msgid ""
|
||||
"In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr ""
|
||||
"Im Fall von \"Pause\" müssen Sie ein Kennwort setzen und den Job fortsetzen."
|
||||
"Im Fall von \"Pause\" müssen Sie ein Kennwort setzen und den Aufgabe "
|
||||
"fortsetzen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
@@ -3418,6 +3441,10 @@ msgstr "Nice-Parameter"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "IONice-Parameter"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr "Priorität von externem Prozess"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Bei leerer Warteschlange Verbindung trennen"
|
||||
@@ -3759,7 +3786,7 @@ msgstr "Strikt"
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 ist die höchste, 100 die niedrigste Priorität"
|
||||
msgstr "0 ist die höchste, 99 die niedrigste Priorität"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4087,7 +4114,7 @@ msgstr "Geräte, welche die Nachrichten empfangen sollen"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
msgstr "Notfall Wiederanlauf"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
@@ -4095,11 +4122,12 @@ msgstr "Wie oft die selbe benachrichtigung (in Sekunden) geschickt wird."
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
msgstr "Notfall Verfall"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
"Wieviele Sekunden soll versucht werden deine Nachricht erneut zu versenden"
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
@@ -4256,7 +4284,7 @@ msgstr "S01E05 Episoden-Ordner"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
msgstr "Aufgabe Name als Ordnername"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
@@ -4328,7 +4356,7 @@ msgstr "Ursprünglicher Dateiname"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
msgstr "Ursprünglicher Aufgabe Name"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4700,6 +4728,8 @@ msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
"Alle Benutzernamen, Passwörter und API-Schlüssel werden automatisch aus dem "
|
||||
"Log und der darin enthaltenen Kopie deiner Einstellungen entfernt."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
@@ -5085,10 +5115,6 @@ msgstr "Umbenennen von %s nach %s fehlgeschlagen."
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Umbenennen der gleichen Datei von %s nach %s fehlgeschlagen."
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Konnte Servernamen nicht auflösen"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Unerlaubter Zugriff"
|
||||
|
||||
@@ -120,3 +120,5 @@ msgstr "Separate multiple URLs with a comma"
|
||||
msgid "Advanced"
|
||||
msgstr "Advanced Settings"
|
||||
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 is highest priority, 99 is the lowest priority"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-06-22 07:07+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Spanish <es@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -117,7 +117,7 @@ msgid "Error"
|
||||
msgstr "Se ha producido un error"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Cierre de SABnzbd terminado"
|
||||
|
||||
@@ -488,7 +488,17 @@ msgstr ""
|
||||
"Debe establecer un ancho de banda máximo antes de poder establecer un límite "
|
||||
"de ancho de banda"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Error en inicio de conexion a servidor %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "No se puede resolver el nombre de servidor"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "El servidor %s se ignorará por %s minutos"
|
||||
|
||||
@@ -508,11 +518,6 @@ msgstr "Compartiendo de cuenta probable"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Registraccion fallo para servidor %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Error en inicio de conexion a servidor %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Ha fallado la conexión a %s@%s, el mensaje=%s"
|
||||
@@ -620,6 +625,10 @@ msgstr "Alerta: LOCALHOST es ambiguo, use dirección de IP numérica"
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "La dirección del servidor «%s:%s» no es válida."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "Usuario conectado a la interfaz web"
|
||||
@@ -628,7 +637,7 @@ msgstr "Usuario conectado a la interfaz web"
|
||||
msgid "User logged in"
|
||||
msgstr "Usuario conectado"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Falta clave de sesión"
|
||||
|
||||
@@ -636,7 +645,7 @@ msgstr "Falta clave de sesión"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Error: Clave de sesión requerido"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Error: Clave de sesión erróneo"
|
||||
|
||||
@@ -988,6 +997,7 @@ msgstr ""
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "La reparación ha fallado, %s"
|
||||
|
||||
@@ -1184,7 +1194,7 @@ msgstr "NZB añadido a la cola"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Codificación desconocida"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "El fichero%s está vacío, omitiendo"
|
||||
|
||||
@@ -1294,7 +1304,7 @@ msgid "Warnings"
|
||||
msgstr "Advertencias"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inactivo"
|
||||
|
||||
@@ -1925,11 +1935,12 @@ msgstr "Muy baja"
|
||||
msgid "Moderate"
|
||||
msgstr "Moderada"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Alta"
|
||||
|
||||
@@ -1937,7 +1948,7 @@ msgstr "Alta"
|
||||
msgid "Emergency"
|
||||
msgstr "Emergencia"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Baja"
|
||||
|
||||
@@ -2482,6 +2493,12 @@ msgstr "Otro problema"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Forzar desconexión"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Se enviará un email de prueba a tu cuenta"
|
||||
@@ -2697,7 +2714,7 @@ msgid "Backup"
|
||||
msgstr "Copia de seguridad"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Lee la ayuda en la Wiki (inglés) acerca de esto!"
|
||||
|
||||
@@ -3345,6 +3362,10 @@ msgstr "Parámetros Nice"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "Parámetros IONice"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Desconectar si la cola está vacía"
|
||||
@@ -3676,7 +3697,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 El prioridad más alta, 100 es la prioridad más baja"
|
||||
msgstr "0 El prioridad más alta, 99 es la prioridad más baja"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4996,10 +5017,6 @@ msgstr "Error al renombrar: %s a %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Error al renombrar ficheros similares: %s a %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "No se puede resolver el nombre de servidor"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Acceso no autorizado"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-06-22 07:07+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:19+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Finnish <fi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -119,7 +119,7 @@ msgid "Error"
|
||||
msgstr "Virhe"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd sammutus valmis"
|
||||
|
||||
@@ -486,7 +486,17 @@ msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Sinun täytyy määrittää enimmäiskaista ennen kaistarajoituksen käyttöönottoa."
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Palvelimeen %s ei voida yhdistää [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Palvelimen osoitetta ei voitu selvittää"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Palvelin %s ohitetaan %s minuutiksi"
|
||||
|
||||
@@ -506,11 +516,6 @@ msgstr "Mahdollinen tilin jakaminen"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Kirjautuminen palvelimelle %s epäonnistui"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Palvelimeen %s ei voida yhdistää [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Yhdistäminen %s@%s epäonnistui, viesti=%s"
|
||||
@@ -617,6 +622,10 @@ msgstr "Varoitus: LOCALHOST on hämärä, käytä numeerista IP-osoitetta."
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Palvelimen osoite \"%s:%s\" ei ole kelvollinen."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "Käyttäjä kirjautui sisään web-käyttöliittymään"
|
||||
@@ -625,7 +634,7 @@ msgstr "Käyttäjä kirjautui sisään web-käyttöliittymään"
|
||||
msgid "User logged in"
|
||||
msgstr "Käyttäjä kirjautui sisään"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Istuntoavain puuttuu"
|
||||
|
||||
@@ -633,7 +642,7 @@ msgstr "Istuntoavain puuttuu"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Virhe: Istuntoavain vaaditaan"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Virhe: Istuntoavain on virheellinen"
|
||||
|
||||
@@ -981,6 +990,7 @@ msgstr ""
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Korjaus epäonnistui, %s"
|
||||
|
||||
@@ -1173,7 +1183,7 @@ msgstr "NZB lisätty jonoon"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Tuntematon koodaus"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Tiedosto %s on tyhjä, ohitetaan"
|
||||
|
||||
@@ -1283,7 +1293,7 @@ msgid "Warnings"
|
||||
msgstr "Varoitukset"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Toimeton"
|
||||
|
||||
@@ -1908,11 +1918,12 @@ msgstr "Erittäin vähäinen"
|
||||
msgid "Moderate"
|
||||
msgstr "Kohtalainen"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normaali"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Korkea"
|
||||
|
||||
@@ -1920,7 +1931,7 @@ msgstr "Korkea"
|
||||
msgid "Emergency"
|
||||
msgstr "Hälytys"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Matala"
|
||||
|
||||
@@ -2465,6 +2476,12 @@ msgstr "Muu ongelma"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Pakota yhteyden katkaisu"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Tämä lähettää testiviestin sähköpostiosoitteeseesi."
|
||||
@@ -2685,7 +2702,7 @@ msgid "Backup"
|
||||
msgstr "Varmuuskopioi"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Lue Wikin ohjeet tähän!"
|
||||
|
||||
@@ -3338,6 +3355,10 @@ msgstr "Nice muuttujat"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "IONice muuttujat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Katkaise yhteys kun jono on tyhjä"
|
||||
@@ -3664,7 +3685,7 @@ msgstr "Tiukka"
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 on suurin prioriteetti, 100 on pienin prioriteetti"
|
||||
msgstr "0 on suurin prioriteetti, 99 on pienin prioriteetti"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4986,10 +5007,6 @@ msgstr "Virhe uudelleennimettäessä: %s %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Samankaltaisen tiedoston uudelleennimeäminen epäonnistui: %s %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Palvelimen osoitetta ei voitu selvittää"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Luvaton käyttö"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-12-06 19:46+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-03-16 21:07+0000\n"
|
||||
"Last-Translator: Fred <88com88@gmail.com>\n"
|
||||
"Language-Team: French <fr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-17 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -123,7 +123,7 @@ msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Arrêt de SABnzbd terminé"
|
||||
|
||||
@@ -511,7 +511,17 @@ msgstr ""
|
||||
"Vous devez définir une bande passante maximale avant de pouvoir définir une "
|
||||
"limite de bande passante"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Impossible de se connecter au serveur %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Resolution du nom de serveur impossible"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Le serveur %s sera ignoré pendant %s minutes"
|
||||
|
||||
@@ -531,11 +541,6 @@ msgstr "Partage de compte probable"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Échec de la connexion au serveur %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Impossible de se connecter au serveur %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "La connexion à %s@%s a échoué, message=%s"
|
||||
@@ -646,6 +651,10 @@ msgstr ""
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "L' adresse du serveur \"%s:%s\" n'est pas valide."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr "Connexion refusée avec le nom d'hôte \"%s\" à partir de :"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "Utilisateur connecté à l'interface web"
|
||||
@@ -654,7 +663,7 @@ msgstr "Utilisateur connecté à l'interface web"
|
||||
msgid "User logged in"
|
||||
msgstr "Utilisateur connecté"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Clé de session manquante"
|
||||
|
||||
@@ -662,7 +671,7 @@ msgstr "Clé de session manquante"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Erreur : Clé de session requise"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Erreur : Clé de session incorrecte"
|
||||
|
||||
@@ -1022,6 +1031,7 @@ msgstr ""
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Échec de la réparation, %s"
|
||||
|
||||
@@ -1222,7 +1232,7 @@ msgstr "NZB ajouté à la file d'attente"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Encodage inconnu"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Fichier %s vide, ignoré"
|
||||
|
||||
@@ -1332,7 +1342,7 @@ msgid "Warnings"
|
||||
msgstr "Avertissements"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "A l'arrêt"
|
||||
|
||||
@@ -1974,11 +1984,12 @@ msgstr "Très basse"
|
||||
msgid "Moderate"
|
||||
msgstr "Modéré"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normale"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Haute"
|
||||
|
||||
@@ -1986,7 +1997,7 @@ msgstr "Haute"
|
||||
msgid "Emergency"
|
||||
msgstr "Urgence"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Basse"
|
||||
|
||||
@@ -2531,6 +2542,15 @@ msgstr "Autre problème"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Forcer la déconnexion"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
"Déconnecte toutes les connexions actives aux serveurs Usenet. Les connexions "
|
||||
"seront rouvertes après quelques secondes si des éléments sont présents dans "
|
||||
"la file d'attente."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Ceci enverra un email de test sur votre compte."
|
||||
@@ -2756,7 +2776,7 @@ msgid "Backup"
|
||||
msgstr "Secours"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Consultez le Wiki pour plus d'info à ce sujet (en anglais) !"
|
||||
|
||||
@@ -3430,6 +3450,10 @@ msgstr "Paramètres 'Nice'"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "Paramètres 'IONice'"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr "Priorité de processus externe"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Se déconnecter lorsque la file d'attente est vide"
|
||||
@@ -3768,7 +3792,7 @@ msgstr "Strict"
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 est la priorité la plus élevée, 100 est la priorité la plus faible"
|
||||
msgstr "0 est la priorité la plus élevée, 99 est la priorité la plus faible"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -5106,10 +5130,6 @@ msgstr "Échec du renommage : %s en %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Impossible de renommer le fichier similaire : %s en %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Resolution du nom de serveur impossible"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Accès non autorisé"
|
||||
|
||||
123
po/main/he.po
123
po/main/he.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-12-06 19:50+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-06-17 21:21+0000\n"
|
||||
"Last-Translator: ION IL <Unknown>\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-06-18 05:54+0000\n"
|
||||
"X-Generator: Launchpad (build 18688)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -114,7 +114,7 @@ msgid "Error"
|
||||
msgstr "שגיאה"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "הסתיים SABnzbd כיבוי"
|
||||
|
||||
@@ -198,7 +198,7 @@ msgstr "%s לא ניתן ליצור קובץ זמני עבור"
|
||||
|
||||
#: sabnzbd/__init__.py [Warning message] # sabnzbd/__init__.py [Warning message]
|
||||
msgid "Trying to set status of non-existing server %s"
|
||||
msgstr "%s מנסה לקבוע מצב של שרת בלתי-קיים"
|
||||
msgstr "%s מנסה לקבוע מעמד של שרת בלתי קיים"
|
||||
|
||||
#: sabnzbd/__init__.py [Error message]
|
||||
msgid "Failure in tempfile.mkstemp"
|
||||
@@ -224,7 +224,7 @@ msgstr " פותר כתובת"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "ללא"
|
||||
msgstr "אין"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/interface.py # sabnzbd/skintext.py [Default value, used in dropdown menus]
|
||||
msgid "Default"
|
||||
@@ -314,7 +314,7 @@ msgstr "\"%s\" כנראה מוצפנת: \"סיסמה\" בשם הקובץ \"%s\"
|
||||
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "video"
|
||||
msgstr "וידאו"
|
||||
msgstr "וידיאו"
|
||||
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "audio"
|
||||
@@ -481,7 +481,17 @@ msgstr "מושהה"
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr "אתה חייב לקבוע רוחב פס מרבי לפני שאתה קובע מגבלת רוחב פס"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "%s [%s] לא ניתן להתחבר לשרת"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "שם השרת אינו פותר"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "ייתקל בהתעלמות למשך %s דקות %s השרת"
|
||||
|
||||
@@ -501,11 +511,6 @@ msgstr "שיתוף סביר של חשבון"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "%s נכשל בכניסה לשרת"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "%s [%s] לא ניתן להתחבר לשרת"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "%s=נכשלה, הודעה %s@%s התחברות אל"
|
||||
@@ -612,6 +617,10 @@ msgstr ".מספרית IP הוא דו-משמעי, השתמש בכתובת LOCALHO
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr ".אינה תקפה \"%s:%s\" כתובת השרת"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ":מן \"%s\" חיבור מסורב עם מארח"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "משתמש התחבר לממשק הרשת"
|
||||
@@ -620,7 +629,7 @@ msgstr "משתמש התחבר לממשק הרשת"
|
||||
msgid "User logged in"
|
||||
msgstr "משתמש התחבר"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "מפתח חסר של שיח"
|
||||
|
||||
@@ -628,7 +637,7 @@ msgstr "מפתח חסר של שיח"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "שגיאה: מפתח דרוש של שיח"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "שגיאה: מפתח לא נכון של שיח"
|
||||
|
||||
@@ -637,21 +646,21 @@ msgid ""
|
||||
"API Key missing, please enter the api key from Config->General into your 3rd "
|
||||
"party program:"
|
||||
msgstr ""
|
||||
"מתצורה->כללי לתוך תכנית הצד השלישי שלך api-חסר, אנא הכנס את מפתח ה API מפתח:"
|
||||
"מתצורה->כללי לתוך תוכנית הצד השלישי שלך api-חסר, אנא הכנס את מפתח ה API מפתח:"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"API Key incorrect, Use the api key from Config->General in your 3rd party "
|
||||
"program:"
|
||||
msgstr ""
|
||||
"מתצורה->כללי בתכנית הצד השלישי שלך api-אינו נכון, השתמש במפתח ה API מפתח:"
|
||||
"מתצורה->כללי בתוכנית הצד השלישי שלך api-אינו נכון, השתמש במפתח ה API מפתח:"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Authentication missing, please enter username/password from Config->General "
|
||||
"into your 3rd party program:"
|
||||
msgstr ""
|
||||
":אימות חסר, אנא הכנס שם משתמש/סיסמה מתוך תצורה->כללי לתוך תכנית הצד השלישי "
|
||||
":אימות חסר, אנא הכנס שם משתמש/סיסמה מתוך תצורה->כללי לתוך תוכנית הצד השלישי "
|
||||
"שלך"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
@@ -974,6 +983,7 @@ msgstr "!בעוד שבדיקה זריזה הצליחה ,%s-נכשל ב Par וי
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "%s ,תיקון נכשל"
|
||||
|
||||
@@ -988,7 +998,7 @@ msgstr "%s על ערכת par2_repair בזמן הרצת \"%s\" שגיאה"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"[%s] PAR2 received incorrect options, check your Config->Switches settings"
|
||||
msgstr "קיבל אפשרויות שגויות, בדוק את קביעות תצורה->מתגים שלך PAR2 [%s]"
|
||||
msgstr "קיבל אפשרויות שגויות, בדוק את הגדרות תצורה->מתגים שלך PAR2 [%s]"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "[%s] Verified in %s, all files correct"
|
||||
@@ -1080,7 +1090,7 @@ msgstr "וויקי"
|
||||
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Startup/Shutdown"
|
||||
msgstr "אתחול / כיבוי"
|
||||
msgstr "הזנק/כיבוי"
|
||||
|
||||
#: sabnzbd/notifier.py [Notification] # sabnzbd/skintext.py [Config->RSS after adding to queue]
|
||||
msgid "Added NZB"
|
||||
@@ -1144,7 +1154,7 @@ msgstr "Windows נכשל בשליחת התראת"
|
||||
|
||||
#: sabnzbd/nzbqueue.py [Warning message] # sabnzbd/postproc.py [Warning message]
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "תור ישן התגלה, השתמש במצב->תיקון כדי להמיר את התור"
|
||||
msgstr "תור ישן התגלה, השתמש במעמד->תיקון כדי להמיר את התור"
|
||||
|
||||
#: sabnzbd/nzbqueue.py [Error message]
|
||||
msgid "Incompatible queuefile found, cannot proceed"
|
||||
@@ -1166,7 +1176,7 @@ msgstr "התווסף לתור NZB"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "הצפנה בלתי ידועה <- %s"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "ריק, מדלג %s הקובץ"
|
||||
|
||||
@@ -1276,7 +1286,7 @@ msgid "Warnings"
|
||||
msgstr "אזהרות"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "סרק"
|
||||
|
||||
@@ -1432,9 +1442,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"\n"
|
||||
" אחרת SABnzbd גילה נתונים שמורים מגרסת SABnzbd<br>\n"
|
||||
" .אבל אינו יכול להשתמש מחדש בנתונים של התכנית האחרת<br><br>\n"
|
||||
" .אתה אולי תרצה לסיים את התור שלך תחילה עם התכנית האחרת<br><br>\n"
|
||||
" .\"--clean\" לאחר מכן, התחל תכנית זו עם האפשרות<br>\n"
|
||||
" .אבל אינו יכול להשתמש מחדש בנתונים של התוכנית האחרת<br><br>\n"
|
||||
" .אתה אולי תרצה לסיים את התור שלך תחילה עם התוכנית האחרת<br><br>\n"
|
||||
" .\"--clean\" לאחר מכן, התחל תוכנית זו עם האפשרות<br>\n"
|
||||
" !זה ימחק את התור וההיסטוריה הנוכחיים<br>\n"
|
||||
" .\"%s\" קרא את הקובץ SABnzbd"
|
||||
|
||||
@@ -1447,7 +1457,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"\n"
|
||||
" .%s-אינו יכול למצוא את קבצי ממשק הרשת שלו ב SABnzbd<br>\n"
|
||||
" .אנא התקן את התכנית שוב<br>\n"
|
||||
" .אנא התקן את התוכנית שוב<br>\n"
|
||||
" <br>\n"
|
||||
|
||||
#: sabnzbd/panic.py
|
||||
@@ -1480,7 +1490,7 @@ msgstr "פתח חלון מסוף והקלד את הקו (דוגמה):"
|
||||
|
||||
#: sabnzbd/panic.py
|
||||
msgid "Program did not start!"
|
||||
msgstr "!התכנית לא התחילה"
|
||||
msgstr "!התוכנית לא התחילה"
|
||||
|
||||
#: sabnzbd/panic.py
|
||||
msgid ""
|
||||
@@ -1901,11 +1911,12 @@ msgstr "נמוכה מאוד"
|
||||
msgid "Moderate"
|
||||
msgstr "בינונית"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "רגילה"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "גבוהה"
|
||||
|
||||
@@ -1913,7 +1924,7 @@ msgstr "גבוהה"
|
||||
msgid "Emergency"
|
||||
msgstr "חירום"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "נמוכה"
|
||||
|
||||
@@ -2083,7 +2094,7 @@ msgstr "דווח"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Video"
|
||||
msgstr "וידאו"
|
||||
msgstr "וידיאו"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Audio"
|
||||
@@ -2136,7 +2147,7 @@ msgstr "הגדר"
|
||||
|
||||
#: sabnzbd/skintext.py [Main menu item] # sabnzbd/skintext.py [History table header]
|
||||
msgid "Status"
|
||||
msgstr "מצב"
|
||||
msgstr "מעמד"
|
||||
|
||||
#: sabnzbd/skintext.py [Main menu item]
|
||||
msgid "Help"
|
||||
@@ -2224,7 +2235,7 @@ msgstr "שחרור חדש %s זמין ב"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Are you sure you want to shutdown SABnzbd?"
|
||||
msgstr "?SABnzbd האם אתה בטוח שברצונך לכבות את"
|
||||
msgstr "?SABnzbd האם אתה בטוח שאתה רוצה לכבות את"
|
||||
|
||||
#: sabnzbd/skintext.py [Add NZB to queue (button)] # sabnzbd/skintext.py [Add NZB to queue (header)]
|
||||
msgid "Add"
|
||||
@@ -2458,6 +2469,14 @@ msgstr "בעיה אחרת"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "אלץ ניתוק"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
"חיבורים ייפתחו מחדש לאחר מספר שניות אם יש פריטים בתור .usenet נתק את כל "
|
||||
"החיבורים הפעילים אל שרתי"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr ".זה ישלח דוא\"ל בדיקה לחשבונך"
|
||||
@@ -2592,7 +2611,7 @@ msgid ""
|
||||
"stability problem.<br />Downloading will be paused before the restart and "
|
||||
"resume afterwards."
|
||||
msgstr ""
|
||||
".SABnzbd זה יפעיל מחדש את<br />השתמש בזה כשאתה חושב שלתכנית יש בעית "
|
||||
".SABnzbd זה יפעיל מחדש את<br />השתמש בזה כשאתה חושב שלתוכנית יש בעית "
|
||||
"יציבות.<br />הורדה תושהה לפני ההפעלה מחדש ותומשך לאחר מכן."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2672,7 +2691,7 @@ msgid "Backup"
|
||||
msgstr "גיבוי"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "!קרא את עזרת וויקי על זה"
|
||||
|
||||
@@ -2901,7 +2920,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr ".SABnzbd מפתח זה יתן לתכניות צד שלישי גישה מלאה אל"
|
||||
msgstr ".SABnzbd מפתח זה יתן לתוכניות צד שלישי גישה מלאה אל"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "NZB Key"
|
||||
@@ -2909,7 +2928,7 @@ msgstr "NZB מפתח"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will allow 3rd party programs to add NZBs to SABnzbd."
|
||||
msgstr ".SABnzbd אל NZB מפתח זה יתיר לתכניות צד שלישי להוסיף קבצי"
|
||||
msgstr ".SABnzbd אל NZB מפתח זה יתיר לתוכניות צד שלישי להוסיף קבצי"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Generate New Key"
|
||||
@@ -3309,6 +3328,10 @@ msgstr "Nice משתני"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "IONice משתני"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr "עדיפות תהליך חיצוני"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "התנתק בתור ריק"
|
||||
@@ -3330,7 +3353,7 @@ msgid ""
|
||||
"Posts will be paused untill they are at least this age. Setting job priority "
|
||||
"to Force will skip the delay."
|
||||
msgstr ""
|
||||
".רשומות יושהו עד שהן לפחות בגיל זה. קביעת עדיפות עבודה אל אילוץ תדלג על "
|
||||
".רשומות יושהו עד שהן לפחות בגיל זה. הגדרת עדיפות עבודה אל אילוץ תדלג על "
|
||||
"העיכוב"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3371,7 +3394,7 @@ msgstr ".Windows עבור שרתים: וודא שהשמות תואמים עם"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Launch Browser on Startup"
|
||||
msgstr "הפעל דפדפן באתחול"
|
||||
msgstr "הפעל דפדפן בהזנק"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Launch the default web browser when starting SABnzbd."
|
||||
@@ -3392,7 +3415,7 @@ msgstr "התעלם מדוגמאות"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter out sample files (e.g. video samples)."
|
||||
msgstr ".(סנן החוצה קבצי דוגמית (לדוגמה דוגמיות וידאו"
|
||||
msgstr "(סנן החוצה קבצי דוגמית (לדוגמה, דוגמיות וידיאו"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Delete after download"
|
||||
@@ -3523,7 +3546,7 @@ msgstr "ולא השהה אם"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Video rating"
|
||||
msgstr "מידרג וידאו"
|
||||
msgstr "מידרג וידיאו"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Audio rating"
|
||||
@@ -3631,7 +3654,7 @@ msgstr "קפדני"
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 הוא העדיפות הגבוהה ביותר, 100 הוא העדיפות הנמוכה ביותר"
|
||||
msgstr "0 הוא העדיפות הגבוהה ביותר, 99 הוא העדיפות הנמוכה ביותר"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4217,7 +4240,7 @@ msgstr "מיין מחרוזת"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-part label"
|
||||
msgstr "תווית מרובה חלקים"
|
||||
msgstr "תווית מרובת-חלקים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "In folders"
|
||||
@@ -4368,7 +4391,7 @@ msgstr "SABnzbd הפעל מחדש את"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Status and interface options"
|
||||
msgstr "אפשרויות מצב וממשק"
|
||||
msgstr "אפשרויות של מעמד וממשק"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Or drag and drop files in the window!"
|
||||
@@ -4396,7 +4419,7 @@ msgstr "קצב רענון"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use global interface settings"
|
||||
msgstr "השתמש בקביעות ממשק עולמיות"
|
||||
msgstr "השתמש בהגדרות ממשק עולמיות"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Queue item limit"
|
||||
@@ -4511,7 +4534,7 @@ msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will "
|
||||
"be lost after you close the browser!"
|
||||
msgstr ""
|
||||
"!אחסון מקומי (עוגיות) מושבת בדפדפן שלך, קביעות ממשק יאבדו לאחר שתסגור את "
|
||||
"!אחסון מקומי (עוגיות) מושבת בדפדפן שלך, הגדרות ממשק יאבדו לאחר שתסגור את "
|
||||
"הדפדפן"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4810,7 +4833,7 @@ msgstr "תצוגה כפולה 2"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Are you sure you want to restart SABnzbd?"
|
||||
msgstr "?SABnzbd האם אתה בטוח שברצונך להפעיל מחדש את"
|
||||
msgstr "?SABnzbd האם אתה בטוח שאתה רוצה להפעיל מחדש את"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Hide Edit Options"
|
||||
@@ -4943,10 +4966,6 @@ msgstr "%s אל %s:נכשל בשינוי שם"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "%s אל %s :נכשל בשינוי שם של קובץ דומה"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "שם השרת אינו פותר"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "גישה בלתי מורשת"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-09-03 14:07+0000\n"
|
||||
"Last-Translator: Steffen Bærø <steffen.baro@gmail.com>\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -118,7 +118,7 @@ msgid "Error"
|
||||
msgstr "Feil"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd er nå avsluttet"
|
||||
|
||||
@@ -482,7 +482,17 @@ msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Du må sette maks båndbredde før du kan sette en båndbreddebegrensning"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Kan ikke koble til server %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Kunne ikke finne servernavn"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Server %s vil bli ignorert i løpet av %s minutter"
|
||||
|
||||
@@ -502,11 +512,6 @@ msgstr "Mistenkt kontodeling"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Kunne ikke logge inn på server %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Kan ikke koble til server %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Kontaker %s@%s feilet, feilmelding=%s"
|
||||
@@ -613,6 +618,10 @@ msgstr "Advarsel: LOCALHOST er tvetydig, bruk numerisk IP-adresse."
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Serveradressen \"%s:%s\" er ikke gyldig."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "Bruker logget inn i webgrensesnitt"
|
||||
@@ -621,7 +630,7 @@ msgstr "Bruker logget inn i webgrensesnitt"
|
||||
msgid "User logged in"
|
||||
msgstr "Bruker pålogget"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Mangler sesjonsnøkkel"
|
||||
|
||||
@@ -629,7 +638,7 @@ msgstr "Mangler sesjonsnøkkel"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Feil: Krever sesjonsnøkkel"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Feil: Feil sesjonsnøkkel"
|
||||
|
||||
@@ -976,6 +985,7 @@ msgstr "Par verifisering feilet på %s, mens hurtigsjekk var vellykket!"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Reparasjon mislyktes, %s"
|
||||
|
||||
@@ -1167,7 +1177,7 @@ msgstr "NZB er lagt til i køen"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Ukjent koding"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Fil %s er tom, hopper over"
|
||||
|
||||
@@ -1277,7 +1287,7 @@ msgid "Warnings"
|
||||
msgstr "Advarsler"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Ledig"
|
||||
|
||||
@@ -1900,11 +1910,12 @@ msgstr "Veldig lav"
|
||||
msgid "Moderate"
|
||||
msgstr "Moderer"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Høy"
|
||||
|
||||
@@ -1912,7 +1923,7 @@ msgstr "Høy"
|
||||
msgid "Emergency"
|
||||
msgstr "Nødssituasjon"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Lav"
|
||||
|
||||
@@ -2458,6 +2469,12 @@ msgstr "Andre problemer"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Tving frakobling"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Dette vil sende en test e-post til din konto."
|
||||
@@ -2671,7 +2688,7 @@ msgid "Backup"
|
||||
msgstr "Sikkerhetskopi"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Les Wiki Help fer dette!"
|
||||
|
||||
@@ -3307,6 +3324,10 @@ msgstr "Nice parametere"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "IONice parametere"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Koble fra når køen er tom"
|
||||
@@ -3627,7 +3648,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 er høyeste prioritet, 100 er laveste prioritet"
|
||||
msgstr "0 er høyeste prioritet, 99 er laveste prioritet"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4938,10 +4959,6 @@ msgstr "Kunne ikke endre navn fra: %s til %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Kunne ikke endre navn på lik fil: %s til %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Kunne ikke finne servernavn"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Uautorisert tilgang"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-12-08 10:47+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-03-16 12:21+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-09 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-17 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -121,7 +121,7 @@ msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd is afgesloten"
|
||||
|
||||
@@ -504,7 +504,17 @@ msgstr ""
|
||||
"Je moet eerst een maximumbandbreedte instellen voordat je een limiet kunt "
|
||||
"instellen"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Verbinding maken met server %s [%s] niet mogelijk"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernaam niet te vinden"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Server %s wordt gedurende %s minuten genegeerd"
|
||||
|
||||
@@ -524,11 +534,6 @@ msgstr "Mogelijk delen van account"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Aanmelden bij server %s mislukt"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Verbinding maken met server %s [%s] niet mogelijk"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Verbinding %s@%s mislukt, bericht=%s"
|
||||
@@ -635,6 +640,10 @@ msgstr "Let op: LOCALHOST is niet eenduidig, gebruik een numeriek IP-adres."
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Serveradres \"%s:%s\" is niet geldig."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr "Verbinding met hostnaam \"%s\" geweigerd van:"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "Gebruiker heeft ingelogd"
|
||||
@@ -643,7 +652,7 @@ msgstr "Gebruiker heeft ingelogd"
|
||||
msgid "User logged in"
|
||||
msgstr "Gebruiker ingelogd"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Sessiesleutel ontbreekt"
|
||||
|
||||
@@ -651,7 +660,7 @@ msgstr "Sessiesleutel ontbreekt"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Fout: Sessie sleutel nodig"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Fout: Sessiesleutel niet geldig"
|
||||
|
||||
@@ -1004,6 +1013,7 @@ msgstr "Par-verificatie van %s misgelukt, maar QuickCheck wel gelukt."
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Reparatie mislukt, %s"
|
||||
|
||||
@@ -1199,7 +1209,7 @@ msgstr "Download aan wachtrij toegevoegd"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Onbekende codering"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Bestand %s is leeg, overslaan"
|
||||
|
||||
@@ -1309,7 +1319,7 @@ msgid "Warnings"
|
||||
msgstr "Meldingen"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Rust"
|
||||
|
||||
@@ -1941,11 +1951,12 @@ msgstr "Zeer Laag"
|
||||
msgid "Moderate"
|
||||
msgstr "Gematigd"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normaal"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Hoog"
|
||||
|
||||
@@ -1953,7 +1964,7 @@ msgstr "Hoog"
|
||||
msgid "Emergency"
|
||||
msgstr "Noodgeval"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Laag"
|
||||
|
||||
@@ -2498,6 +2509,14 @@ msgstr "Ander probleem"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Verbreek verbindingen"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
"Verbreek alle actieve verbindingen naar usenet servers. Verbindingen worden "
|
||||
"na een paar seconden weer geopend als er nog downloads in de wachtrij staan."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Hiermee stuur je een test e-mail."
|
||||
@@ -2720,7 +2739,7 @@ msgid "Backup"
|
||||
msgstr "Reserve"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Lees de Wiki pagina over dit onderwerp"
|
||||
|
||||
@@ -3381,6 +3400,10 @@ msgstr "\"Nice\" parameters"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "\"IONice\" parameters"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr "Externe process prioriteit"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Verbreek verbindingen wanneer er niets te doen is"
|
||||
@@ -3715,7 +3738,7 @@ msgstr "Strikt"
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 is de hoogste en 100 de laagste prioriteit"
|
||||
msgstr "0 is de hoogste en 99 de laagste prioriteit"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -5042,10 +5065,6 @@ msgstr "Hernoemen van %s tot %s mislukt"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Hernoemen van gelijkaardig bestand %s naar %s mislukt"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernaam niet te vinden"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Geen toegangsrechten"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2015-12-28 10:22+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -112,7 +112,7 @@ msgid "Error"
|
||||
msgstr "Błąd"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd został wyłączony"
|
||||
|
||||
@@ -483,7 +483,17 @@ msgstr ""
|
||||
"Przed ustawieniem limitu przepustowości należy ustawić maksymalną "
|
||||
"przepustowość"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Nie można połączyć się z serwerem %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Nie udało się rozwiązać nazwy serwera"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Serwer %s będzie ignorowany przez %s minut"
|
||||
|
||||
@@ -503,11 +513,6 @@ msgstr "Prawdopodobne współdzielenie konta"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Błąd logowania do serwera %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Nie można połączyć się z serwerem %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Błąd połączenia %s@%s, komunikat=%s"
|
||||
@@ -615,6 +620,10 @@ msgstr "Uwaga: LOCALHOST jest niejednoznaczne, użyj adresu IP."
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Nieprawidłowy adres serwera \"%s:%s\"."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr ""
|
||||
@@ -623,7 +632,7 @@ msgstr ""
|
||||
msgid "User logged in"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Brak klucza sesji"
|
||||
|
||||
@@ -631,7 +640,7 @@ msgstr "Brak klucza sesji"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Błąd: Wymagany klucz sesji"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Błąd: Nieprawidłowy klucz sesji"
|
||||
|
||||
@@ -979,6 +988,7 @@ msgstr "Weryfikacja %s nieudana, choć szybkie sprawdzenie powiodło się!"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Naprawa nie powiodła się, %s"
|
||||
|
||||
@@ -1174,7 +1184,7 @@ msgstr "NZB dodany do kolejki"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Nieznane kodowanie"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Plik %s jest pusty, pomijam"
|
||||
|
||||
@@ -1284,7 +1294,7 @@ msgid "Warnings"
|
||||
msgstr "Ostrzeżenia"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Bezczynny"
|
||||
|
||||
@@ -1908,11 +1918,12 @@ msgstr "Bardzo niski"
|
||||
msgid "Moderate"
|
||||
msgstr "Średni"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normalny"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Wysoki"
|
||||
|
||||
@@ -1920,7 +1931,7 @@ msgstr "Wysoki"
|
||||
msgid "Emergency"
|
||||
msgstr "Awaryjny"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Niski"
|
||||
|
||||
@@ -2465,6 +2476,12 @@ msgstr "Inny problem"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Wymuś rozłączenie"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Nastąpi wysłanie testowej wiadomości na twoje konto."
|
||||
@@ -2677,7 +2694,7 @@ msgid "Backup"
|
||||
msgstr "Zapasowy"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Przeczytaj o tym w Wiki!"
|
||||
|
||||
@@ -3322,6 +3339,10 @@ msgstr "Parametry nice"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "Parametry IONice"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Rozłącz przy pustej kolejce"
|
||||
@@ -3645,7 +3666,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 oznacza najwyższy priorytet, 100 - najniższy"
|
||||
msgstr "0 oznacza najwyższy priorytet, 99 - najniższy"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4954,10 +4975,6 @@ msgstr "Nie udało się zmienić nazwy %s na %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Nie udało się zmienić nazwy podobnego pliku %s na %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Nie udało się rozwiązać nazwy serwera"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Dostęp zabroniony"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2016-01-01 22:58+0000\n"
|
||||
"Last-Translator: lrrosa <Unknown>\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:16+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -116,7 +116,7 @@ msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Encerramento do SABnzbd concluído"
|
||||
|
||||
@@ -485,7 +485,17 @@ msgstr ""
|
||||
"Você deve definir a largura de banda máxima antes de definir um limite de "
|
||||
"banda"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Não é possível conectar ao servidor %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Nome de servidor não encontrado"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "O servidor %s será ignorado por %s minutos"
|
||||
|
||||
@@ -505,11 +515,6 @@ msgstr "Provável compartilhamento de conta"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Falha de logon ao servidor %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Não é possível conectar ao servidor %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "A conexão a %s@%s falhou. Mensagem=%s"
|
||||
@@ -616,6 +621,10 @@ msgstr "Atenção: LOCALHOST é ambíguo, use endereço IP numérico."
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Endereço de servidor \"%s:%s\" não é válido."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr ""
|
||||
@@ -624,7 +633,7 @@ msgstr ""
|
||||
msgid "User logged in"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Faltando chave de sessão"
|
||||
|
||||
@@ -632,7 +641,7 @@ msgstr "Faltando chave de sessão"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Erro: chave de sessão obrigatória"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Erro: chave de sessão incorreta"
|
||||
|
||||
@@ -979,6 +988,7 @@ msgstr "Validação de par falhou em %s, enquanto QuickCheck foi completo!"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Reparação falhou, %s"
|
||||
|
||||
@@ -1171,7 +1181,7 @@ msgstr "NZB adicionado à fila"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Codificação desconhecida"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Arquivo %s está vazio. Pulando"
|
||||
|
||||
@@ -1281,7 +1291,7 @@ msgid "Warnings"
|
||||
msgstr "Alertas"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inativo"
|
||||
|
||||
@@ -1907,11 +1917,12 @@ msgstr "Muito Baixa"
|
||||
msgid "Moderate"
|
||||
msgstr "Moderada"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Alta"
|
||||
|
||||
@@ -1919,7 +1930,7 @@ msgstr "Alta"
|
||||
msgid "Emergency"
|
||||
msgstr "Emergencial"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Baixa"
|
||||
|
||||
@@ -2464,6 +2475,12 @@ msgstr "Outro problema"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Forçar Desconexão"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Isto irá enviar um e-mail de teste para sua conta."
|
||||
@@ -2677,7 +2694,7 @@ msgid "Backup"
|
||||
msgstr "Backup"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Leia a sessão ajuda no Wiki sobre isso!"
|
||||
|
||||
@@ -3320,6 +3337,10 @@ msgstr "Parâmetros Nice"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "Parâmetros IONice"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Desconecte quando fila vazia"
|
||||
@@ -3642,7 +3663,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 é a prioridade mais alta, 100 é a prioridade mais baixa"
|
||||
msgstr "0 é a prioridade mais alta, 99 é a prioridade mais baixa"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4955,10 +4976,6 @@ msgstr "Falha ao renomear: %s para %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Falha ao renomear arquivo similar: %s para %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Nome de servidor não encontrado"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Acesso não autorizado"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2016-07-29 16:20+0000\n"
|
||||
"Last-Translator: nicusor <Unknown>\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Romanian <ro@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -116,7 +116,7 @@ msgid "Error"
|
||||
msgstr "Eroare"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Închidere SABnzbd terminată"
|
||||
|
||||
@@ -487,7 +487,17 @@ msgstr ""
|
||||
"Trebuie să seta-ţi lățimea de bandă maximă înainte de a seta o limită de "
|
||||
"viteză."
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Nu mă pot conecta la serverul %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Numele de server nu se rezolvă la DNS"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Serverul %s va fi ignorat pentru %s minute"
|
||||
|
||||
@@ -507,11 +517,6 @@ msgstr "Partajare cont probabilă"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Autentificare nereuşită la serverul %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Nu mă pot conecta la serverul %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Conectare %s@%s eșuată, mesaj=%s"
|
||||
@@ -618,6 +623,10 @@ msgstr "Atenţie:LOCALHOST este ambiguu, folosiţi o adresă IP numerică"
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Adresa server \"%s:%s\" nu este validă"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "Utilizatorul s-a autentificat în interfața web"
|
||||
@@ -626,7 +635,7 @@ msgstr "Utilizatorul s-a autentificat în interfața web"
|
||||
msgid "User logged in"
|
||||
msgstr "Utilizator logat"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Cheie Sesiune lipsă"
|
||||
|
||||
@@ -634,7 +643,7 @@ msgstr "Cheie Sesiune lipsă"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Eroare: Cheie Sesiune Necesară"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Eroare: Cheie Sesiune Incorectă"
|
||||
|
||||
@@ -982,6 +991,7 @@ msgstr "Verificarea Par eșuată pentru %s, dar VerificareaRapidă reușită!"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Reparare nereuşită, %s"
|
||||
|
||||
@@ -1176,7 +1186,7 @@ msgstr "NZB adăugat în coadă"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Codificare Necunoscută"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Fişierul %s este gol , ignorăm"
|
||||
|
||||
@@ -1286,7 +1296,7 @@ msgid "Warnings"
|
||||
msgstr "Atenționări"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inactiv"
|
||||
|
||||
@@ -1912,11 +1922,12 @@ msgstr "Foarte scăzută"
|
||||
msgid "Moderate"
|
||||
msgstr "Moderat"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Ridicată"
|
||||
|
||||
@@ -1924,7 +1935,7 @@ msgstr "Ridicată"
|
||||
msgid "Emergency"
|
||||
msgstr "Urgență"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Scăzută"
|
||||
|
||||
@@ -2469,6 +2480,12 @@ msgstr "Altă problemă"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Forţează Deconectarea"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Acesta va trimite un email test către contul dvs."
|
||||
@@ -2684,7 +2701,7 @@ msgid "Backup"
|
||||
msgstr "Server Secundar"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Citeşte Ajutorul Wiki despre asta !"
|
||||
|
||||
@@ -3319,6 +3336,10 @@ msgstr "Parametri Nice"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "Parametri IONice"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Deconectează când Coada e Goală"
|
||||
@@ -3645,7 +3666,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr ""
|
||||
"0 este prioritatea cea mai ridicată, 100 este prioritatea cea mai scăzută"
|
||||
"0 este prioritatea cea mai ridicată, 99 este prioritatea cea mai scăzută"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4960,10 +4981,6 @@ msgstr "Redenumire:%s în %s nereuşită"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Redenumire fişiere similare : %s în %s nereuşită"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Numele de server nu se rezolvă la DNS"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Acces neautorizat"
|
||||
|
||||
@@ -2,15 +2,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.7.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Pavel Maryanov <Unknown>\n"
|
||||
"Language-Team: Russian <gmu@mx.ru>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
@@ -112,7 +112,7 @@ msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Завершение работы SABnzbd закончено"
|
||||
|
||||
@@ -474,7 +474,17 @@ msgstr "Приостановлено"
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Не удаётся подключиться к серверу %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Сервер %s будет игнорироваться %s мин."
|
||||
|
||||
@@ -494,11 +504,6 @@ msgstr "Возможно, учётная запись используется
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Ошибка входа на сервер %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Не удаётся подключиться к серверу %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr ""
|
||||
@@ -608,6 +613,10 @@ msgstr ""
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Адрес сервера «%s:%s» является недопустимым."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr ""
|
||||
@@ -616,7 +625,7 @@ msgstr ""
|
||||
msgid "User logged in"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Отсутствует ключ сеанса"
|
||||
|
||||
@@ -624,7 +633,7 @@ msgstr "Отсутствует ключ сеанса"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Ошибка: требуется ключ сеанса"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Ошибка: неправильный ключ сеанса"
|
||||
|
||||
@@ -969,6 +978,7 @@ msgstr ""
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Не удалось исправить: %s"
|
||||
|
||||
@@ -1161,7 +1171,7 @@ msgstr "NZB-файл добавлен в очередь"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> неизвестная кодировка"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Файл %s пустой: пропущен"
|
||||
|
||||
@@ -1271,7 +1281,7 @@ msgid "Warnings"
|
||||
msgstr "предупреждений"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Бездействие"
|
||||
|
||||
@@ -1898,11 +1908,12 @@ msgstr ""
|
||||
msgid "Moderate"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "обычный"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "высокий"
|
||||
|
||||
@@ -1910,7 +1921,7 @@ msgstr "высокий"
|
||||
msgid "Emergency"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "низкий"
|
||||
|
||||
@@ -2455,6 +2466,12 @@ msgstr ""
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Принудительно отключить"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Отправка тестового письма на указанный почтовый ящик"
|
||||
@@ -2667,7 +2684,7 @@ msgid "Backup"
|
||||
msgstr "Резервный"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Описание см. на вики-странице."
|
||||
|
||||
@@ -3298,6 +3315,10 @@ msgstr "Параметры Nice"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "Параметры IONice"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Отключаться, если очередь пуста"
|
||||
@@ -4939,10 +4960,6 @@ msgstr "Не удалось переименовать: %s в %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Не удалось переименовать похожий файл: %s в %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: ОZZII <ozzii.translate@gmail.com>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2015-12-28 10:25+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Serbian <sr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -114,7 +114,7 @@ msgid "Error"
|
||||
msgstr "Грeшкa"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Гашење SABnzbd је завршено"
|
||||
|
||||
@@ -479,7 +479,17 @@ msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Требате да поставите максимални проток пре него што поставите ограничење"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Neuspešno povezivanje na server %s[%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Ime servera se ne može odrediti"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Server %s će biti ignorisan %s minuta"
|
||||
|
||||
@@ -499,11 +509,6 @@ msgstr "Moguće deljenje naloga"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Неуспешно пријављивање на сервер %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Neuspešno povezivanje na server %s[%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Povezivanje na %s@%s neuspešno, poruka=%s"
|
||||
@@ -610,6 +615,10 @@ msgstr "Пажња: LOCALHOST је двосмислен, користите ИП
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Adresa servera \"%s:%s\" je neispravna"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr ""
|
||||
@@ -618,7 +627,7 @@ msgstr ""
|
||||
msgid "User logged in"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Недостаје кључ сесије"
|
||||
|
||||
@@ -626,7 +635,7 @@ msgstr "Недостаје кључ сесије"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Грешка: потребан је кључ сесије"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Грешка: Кључ сесије није добар"
|
||||
|
||||
@@ -971,6 +980,7 @@ msgstr "Par provera neuspešna na %s, dok je QuickCheck uspešan!"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Neuspešna popravka, %s"
|
||||
|
||||
@@ -1162,7 +1172,7 @@ msgstr "NZB додат у ред"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Непознато енкодирање"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Датотека %s је празна, прескакање"
|
||||
|
||||
@@ -1272,7 +1282,7 @@ msgid "Warnings"
|
||||
msgstr "Упозорења"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Мирoвање"
|
||||
|
||||
@@ -1892,11 +1902,12 @@ msgstr "Врло ниско"
|
||||
msgid "Moderate"
|
||||
msgstr "Умерено"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Нормалан"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Висок"
|
||||
|
||||
@@ -1904,7 +1915,7 @@ msgstr "Висок"
|
||||
msgid "Emergency"
|
||||
msgstr "Хитно"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Низак"
|
||||
|
||||
@@ -2449,6 +2460,12 @@ msgstr "Neki drugi problem"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Натерај искључење"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "То ће послати пробну е-поруку Вашем малогу."
|
||||
@@ -2659,7 +2676,7 @@ msgid "Backup"
|
||||
msgstr "Резервно"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "За више информација, читајте Вики!"
|
||||
|
||||
@@ -3294,6 +3311,10 @@ msgstr "Параметри 'Nice'"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "Параметри 'IONice'"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Заустави везу када је ред празан"
|
||||
@@ -3613,7 +3634,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 je najveći prioritet, 100 je najniži prioritet"
|
||||
msgstr "0 je najveći prioritet, 99 je najniži prioritet"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4920,10 +4941,6 @@ msgstr "Неуспешно преименовање : %s у %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Неуспешно преименовање сличне датотеке: %s у %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Ime servera se ne može odrediti"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Neautorizovan pristup"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2016-02-20 20:34+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2018-02-14 14:19+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Swedish <sv@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -114,7 +114,7 @@ msgid "Error"
|
||||
msgstr "Fel"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd nedstängning utförd."
|
||||
|
||||
@@ -479,7 +479,17 @@ msgstr "Pausad"
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr "Du måste ange maximal bandbredd innan du kan ange bandbreddsgräns"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Kan ej ansluta till server %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernamn kunde inte läsas"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "Server %s kommer att ignoreras i %s minuter"
|
||||
|
||||
@@ -499,11 +509,6 @@ msgstr "Misstänkt kontodelning"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "Det gick inte att logga in på server %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "Kan ej ansluta till server %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Anslutning %s@%s misslyckades, meddelande=%s"
|
||||
@@ -611,6 +616,10 @@ msgstr "Varning: LOCALHOST är tvetydigt, använda numerisk IP-adress ."
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "Serveradressen \"%s:%s\" är ej giltig."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr ""
|
||||
@@ -619,7 +628,7 @@ msgstr ""
|
||||
msgid "User logged in"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "Saknar sessionsnyckel"
|
||||
|
||||
@@ -627,7 +636,7 @@ msgstr "Saknar sessionsnyckel"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "Fel: Kräver sessionsnyckel"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "Fel: Fel sessionsnyckel"
|
||||
|
||||
@@ -975,6 +984,7 @@ msgstr "Par verifiering misslyckades på %s, medans QuickCheck lyckades!"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "Reparation misslyckades, %s"
|
||||
|
||||
@@ -1167,7 +1177,7 @@ msgstr "NZB tillagd i kön"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> Okänd kodning"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "Fil %s är tom, hoppar över"
|
||||
|
||||
@@ -1277,7 +1287,7 @@ msgid "Warnings"
|
||||
msgstr "Varningar"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inaktiv"
|
||||
|
||||
@@ -1903,11 +1913,12 @@ msgstr "Mycket låg"
|
||||
msgid "Moderate"
|
||||
msgstr "Medel"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "Hög"
|
||||
|
||||
@@ -1915,7 +1926,7 @@ msgstr "Hög"
|
||||
msgid "Emergency"
|
||||
msgstr "Nödfall"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "Låg"
|
||||
|
||||
@@ -2460,6 +2471,12 @@ msgstr "Andra fel"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "Tvinga frånkoppling"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "Detta kommer att skicka ett test e-mail till ditt konto."
|
||||
@@ -2672,7 +2689,7 @@ msgid "Backup"
|
||||
msgstr "Säkerhetskopiera"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Läs Wiki Help för detta!"
|
||||
|
||||
@@ -3307,6 +3324,10 @@ msgstr "Bra parametrar"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "IONice parametrar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "Koppla ifrån när kön är tom"
|
||||
@@ -3627,7 +3648,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server priority]
|
||||
msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 är högst prioritet, 100 är lägst prioritet"
|
||||
msgstr "0 är högst prioritet, 99 är lägst prioritet"
|
||||
|
||||
#: sabnzbd/skintext.py [Server optional tickbox]
|
||||
msgid "Optional"
|
||||
@@ -4939,10 +4960,6 @@ msgstr "Det gick inte att döpa om: %s till %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Det gick inte att döpa om liknande fil: %s till %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernamn kunde inte läsas"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Otillåten åtkomst"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:08+0000\n"
|
||||
"PO-Revision-Date: 2017-06-22 07:06+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -112,7 +112,7 @@ msgid "Error"
|
||||
msgstr "错误"
|
||||
|
||||
#: SABnzbd.py # sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/wizard.py
|
||||
#: sabnzbd/interface.py # sabnzbd/osxmenu.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd 关闭完成"
|
||||
|
||||
@@ -473,7 +473,17 @@ msgstr "已暂停"
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr "设置带宽限制前,您必须设置最大带宽值"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py
|
||||
#: sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "无法连接到服务器 %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "服务器名无法解析"
|
||||
|
||||
#: sabnzbd/downloader.py [Warning message] # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Server %s will be ignored for %s minutes"
|
||||
msgstr "服务器 %s 将被忽略 %s 分钟"
|
||||
|
||||
@@ -493,11 +503,6 @@ msgstr "可能存在账号共享"
|
||||
msgid "Failed login for server %s"
|
||||
msgstr "无法登录服务器 %s"
|
||||
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
#: sabnzbd/downloader.py # sabnzbd/downloader.py [Warning message]
|
||||
msgid "Cannot connect to server %s [%s]"
|
||||
msgstr "无法连接到服务器 %s [%s]"
|
||||
|
||||
#: sabnzbd/downloader.py [Error message]
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "连接 %s@%s 失败,消息=%s"
|
||||
@@ -604,6 +609,10 @@ msgstr "警告: LOCALHOST 太含糊,请使用数字 IP 地址。"
|
||||
msgid "Server address \"%s:%s\" is not valid."
|
||||
msgstr "服务器地址 \"%s:%s\" 无效。"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
msgstr "用户已在 web 界面登录"
|
||||
@@ -612,7 +621,7 @@ msgstr "用户已在 web 界面登录"
|
||||
msgid "User logged in"
|
||||
msgstr "用户已登录"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Missing Session key"
|
||||
msgstr "缺会话 key"
|
||||
|
||||
@@ -620,7 +629,7 @@ msgstr "缺会话 key"
|
||||
msgid "Error: Session Key Required"
|
||||
msgstr "错误: 需要会话 Key"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Error: Session Key Incorrect"
|
||||
msgstr "错误: 会话 Key 不正确"
|
||||
|
||||
@@ -958,6 +967,7 @@ msgstr "Par 验证失败:%s,但快速检查成功!"
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
msgstr "修复失败,%s"
|
||||
|
||||
@@ -1147,7 +1157,7 @@ msgstr "NZB 已添加到队列"
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr "%s -> 未知编码"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr "文件 %s 为空,正在跳过"
|
||||
|
||||
@@ -1257,7 +1267,7 @@ msgid "Warnings"
|
||||
msgstr "警告信息"
|
||||
|
||||
#: sabnzbd/osxmenu.py # sabnzbd/osxmenu.py # sabnzbd/sabtray.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/sabtraylinux.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "空闲"
|
||||
|
||||
@@ -1876,11 +1886,12 @@ msgstr "非常低"
|
||||
msgid "Moderate"
|
||||
msgstr "适中"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Normal"
|
||||
msgstr "常规"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "High"
|
||||
msgstr "高"
|
||||
|
||||
@@ -1888,7 +1899,7 @@ msgstr "高"
|
||||
msgid "Emergency"
|
||||
msgstr "紧急"
|
||||
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list]
|
||||
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Priority pick list] # sabnzbd/skintext.py
|
||||
msgid "Low"
|
||||
msgstr "低"
|
||||
|
||||
@@ -2433,6 +2444,12 @@ msgstr "其他问题"
|
||||
msgid "Force Disconnect"
|
||||
msgstr "强制断开连接"
|
||||
|
||||
#: sabnzbd/skintext.py [Status page button text]
|
||||
msgid ""
|
||||
"Disconnect all active connections to usenet servers. Connections will be "
|
||||
"reopened after a few seconds if there are items in the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This will send a test email to your account."
|
||||
msgstr "这将发送一封测试邮件到您的账号当中。"
|
||||
@@ -2639,7 +2656,7 @@ msgid "Backup"
|
||||
msgstr "备份"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py # sabnzbd/skintext.py [Notification Script settings]
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "关于该项请参阅 Wiki 帮助!"
|
||||
|
||||
@@ -3242,6 +3259,10 @@ msgstr "Nice 参数"
|
||||
msgid "IONice Parameters"
|
||||
msgstr "IONice 参数"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "External process priority"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Disconnect on Empty Queue"
|
||||
msgstr "清空队列时断开"
|
||||
@@ -4854,10 +4875,6 @@ msgstr "重命名失败: %s 为 %s"
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "重命名相似文件失败: %s 为 %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "服务器名无法解析"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "未授权访问"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2011-2017 The SABnzbd-Team
|
||||
# Copyright 2011-2018 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
msgid ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2017-04-10 11:28+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Danish <da@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2017-05-22 08:00+0000\n"
|
||||
"Last-Translator: larshuth <Unknown>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Victor Herrero <victorhera@gmail.com>\n"
|
||||
"Language-Team: Spanish <es@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2017-04-02 07:38+0000\n"
|
||||
"Last-Translator: Paavo Rissanen <paavo.rissanen@outlook.com>\n"
|
||||
"Language-Team: Finnish <fi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2017-03-21 08:58+0000\n"
|
||||
"Last-Translator: Fred <88com88@gmail.com>\n"
|
||||
"Language-Team: French <fr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2017-05-06 09:07+0000\n"
|
||||
"Last-Translator: ION IL <Unknown>\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
@@ -96,3 +96,14 @@ msgstr ""
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Your settings and data will be preserved."
|
||||
msgstr "ההגדרות והנתונים שלך יישמרו."
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
|
||||
#~ "release notes or go to http://wiki.sabnzbd.org/introducing-0-7-0 !"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> אזהרה <<<<\\r\\n\\r\\n! "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-7-0 אנא, בדוק תחילה את הערות השחרור או "
|
||||
#~ "לך אל"
|
||||
|
||||
#~ msgid "Go to the SABnzbd Wiki"
|
||||
#~ msgstr "SABnzbd לך אל וויקי"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2017-03-19 09:47+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Tomasz 'Zen' Napierala <tomasz@napierala.org>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: lrrosa <Unknown>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: nicusor <Unknown>\n"
|
||||
"Language-Team: Romanian <ro@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Pavel Maryanov <Unknown>\n"
|
||||
"Language-Team: Russian <gnu@mx.ru>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Ozzii <Unknown>\n"
|
||||
"Language-Team: Launchpad Serbian Translators\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
"Language: sr\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Andreas Lindberg <andypandyswe@gmail.com>\n"
|
||||
"Language-Team: Swedish <sv@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"POT-Creation-Date: 2018-03-15 13:05+0000\n"
|
||||
"PO-Revision-Date: 2017-05-28 17:17+0000\n"
|
||||
"Last-Translator: ninjai <ninjai.us@gmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-06-23 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 18416)\n"
|
||||
"X-Launchpad-Export-Date: 2018-03-16 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 18571)\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -270,7 +270,7 @@ def initialize(pause_downloader=False, clean_up=False, evalSched=False, repair=0
|
||||
cfg.quota_day.callback(guard_quota_dp)
|
||||
cfg.quota_period.callback(guard_quota_dp)
|
||||
cfg.fsys_type.callback(guard_fsys_type)
|
||||
cfg.language.callback(sabnzbd.notifier.reset_growl)
|
||||
cfg.language.callback(guard_language)
|
||||
cfg.enable_https_verification.callback(guard_https_ver)
|
||||
guard_https_ver()
|
||||
|
||||
@@ -311,6 +311,11 @@ def initialize(pause_downloader=False, clean_up=False, evalSched=False, repair=0
|
||||
cfg.sched_converted.set(2)
|
||||
config.save_config()
|
||||
|
||||
# Add hostname to the whitelist
|
||||
if not cfg.host_whitelist():
|
||||
cfg.host_whitelist.set(socket.gethostname())
|
||||
|
||||
# Do repair if requested
|
||||
if check_repair_request():
|
||||
repair = 2
|
||||
pause_downloader = True
|
||||
@@ -320,7 +325,6 @@ def initialize(pause_downloader=False, clean_up=False, evalSched=False, repair=0
|
||||
|
||||
paused = BPSMeter.do.read()
|
||||
|
||||
|
||||
NzbQueue()
|
||||
|
||||
Downloader(pause_downloader or paused)
|
||||
@@ -517,6 +521,13 @@ def guard_fsys_type():
|
||||
sabnzbd.encoding.change_fsys(cfg.fsys_type())
|
||||
|
||||
|
||||
def guard_language():
|
||||
""" Callback for change of the interface language """
|
||||
sabnzbd.notifier.reset_growl()
|
||||
sabnzbd.lang.set_language(cfg.language())
|
||||
sabnzbd.api.clear_trans_cache()
|
||||
|
||||
|
||||
def set_https_verification(value):
|
||||
prev = False
|
||||
try:
|
||||
@@ -650,13 +661,13 @@ def add_nzbfile(nzbfile, pp=None, script=None, cat=None, priority=NORMAL_PRIORIT
|
||||
try:
|
||||
filename = nzbfile.filename.encode('cp1252').decode('utf-8')
|
||||
except:
|
||||
# Correct encoding afterall!
|
||||
# Correct encoding after all!
|
||||
filename = nzbfile.filename
|
||||
filename = encoding.special_fixer(filename)
|
||||
keep = False
|
||||
|
||||
if not sabnzbd.WIN32:
|
||||
# If windows client sends file to Unix server backslashed may
|
||||
# If windows client sends file to Unix server backslashes may
|
||||
# be included, so convert these
|
||||
filename = filename.replace('\\', '/')
|
||||
|
||||
@@ -758,7 +769,7 @@ def system_standby():
|
||||
|
||||
def shutdown_program():
|
||||
""" Stop program after halting and saving """
|
||||
logging.info("Performing sabnzbd shutdown")
|
||||
logging.info("[%s] Performing SABnzbd shutdown", misc.caller_name())
|
||||
sabnzbd.halt()
|
||||
cherrypy.engine.exit()
|
||||
sabnzbd.SABSTOP = True
|
||||
@@ -952,9 +963,9 @@ def save_admin(data, _id):
|
||||
try:
|
||||
with open(path, 'wb') as data_file:
|
||||
if cfg.use_pickle():
|
||||
data = pickle.dump(data, data_file)
|
||||
pickle.dump(data, data_file)
|
||||
else:
|
||||
data = cPickle.dump(data, data_file)
|
||||
cPickle.dump(data, data_file)
|
||||
break
|
||||
except:
|
||||
if t == 2:
|
||||
@@ -1179,6 +1190,32 @@ def test_ipv6():
|
||||
return False
|
||||
|
||||
|
||||
def test_cert_checking():
|
||||
""" Test quality of certificate validation
|
||||
On systems with at least Python > 2.7.9
|
||||
"""
|
||||
if sabnzbd.HAVE_SSL_CONTEXT:
|
||||
try:
|
||||
import ssl
|
||||
ctx = ssl.create_default_context()
|
||||
base_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
ssl_sock = ctx.wrap_socket(base_sock, server_hostname=cfg.selftest_host())
|
||||
ssl_sock.settimeout(2.0)
|
||||
ssl_sock.connect((cfg.selftest_host(), 443))
|
||||
ssl_sock.close()
|
||||
return True
|
||||
except (socket.gaierror, socket.timeout):
|
||||
# Non-SSL related error.
|
||||
# We now assume that certificates work instead of forcing
|
||||
# lower quality just because some (temporary) internet problem
|
||||
logging.info('Could not determine system certificate validation quality due to connection problems')
|
||||
return True
|
||||
except:
|
||||
# Seems something is still wrong
|
||||
sabnzbd.set_https_verification(0)
|
||||
return False
|
||||
|
||||
|
||||
def history_updated():
|
||||
""" To make sure we always have a fresh history """
|
||||
sabnzbd.LAST_HISTORY_UPDATE += 1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -41,7 +41,7 @@ except ImportError:
|
||||
pass
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.constants import VALID_ARCHIVES, Status, \
|
||||
from sabnzbd.constants import VALID_ARCHIVES, VALID_NZB_FILES, Status, \
|
||||
TOP_PRIORITY, REPAIR_PRIORITY, HIGH_PRIORITY, NORMAL_PRIORITY, LOW_PRIORITY, \
|
||||
KIBI, MEBI, GIGI, JOB_ADMIN
|
||||
import sabnzbd.config as config
|
||||
@@ -103,15 +103,12 @@ def api_handler(kwargs):
|
||||
mode = kwargs.get('mode', '')
|
||||
output = kwargs.get('output')
|
||||
name = kwargs.get('name', '')
|
||||
callback = kwargs.get('callback', '')
|
||||
|
||||
if isinstance(mode, list):
|
||||
mode = mode[0]
|
||||
if isinstance(output, list):
|
||||
output = output[0]
|
||||
response = _api_table.get(mode, (_api_undefined, 2))[0](name, output, kwargs)
|
||||
if output == 'json' and callback:
|
||||
response = '%s(%s)' % (callback, response)
|
||||
return response
|
||||
|
||||
|
||||
@@ -223,6 +220,8 @@ def _api_queue_pause(output, value, kwargs):
|
||||
if value:
|
||||
items = value.split(',')
|
||||
handled = NzbQueue.do.pause_multiple_nzo(items)
|
||||
else:
|
||||
handled = False
|
||||
return report(output, keyword='', data={'status': bool(handled), 'nzo_ids': handled})
|
||||
|
||||
|
||||
@@ -231,6 +230,8 @@ def _api_queue_resume(output, value, kwargs):
|
||||
if value:
|
||||
items = value.split(',')
|
||||
handled = NzbQueue.do.resume_multiple_nzo(items)
|
||||
else:
|
||||
handled = False
|
||||
return report(output, keyword='', data={'status': bool(handled), 'nzo_ids': handled})
|
||||
|
||||
|
||||
@@ -401,7 +402,7 @@ def _api_addlocalfile(name, output, kwargs):
|
||||
if get_ext(name) in VALID_ARCHIVES:
|
||||
res = sabnzbd.dirscanner.ProcessArchiveFile(
|
||||
fn, name, pp=pp, script=script, cat=cat, priority=priority, keep=True, nzbname=nzbname)
|
||||
elif get_ext(name) in ('.nzb', '.gz', '.bz2'):
|
||||
elif get_ext(name) in VALID_NZB_FILES:
|
||||
res = sabnzbd.dirscanner.ProcessSingleFile(
|
||||
fn, name, pp=pp, script=script, cat=cat, priority=priority, keep=True, nzbname=nzbname)
|
||||
else:
|
||||
@@ -465,6 +466,7 @@ def _api_change_opts(name, output, kwargs):
|
||||
""" API: accepts output, value(=nzo_id), value2(=pp) """
|
||||
value = kwargs.get('value')
|
||||
value2 = kwargs.get('value2')
|
||||
result = 0
|
||||
if value and value2 and value2.isdigit():
|
||||
result = NzbQueue.do.change_opts(value, int(value2))
|
||||
return report(output, keyword='status', data=bool(result > 0))
|
||||
@@ -592,10 +594,7 @@ def _api_resume(name, output, kwargs):
|
||||
|
||||
def _api_shutdown(name, output, kwargs):
|
||||
""" API: accepts output """
|
||||
logging.info('Shutdown requested by API')
|
||||
sabnzbd.halt()
|
||||
cherrypy.engine.exit()
|
||||
sabnzbd.SABSTOP = True
|
||||
sabnzbd.shutdown_program()
|
||||
return report(output)
|
||||
|
||||
|
||||
@@ -808,7 +807,6 @@ def _api_browse(name, output, kwargs):
|
||||
compact = kwargs.get('compact')
|
||||
|
||||
if compact and compact == '1':
|
||||
paths = []
|
||||
name = platform_encode(kwargs.get('term', ''))
|
||||
paths = [entry['path'] for entry in folders_at_path(os.path.dirname(name)) if 'path' in entry]
|
||||
return report(output, keyword='', data=paths)
|
||||
@@ -1002,7 +1000,7 @@ def api_level(cmd, name):
|
||||
return 4
|
||||
|
||||
|
||||
def report(output, error=None, keyword='value', data=None, callback=None, compat=False):
|
||||
def report(output, error=None, keyword='value', data=None, compat=False):
|
||||
""" Report message in json, xml or plain text
|
||||
If error is set, only an status/error report is made.
|
||||
If no error and no data, only a status report is made.
|
||||
@@ -1031,8 +1029,6 @@ def report(output, error=None, keyword='value', data=None, callback=None, compat
|
||||
if not FAST_JSON:
|
||||
# Use the slower, but safer encoder
|
||||
response = JsonWriter().write(info)
|
||||
if callback:
|
||||
response = '%s(%s)' % (callback, response)
|
||||
|
||||
elif output == 'xml':
|
||||
if not keyword:
|
||||
@@ -1693,7 +1689,6 @@ def build_queue_header(search=None, start=0, limit=0, output=None):
|
||||
header['size'] = format_bytes(bytes)
|
||||
header['noofslots_total'] = qnfo.q_fullsize
|
||||
|
||||
status = ''
|
||||
if Downloader.do.paused or Downloader.do.postproc:
|
||||
status = Status.PAUSED
|
||||
elif bytespersec > 0:
|
||||
@@ -1708,7 +1703,6 @@ def build_queue_header(search=None, start=0, limit=0, output=None):
|
||||
# new eta format: 16:00 Fri 07 Feb
|
||||
header['eta'] = datestart.strftime(time_format('%H:%M %a %d %b')).decode(codepage)
|
||||
except:
|
||||
datestart = datetime.datetime.now()
|
||||
header['eta'] = T('unknown')
|
||||
|
||||
return (header, qnfo.list, bytespersec, qnfo.q_fullsize, qnfo.bytes_left_previous_page)
|
||||
@@ -1780,7 +1774,6 @@ def build_history(start=None, limit=None, verbose=False, verbose_list=None, sear
|
||||
if not h_limit:
|
||||
items, fetched_items, total_items = history_db.fetch_history(h_start, 1, search, failed_only, categories)
|
||||
items = []
|
||||
fetched_items = 0
|
||||
else:
|
||||
items, fetched_items, total_items = history_db.fetch_history(h_start, h_limit, search, failed_only, categories)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -28,9 +28,9 @@ from time import sleep
|
||||
import hashlib
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.misc import get_filepath, sanitize_filename, get_unique_filename, renamer, \
|
||||
set_permissions, long_path, clip_path, has_win_device, get_all_passwords, diskspace, \
|
||||
get_filename, get_ext
|
||||
from sabnzbd.misc import get_filepath, sanitize_filename, set_permissions, \
|
||||
long_path, clip_path, has_win_device, get_all_passwords, diskspace, \
|
||||
get_filename, get_ext, is_rarfile
|
||||
from sabnzbd.constants import Status, GIGI
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.articlecache import ArticleCache
|
||||
@@ -117,7 +117,7 @@ class Assembler(Thread):
|
||||
nzf.remove_admin()
|
||||
|
||||
# Do rar-related processing
|
||||
if rarfile.is_rarfile(filepath):
|
||||
if is_rarfile(filepath):
|
||||
# Encryption and unwanted extension detection
|
||||
rar_encrypted, unwanted_file = check_encrypted_and_unwanted_files(nzo, filepath)
|
||||
if rar_encrypted:
|
||||
@@ -210,6 +210,7 @@ def file_has_articles(nzf):
|
||||
|
||||
|
||||
RE_SUBS = re.compile(r'\W+sub|subs|subpack|subtitle|subtitles(?![a-z])', re.I)
|
||||
SAFE_EXTS = ('.mkv', '.mp4', '.avi', '.wmv', '.mpg', '.webm')
|
||||
def is_cloaked(nzo, path, names):
|
||||
""" Return True if this is likely to be a cloaked encrypted post """
|
||||
fname = unicoder(get_filename(path)).lower()
|
||||
@@ -223,7 +224,7 @@ def is_cloaked(nzo, path, names):
|
||||
logging.warning(T('Job "%s" is probably encrypted due to RAR with same name inside this RAR'), nzo.final_name)
|
||||
nzo.encrypted = 1
|
||||
return True
|
||||
elif 'password' in name:
|
||||
elif 'password' in name and ext not in SAFE_EXTS:
|
||||
# Only warn once
|
||||
if nzo.encrypted == 0:
|
||||
logging.warning(T('Job "%s" is probably encrypted: "password" in filename "%s"'), nzo.final_name, name)
|
||||
@@ -245,7 +246,7 @@ def check_encrypted_and_unwanted_files(nzo, filepath):
|
||||
return encrypted, unwanted
|
||||
|
||||
# Is it even a rarfile?
|
||||
if rarfile.is_rarfile(filepath):
|
||||
if is_rarfile(filepath):
|
||||
# Open the rar
|
||||
rarfile.UNRAR_TOOL = sabnzbd.newsunpack.RAR_COMMAND
|
||||
zf = rarfile.RarFile(filepath, all_names=True)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -26,7 +26,7 @@ from sabnzbd.constants import DEF_HOST, DEF_PORT, DEF_STDINTF, DEF_ADMIN_DIR, \
|
||||
|
||||
from sabnzbd.config import OptionBool, OptionNumber, OptionPassword, \
|
||||
OptionDir, OptionStr, OptionList, no_nonsense, \
|
||||
validate_octal, validate_safedir, \
|
||||
validate_octal, validate_safedir, all_lowercase, \
|
||||
create_api_key, validate_notempty
|
||||
|
||||
##############################################################################
|
||||
@@ -137,12 +137,13 @@ top_only = OptionBool('misc', 'top_only', False)
|
||||
sfv_check = OptionBool('misc', 'sfv_check', True)
|
||||
quick_check_ext_ignore = OptionList('misc', 'quick_check_ext_ignore', ['nfo', 'sfv', 'srr'])
|
||||
script_can_fail = OptionBool('misc', 'script_can_fail', False)
|
||||
ssl_ciphers = OptionStr('misc', 'ssl_ciphers', '')
|
||||
ssl_ciphers = OptionStr('misc', 'ssl_ciphers', '') # Now per-server setting
|
||||
enable_recursive = OptionBool('misc', 'enable_recursive', True)
|
||||
flat_unpack = OptionBool('misc', 'flat_unpack', False)
|
||||
par_option = OptionStr('misc', 'par_option', '', validation=no_nonsense)
|
||||
pre_check = OptionBool('misc', 'pre_check', False)
|
||||
nice = OptionStr('misc', 'nice', '', validation=no_nonsense)
|
||||
win_process_prio = OptionNumber('misc', 'win_process_prio', 3)
|
||||
ionice = OptionStr('misc', 'ionice', '', validation=no_nonsense)
|
||||
fail_hopeless_jobs = OptionBool('misc', 'fail_hopeless_jobs', True)
|
||||
autodisconnect = OptionBool('misc', 'auto_disconnect', True)
|
||||
@@ -262,6 +263,8 @@ api_warnings = OptionBool('misc', 'api_warnings', True, protect=True)
|
||||
disable_key = OptionBool('misc', 'disable_api_key', False, protect=True)
|
||||
no_penalties = OptionBool('misc', 'no_penalties', False)
|
||||
debug_log_decoding = OptionBool('misc', 'debug_log_decoding', False)
|
||||
ignore_empty_files = OptionBool('misc', 'ignore_empty_files', False)
|
||||
x_frame_options = OptionBool('misc', 'x_frame_options', True)
|
||||
|
||||
# Text values
|
||||
rss_odd_titles = OptionList('misc', 'rss_odd_titles', ['nzbindex.nl/', 'nzbindex.com/', 'nzbclub.com/'])
|
||||
@@ -277,6 +280,8 @@ wait_ext_drive = OptionNumber('misc', 'wait_ext_drive', 5, 1, 60)
|
||||
marker_file = OptionStr('misc', 'nomedia_marker', '')
|
||||
ipv6_servers = OptionNumber('misc', 'ipv6_servers', 1, 0, 2)
|
||||
url_base = OptionStr('misc', 'url_base', '/sabnzbd')
|
||||
host_whitelist = OptionList('misc', 'host_whitelist', validation=all_lowercase)
|
||||
max_url_retries = OptionNumber('misc', 'max_url_retries', 10, 1)
|
||||
|
||||
##############################################################################
|
||||
# Config - Notifications
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -391,13 +391,12 @@ class ConfigServer(object):
|
||||
self.connections = OptionNumber(name, 'connections', 1, 0, 100, add=False)
|
||||
self.ssl = OptionBool(name, 'ssl', False, add=False)
|
||||
self.ssl_verify = OptionNumber(name, 'ssl_verify', 2, add=False) # 0=No, 1=Normal, 2=Strict (hostname verification)
|
||||
self.ssl_ciphers = OptionStr(name, 'ssl_ciphers', '', add=False)
|
||||
self.enable = OptionBool(name, 'enable', True, add=False)
|
||||
self.optional = OptionBool(name, 'optional', False, add=False)
|
||||
self.retention = OptionNumber(name, 'retention', add=False)
|
||||
self.send_group = OptionBool(name, 'send_group', False, add=False)
|
||||
self.priority = OptionNumber(name, 'priority', 0, 0, 99, add=False)
|
||||
# 'fillserver' field only here in order to set a proper priority when converting
|
||||
self.fillserver = OptionBool(name, 'fillserver', False, add=False)
|
||||
self.notes = OptionStr(name, 'notes', '', add=False)
|
||||
|
||||
self.set_dict(values)
|
||||
@@ -405,15 +404,15 @@ class ConfigServer(object):
|
||||
|
||||
def set_dict(self, values):
|
||||
""" Set one or more fields, passed as dictionary """
|
||||
for kw in ('displayname', 'host', 'port', 'timeout', 'username', 'password', 'connections', 'fillserver',
|
||||
'ssl', 'ssl_verify', 'send_group', 'enable', 'optional', 'retention', 'priority', 'notes'):
|
||||
for kw in ('displayname', 'host', 'port', 'timeout', 'username', 'password', 'connections', 'ssl',
|
||||
'ssl_verify', 'ssl_ciphers', 'send_group', 'enable', 'optional', 'retention', 'priority', 'notes'):
|
||||
try:
|
||||
value = values[kw]
|
||||
except KeyError:
|
||||
continue
|
||||
exec 'self.%s.set(value)' % kw
|
||||
if not self.displayname():
|
||||
self.displayname.set(self.__name)
|
||||
if not self.displayname():
|
||||
self.displayname.set(self.__name)
|
||||
return True
|
||||
|
||||
def get_dict(self, safe=False):
|
||||
@@ -432,6 +431,7 @@ class ConfigServer(object):
|
||||
dict['connections'] = self.connections()
|
||||
dict['ssl'] = self.ssl()
|
||||
dict['ssl_verify'] = self.ssl_verify()
|
||||
dict['ssl_ciphers'] = self.ssl_ciphers()
|
||||
dict['enable'] = self.enable()
|
||||
dict['optional'] = self.optional()
|
||||
dict['retention'] = self.retention()
|
||||
@@ -463,7 +463,7 @@ class ConfigCat(object):
|
||||
self.pp = OptionStr(name, 'pp', '', add=False)
|
||||
self.script = OptionStr(name, 'script', 'Default', add=False)
|
||||
self.dir = OptionDir(name, 'dir', add=False, create=False)
|
||||
self.newzbin = OptionList(name, 'newzbin', add=False)
|
||||
self.newzbin = OptionList(name, 'newzbin', add=False, validation=validate_single_tag)
|
||||
self.priority = OptionNumber(name, 'priority', DEFAULT_PRIORITY, add=False)
|
||||
|
||||
self.set_dict(values)
|
||||
@@ -877,13 +877,16 @@ def define_servers():
|
||||
for server in CFG['servers']:
|
||||
svr = CFG['servers'][server]
|
||||
s = ConfigServer(server.replace('{', '[').replace('}', ']'), svr)
|
||||
if s.fillserver():
|
||||
# One time conversion of backup to priority 1
|
||||
s.priority.set(1)
|
||||
s.fillserver.set(False)
|
||||
|
||||
# Conversion of global SSL-Ciphers to server ones
|
||||
if sabnzbd.cfg.ssl_ciphers():
|
||||
s.ssl_ciphers.set(sabnzbd.cfg.ssl_ciphers())
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
# No longer needed
|
||||
sabnzbd.cfg.ssl_ciphers.set('')
|
||||
|
||||
|
||||
def get_servers():
|
||||
global database
|
||||
@@ -893,7 +896,7 @@ def get_servers():
|
||||
return {}
|
||||
|
||||
|
||||
def define_categories(force=False):
|
||||
def define_categories():
|
||||
""" Define categories listed in the Setup file
|
||||
return a list of ConfigCat instances
|
||||
"""
|
||||
@@ -1051,6 +1054,14 @@ def no_nonsense(value):
|
||||
return None, value
|
||||
|
||||
|
||||
def all_lowercase(value):
|
||||
""" Lowercase everything! """
|
||||
if isinstance(value, list):
|
||||
# If list, for each item
|
||||
return None, [item.lower() for item in value]
|
||||
return None, value.lower()
|
||||
|
||||
|
||||
def validate_octal(value):
|
||||
""" Check if string is valid octal number """
|
||||
if not value:
|
||||
@@ -1091,6 +1102,16 @@ def validate_notempty(root, value, default):
|
||||
return None, default
|
||||
|
||||
|
||||
def validate_single_tag(value):
|
||||
""" Don't split single indexer tags like "TV > HD"
|
||||
into ['TV', '>', 'HD']
|
||||
"""
|
||||
if len(value) == 3:
|
||||
if value[1] == '>':
|
||||
return None, ' '.join(value)
|
||||
return None, value
|
||||
|
||||
|
||||
def create_api_key():
|
||||
""" Return a new randomized API_KEY """
|
||||
# Create some values to seed md5
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -51,7 +51,7 @@ RENAMES_FILE = '__renames__'
|
||||
ATTRIB_FILE = 'SABnzbd_attrib'
|
||||
REPAIR_REQUEST = 'repair-all.sab'
|
||||
|
||||
SABYENC_VERSION_REQUIRED = '3.3.2'
|
||||
SABYENC_VERSION_REQUIRED = '3.3.5'
|
||||
|
||||
DB_HISTORY_VERSION = 1
|
||||
DB_HISTORY_NAME = 'history%s.db' % DB_HISTORY_VERSION
|
||||
@@ -78,7 +78,6 @@ DEF_ARTICLE_CACHE_DEFAULT = '500M'
|
||||
DEF_ARTICLE_CACHE_MAX = '1G'
|
||||
DEF_TIMEOUT = 60
|
||||
DEF_SCANRATE = 5
|
||||
MAX_URL_RETRIES = 10
|
||||
MAX_DECODE_QUEUE = 10
|
||||
LIMIT_DECODE_QUEUE = 100
|
||||
MAX_WARNINGS = 20
|
||||
@@ -98,6 +97,7 @@ STOP_PRIORITY = -4
|
||||
STAGES = {'Source': 0, 'Download': 1, 'Servers': 2, 'Repair': 3, 'Filejoin': 4, 'Unpack': 5, 'Script': 6}
|
||||
|
||||
VALID_ARCHIVES = ('.zip', '.rar', '.7z')
|
||||
VALID_NZB_FILES = ('.nzb', '.gz', '.bz2')
|
||||
|
||||
IGNORED_FOLDERS = ('@eaDir', '.appleDouble')
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -40,7 +40,7 @@ from sabnzbd.constants import DB_HISTORY_NAME, STAGES
|
||||
from sabnzbd.encoding import unicoder
|
||||
from sabnzbd.bpsmeter import this_week, this_month
|
||||
from sabnzbd.decorators import synchronized
|
||||
from sabnzbd.misc import get_all_passwords, int_conv, remove_file, caller_name
|
||||
from sabnzbd.misc import int_conv, remove_file, caller_name
|
||||
|
||||
DB_LOCK = threading.RLock()
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -125,7 +125,7 @@ class Decoder(Thread):
|
||||
nzf.article_count += 1
|
||||
found = True
|
||||
|
||||
except IOError, e:
|
||||
except IOError:
|
||||
logme = T('Decoding %s failed') % art_id
|
||||
logging.warning(logme)
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
@@ -134,7 +134,7 @@ class Decoder(Thread):
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article)
|
||||
register = False
|
||||
|
||||
except MemoryError, e:
|
||||
except MemoryError:
|
||||
logme = T('Decoder failure: Out of memory')
|
||||
logging.warning(logme)
|
||||
anfo = sabnzbd.articlecache.ArticleCache.do.cache_info()
|
||||
@@ -240,7 +240,6 @@ class Decoder(Thread):
|
||||
nzf = article.nzf
|
||||
yenc, data = yCheck(data)
|
||||
ybegin, ypart, yend = yenc
|
||||
decoded_data = None
|
||||
|
||||
# Deal with non-yencoded posts
|
||||
if not ybegin:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -28,9 +28,10 @@ import logging
|
||||
|
||||
import sabnzbd
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.misc import int_conv, clip_path, long_path, remove_all, globber, \
|
||||
format_time_string, has_win_device, real_path, remove_file
|
||||
from sabnzbd.misc import int_conv, clip_path, long_path, remove_all, \
|
||||
format_time_string, real_path, remove_file
|
||||
from sabnzbd.encoding import TRANS, unicoder
|
||||
from sabnzbd.decorators import synchronized
|
||||
from sabnzbd.newsunpack import build_command, EXTRACTFROM_RE, EXTRACTED_RE, rar_volumelist
|
||||
from sabnzbd.postproc import prepare_extraction_path
|
||||
from sabnzbd.utils.rarfile import RarFile
|
||||
@@ -46,6 +47,10 @@ if sabnzbd.WIN32:
|
||||
# Load the regular POpen (which is now patched on Windows)
|
||||
from subprocess import Popen
|
||||
|
||||
# Need a lock to make sure start and stop is handled correctlty
|
||||
# Otherwise we could stop while the thread was still starting
|
||||
START_STOP_LOCK = threading.RLock()
|
||||
|
||||
MAX_ACTIVE_UNPACKERS = 10
|
||||
ACTIVE_UNPACKERS = []
|
||||
|
||||
@@ -110,6 +115,7 @@ class DirectUnpacker(threading.Thread):
|
||||
if none_counter > found_counter:
|
||||
self.total_volumes = {}
|
||||
|
||||
@synchronized(START_STOP_LOCK)
|
||||
def add(self, nzf):
|
||||
""" Add jobs and start instance of DirectUnpack """
|
||||
if not cfg.direct_unpack_tested():
|
||||
@@ -309,6 +315,7 @@ class DirectUnpacker(threading.Thread):
|
||||
with self.next_file_lock:
|
||||
self.next_file_lock.wait()
|
||||
|
||||
@synchronized(START_STOP_LOCK)
|
||||
def create_unrar_instance(self):
|
||||
""" Start the unrar instance using the user's options """
|
||||
# Generate extraction path and save for post-proc
|
||||
@@ -366,9 +373,10 @@ class DirectUnpacker(threading.Thread):
|
||||
# Doing the first
|
||||
logging.info('DirectUnpacked volume %s for %s', self.cur_volume, self.cur_setname)
|
||||
|
||||
@synchronized(START_STOP_LOCK)
|
||||
def abort(self):
|
||||
""" Abort running instance and delete generated files """
|
||||
if not self.killed:
|
||||
if not self.killed and self.cur_setname:
|
||||
logging.info('Aborting DirectUnpack for %s', self.cur_setname)
|
||||
self.killed = True
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -28,7 +28,7 @@ import bz2
|
||||
import threading
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.constants import SCAN_FILE_NAME, VALID_ARCHIVES
|
||||
from sabnzbd.constants import SCAN_FILE_NAME, VALID_ARCHIVES, VALID_NZB_FILES
|
||||
import sabnzbd.utils.rarfile as rarfile
|
||||
from sabnzbd.encoding import platform_encode
|
||||
from sabnzbd.decorators import NzbQueueLocker
|
||||
@@ -76,7 +76,7 @@ def is_archive(path):
|
||||
except:
|
||||
logging.info(T('Cannot read %s'), path, exc_info=True)
|
||||
return -1, None, ''
|
||||
elif rarfile.is_rarfile(path):
|
||||
elif misc.is_rarfile(path):
|
||||
try:
|
||||
# Set path to tool to open it
|
||||
rarfile.UNRAR_TOOL = sabnzbd.newsunpack.RAR_COMMAND
|
||||
@@ -144,7 +144,7 @@ def ProcessArchiveFile(filename, path, pp=None, script=None, cat=None, catdir=No
|
||||
priority=priority, nzbname=nzbname)
|
||||
if not nzo.password:
|
||||
nzo.password = password
|
||||
except (TypeError, ValueError) as e:
|
||||
except (TypeError, ValueError):
|
||||
# Duplicate or empty, ignore
|
||||
pass
|
||||
except:
|
||||
@@ -232,7 +232,7 @@ def ProcessSingleFile(filename, path, pp=None, script=None, cat=None, catdir=Non
|
||||
# Empty, but correct file
|
||||
return -1, nzo_ids
|
||||
except:
|
||||
if data.find("<nzb") >= 0 and data.find("</nzb") < 0:
|
||||
if data.find("<nzb") >= 0 > data.find("</nzb"):
|
||||
# Looks like an incomplete file, retry
|
||||
return -2, nzo_ids
|
||||
else:
|
||||
@@ -358,7 +358,7 @@ class DirScanner(threading.Thread):
|
||||
continue
|
||||
|
||||
ext = os.path.splitext(path)[1].lower()
|
||||
candidate = ext in ('.nzb', '.gz', '.bz2') or ext in VALID_ARCHIVES
|
||||
candidate = ext in VALID_NZB_FILES + VALID_ARCHIVES
|
||||
if candidate:
|
||||
try:
|
||||
stat_tuple = os.stat(path)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -60,8 +60,8 @@ TIMER_LOCK = RLock()
|
||||
|
||||
class Server(object):
|
||||
|
||||
def __init__(self, id, displayname, host, port, timeout, threads, priority, ssl, ssl_verify, send_group, username=None,
|
||||
password=None, optional=False, retention=0):
|
||||
def __init__(self, id, displayname, host, port, timeout, threads, priority, ssl, ssl_verify, ssl_ciphers,
|
||||
send_group, username=None, password=None, optional=False, retention=0):
|
||||
|
||||
self.id = id
|
||||
self.newid = None
|
||||
@@ -74,6 +74,7 @@ class Server(object):
|
||||
self.priority = priority
|
||||
self.ssl = ssl
|
||||
self.ssl_verify = ssl_verify
|
||||
self.ssl_ciphers = ssl_ciphers
|
||||
self.optional = optional
|
||||
self.retention = retention
|
||||
self.send_group = send_group
|
||||
@@ -228,6 +229,7 @@ class Downloader(Thread):
|
||||
priority = srv.priority()
|
||||
ssl = srv.ssl()
|
||||
ssl_verify = srv.ssl_verify()
|
||||
ssl_ciphers = srv.ssl_ciphers()
|
||||
username = srv.username()
|
||||
password = srv.password()
|
||||
optional = srv.optional()
|
||||
@@ -247,7 +249,7 @@ class Downloader(Thread):
|
||||
|
||||
if create and enabled and host and port and threads:
|
||||
server = Server(newserver, displayname, host, port, timeout, threads, priority, ssl, ssl_verify,
|
||||
send_group, username, password, optional, retention)
|
||||
ssl_ciphers, send_group, username, password, optional, retention)
|
||||
self.servers.append(server)
|
||||
self.server_dict[newserver] = server
|
||||
|
||||
@@ -309,7 +311,7 @@ class Downloader(Thread):
|
||||
'''
|
||||
if value:
|
||||
mx = cfg.bandwidth_max.get_int()
|
||||
if '%' in str(value) or (from_units(value) > 0 and from_units(value) < 101):
|
||||
if '%' in str(value) or (0 < from_units(value) < 101):
|
||||
limit = value.strip(' %')
|
||||
self.bandwidth_perc = from_units(limit)
|
||||
if mx:
|
||||
@@ -364,14 +366,27 @@ class Downloader(Thread):
|
||||
return filter(nzo.server_in_try_list, self.servers)
|
||||
|
||||
def maybe_block_server(self, server):
|
||||
if server.optional and server.active and (server.bad_cons / server.threads) > 3:
|
||||
# Optional and active server had too many problems,
|
||||
# disable it now and send a re-enable plan to the scheduler
|
||||
# Was it resolving problem?
|
||||
if server.info is False:
|
||||
# Warn about resolving issues
|
||||
errormsg = T('Cannot connect to server %s [%s]') % (server.host, T('Server name does not resolve'))
|
||||
if server.errormsg != errormsg:
|
||||
server.errormsg = errormsg
|
||||
logging.warning(errormsg)
|
||||
logging.warning(T('Server %s will be ignored for %s minutes'), server.host, _PENALTY_TIMEOUT)
|
||||
|
||||
# Not fully the same as the code below for optional servers
|
||||
server.bad_cons = 0
|
||||
server.active = False
|
||||
server.errormsg = T('Server %s will be ignored for %s minutes') % ('', _PENALTY_TIMEOUT)
|
||||
logging.warning(T('Server %s will be ignored for %s minutes'), server.id, _PENALTY_TIMEOUT)
|
||||
self.plan_server(server.id, _PENALTY_TIMEOUT)
|
||||
self.plan_server(server, _PENALTY_TIMEOUT)
|
||||
|
||||
# Optional and active server had too many problems.
|
||||
# Disable it now and send a re-enable plan to the scheduler
|
||||
if server.optional and server.active and (server.bad_cons / server.threads) > 3:
|
||||
server.bad_cons = 0
|
||||
server.active = False
|
||||
logging.warning(T('Server %s will be ignored for %s minutes'), server.host, _PENALTY_TIMEOUT)
|
||||
self.plan_server(server, _PENALTY_TIMEOUT)
|
||||
|
||||
# Remove all connections to server
|
||||
for nw in server.idle_threads + server.busy_threads:
|
||||
@@ -394,20 +409,8 @@ class Downloader(Thread):
|
||||
sabnzbd.EXTERNAL_IPV6 = sabnzbd.test_ipv6()
|
||||
logging.debug('External IPv6 test result: %s', sabnzbd.EXTERNAL_IPV6)
|
||||
|
||||
# Then have to check the quality of SSL verification
|
||||
if sabnzbd.HAVE_SSL_CONTEXT:
|
||||
try:
|
||||
import ssl
|
||||
ctx = ssl.create_default_context()
|
||||
base_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
ssl_sock = ctx.wrap_socket(base_sock, server_hostname=cfg.selftest_host())
|
||||
ssl_sock.settimeout(2.0)
|
||||
ssl_sock.connect((cfg.selftest_host(), 443))
|
||||
ssl_sock.close()
|
||||
except:
|
||||
# Seems something is still wrong
|
||||
sabnzbd.set_https_verification(0)
|
||||
sabnzbd.HAVE_SSL_CONTEXT = False
|
||||
# Then we check SSL certifcate checking
|
||||
sabnzbd.HAVE_SSL_CONTEXT = sabnzbd.test_cert_checking()
|
||||
logging.debug('SSL verification test: %s', sabnzbd.HAVE_SSL_CONTEXT)
|
||||
|
||||
# Start decoders
|
||||
@@ -455,9 +458,11 @@ class Downloader(Thread):
|
||||
else:
|
||||
nw.timeout = None
|
||||
|
||||
if server.info is None:
|
||||
self.maybe_block_server(server)
|
||||
request_server_info(server)
|
||||
if not server.info:
|
||||
# Only request info if there's stuff in the queue
|
||||
if not sabnzbd.nzbqueue.NzbQueue.do.is_empty():
|
||||
self.maybe_block_server(server)
|
||||
request_server_info(server)
|
||||
break
|
||||
|
||||
article = sabnzbd.nzbqueue.NzbQueue.do.get_article(server, self.servers)
|
||||
@@ -467,7 +472,7 @@ class Downloader(Thread):
|
||||
|
||||
if server.retention and article.nzf.nzo.avg_stamp < time.time() - server.retention:
|
||||
# Let's get rid of all the articles for this server at once
|
||||
logging.info('Job %s too old for %s, moving on', article.nzf.nzo.work_name, server.id)
|
||||
logging.info('Job %s too old for %s, moving on', article.nzf.nzo.work_name, server.host)
|
||||
while article:
|
||||
self.decode(article, None, None)
|
||||
article = article.nzf.nzo.get_article(server, self.servers)
|
||||
@@ -482,10 +487,10 @@ class Downloader(Thread):
|
||||
self.__request_article(nw)
|
||||
else:
|
||||
try:
|
||||
logging.info("%s@%s: Initiating connection", nw.thrdnum, server.id)
|
||||
logging.info("%s@%s: Initiating connection", nw.thrdnum, server.host)
|
||||
nw.init_connect(self.write_fds)
|
||||
except:
|
||||
logging.error(T('Failed to initialize %s@%s with reason: %s'), nw.thrdnum, server.id, sys.exc_info()[1])
|
||||
logging.error(T('Failed to initialize %s@%s with reason: %s'), nw.thrdnum, server.host, sys.exc_info()[1])
|
||||
self.__reset_nw(nw, "failed to initialize")
|
||||
|
||||
# Exit-point
|
||||
@@ -614,7 +619,7 @@ class Downloader(Thread):
|
||||
try:
|
||||
nw.finish_connect(nw.status_code)
|
||||
if sabnzbd.LOG_ALL:
|
||||
logging.debug("%s@%s last message -> %s", nw.thrdnum, nw.server.id, nntp_to_msg(nw.data))
|
||||
logging.debug("%s@%s last message -> %s", nw.thrdnum, nw.server.host, nntp_to_msg(nw.data))
|
||||
nw.clear_data()
|
||||
except NNTPPermanentError, error:
|
||||
# Handle login problems
|
||||
@@ -631,9 +636,9 @@ class Downloader(Thread):
|
||||
errormsg = T('Too many connections to server %s') % display_msg
|
||||
if server.errormsg != errormsg:
|
||||
server.errormsg = errormsg
|
||||
logging.warning(T('Too many connections to server %s'), server.id)
|
||||
logging.warning(T('Too many connections to server %s'), server.host)
|
||||
self.__reset_nw(nw, None, warn=False, destroy=True, quit=True)
|
||||
self.plan_server(server.id, _PENALTY_TOOMANY)
|
||||
self.plan_server(server, _PENALTY_TOOMANY)
|
||||
server.threads -= 1
|
||||
elif ecode in ('502', '481', '482') and clues_too_many_ip(msg):
|
||||
# Account sharing?
|
||||
@@ -641,7 +646,7 @@ class Downloader(Thread):
|
||||
errormsg = T('Probable account sharing') + display_msg
|
||||
if server.errormsg != errormsg:
|
||||
server.errormsg = errormsg
|
||||
name = ' (%s)' % server.id
|
||||
name = ' (%s)' % server.host
|
||||
logging.warning(T('Probable account sharing') + name)
|
||||
penalty = _PENALTY_SHARE
|
||||
block = True
|
||||
@@ -651,7 +656,7 @@ class Downloader(Thread):
|
||||
errormsg = T('Failed login for server %s') % display_msg
|
||||
if server.errormsg != errormsg:
|
||||
server.errormsg = errormsg
|
||||
logging.error(T('Failed login for server %s'), server.id)
|
||||
logging.error(T('Failed login for server %s'), server.host)
|
||||
penalty = _PENALTY_PERM
|
||||
block = True
|
||||
elif ecode in ('502', '482'):
|
||||
@@ -660,7 +665,7 @@ class Downloader(Thread):
|
||||
errormsg = T('Cannot connect to server %s [%s]') % ('', display_msg)
|
||||
if server.errormsg != errormsg:
|
||||
server.errormsg = errormsg
|
||||
logging.warning(T('Cannot connect to server %s [%s]'), server.id, msg)
|
||||
logging.warning(T('Cannot connect to server %s [%s]'), server.host, msg)
|
||||
if clues_pay(msg):
|
||||
penalty = _PENALTY_PERM
|
||||
else:
|
||||
@@ -669,7 +674,7 @@ class Downloader(Thread):
|
||||
elif ecode == '400':
|
||||
# Temp connection problem?
|
||||
if server.active:
|
||||
logging.debug('Unspecified error 400 from server %s', server.id)
|
||||
logging.debug('Unspecified error 400 from server %s', server.host)
|
||||
penalty = _PENALTY_VERYSHORT
|
||||
block = True
|
||||
else:
|
||||
@@ -678,25 +683,25 @@ class Downloader(Thread):
|
||||
errormsg = T('Cannot connect to server %s [%s]') % ('', display_msg)
|
||||
if server.errormsg != errormsg:
|
||||
server.errormsg = errormsg
|
||||
logging.warning(T('Cannot connect to server %s [%s]'), server.id, msg)
|
||||
logging.warning(T('Cannot connect to server %s [%s]'), server.host, msg)
|
||||
penalty = _PENALTY_UNKNOWN
|
||||
block = True
|
||||
if block or (penalty and server.optional):
|
||||
if server.active:
|
||||
server.active = False
|
||||
if penalty and (block or server.optional):
|
||||
self.plan_server(server.id, penalty)
|
||||
self.plan_server(server, penalty)
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_all_try_lists()
|
||||
self.__reset_nw(nw, None, warn=False, quit=True)
|
||||
continue
|
||||
except:
|
||||
logging.error(T('Connecting %s@%s failed, message=%s'),
|
||||
nw.thrdnum, nw.server.id, nntp_to_msg(nw.data))
|
||||
nw.thrdnum, nw.server.host, nntp_to_msg(nw.data))
|
||||
# No reset-warning needed, above logging is sufficient
|
||||
self.__reset_nw(nw, None, warn=False)
|
||||
|
||||
if nw.connected:
|
||||
logging.info("Connecting %s@%s finished", nw.thrdnum, nw.server.id)
|
||||
logging.info("Connecting %s@%s finished", nw.thrdnum, nw.server.host)
|
||||
self.__request_article(nw)
|
||||
|
||||
elif nw.status_code == '223':
|
||||
@@ -713,27 +718,27 @@ class Downloader(Thread):
|
||||
elif nw.status_code in ('411', '423', '430'):
|
||||
done = True
|
||||
logging.debug('Thread %s@%s: Article %s missing (error=%s)',
|
||||
nw.thrdnum, nw.server.id, article.article, nw.status_code)
|
||||
nw.thrdnum, nw.server.host, article.article, nw.status_code)
|
||||
nw.clear_data()
|
||||
|
||||
elif nw.status_code == '480':
|
||||
if server.active:
|
||||
server.active = False
|
||||
server.errormsg = T('Server %s requires user/password') % ''
|
||||
self.plan_server(server.id, 0)
|
||||
self.plan_server(server, 0)
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_all_try_lists()
|
||||
msg = T('Server %s requires user/password') % nw.server.id
|
||||
msg = T('Server %s requires user/password') % nw.server.host
|
||||
self.__reset_nw(nw, msg, quit=True)
|
||||
|
||||
elif nw.status_code == '500':
|
||||
if nzo.precheck:
|
||||
# Assume "STAT" command is not supported
|
||||
server.have_stat = False
|
||||
logging.debug('Server %s does not support STAT', server.id)
|
||||
logging.debug('Server %s does not support STAT', server.host)
|
||||
else:
|
||||
# Assume "BODY" command is not supported
|
||||
server.have_body = False
|
||||
logging.debug('Server %s does not support BODY', server.id)
|
||||
logging.debug('Server %s does not support BODY', server.host)
|
||||
nw.clear_data()
|
||||
self.__request_article(nw)
|
||||
|
||||
@@ -741,7 +746,7 @@ class Downloader(Thread):
|
||||
server.bad_cons = 0 # Succesful data, clear "bad" counter
|
||||
server.errormsg = server.warning = ''
|
||||
if sabnzbd.LOG_ALL:
|
||||
logging.debug('Thread %s@%s: %s done', nw.thrdnum, server.id, article.article)
|
||||
logging.debug('Thread %s@%s: %s done', nw.thrdnum, server.host, article.article)
|
||||
self.decode(article, nw.lines, nw.data)
|
||||
|
||||
nw.soft_reset()
|
||||
@@ -773,9 +778,9 @@ class Downloader(Thread):
|
||||
|
||||
if warn and errormsg:
|
||||
server.warning = errormsg
|
||||
logging.info('Thread %s@%s: ' + errormsg, nw.thrdnum, server.id)
|
||||
logging.info('Thread %s@%s: ' + errormsg, nw.thrdnum, server.host)
|
||||
elif errormsg:
|
||||
logging.info('Thread %s@%s: ' + errormsg, nw.thrdnum, server.id)
|
||||
logging.info('Thread %s@%s: ' + errormsg, nw.thrdnum, server.host)
|
||||
|
||||
if nw in server.busy_threads:
|
||||
server.busy_threads.remove(nw)
|
||||
@@ -809,11 +814,11 @@ class Downloader(Thread):
|
||||
if nw.server.send_group and nzo.group != nw.group:
|
||||
group = nzo.group
|
||||
if sabnzbd.LOG_ALL:
|
||||
logging.debug('Thread %s@%s: GROUP <%s>', nw.thrdnum, nw.server.id, group)
|
||||
logging.debug('Thread %s@%s: GROUP <%s>', nw.thrdnum, nw.server.host, group)
|
||||
nw.send_group(group)
|
||||
else:
|
||||
if sabnzbd.LOG_ALL:
|
||||
logging.debug('Thread %s@%s: BODY %s', nw.thrdnum, nw.server.id, nw.article.article)
|
||||
logging.debug('Thread %s@%s: BODY %s', nw.thrdnum, nw.server.host, nw.article.article)
|
||||
nw.body(nzo.precheck)
|
||||
|
||||
fileno = nw.nntp.sock.fileno()
|
||||
@@ -835,24 +840,24 @@ class Downloader(Thread):
|
||||
# Each server has a dictionary entry, consisting of a list of timestamps.
|
||||
|
||||
@synchronized(TIMER_LOCK)
|
||||
def plan_server(self, server_id, interval):
|
||||
def plan_server(self, server, interval):
|
||||
""" Plan the restart of a server in 'interval' minutes """
|
||||
if cfg.no_penalties() and interval > _PENALTY_SHORT:
|
||||
# Overwrite in case of no_penalties
|
||||
interval = _PENALTY_SHORT
|
||||
|
||||
logging.debug('Set planned server resume %s in %s mins', server_id, interval)
|
||||
if server_id not in self._timers:
|
||||
self._timers[server_id] = []
|
||||
logging.debug('Set planned server resume %s in %s mins', server.host, interval)
|
||||
if server.id not in self._timers:
|
||||
self._timers[server.id] = []
|
||||
stamp = time.time() + 60.0 * interval
|
||||
self._timers[server_id].append(stamp)
|
||||
self._timers[server.id].append(stamp)
|
||||
if interval:
|
||||
sabnzbd.scheduler.plan_server(self.trigger_server, [server_id, stamp], interval)
|
||||
sabnzbd.scheduler.plan_server(self.trigger_server, [server.id, stamp], interval)
|
||||
|
||||
@synchronized(TIMER_LOCK)
|
||||
def trigger_server(self, server_id, timestamp):
|
||||
""" Called by scheduler, start server if timer still valid """
|
||||
logging.debug('Trigger planned server resume %s', server_id)
|
||||
logging.debug('Trigger planned server resume for server-id %s', server_id)
|
||||
if server_id in self._timers:
|
||||
if timestamp in self._timers[server_id]:
|
||||
del self._timers[server_id]
|
||||
@@ -869,7 +874,7 @@ class Downloader(Thread):
|
||||
# Activate server if it was inactive
|
||||
for server in self.servers:
|
||||
if server.id == server_id and not server.active:
|
||||
logging.debug('Unblock server %s', server_id)
|
||||
logging.debug('Unblock server %s', server.host)
|
||||
self.init_server(server_id, server_id)
|
||||
break
|
||||
|
||||
@@ -886,7 +891,7 @@ class Downloader(Thread):
|
||||
kicked = []
|
||||
for server_id in self._timers.keys():
|
||||
if not [stamp for stamp in self._timers[server_id] if stamp >= now]:
|
||||
logging.debug('Forcing re-evaluation of server %s', server_id)
|
||||
logging.debug('Forcing re-evaluation of server-id %s', server_id)
|
||||
del self._timers[server_id]
|
||||
self.init_server(server_id, server_id)
|
||||
kicked.append(server_id)
|
||||
@@ -894,7 +899,7 @@ class Downloader(Thread):
|
||||
for server in self.servers:
|
||||
if server.id not in self._timers:
|
||||
if server.id not in kicked and not server.active:
|
||||
logging.debug('Forcing activation of server %s', server.id)
|
||||
logging.debug('Forcing activation of server %s', server.host)
|
||||
self.init_server(server.id, server.id)
|
||||
|
||||
def update_server(self, oldserver, newserver):
|
||||
@@ -937,7 +942,7 @@ def clues_too_many(text):
|
||||
text = text.lower()
|
||||
for clue in ('exceed', 'connections', 'too many', 'threads', 'limit'):
|
||||
# Not 'download limit exceeded' error
|
||||
if (clue in text) and ('download' not in text):
|
||||
if (clue in text) and ('download' not in text) and ('byte' not in text):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
|
||||
1151
sabnzbd/interface.py
1151
sabnzbd/interface.py
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/python -OO
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2011-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2011-2018 The SABnzbd-Team <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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -44,6 +44,7 @@ from sabnzbd.constants import DEFAULT_PRIORITY, FUTURE_Q_FOLDER, JOB_ADMIN, \
|
||||
import sabnzbd.config as config
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.encoding import unicoder, special_fixer, gUTF
|
||||
import sabnzbd.utils.rarfile as rarfile
|
||||
|
||||
TAB_UNITS = ('', 'K', 'M', 'G', 'T', 'P')
|
||||
RE_UNITS = re.compile(r'(\d+\.*\d*)\s*([KMGTP]{0,1})', re.I)
|
||||
@@ -174,7 +175,7 @@ def cat_to_opts(cat, pp=None, script=None, priority=None):
|
||||
if priority == DEFAULT_PRIORITY:
|
||||
priority = def_cat.priority()
|
||||
|
||||
# logging.debug('Cat->Attrib cat=%s pp=%s script=%s prio=%s', cat, pp, script, priority)
|
||||
logging.debug('Cat->Attrib cat=%s pp=%s script=%s prio=%s', cat, pp, script, priority)
|
||||
return cat, pp, script, priority
|
||||
|
||||
|
||||
@@ -248,11 +249,12 @@ _DEVICES = ('con', 'prn', 'aux', 'nul',
|
||||
'com1', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9',
|
||||
'lpt1', 'lpt2', 'lpt3', 'lpt4', 'lpt5', 'lpt6', 'lpt7', 'lpt8', 'lpt9')
|
||||
|
||||
|
||||
def replace_win_devices(name):
|
||||
''' Remove reserved Windows device names from a name.
|
||||
""" Remove reserved Windows device names from a name.
|
||||
aux.txt ==> _aux.txt
|
||||
txt.aux ==> txt.aux
|
||||
'''
|
||||
"""
|
||||
if name:
|
||||
lname = name.lower()
|
||||
for dev in _DEVICES:
|
||||
@@ -260,9 +262,9 @@ def replace_win_devices(name):
|
||||
name = '_' + name
|
||||
break
|
||||
|
||||
# Remove special NTFS filename
|
||||
if lname.startswith('$mft'):
|
||||
name = name.replace('$', 'S', 1)
|
||||
# Remove special NTFS filename
|
||||
if lname.startswith('$mft'):
|
||||
name = name.replace('$', 'S', 1)
|
||||
|
||||
return name
|
||||
|
||||
@@ -412,6 +414,7 @@ def sanitize_files_in_folder(folder):
|
||||
new_path = os.path.join(root, sanitize_filename(file_))
|
||||
if path != new_path:
|
||||
try:
|
||||
logging.debug('Filename-sanitizer will rename %s to %s', path, new_path)
|
||||
os.rename(path, new_path)
|
||||
path = new_path
|
||||
except:
|
||||
@@ -745,7 +748,6 @@ def to_units(val, spaces=0, postfix=''):
|
||||
Show single decimal for M and higher
|
||||
"""
|
||||
dec_limit = 1
|
||||
decimals = 0
|
||||
if val < 0:
|
||||
sign = '-'
|
||||
else:
|
||||
@@ -995,6 +997,22 @@ def create_dirs(dirpath):
|
||||
return dirpath
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def recursive_listdir(dir):
|
||||
""" List all files in dirs and sub-dirs """
|
||||
filelist = []
|
||||
for root, dirs, files in os.walk(dir):
|
||||
for file in files:
|
||||
if '.AppleDouble' not in root and '.DS_Store' not in root:
|
||||
try:
|
||||
p = os.path.join(root, file)
|
||||
filelist.append(p)
|
||||
except UnicodeDecodeError:
|
||||
# Just skip failing names
|
||||
pass
|
||||
return filelist
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def move_to_path(path, new_path):
|
||||
""" Move a file to a new path, optionally give unique filename
|
||||
@@ -1064,7 +1082,7 @@ def get_filepath(path, nzo, filename):
|
||||
# It does no umask setting
|
||||
# It uses the dir_lock for the (rare) case that the
|
||||
# download_dir is equal to the complete_dir.
|
||||
dName = nzo.work_name
|
||||
dName = dirname = nzo.work_name
|
||||
if not nzo.created:
|
||||
for n in xrange(200):
|
||||
dName = dirname
|
||||
@@ -1138,11 +1156,12 @@ def renamer(old, new):
|
||||
@synchronized(DIR_LOCK)
|
||||
def remove_dir(path):
|
||||
""" Remove directory with retries for Win32 """
|
||||
logging.debug('[%s] Deleting dir %s', caller_name(), path)
|
||||
if sabnzbd.WIN32:
|
||||
retries = 15
|
||||
while retries > 0:
|
||||
try:
|
||||
remove_dir(path)
|
||||
os.rmdir(path)
|
||||
return
|
||||
except WindowsError, err:
|
||||
if err[0] == 32:
|
||||
@@ -1153,7 +1172,7 @@ def remove_dir(path):
|
||||
time.sleep(3)
|
||||
raise WindowsError(err)
|
||||
else:
|
||||
remove_dir(path)
|
||||
os.rmdir(path)
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
@@ -1185,12 +1204,6 @@ def remove_file(path):
|
||||
os.remove(path)
|
||||
|
||||
|
||||
def remove_dir(dir):
|
||||
""" Wrapper function so any dir removal is logged """
|
||||
logging.debug('[%s] Deleting dir %s', caller_name(), dir)
|
||||
os.rmdir(dir)
|
||||
|
||||
|
||||
def trim_win_path(path):
|
||||
""" Make sure Windows path stays below 70 by trimming last part """
|
||||
if sabnzbd.WIN32 and len(path) > 69:
|
||||
@@ -1224,6 +1237,14 @@ def get_admin_path(name, future):
|
||||
return os.path.join(os.path.join(cfg.download_dir.get_path(), name), JOB_ADMIN)
|
||||
|
||||
|
||||
def is_rarfile(rarfile_path):
|
||||
""" Wrapper in case it crashes due to missing file or long-path problems """
|
||||
try:
|
||||
return rarfile.is_rarfile(rarfile_path)
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
def on_cleanup_list(filename, skip_nzb=False):
|
||||
""" Return True if a filename matches the clean-up list """
|
||||
lst = cfg.cleanup_list()
|
||||
@@ -1269,8 +1290,8 @@ def memory_usage():
|
||||
except:
|
||||
logging.debug('Error retrieving memory usage')
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
else:
|
||||
return ''
|
||||
|
||||
|
||||
try:
|
||||
_PAGE_SIZE = os.sysconf("SC_PAGE_SIZE")
|
||||
except:
|
||||
@@ -1431,7 +1452,7 @@ def create_https_certificates(ssl_cert, ssl_key):
|
||||
try:
|
||||
from sabnzbd.utils.certgen import generate_key, generate_local_cert
|
||||
private_key = generate_key(key_size=2048, output_file=ssl_key)
|
||||
generate_local_cert(private_key, days_valid=3560, output_file=ssl_cert, LN=u'SABnzbd', ON=u'SABnzbd', CN=u'localhost')
|
||||
generate_local_cert(private_key, days_valid=3560, output_file=ssl_cert, LN=u'SABnzbd', ON=u'SABnzbd')
|
||||
logging.info('Self-signed certificates generated successfully')
|
||||
except:
|
||||
logging.error(T('Error creating SSL key and certificate'))
|
||||
@@ -1507,6 +1528,22 @@ def find_on_path(targets):
|
||||
return None
|
||||
|
||||
|
||||
def probablyipv4(ip):
|
||||
if ip.count('.') == 3 and re.sub('[0123456789.]', '', ip) == '':
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def probablyipv6(ip):
|
||||
# Returns True if the given input is probably an IPv6 address
|
||||
# Square Brackets like '[2001::1]' are OK
|
||||
if ip.count(':') >= 2 and re.sub('[0123456789abcdefABCDEF:\[\]]', '', ip) == '':
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def ip_extract():
|
||||
""" Return list of IP addresses of this system """
|
||||
ips = []
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -32,8 +32,8 @@ import sabnzbd
|
||||
from sabnzbd.encoding import TRANS, unicoder, platform_encode, deunicode
|
||||
import sabnzbd.utils.rarfile as rarfile
|
||||
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, \
|
||||
has_win_device, calc_age, long_path, remove_file
|
||||
real_path, globber, globber_full, get_all_passwords, renamer, clip_path, calc_age, \
|
||||
long_path, remove_file, recursive_listdir, is_rarfile
|
||||
from sabnzbd.sorting import SeriesSorter
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.constants import Status
|
||||
@@ -41,8 +41,12 @@ from sabnzbd.constants import Status
|
||||
if sabnzbd.WIN32:
|
||||
try:
|
||||
import win32api
|
||||
from win32con import SW_HIDE
|
||||
from win32process import STARTF_USESHOWWINDOW, IDLE_PRIORITY_CLASS
|
||||
import win32con
|
||||
import win32process
|
||||
|
||||
# Define scheduling priorities
|
||||
WIN_SCHED_PRIOS = {1: win32process.IDLE_PRIORITY_CLASS, 2: win32process.BELOW_NORMAL_PRIORITY_CLASS,
|
||||
3: win32process.NORMAL_PRIORITY_CLASS, 4: win32process.ABOVE_NORMAL_PRIORITY_CLASS,}
|
||||
|
||||
# Use patched version of subprocess module for Unicode on Windows
|
||||
import subprocessww
|
||||
@@ -61,14 +65,14 @@ else:
|
||||
from subprocess import Popen
|
||||
|
||||
# Regex globals
|
||||
RAR_RE = re.compile(r'\.(?P<ext>part\d*\.rar|rar|r\d\d|s\d\d|t\d\d|u\d\d|v\d\d|\d\d\d)$', re.I)
|
||||
RAR_RE = re.compile(r'\.(?P<ext>part\d*\.rar|rar|r\d\d|s\d\d|t\d\d|u\d\d|v\d\d|\d\d\d?\d)$', re.I)
|
||||
RAR_RE_V3 = re.compile(r'\.(?P<ext>part\d*)$', re.I)
|
||||
|
||||
LOADING_RE = re.compile(r'^Loading "(.+)"')
|
||||
TARGET_RE = re.compile(r'^(?:File|Target): "(.+)" -')
|
||||
EXTRACTFROM_RE = re.compile(r'^Extracting\sfrom\s(.+)')
|
||||
EXTRACTED_RE = re.compile(r'^(Extracting|Creating|...)\s+(.*?)\s+OK\s*$')
|
||||
SPLITFILE_RE = re.compile(r'\.(\d\d\d$)', re.I)
|
||||
SPLITFILE_RE = re.compile(r'\.(\d\d\d?\d$)', re.I)
|
||||
ZIP_RE = re.compile(r'\.(zip$)', re.I)
|
||||
SEVENZIP_RE = re.compile(r'\.7z$', re.I)
|
||||
SEVENMULTI_RE = re.compile(r'\.7z\.\d+$', re.I)
|
||||
@@ -155,14 +159,7 @@ def external_processing(extern_proc, nzo, complete_dir, nicename, status):
|
||||
'download_time': nzo.nzo_info.get('download_time', ''),
|
||||
'avg_bps': int(nzo.avg_bps_total / nzo.avg_bps_freq) if nzo.avg_bps_freq else 0,
|
||||
'age': calc_age(nzo.avg_date),
|
||||
'orig_nzb_gz': clip_path(nzb_paths[0]) if nzb_paths else '',
|
||||
'program_dir': sabnzbd.DIR_PROG,
|
||||
'par2_command': sabnzbd.newsunpack.PAR2_COMMAND,
|
||||
'multipar_command': sabnzbd.newsunpack.MULTIPAR_COMMAND,
|
||||
'rar_command': sabnzbd.newsunpack.RAR_COMMAND,
|
||||
'zip_command': sabnzbd.newsunpack.ZIP_COMMAND,
|
||||
'7zip_command': sabnzbd.newsunpack.SEVEN_COMMAND,
|
||||
'version': sabnzbd.__version__}
|
||||
'orig_nzb_gz': clip_path(nzb_paths[0]) if nzb_paths else ''}
|
||||
|
||||
try:
|
||||
stup, need_shell, command, creationflags = build_command(command)
|
||||
@@ -178,7 +175,7 @@ def external_processing(extern_proc, nzo, complete_dir, nicename, status):
|
||||
proc = p.stdout
|
||||
if p.stdin:
|
||||
p.stdin.close()
|
||||
line = ''
|
||||
|
||||
lines = []
|
||||
while 1:
|
||||
line = proc.readline()
|
||||
@@ -239,11 +236,10 @@ def unpack_magic(nzo, workdir, workdir_complete, dele, one_folder, joinables, zi
|
||||
else:
|
||||
xjoinables, xzips, xrars, xsevens, xts = build_filelists(workdir, workdir_complete, check_both=dele)
|
||||
|
||||
rerun = False
|
||||
force_rerun = False
|
||||
newfiles = []
|
||||
error = 0
|
||||
new_joins = new_rars = new_zips = new_ts = None
|
||||
error = None
|
||||
new_joins = new_ts = None
|
||||
|
||||
if cfg.enable_filejoin():
|
||||
new_joins = [jn for jn in xjoinables if jn not in joinables]
|
||||
@@ -253,8 +249,6 @@ def unpack_magic(nzo, workdir, workdir_complete, dele, one_folder, joinables, zi
|
||||
if newf:
|
||||
newfiles.extend(newf)
|
||||
logging.info('Filejoin finished on %s', workdir)
|
||||
nzo.set_action_line()
|
||||
rerun = not error
|
||||
|
||||
if cfg.enable_unrar():
|
||||
new_rars = [rar for rar in xrars if rar not in rars]
|
||||
@@ -264,32 +258,27 @@ def unpack_magic(nzo, workdir, workdir_complete, dele, one_folder, joinables, zi
|
||||
if newf:
|
||||
newfiles.extend(newf)
|
||||
logging.info('Unrar finished on %s', workdir)
|
||||
nzo.set_action_line()
|
||||
rerun = not error
|
||||
|
||||
if cfg.enable_7zip():
|
||||
new_sevens = [seven for seven in xsevens if seven not in sevens]
|
||||
if new_sevens:
|
||||
logging.info('7za starting on %s', workdir)
|
||||
if unseven(nzo, workdir, workdir_complete, dele, one_folder, new_sevens):
|
||||
error = True
|
||||
error, newf = unseven(nzo, workdir, workdir_complete, dele, one_folder, new_sevens)
|
||||
if newf:
|
||||
newfiles.extend(newf)
|
||||
logging.info('7za finished on %s', workdir)
|
||||
nzo.set_action_line()
|
||||
rerun = not error
|
||||
|
||||
if cfg.enable_unzip():
|
||||
new_zips = [zip for zip in xzips if zip not in zips]
|
||||
if new_zips:
|
||||
logging.info('Unzip starting on %s', workdir)
|
||||
if SEVEN_COMMAND:
|
||||
if unseven(nzo, workdir, workdir_complete, dele, one_folder, new_zips):
|
||||
error = True
|
||||
error, newf = unseven(nzo, workdir, workdir_complete, dele, one_folder, new_zips)
|
||||
else:
|
||||
if unzip(nzo, workdir, workdir_complete, dele, one_folder, new_zips):
|
||||
error = True
|
||||
error, newf = unzip(nzo, workdir, workdir_complete, dele, one_folder, new_zips)
|
||||
if newf:
|
||||
newfiles.extend(newf)
|
||||
logging.info('Unzip finished on %s', workdir)
|
||||
nzo.set_action_line()
|
||||
rerun = not error
|
||||
|
||||
if cfg.enable_tsjoin():
|
||||
new_ts = [_ts for _ts in xts if _ts not in ts]
|
||||
@@ -299,8 +288,12 @@ def unpack_magic(nzo, workdir, workdir_complete, dele, one_folder, joinables, zi
|
||||
if newf:
|
||||
newfiles.extend(newf)
|
||||
logging.info('TS Joining finished on %s', workdir)
|
||||
nzo.set_action_line()
|
||||
rerun = not error
|
||||
|
||||
# Refresh history and set output
|
||||
nzo.set_action_line()
|
||||
|
||||
# Only re-run if something was unpacked and it was success
|
||||
rerun = error in (False, 0)
|
||||
|
||||
# During a Retry we might miss files that failed during recursive unpack
|
||||
if nzo.reuse and depth == 1 and any(build_filelists(workdir, workdir_complete)):
|
||||
@@ -466,9 +459,7 @@ def rar_unpack(nzo, workdir, workdir_complete, delete, one_folder, rars):
|
||||
When 'delete' is set, originals will be deleted.
|
||||
When 'one_folder' is set, all files will be in a single folder
|
||||
"""
|
||||
extracted_files = []
|
||||
success = False
|
||||
|
||||
newfiles = extracted_files = []
|
||||
rar_sets = {}
|
||||
for rar in rars:
|
||||
rar_set = os.path.splitext(os.path.basename(rar))[0]
|
||||
@@ -509,6 +500,8 @@ def rar_unpack(nzo, workdir, workdir_complete, delete, one_folder, rars):
|
||||
if wait_count > 60:
|
||||
# We abort after 2 minutes of no changes
|
||||
nzo.direct_unpacker.abort()
|
||||
else:
|
||||
wait_count = 0
|
||||
last_stats = nzo.direct_unpacker.get_formatted_stats()
|
||||
|
||||
# Did we already direct-unpack it? Not when recursive-unpacking
|
||||
@@ -655,7 +648,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
|
||||
stup, need_shell, command, creationflags = build_command(command, flatten_command=True)
|
||||
|
||||
# Get list of all the volumes part of this set
|
||||
logging.debug("Analyzing rar file ... %s found", rarfile.is_rarfile(rarfile_path))
|
||||
logging.debug("Analyzing rar file ... %s found", is_rarfile(rarfile_path))
|
||||
logging.debug("Running unrar %s", command)
|
||||
p = Popen(command, shell=need_shell, stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
||||
@@ -849,6 +842,9 @@ def unzip(nzo, workdir, workdir_complete, delete, one_folder, zips):
|
||||
unzip_failed = False
|
||||
tms = time.time()
|
||||
|
||||
# For file-bookkeeping
|
||||
orig_dir_content = recursive_listdir(workdir_complete)
|
||||
|
||||
for _zip in zips:
|
||||
logging.info("Starting extract on zipfile: %s ", _zip)
|
||||
nzo.set_action_line(T('Unpacking'), '%s' % unicoder(os.path.basename(_zip)))
|
||||
@@ -866,6 +862,9 @@ def unzip(nzo, workdir, workdir_complete, delete, one_folder, zips):
|
||||
msg = T('%s files in %s') % (str(i), format_time_string(time.time() - tms))
|
||||
nzo.set_unpack_info('Unpack', msg)
|
||||
|
||||
# What's new?
|
||||
new_files = list(set(orig_dir_content + recursive_listdir(workdir_complete)))
|
||||
|
||||
# Delete the old files if we have to
|
||||
if delete and not unzip_failed:
|
||||
i = 0
|
||||
@@ -886,12 +885,12 @@ def unzip(nzo, workdir, workdir_complete, delete, one_folder, zips):
|
||||
except OSError:
|
||||
logging.warning(T('Deleting %s failed!'), brokenzip)
|
||||
|
||||
return unzip_failed
|
||||
return unzip_failed, new_files
|
||||
except:
|
||||
msg = sys.exc_info()[1]
|
||||
nzo.fail_msg = T('Unpacking failed, %s') % msg
|
||||
logging.error(T('Error "%s" while running unzip() on %s'), msg, nzo.final_name)
|
||||
return True
|
||||
return True, []
|
||||
|
||||
|
||||
def ZIP_Extract(zipfile, extraction_path, one_folder):
|
||||
@@ -925,6 +924,7 @@ def unseven(nzo, workdir, workdir_complete, delete, one_folder, sevens):
|
||||
"""
|
||||
i = 0
|
||||
unseven_failed = False
|
||||
new_files = []
|
||||
tms = time.time()
|
||||
|
||||
# Find multi-volume sets, because 7zip will not provide actual set members
|
||||
@@ -951,18 +951,19 @@ def unseven(nzo, workdir, workdir_complete, delete, one_folder, sevens):
|
||||
else:
|
||||
extraction_path = os.path.split(seven)[0]
|
||||
|
||||
res, msg = seven_extract(nzo, seven, extensions, extraction_path, one_folder, delete)
|
||||
res, new_files_set, msg = seven_extract(nzo, seven, extensions, extraction_path, one_folder, delete)
|
||||
if res:
|
||||
unseven_failed = True
|
||||
nzo.set_unpack_info('Unpack', msg)
|
||||
else:
|
||||
i += 1
|
||||
new_files.extend(new_files_set)
|
||||
|
||||
if not unseven_failed:
|
||||
msg = T('%s files in %s') % (str(i), format_time_string(time.time() - tms))
|
||||
nzo.set_unpack_info('Unpack', msg)
|
||||
|
||||
return unseven_failed
|
||||
return unseven_failed, new_files
|
||||
|
||||
|
||||
def seven_extract(nzo, sevenset, extensions, extraction_path, one_folder, delete):
|
||||
@@ -978,7 +979,7 @@ def seven_extract(nzo, sevenset, extensions, extraction_path, one_folder, delete
|
||||
msg = T('Trying 7zip with password "%s"') % unicoder(password)
|
||||
nzo.fail_msg = msg
|
||||
nzo.set_unpack_info('Unpack', msg)
|
||||
fail, msg = seven_extract_core(sevenset, extensions, extraction_path, one_folder, delete, password)
|
||||
fail, new_files, msg = seven_extract_core(sevenset, extensions, extraction_path, one_folder, delete, password)
|
||||
if fail != 2:
|
||||
break
|
||||
|
||||
@@ -987,7 +988,7 @@ def seven_extract(nzo, sevenset, extensions, extraction_path, one_folder, delete
|
||||
msg = '%s (%s)' % (T('Unpacking failed, archive requires a password'), os.path.basename(sevenset))
|
||||
nzo.fail_msg = msg
|
||||
logging.error(msg)
|
||||
return fail, msg
|
||||
return fail, new_files, msg
|
||||
|
||||
|
||||
def seven_extract_core(sevenset, extensions, extraction_path, one_folder, delete, password):
|
||||
@@ -1021,6 +1022,9 @@ def seven_extract_core(sevenset, extensions, extraction_path, one_folder, delete
|
||||
if not os.path.exists(name):
|
||||
return 1, T('7ZIP set "%s" is incomplete, cannot unpack') % unicoder(sevenset)
|
||||
|
||||
# For file-bookkeeping
|
||||
orig_dir_content = recursive_listdir(extraction_path)
|
||||
|
||||
command = [SEVEN_COMMAND, method, '-y', overwrite, parm, case, password,
|
||||
'-o%s' % extraction_path, name]
|
||||
|
||||
@@ -1035,6 +1039,9 @@ def seven_extract_core(sevenset, extensions, extraction_path, one_folder, delete
|
||||
|
||||
ret = p.wait()
|
||||
|
||||
# What's new?
|
||||
new_files = list(set(orig_dir_content + recursive_listdir(extraction_path)))
|
||||
|
||||
if ret == 0 and delete:
|
||||
if extensions:
|
||||
for ext in extensions:
|
||||
@@ -1050,7 +1057,7 @@ def seven_extract_core(sevenset, extensions, extraction_path, one_folder, delete
|
||||
logging.warning(T('Deleting %s failed!'), sevenset)
|
||||
|
||||
# Always return an error message, even when return code is 0
|
||||
return ret, T('Could not unpack %s') % unicoder(sevenset)
|
||||
return ret, new_files, T('Could not unpack %s') % unicoder(sevenset)
|
||||
|
||||
|
||||
##############################################################################
|
||||
@@ -1112,9 +1119,9 @@ def par2_repair(parfile_nzf, nzo, workdir, setname, single):
|
||||
|
||||
# Multipar or not?
|
||||
if sabnzbd.WIN32 and cfg.multipar():
|
||||
finished, readd, datafiles, used_joinables, used_for_repair = MultiPar_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=single)
|
||||
finished, readd, datafiles, used_joinables, used_for_repair = MultiPar_Verify(parfile, nzo, setname, joinables, single=single)
|
||||
else:
|
||||
finished, readd, datafiles, used_joinables, used_for_repair = PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=single)
|
||||
finished, readd, datafiles, used_joinables, used_for_repair = PAR_Verify(parfile, nzo, setname, joinables, single=single)
|
||||
|
||||
if finished:
|
||||
result = True
|
||||
@@ -1181,7 +1188,7 @@ _RE_LOADING_PAR2 = re.compile(r'Loading "([^"]+)"\.')
|
||||
_RE_LOADED_PAR2 = re.compile(r'Loaded (\d+) new packets')
|
||||
|
||||
|
||||
def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False):
|
||||
def PAR_Verify(parfile, nzo, setname, joinables, single=False):
|
||||
""" Run par2 on par-set """
|
||||
used_joinables = []
|
||||
used_for_repair = []
|
||||
@@ -1322,7 +1329,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False):
|
||||
block_table = {}
|
||||
for nzf in nzo.extrapars[setname]:
|
||||
if not nzf.completed:
|
||||
block_table[int_conv(nzf.blocks)] = nzf
|
||||
block_table[nzf.blocks] = nzf
|
||||
|
||||
if block_table:
|
||||
nzf = block_table[min(block_table.keys())]
|
||||
@@ -1518,7 +1525,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False):
|
||||
|
||||
_RE_FILENAME = re.compile(r'"([^"]+)"')
|
||||
|
||||
def MultiPar_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False):
|
||||
def MultiPar_Verify(parfile, nzo, setname, joinables, single=False):
|
||||
""" Run par2 on par-set """
|
||||
parfolder = os.path.split(parfile)[0]
|
||||
used_joinables = []
|
||||
@@ -1635,7 +1642,7 @@ def MultiPar_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False)
|
||||
block_table = {}
|
||||
for nzf in nzo.extrapars[setname]:
|
||||
if not nzf.completed:
|
||||
block_table[int_conv(nzf.blocks)] = nzf
|
||||
block_table[nzf.blocks] = nzf
|
||||
|
||||
if block_table:
|
||||
nzf = block_table[min(block_table.keys())]
|
||||
@@ -1842,10 +1849,23 @@ def MultiPar_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False)
|
||||
verifynum = 0
|
||||
|
||||
elif in_repair:
|
||||
# Line with percentage of repair (nothing else)
|
||||
per = float(line[:-1])
|
||||
nzo.set_action_line(T('Repairing'), '%2d%%' % per)
|
||||
nzo.status = Status.REPAIRING
|
||||
try:
|
||||
# Line with percentage of repair (nothing else)
|
||||
per = float(line[:-1])
|
||||
nzo.set_action_line(T('Repairing'), '%2d%%' % per)
|
||||
nzo.status = Status.REPAIRING
|
||||
except:
|
||||
# Checksum error
|
||||
if 'checksum' in line:
|
||||
# Failed due to checksum error of multipar
|
||||
msg = T('Repairing failed, %s') % line
|
||||
nzo.fail_msg = msg
|
||||
msg = u'[%s] %s' % (unicoder(setname), msg)
|
||||
nzo.set_unpack_info('Repair', msg)
|
||||
nzo.status = Status.FAILED
|
||||
else:
|
||||
# Not sure, log error
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
|
||||
elif line.startswith('Repaired successfully'):
|
||||
msg = T('[%s] Repaired in %s') % (unicoder(setname), format_time_string(time.time() - start))
|
||||
@@ -1893,7 +1913,7 @@ def MultiPar_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False)
|
||||
|
||||
return finished, readd, datafiles, used_joinables, used_for_repair
|
||||
|
||||
def create_env(nzo=None, extra_env_fields=None):
|
||||
def create_env(nzo=None, extra_env_fields={}):
|
||||
""" Modify the environment for pp-scripts with extra information
|
||||
OSX: Return copy of environment without PYTHONPATH and PYTHONHOME
|
||||
other: return None
|
||||
@@ -1917,16 +1937,25 @@ def create_env(nzo=None, extra_env_fields=None):
|
||||
# Catch key/unicode errors
|
||||
pass
|
||||
|
||||
# Add extra fields
|
||||
for field in extra_env_fields:
|
||||
try:
|
||||
if extra_env_fields[field] is not None:
|
||||
env['SAB_' + field.upper()] = extra_env_fields[field]
|
||||
else:
|
||||
env['SAB_' + field.upper()] = ''
|
||||
except:
|
||||
# Catch key/unicode errors
|
||||
pass
|
||||
# Always supply basic info
|
||||
extra_env_fields.update({'program_dir': sabnzbd.DIR_PROG,
|
||||
'par2_command': sabnzbd.newsunpack.PAR2_COMMAND,
|
||||
'multipar_command': sabnzbd.newsunpack.MULTIPAR_COMMAND,
|
||||
'rar_command': sabnzbd.newsunpack.RAR_COMMAND,
|
||||
'zip_command': sabnzbd.newsunpack.ZIP_COMMAND,
|
||||
'7zip_command': sabnzbd.newsunpack.SEVEN_COMMAND,
|
||||
'version': sabnzbd.__version__})
|
||||
|
||||
# Add extra fields
|
||||
for field in extra_env_fields:
|
||||
try:
|
||||
if extra_env_fields[field] is not None:
|
||||
env['SAB_' + field.upper()] = extra_env_fields[field]
|
||||
else:
|
||||
env['SAB_' + field.upper()] = ''
|
||||
except:
|
||||
# Catch key/unicode errors
|
||||
pass
|
||||
|
||||
if sabnzbd.DARWIN:
|
||||
if 'PYTHONPATH' in env:
|
||||
@@ -1994,9 +2023,9 @@ def build_command(command, flatten_command=False):
|
||||
|
||||
need_shell = os.path.splitext(command[0])[1].lower() not in ('.exe', '.com')
|
||||
stup = subprocess.STARTUPINFO()
|
||||
stup.dwFlags = STARTF_USESHOWWINDOW
|
||||
stup.wShowWindow = SW_HIDE
|
||||
creationflags = IDLE_PRIORITY_CLASS
|
||||
stup.dwFlags = win32process.STARTF_USESHOWWINDOW
|
||||
stup.wShowWindow = win32con.SW_HIDE
|
||||
creationflags = WIN_SCHED_PRIOS[cfg.win_process_prio()]
|
||||
|
||||
# Work-around for bug in Python's Popen function,
|
||||
# scripts with spaces in the path don't work.
|
||||
@@ -2062,36 +2091,16 @@ def build_filelists(workdir, workdir_complete=None, check_both=False, check_rar=
|
||||
sevens, joinables, zips, rars, ts, filelist = ([], [], [], [], [], [])
|
||||
|
||||
if workdir_complete:
|
||||
for root, dirs, files in os.walk(workdir_complete):
|
||||
for _file in files:
|
||||
if '.AppleDouble' not in root and '.DS_Store' not in root:
|
||||
try:
|
||||
p = os.path.join(root, _file)
|
||||
filelist.append(p)
|
||||
except UnicodeDecodeError:
|
||||
# Just skip failing names
|
||||
pass
|
||||
filelist.extend(recursive_listdir(workdir_complete))
|
||||
|
||||
if workdir and (not filelist or check_both):
|
||||
for root, dirs, files in os.walk(workdir):
|
||||
for _file in files:
|
||||
if '.AppleDouble' not in root and '.DS_Store' not in root:
|
||||
try:
|
||||
p = os.path.join(root, _file)
|
||||
filelist.append(p)
|
||||
except UnicodeDecodeError:
|
||||
# Just skip failing names
|
||||
pass
|
||||
filelist.extend(recursive_listdir(workdir))
|
||||
|
||||
for file in filelist:
|
||||
# Extra check for rar (takes CPU/disk)
|
||||
file_is_rar = False
|
||||
if check_rar:
|
||||
try:
|
||||
# Can fail on Windows due to long-path after recursive-unpack
|
||||
file_is_rar = rarfile.is_rarfile(file)
|
||||
except:
|
||||
pass
|
||||
file_is_rar = is_rarfile(file)
|
||||
|
||||
# Run through all the checks
|
||||
if SEVENZIP_RE.search(file) or SEVENMULTI_RE.search(file):
|
||||
@@ -2283,23 +2292,33 @@ def analyse_show(name):
|
||||
info.get('ep_name', '')
|
||||
|
||||
|
||||
def pre_queue(name, pp, cat, script, priority, size, groups):
|
||||
""" Run pre-queue script (if any) and process results """
|
||||
def pre_queue(nzo, pp, cat):
|
||||
""" Run pre-queue script (if any) and process results.
|
||||
pp and cat are supplied seperate since they can change.
|
||||
"""
|
||||
def fix(p):
|
||||
if not p or str(p).lower() == 'none':
|
||||
return ''
|
||||
return unicoder(p)
|
||||
|
||||
values = [1, name, pp, cat, script, priority, None]
|
||||
values = [1, nzo.final_name_pw_clean, pp, cat, nzo.script, nzo.priority, None]
|
||||
script_path = make_script_path(cfg.pre_script())
|
||||
if script_path:
|
||||
command = [script_path, name, pp, cat, script, priority, str(size), ' '.join(groups)]
|
||||
command.extend(analyse_show(name))
|
||||
# Basic command-line parameters
|
||||
command = [script_path, nzo.final_name_pw_clean, pp, cat, nzo.script, nzo.priority, str(nzo.bytes), ' '.join(nzo.groups)]
|
||||
command.extend(analyse_show(nzo.final_name_pw_clean))
|
||||
command = [fix(arg) for arg in command]
|
||||
|
||||
# Fields not in the NZO directly
|
||||
extra_env_fields = {'groups': ' '.join(nzo.groups),
|
||||
'show_name': command[8],
|
||||
'show_season': command[9],
|
||||
'show_episode': command[10],
|
||||
'show_episode_name': command[11]}
|
||||
|
||||
try:
|
||||
stup, need_shell, command, creationflags = build_command(command)
|
||||
env = create_env()
|
||||
env = create_env(nzo, extra_env_fields)
|
||||
logging.info('Running pre-queue script %s', command)
|
||||
p = Popen(command, shell=need_shell, stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
||||
@@ -2320,11 +2339,11 @@ def pre_queue(name, pp, cat, script, priority, size, groups):
|
||||
n += 1
|
||||
accept = int_conv(values[0])
|
||||
if accept < 1:
|
||||
logging.info('Pre-Q refuses %s', name)
|
||||
logging.info('Pre-Q refuses %s', nzo.final_name_pw_clean)
|
||||
elif accept == 2:
|
||||
logging.info('Pre-Q accepts&fails %s', name)
|
||||
logging.info('Pre-Q accepts&fails %s', nzo.final_name_pw_clean)
|
||||
else:
|
||||
logging.info('Pre-Q accepts %s', name)
|
||||
logging.info('Pre-Q accepts %s', nzo.final_name_pw_clean)
|
||||
|
||||
return values
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -25,13 +25,12 @@ from threading import Thread
|
||||
from nntplib import NNTPPermanentError
|
||||
import time
|
||||
import logging
|
||||
import re
|
||||
import ssl
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.constants import *
|
||||
import sabnzbd.cfg
|
||||
from sabnzbd.misc import nntp_to_msg
|
||||
from sabnzbd.misc import nntp_to_msg, probablyipv4, probablyipv6
|
||||
|
||||
# Have to make errors available under Python <2.7.9
|
||||
if sabnzbd.HAVE_SSL_CONTEXT:
|
||||
@@ -51,9 +50,9 @@ socket.setdefaulttimeout(DEF_TIMEOUT)
|
||||
|
||||
def _retrieve_info(server):
|
||||
""" Async attempt to run getaddrinfo() for specified server """
|
||||
logging.debug('Retrieving server address information for %s', server.host)
|
||||
info = GetServerParms(server.host, server.port)
|
||||
|
||||
if info is None:
|
||||
if not info:
|
||||
server.bad_cons += server.threads
|
||||
else:
|
||||
server.bad_cons = 0
|
||||
@@ -100,7 +99,7 @@ def GetServerParms(host, port):
|
||||
except:
|
||||
# Nothing found!
|
||||
pass
|
||||
return None
|
||||
return False
|
||||
|
||||
|
||||
def get_ssl_version(sock):
|
||||
@@ -147,25 +146,11 @@ def con(sock, host, port, sslenabled, write_fds, nntp):
|
||||
nntp.error(e)
|
||||
|
||||
|
||||
def probablyipv4(ip):
|
||||
if ip.count('.') == 3 and re.sub('[0123456789.]', '', ip) == '':
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def probablyipv6(ip):
|
||||
if ip.count(':') >= 2 and re.sub('[0123456789abcdefABCDEF:]', '', ip) == '':
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
class NNTP(object):
|
||||
# Pre-define attributes to save memory
|
||||
__slots__ = ('host', 'port', 'nw', 'blocking', 'error_msg', 'sock')
|
||||
|
||||
def __init__(self, host, port, info, sslenabled, send_group, nw, user=None, password=None, block=False, write_fds=None):
|
||||
def __init__(self, host, port, info, sslenabled, nw, block=False, write_fds=None):
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.nw = nw
|
||||
@@ -173,10 +158,7 @@ class NNTP(object):
|
||||
self.error_msg = None
|
||||
|
||||
if not info:
|
||||
if block:
|
||||
info = GetServerParms(host, port)
|
||||
else:
|
||||
raise socket.error(errno.EADDRNOTAVAIL, "Address not available - Check for internet or DNS problems")
|
||||
raise socket.error(errno.EADDRNOTAVAIL, "Address not available - Check for internet or DNS problems")
|
||||
|
||||
af, socktype, proto, canonname, sa = info[0]
|
||||
|
||||
@@ -200,14 +182,14 @@ class NNTP(object):
|
||||
ctx.verify_mode = ssl.CERT_NONE
|
||||
|
||||
# Did the user set a custom cipher-string?
|
||||
if(sabnzbd.cfg.ssl_ciphers()):
|
||||
if(nw.server.ssl_ciphers):
|
||||
# At their own risk, socket will error out in case it was invalid
|
||||
ctx.set_ciphers(sabnzbd.cfg.ssl_ciphers())
|
||||
ctx.set_ciphers(nw.server.ssl_ciphers)
|
||||
|
||||
self.sock = ctx.wrap_socket(socket.socket(af, socktype, proto), server_hostname=str(nw.server.host))
|
||||
else:
|
||||
# Ciphers have to be None, if set to empty-string it will fail on <2.7.9
|
||||
ciphers = sabnzbd.cfg.ssl_ciphers() if sabnzbd.cfg.ssl_ciphers() else None
|
||||
ciphers = nw.server.ssl_ciphers if nw.server.ssl_ciphers else None
|
||||
# Use a regular wrapper, no certificate validation
|
||||
self.sock = ssl.wrap_socket(socket.socket(af, socktype, proto), ciphers=ciphers)
|
||||
else:
|
||||
@@ -323,11 +305,15 @@ class NewsWrapper(object):
|
||||
return ''
|
||||
|
||||
def init_connect(self, write_fds):
|
||||
self.nntp = NNTP(self.server.hostip, self.server.port, self.server.info, self.server.ssl,
|
||||
self.server.send_group, self, self.server.username, self.server.password,
|
||||
self.blocking, write_fds)
|
||||
self.recv = self.nntp.sock.recv
|
||||
# Server-info is normally requested by initialization of
|
||||
# servers in Downloader, but not when testing servers
|
||||
if self.blocking and not self.server.info:
|
||||
self.server.info = GetServerParms(self.server.host, self.server.port)
|
||||
|
||||
# Construct NNTP object and shorthands
|
||||
self.nntp = NNTP(self.server.hostip, self.server.port, self.server.info, self.server.ssl,
|
||||
self, self.blocking, write_fds)
|
||||
self.recv = self.nntp.sock.recv
|
||||
self.timeout = time.time() + self.server.timeout
|
||||
|
||||
def finish_connect(self, code):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -23,7 +23,6 @@ sabnzbd.notifier - Send notifications to any notification services
|
||||
from __future__ import with_statement
|
||||
import os.path
|
||||
import logging
|
||||
import socket
|
||||
import urllib2
|
||||
import httplib
|
||||
import urllib
|
||||
@@ -463,7 +462,7 @@ def send_pushover(title, msg, gtype, force=False, test=None):
|
||||
"expire": emergency_expire
|
||||
}
|
||||
return do_send_pushover(body)
|
||||
if prio > -3 and prio < 2:
|
||||
if -3 < prio < 2:
|
||||
body = { "token": apikey,
|
||||
"user": userkey,
|
||||
"device": device,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -69,7 +69,7 @@ class NzbQueue(object):
|
||||
data = sabnzbd.load_admin(QUEUE_FILE_NAME)
|
||||
|
||||
# Process the data and check compatibility
|
||||
nzo_ids = self.check_compatibility(data)
|
||||
nzo_ids = self.check_compatibility(repair, data)
|
||||
|
||||
# First handle jobs in the queue file
|
||||
folders = []
|
||||
@@ -104,7 +104,7 @@ class NzbQueue(object):
|
||||
except:
|
||||
pass
|
||||
|
||||
def check_compatibility(self, data):
|
||||
def check_compatibility(self, repair, data):
|
||||
""" Do compatibility checks on the loaded data """
|
||||
nzo_ids = []
|
||||
if not data:
|
||||
@@ -204,7 +204,6 @@ class NzbQueue(object):
|
||||
verified = sabnzbd.load_data(VERIFIED_FILE, path, remove=False) or {'x': False}
|
||||
return all(verified[x] for x in verified)
|
||||
|
||||
nzo_id = None
|
||||
name = os.path.basename(folder)
|
||||
path = os.path.join(folder, JOB_ADMIN)
|
||||
if hasattr(new_nzb, 'filename'):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -324,7 +324,7 @@ class NzbFile(TryList):
|
||||
self.is_par2 = True
|
||||
self.setname = setname
|
||||
self.vol = vol
|
||||
self.blocks = int(blocks)
|
||||
self.blocks = int_conv(blocks)
|
||||
|
||||
def get_article(self, server, servers):
|
||||
""" Get next article to be downloaded """
|
||||
@@ -493,7 +493,11 @@ class NzbParser(xml.sax.handler.ContentHandler):
|
||||
# Create an NZF
|
||||
self.in_file = False
|
||||
if not self.article_db:
|
||||
logging.warning(T('File %s is empty, skipping'), self.filename)
|
||||
msg = T('File %s is empty, skipping')
|
||||
if cfg.ignore_empty_files():
|
||||
logging.info(msg, self.filename)
|
||||
else:
|
||||
logging.warning(msg, self.filename)
|
||||
return
|
||||
try:
|
||||
tm = datetime.datetime.fromtimestamp(self.file_date)
|
||||
@@ -592,11 +596,6 @@ class NzbObject(TryList):
|
||||
filename = platform_encode(filename)
|
||||
nzbname = platform_encode(nzbname)
|
||||
|
||||
if pp is None:
|
||||
r = u = d = None
|
||||
else:
|
||||
r, u, d = sabnzbd.pp_to_opts(pp)
|
||||
|
||||
self.filename = filename # Original filename
|
||||
if nzbname and nzb:
|
||||
work_name = nzbname # Use nzbname if set and only for non-future slot
|
||||
@@ -625,6 +624,26 @@ class NzbObject(TryList):
|
||||
self.work_name = create_work_name(work_name)
|
||||
self.final_name = create_work_name(work_name)
|
||||
|
||||
# Determine category and find pp/script values based on input
|
||||
# Later will be re-evaluated based on import steps
|
||||
if pp is None:
|
||||
r = u = d = None
|
||||
else:
|
||||
r, u, d = sabnzbd.pp_to_opts(pp)
|
||||
self.set_priority(priority) # Parse priority of input
|
||||
self.repair = r # True if we want to repair this set
|
||||
self.unpack = u # True if we want to unpack this set
|
||||
self.delete = d # True if we want to delete this set
|
||||
self.script = script # External script for this set
|
||||
self.cat = cat # User-set category
|
||||
|
||||
# Information fields
|
||||
self.url = url or filename
|
||||
self.groups = []
|
||||
self.avg_date = datetime.datetime.fromtimestamp(0.0)
|
||||
self.avg_stamp = 0.0 # Avg age in seconds (calculated from avg_age)
|
||||
|
||||
# Bookkeeping values
|
||||
self.meta = {}
|
||||
self.servercount = {} # Dict to keep bytes per server
|
||||
self.created = False # dirprefixes + work_name created
|
||||
@@ -634,19 +653,6 @@ class NzbObject(TryList):
|
||||
self.bytes_tried = 0 # Which bytes did we try
|
||||
self.bytes_missing = 0 # Bytes missing
|
||||
self.bad_articles = 0 # How many bad (non-recoverable) articles
|
||||
self.set_priority(priority) # Parse priority of input
|
||||
self.repair = r # True if we want to repair this set
|
||||
self.unpack = u # True if we want to unpack this set
|
||||
self.delete = d # True if we want to delete this set
|
||||
self.script = script # External script for this set
|
||||
self.cat = cat # Indexer category
|
||||
if url:
|
||||
self.url = str(url) # Source URL
|
||||
else:
|
||||
self.url = filename
|
||||
self.groups = []
|
||||
self.avg_date = datetime.datetime.fromtimestamp(0.0)
|
||||
self.avg_stamp = 0.0 # Avg age in seconds (calculated from avg_age)
|
||||
|
||||
self.partable = {} # Holds one parfile-name for each set
|
||||
self.extrapars = {} # Holds the extra parfile names for all sets
|
||||
@@ -659,7 +665,7 @@ class NzbObject(TryList):
|
||||
|
||||
self.finished_files = [] # List of all finished NZFs
|
||||
|
||||
# the current status of the nzo eg:
|
||||
# The current status of the nzo eg:
|
||||
# Queued, Downloading, Repairing, Unpacking, Failed, Complete
|
||||
self.status = status
|
||||
self.avg_bps_freq = 0
|
||||
@@ -693,10 +699,7 @@ class NzbObject(TryList):
|
||||
# Stores one line containing the last failure
|
||||
self.fail_msg = ''
|
||||
# Stores various info about the nzo to be
|
||||
if nzo_info:
|
||||
self.nzo_info = nzo_info
|
||||
else:
|
||||
self.nzo_info = {}
|
||||
self.nzo_info = nzo_info or {}
|
||||
|
||||
# Temporary store for custom foldername - needs to be stored because of url fetching
|
||||
self.custom_name = nzbname
|
||||
@@ -770,6 +773,7 @@ class NzbObject(TryList):
|
||||
except Exception, err:
|
||||
self.incomplete = True
|
||||
logging.warning(T('Invalid NZB file %s, skipping (reason=%s, line=%s)'), filename, err, 0)
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
|
||||
if self.incomplete:
|
||||
if cfg.allow_incomplete_nzb():
|
||||
@@ -823,9 +827,9 @@ class NzbObject(TryList):
|
||||
|
||||
# Run user pre-queue script if needed
|
||||
if not reuse and cfg.pre_script():
|
||||
accept, name, pp, cat_pp, script_pp, priority, group = \
|
||||
sabnzbd.newsunpack.pre_queue(self.final_name_pw_clean, pp, cat, script,
|
||||
priority, self.bytes, self.groups)
|
||||
# Call the script
|
||||
accept, name, pp, cat_pp, script_pp, priority, group = sabnzbd.newsunpack.pre_queue(self, pp, cat)
|
||||
|
||||
# Accept or reject
|
||||
accept = int_conv(accept)
|
||||
if accept < 1:
|
||||
@@ -1018,7 +1022,7 @@ class NzbObject(TryList):
|
||||
|
||||
# Sort the sets
|
||||
for setname in self.extrapars:
|
||||
self.extrapars[parset].sort(key=lambda x: x.blocks)
|
||||
self.extrapars[setname].sort(key=lambda x: x.blocks)
|
||||
|
||||
# Also re-parse all filenames in case par2 came after first articles
|
||||
self.verify_all_filenames_and_resort()
|
||||
@@ -1094,38 +1098,37 @@ class NzbObject(TryList):
|
||||
def get_extra_blocks(self, setname, needed_blocks):
|
||||
""" We want par2-files of all sets that are similar to this one
|
||||
So that we also can handle multi-sets with duplicate filenames
|
||||
Block-table has as keys the nr-blocks
|
||||
Returns number of added blocks in case they are available
|
||||
In case of duplicate files for the same set, we might add too
|
||||
little par2 on the first add-run, but that's a risk we need to take.
|
||||
"""
|
||||
logging.info('Need %s more blocks, checking blocks', needed_blocks)
|
||||
|
||||
avail_blocks = 0
|
||||
block_table = {}
|
||||
block_list = []
|
||||
for setname_search in self.extrapars:
|
||||
# Do it for our set, or highlight matching one
|
||||
# We might catch to many par2's, but that's okay
|
||||
# We might catch too many par2's, but that's okay
|
||||
if setname_search == setname or difflib.SequenceMatcher(None, setname, setname_search).ratio() > 0.85:
|
||||
for nzf in self.extrapars[setname_search]:
|
||||
# Don't count extrapars that are completed already
|
||||
if nzf.completed:
|
||||
continue
|
||||
blocks = int_conv(nzf.blocks)
|
||||
if blocks not in block_table:
|
||||
block_table[blocks] = []
|
||||
# We assume same block-vol-naming for each set
|
||||
avail_blocks += blocks
|
||||
block_table[blocks].append(nzf)
|
||||
block_list.append(nzf)
|
||||
avail_blocks += nzf.blocks
|
||||
|
||||
# Sort by smallest blocks first
|
||||
block_list.sort(key=lambda x: x.blocks)
|
||||
logging.info('%s blocks available', avail_blocks)
|
||||
|
||||
# Enough?
|
||||
if avail_blocks >= needed_blocks:
|
||||
added_blocks = 0
|
||||
while added_blocks < needed_blocks:
|
||||
block_size = min(block_table.keys())
|
||||
for new_nzf in block_table[block_size]:
|
||||
self.add_parfile(new_nzf)
|
||||
added_blocks += block_size
|
||||
block_table.pop(block_size)
|
||||
new_nzf = block_list.pop()
|
||||
self.add_parfile(new_nzf)
|
||||
added_blocks += new_nzf.blocks
|
||||
|
||||
logging.info('Added %s blocks to %s', added_blocks, self.final_name)
|
||||
return added_blocks
|
||||
else:
|
||||
@@ -1403,7 +1406,7 @@ class NzbObject(TryList):
|
||||
if (parset in nzf.filename or parset in original_filename) and self.extrapars[parset]:
|
||||
for new_nzf in self.extrapars[parset]:
|
||||
self.add_parfile(new_nzf)
|
||||
blocks_new += int_conv(new_nzf.blocks)
|
||||
blocks_new += new_nzf.blocks
|
||||
# Enough now?
|
||||
if blocks_new >= self.bad_articles:
|
||||
logging.info('Prospectively added %s repair blocks to %s', blocks_new, self.final_name)
|
||||
@@ -1498,11 +1501,11 @@ class NzbObject(TryList):
|
||||
self.set_unpack_info('Servers', ', '.join(msgs), unique=True)
|
||||
|
||||
@synchronized(NZO_LOCK)
|
||||
def increase_bad_articles_counter(self, type):
|
||||
def increase_bad_articles_counter(self, article_type):
|
||||
""" Record information about bad articles """
|
||||
if type not in self.nzo_info:
|
||||
self.nzo_info[type] = 0
|
||||
self.nzo_info[type] += 1
|
||||
if article_type not in self.nzo_info:
|
||||
self.nzo_info[article_type] = 0
|
||||
self.nzo_info[article_type] += 1
|
||||
self.bad_articles += 1
|
||||
|
||||
def get_article(self, server, servers):
|
||||
@@ -2002,7 +2005,7 @@ def scan_password(name):
|
||||
slash = name.find('/')
|
||||
|
||||
# Look for name/password, but make sure that '/' comes before any {{
|
||||
if slash >= 0 and slash < braces and 'password=' not in name:
|
||||
if 0 <= slash < braces and 'password=' not in name:
|
||||
# Is it maybe in 'name / password' notation?
|
||||
if slash == name.find(' / ') + 1:
|
||||
# Remove the extra space after name and before password
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -36,7 +36,7 @@ import logging
|
||||
import sabnzbd
|
||||
import sabnzbd.cfg
|
||||
|
||||
from sabnzbd.constants import VALID_ARCHIVES, MEBI, Status
|
||||
from sabnzbd.constants import VALID_ARCHIVES, VALID_NZB_FILES, MEBI, Status
|
||||
from sabnzbd.misc import get_filename, get_ext, diskspace, to_units
|
||||
from sabnzbd.panic import launch_a_browser
|
||||
import sabnzbd.notifier as notifier
|
||||
@@ -754,7 +754,7 @@ class SABnzbdDelegate(NSObject):
|
||||
if get_ext(name) in VALID_ARCHIVES:
|
||||
# logging.info('[osx] archive')
|
||||
dirscanner.ProcessArchiveFile(fn, name, keep=True)
|
||||
elif get_ext(name) in ('.nzb', '.gz', '.bz2'):
|
||||
elif get_ext(name) in VALID_NZB_FILES:
|
||||
# logging.info('[osx] nzb')
|
||||
dirscanner.ProcessSingleFile(fn, name, keep=True)
|
||||
# logging.info('opening done')
|
||||
@@ -764,10 +764,7 @@ class SABnzbdDelegate(NSObject):
|
||||
self.setMenuTitle_("\n\n%s\n" % (T('Stopping...')))
|
||||
self.status_item.setHighlightMode_(NO)
|
||||
self.osx_icon = False
|
||||
logging.info('[osx] application stopping daemon')
|
||||
sabnzbd.halt()
|
||||
cherrypy.engine.exit()
|
||||
sabnzbd.SABSTOP = True
|
||||
sabnzbd.shutdown_program()
|
||||
try:
|
||||
notifier.send_notification('SABnzbd', T('SABnzbd shutdown finished'), notifier.NOTIFICATION['other'])
|
||||
except AttributeError:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -26,7 +26,9 @@ import struct
|
||||
|
||||
|
||||
PROBABLY_PAR2_RE = re.compile(r'(.*)\.vol(\d*)[\+\-](\d*)\.par2', re.I)
|
||||
PAR_ID = "PAR2\x00PKT"
|
||||
PAR_PKT_ID = "PAR2\x00PKT"
|
||||
PAR_FILE_ID = "PAR 2.0\x00FileDesc"
|
||||
PAR_CREATOR_ID = "PAR 2.0\x00Creator"
|
||||
PAR_RECOVERY_ID = "RecvSlic"
|
||||
|
||||
|
||||
@@ -35,7 +37,7 @@ def is_parfile(filename):
|
||||
try:
|
||||
with open(filename, "rb") as f:
|
||||
buf = f.read(8)
|
||||
return buf.startswith(PAR_ID)
|
||||
return buf.startswith(PAR_PKT_ID)
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
@@ -47,7 +49,6 @@ def analyse_par2(name, filepath=None):
|
||||
setname is empty when not a par2 file
|
||||
"""
|
||||
name = name.strip()
|
||||
setname = None
|
||||
vol = block = 0
|
||||
m = PROBABLY_PAR2_RE.search(name)
|
||||
if m:
|
||||
@@ -129,7 +130,8 @@ def parse_par2_file_packet(f, header):
|
||||
|
||||
nothing = None, None, None
|
||||
|
||||
if header != PAR_ID:
|
||||
if header != PAR_PKT_ID:
|
||||
print header
|
||||
return nothing
|
||||
|
||||
# Length must be multiple of 4 and at least 20
|
||||
@@ -157,10 +159,14 @@ def parse_par2_file_packet(f, header):
|
||||
|
||||
# See if it's the right packet and get name + hash
|
||||
for offset in range(0, len, 8):
|
||||
if data[offset:offset + 16] == "PAR 2.0\0FileDesc":
|
||||
if data[offset:offset + 16] == PAR_FILE_ID:
|
||||
hash = data[offset + 32:offset + 48]
|
||||
hash16k = data[offset + 48:offset + 64]
|
||||
filename = data[offset + 72:].strip('\0')
|
||||
return filename, hash, hash16k
|
||||
elif data[offset:offset + 15] == PAR_CREATOR_ID:
|
||||
# Here untill the end is the creator-text
|
||||
# Usefull in case of bugs in the par2-creating software
|
||||
logging.debug('Par2-creator of %s is: %s', os.path.basename(f.name), data[offset+16:])
|
||||
|
||||
return nothing
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python -OO
|
||||
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2018 The SABnzbd-Team <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
|
||||
@@ -31,7 +31,7 @@ from sabnzbd.newsunpack import unpack_magic, par2_repair, external_processing, \
|
||||
sfv_check, build_filelists, rar_sort
|
||||
from threading import Thread
|
||||
from sabnzbd.misc import real_path, get_unique_path, create_dirs, move_to_path, \
|
||||
make_script_path, long_path, clip_path, \
|
||||
make_script_path, long_path, clip_path, recursive_listdir, \
|
||||
on_cleanup_list, renamer, remove_dir, remove_all, globber, globber_full, \
|
||||
set_permissions, cleanup_empty_directories, fix_unix_encoding, \
|
||||
sanitize_and_trim_path, sanitize_files_in_folder, remove_file
|
||||
@@ -281,7 +281,6 @@ def process_job(nzo):
|
||||
nzb_list = []
|
||||
# These need to be initialized in case of a crash
|
||||
workdir_complete = ''
|
||||
postproc_time = 0
|
||||
script_log = ''
|
||||
script_line = ''
|
||||
|
||||
@@ -336,15 +335,12 @@ def process_job(nzo):
|
||||
unpack_error = 1
|
||||
|
||||
script = nzo.script
|
||||
cat = nzo.cat
|
||||
|
||||
logging.info('Starting Post-Processing on %s' +
|
||||
' => Repair:%s, Unpack:%s, Delete:%s, Script:%s, Cat:%s',
|
||||
filename, flag_repair, flag_unpack, flag_delete, script, nzo.cat)
|
||||
|
||||
# Set complete dir to workdir in case we need to abort
|
||||
workdir_complete = workdir
|
||||
marker_file = None
|
||||
|
||||
# Par processing, if enabled
|
||||
if all_ok and flag_repair:
|
||||
@@ -385,10 +381,12 @@ def process_job(nzo):
|
||||
nzo.status = Status.EXTRACTING
|
||||
logging.info("Running unpack_magic on %s", filename)
|
||||
unpack_error, newfiles = unpack_magic(nzo, workdir, tmp_workdir_complete, flag_delete, one_folder, (), (), (), (), ())
|
||||
logging.info("Unpacked files %s", newfiles)
|
||||
|
||||
if sabnzbd.WIN32:
|
||||
# Sanitize the resulting files
|
||||
newfiles = sanitize_files_in_folder(tmp_workdir_complete)
|
||||
logging.info("unpack_magic finished on %s", filename)
|
||||
logging.info("Finished unpack_magic on %s", filename)
|
||||
else:
|
||||
nzo.set_unpack_info('Unpack', T('No post-processing because of failed verification'))
|
||||
|
||||
@@ -866,10 +864,7 @@ def nzb_redirect(wdir, nzbname, pp, script, cat, priority):
|
||||
if so send to queue and remove if on CleanList
|
||||
Returns list of processed NZB's
|
||||
"""
|
||||
files = []
|
||||
for root, _dirs, names in os.walk(wdir):
|
||||
for name in names:
|
||||
files.append(os.path.join(root, name))
|
||||
files = recursive_listdir(wdir)
|
||||
|
||||
for file_ in files:
|
||||
if os.path.splitext(file_)[1].lower() != '.nzb':
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user