Compare commits

..

30 Commits

Author SHA1 Message Date
SABnzbd Automation
0030e4dd36 Automatic translation update 2017-09-15 13:51:26 +00:00
Safihre
c3013d67b4 Show NZB name from RSS-feed when fetching
Of course not the name of the RSS-feed itself.
2017-09-15 14:21:45 +02:00
Safihre
ddb7f2a40c Require SABYenc 3.1.1 due to PyPi mixup
Broken source-distribution resulted in heaving to create new release, PyPi does not allow to re-upload files.
2017-09-15 12:59:24 +02:00
Safihre
167a94736e Update text files for 2.3.0RC2 2017-09-15 09:41:12 +02:00
Safihre
8b3e30f0a1 Require SABYenc 3.1.0 and no longer list CRC values
Since SABYenc 3.1.0 doesn't calculate them anymore for speed improvements.
2017-09-15 09:36:24 +02:00
Safihre
c383fa88fb Update ISSUES to match the website and list Synology being special 2017-09-13 20:51:07 +02:00
Safihre
ee72c1e4d5 Correct the testing-releases feedback slider 2017-09-11 22:13:06 +02:00
Safihre
a80bd826d6 Use the NZO password to save in database
build_history_info is called on every interface update to pretend the post-processing job is a history-job. So a password file (if set) would be loaded every second. Thanks @sanderjo!
2017-09-11 20:43:27 +02:00
Safihre
63e6d45bb1 Make sure users are warned that their settings could be unsafe 2017-09-10 21:45:19 +02:00
SABnzbd Automation
61300db1fb Automatic translation update 2017-09-10 18:24:12 +00:00
Safihre
23d005fc36 Update texts and links for 2.3.0 release to come 2017-09-10 20:01:45 +02:00
Safihre
871b351656 Set could potentially be missing from extrapars
Some bad handeling of newsunpack possibly
2017-09-10 19:29:58 +02:00
Safihre
6b53b9934e Waiting for URL would result in 100% CPU usage due to constant looping 2017-09-10 12:45:30 +02:00
Safihre
e038e08a60 Revert "Permanent notice in Plush to upgrade to Glitter"
6fdeab6948
2017-09-09 23:51:23 +02:00
Safihre
8300cb7762 Correct command-line help 2017-09-09 17:31:00 +02:00
Safihre
ec8302717f Warnings API-call now returns a dict like it should 2017-09-09 16:27:55 +02:00
Safihre
6b872b44db MultiPar can report both "PAR File(s) Incomplete" and "Need more blocks" 2017-09-09 16:20:35 +02:00
Safihre
6e48ebccc7 Correctly display time if server and brower are not in same timezone
#989
2017-09-09 13:16:11 +02:00
Safihre
1cd24d1fd0 Locking when iterating over extrapars for queue-stats
But only when we request all the files.
Closes #1029
2017-09-09 10:45:39 +02:00
Safihre
fa6bb79f53 Fix Chrome 61 table border change 2017-09-08 14:51:43 +02:00
Safihre
22e9086e09 Add AppVeyor for Windows testing
#999
2017-09-08 12:07:28 +02:00
Safihre
408b84e02d Basic NZB adding via upload or from disk 2017-09-08 10:28:01 +02:00
Safihre
16ac4dce21 Use requests module for testing 2017-09-08 10:28:01 +02:00
Safihre
5ce1554a46 Hide/Show Details in Config > Servers 2017-09-08 10:27:46 +02:00
Safihre
2d84ed6813 Always have something in RSS jobs storage 2017-09-07 00:26:59 +02:00
Safihre
06dc5b181e Do not leave rss.jobs empty to prevent crash later on
See: https://forums.sabnzbd.org/viewtopic.php?f=11&t=22952
2017-09-06 20:54:21 +02:00
Safihre
37b759fece Only notify upon testing failures 2017-09-06 20:50:27 +02:00
Safihre
3f8430780d Add test requirements 2017-09-06 20:44:47 +02:00
Safihre
9e9bc5f3b0 Very basic testing
Does it start, does it serve pages, does it serve api-requests
2017-09-06 20:44:47 +02:00
Safihre
85204105c2 Check input when setting priority of job
There was no input validation, via the API you could set any value.
2017-09-06 20:25:08 +02:00
71 changed files with 845 additions and 385 deletions

4
.gitignore vendored
View File

@@ -19,6 +19,10 @@ SABnzbd*.dmg
# WingIDE project files
*.wp[ru]
# Testing folders
.cache
.xprocess
# General junk
*.keep
*.bak

15
.travis.yml Normal file
View File

@@ -0,0 +1,15 @@
language: python
python:
- "2.7"
before_install:
- sudo add-apt-repository ppa:jcfp -y
- sudo apt-get update -q
- sudo apt-get install sabnzbdplus -y
install:
- pip install --upgrade -r tests/requirements.txt
script:
- pytest
notifications:
email:
on_success: never
on_failure: always

View File

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

View File

@@ -9,28 +9,18 @@
- When par2 or unrar hang up, never just stop SABnzbd.
Instead use your operating system's task manager to stop the par2 or unrar program.
Forcing SABnzbd to quit may damage your queues.
Windows-only:
If you keep having trouble with par2 multicore you can disable it
in Config->Switches.
This will force the use of the old and tried, but slower par2cmdline program.
- A bug in Windows 7 may cause severe memory leaks when you use SABnzbd in
combination with some virus scanners and firewalls.
Install this hotfix:
Description: http://support.microsoft.com/kb/979223/en-us
Download location: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=979223&kbln=en-us
- Some Usenet servers have intermittent login (or other) problems.
For these the server blocking method is not very favourable.
There is an INI-only option that will limit blocks to 1 minute.
no_penalties = 1
See: https://sabnzbd.org/wiki/configuration/2.2/special
See: https://sabnzbd.org/wiki/configuration/2.3/special
- Some third-party utilties try to probe SABnzbd API in such a way that you will
often see warnings about unauthenticated access.
If you are sure these probes are harmless, you can suppress the warnings by
setting the option "api_warnings" to 0.
See: https://sabnzbd.org/wiki/configuration/2.2/special
See: https://sabnzbd.org/wiki/configuration/2.3/special
- On OSX you may encounter downloaded files with foreign characters.
The par2 repair may fail when the files were created on a Windows system.
@@ -41,7 +31,7 @@
You will see this only when downloaded files contain accented characters.
You need to fix it yourself by running the convmv utility (available for most Linux platforms).
Possible the file system override setting 'fsys_type' might be solve things:
See: https://sabnzbd.org/wiki/configuration/2.2/special
See: https://sabnzbd.org/wiki/configuration/2.3/special
- The "Watched Folder" sometimes fails to delete the NZB files it has
processed. This happens when other software still accesses these files.
@@ -51,6 +41,10 @@
- Memory usage can sometimes have high peaks. This makes using SABnzbd on very low
memory systems (e.g. a NAS device or a router) a challenge.
In particular on Synology (SynoCommunity) the device may report that SABnzbd is using
a lot of memory even when idle. In this case the memory is usually not actually used by
SABnzbd and will be available if required by other apps or the system. More information
can be found in the discussion here: https://github.com/SynoCommunity/spksrc/issues/2856
- SABnzbd is not compatible with some software firewall versions.
The Microsoft Windows Firewall works fine, but remember to tell this
@@ -72,13 +66,3 @@
Config->Special->wait_for_dfolder to 1.
SABnzbd will appear to hang until the drive is mounted.
- On some operating systems it looks like there is a problem with one of the standard Python libraries.
It is possible that you get errors about saving admin files and even unexplained crashes.
If so, you can enable the option for the alternative library.
It has the same functionality, but is slower.
We've had reports about this issue on non-mainstream Linux platforms.
- OpenElec
- Squeeze Linux
There is a "special" option that will allow you to select an alternative library.
use_pickle = 1
See: https://sabnzbd.org/wiki/configuration/2.2/special

View File

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

View File

@@ -1,17 +1,11 @@
Release Notes - SABnzbd 2.3.0 Alpha 2
Release Notes - SABnzbd 2.3.0 RC 2
=========================================================
## Changes and bugfixes since 2.3.0 Alpha 1
- Specials Config page could not be loaded
- Crash when adding new jobs
- Further stalling-detection improvements
- Crash when a job was set to only Download
- Display of download progress and missing data improved
- Retried jobs would show incorrect download progress
- Different icon for downloads with Force priority
- Show progress during verification of extra files
- API: 'missing' field removed, use 'mbmissing'
## Changes since 2.3.0 RC 1
- Improved download performance 10-15% on CPU limited devices
by removing redundant article verification.
- Linux: Update of SABYenc to version 3.1.1 is required.
- Password file was loaded from disk excessively
## Changes since 2.2.1
- Option to limit Servers to specific Categories removed
@@ -26,6 +20,11 @@ Release Notes - SABnzbd 2.3.0 Alpha 2
- Scheduler can pause/unpause jobs in specific category
- Series Duplicate Checker can allow PROPER/REAL/REPACK versions
- Refresh-icon in Glitter when refresh rate is above 2 seconds
- Different icon for downloads with Force priority
- Show progress during verification of extra files
- All dates and times are now time zone independent
- API: 'missing' field removed from 'queue', use 'mbmissing'
- API: 'warnings' method now returns array for better handling
- macOS: Bundled new OpenSSL version with support for TLSv1.2
- macOS: No longer linked to system certificate store
- macOS and Windows: Installers include Mozilla CA certificates
@@ -36,9 +35,12 @@ Release Notes - SABnzbd 2.3.0 Alpha 2
- Remove Timeout tracebacks
- Only warn if number of actual passwords is larger than 30
- Unexpected behavior when diskspace becomes critically low
- MacOS: Direct Unpack could hang in case of special charters in names
- API: Correct listing of downloaded and queued files in get_files
- Retried jobs would show incorrect download progress
- API: Correct listing of downloaded and queued files in 'get_files'
- API: Number of bytes missing and downloaded could be slightly off
- API: Jobs with Force priority should always have status 'Downloading'
- MacOS: Direct Unpack could hang in case of special characters in names
- Windows: Download with many par2 sets could get listed as failed
## Upgrading from 2.1.x and older
- Finish queue

View File

@@ -32,6 +32,7 @@ except:
import logging
import logging.handlers
import traceback
import os
import getopt
import signal
@@ -150,7 +151,11 @@ class guiHandler(logging.Handler):
# Loose the oldest record
self.store.pop(0)
try:
self.store.append(self.format(record))
# Append traceback, if available
warning = {'type': record.levelname, 'text': record.msg % record.args, 'time': int(time.time())}
if record.exc_info:
warning['text'] = '%s\n%s' % (warning['text'], traceback.format_exc())
self.store.append(warning)
except UnicodeDecodeError:
# Catch elusive Unicode conversion problems
pass
@@ -161,12 +166,6 @@ class guiHandler(logging.Handler):
def count(self):
return len(self.store)
def last(self):
if self.store:
return self.store[len(self.store) - 1]
else:
return ""
def content(self):
""" Return an array with last records """
return self.store
@@ -202,11 +201,11 @@ def print_help():
print " --repair-all Try to reconstruct the queue from the incomplete folder"
print " with full data reconstruction"
print " --https <port> Port to use for HTTPS server"
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 " --console Force console logging for OSX app"
print " --new Run a new instance of SABnzbd"
print " --ipv6_hosting <0|1> Listen on IPv6 address [::1]"
def print_version():

6
appveyor.yml Normal file
View File

@@ -0,0 +1,6 @@
install:
- pip install --upgrade -r tests/requirements.txt
- pip install pypiwin32
build_script:
- pytest

View File

@@ -1,16 +0,0 @@
import six
import mock
from cherrypy import wsgiserver
class TestWSGIGateway_u0:
@mock.patch('cherrypy.wsgiserver.WSGIGateway_10.get_environ',
lambda self: {'foo': 'bar'})
def test_decodes_items(self):
req = mock.MagicMock(path=b'/', qs=b'')
gw = wsgiserver.WSGIGateway_u0(req=req)
env = gw.get_environ()
assert env['foo'] == 'bar'
assert isinstance(env['foo'], six.text_type)

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Config"#-->
<!--#set global $help_uri="configuration/2.2/configure"#-->
<!--#set global $help_uri="configuration/2.3/configure"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#from locale import getpreferredencoding#-->

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Categories"#-->
<!--#set global $help_uri="configuration/2.2/categories"#-->
<!--#set global $help_uri="configuration/2.3/categories"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
<div class="section">

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Folders"#-->
<!--#set global $help_uri="configuration/2.2/folders"#-->
<!--#set global $help_uri="configuration/2.3/folders"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="General"#-->
<!--#set global $help_uri="configuration/2.2/general"#-->
<!--#set global $help_uri="configuration/2.3/general"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -253,6 +253,32 @@
})
hideOrShowTranslate()
// Highlight in case user is not safe
// So when exposed to internet and no password, no external limit or no username/password
var safeCheck = \$('#host, #local_ranges, #inet_exposure, #${pid}_wu, #${pid}_wp')
function checkSafety() {
if(\$('#host').val() != 'localhost' && \$('#host').val() != '127.0.0.1') {
// No limitation on local-network
if(!\$('#local_ranges').val() || \$('#inet_exposure').val() > 3) {
// And no username and password?
if(!\$('#${pid}_wu').val() || !\$('#${pid}_wp').val()) {
// Add warning icon if not there already
if(!\$('.host-warning').length) {
safeCheck.after('<span class="glyphicon glyphicon-alert host-warning"></span>')
\$('.host-warning').tooltip({'title': '$T('checkSafety')'})
}
return
}
}
}
// Remove warnings
\$('.host-warning').remove()
safeCheck.removeClass('host-warning-highlight')
}
checkSafety()
safeCheck.on('change', checkSafety)
// Click functions
\$('#apikey, #nzbkey').click(function () { \$(this).select() });
\$('#generate_new_apikey').click(function () {
@@ -330,7 +356,6 @@
}
}
// Update the value
\$('#bandwidth_max_value, #bandwidth_max_dropdown').on('change', function() {
if(\$('#bandwidth_max_value').val()) {

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Email"#-->
<!--#set global $help_uri="configuration/2.2/notifications"#-->
<!--#set global $help_uri="configuration/2.3/notifications"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#def show_notify_checkboxes($section_label)#-->

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="RSS"#-->
<!--#set global $help_uri="configuration/2.2/rss"#-->
<!--#set global $help_uri="configuration/2.3/rss"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
<!--#if not $active_feed#-->

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Scheduling"#-->
<!--#set global $help_uri="configuration/2.2/scheduling"#-->
<!--#set global $help_uri="configuration/2.3/scheduling"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<%

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Servers"#-->
<!--#set global $help_uri="configuration/2.2/servers"#-->
<!--#set global $help_uri="configuration/2.3/servers"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -7,7 +7,7 @@
<input type="hidden" name="session" value="$session" />
<div id="addServer">
<div class="padding alt">
<button type="button" class="btn btn-default" id="addServerButton"><span class="glyphicon glyphicon-plus"></span> $T('button-addServer')</button>
<button type="button" class="btn btn-default" id="addServerButton"><span class="glyphicon glyphicon-plus"></span> $T('button-addServer')</button>
</div>
</div>
<div class="section" id="addServerContent" style="display: none;">
@@ -407,10 +407,10 @@
}
\$(this).parent().next().toggle();
\$(this).parent().next().next().toggle();
if (\$(this).attr("value") == "$T('showDetails')") {
\$(this).attr("value", "$T('hideDetails')");
if (\$(this).text().indexOf("$T('showDetails')") > 0) {
\$(this).html(\$(this).html().replace("$T('showDetails')", "$T('hideDetails')"));
} else {
\$(this).attr("value", "$T('showDetails')");
\$(this).html(\$(this).html().replace("$T('hideDetails')", "$T('showDetails')"));
}
});

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Sorting"#-->
<!--#set global $help_uri="configuration/2.2/sorting"#-->
<!--#set global $help_uri="configuration/2.3/sorting"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Special"#-->
<!--#set global $help_uri="configuration/2.2/special"#-->
<!--#set global $help_uri="configuration/2.3/special"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Switches"#-->
<!--#set global $help_uri="configuration/2.2/switches"#-->
<!--#set global $help_uri="configuration/2.3/switches"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">

View File

@@ -1082,6 +1082,12 @@ input[type="checkbox"] {
color: #666;
}
.host-warning {
color: #404040;
margin-left: 7px;
top: 3px;
}
.fileBrowser .glyphicon {
margin-right: 2px;
top: 1px;

View File

@@ -18,7 +18,7 @@
<tr>
<td class="table-messages-label">
<span class="label" data-bind="css: 'label-' + css, text: type"></span>
<strong data-bind="text: date, attr: { 'data-timestamp': timestamp }"></strong>
<strong data-bind="text: displayDateTime(timestamp, \$parent.dateFormat(), 'X'), attr: { 'data-timestamp': timestamp }"></strong>
<span class="queue-message-text" data-bind="html: text"></span>
</td>
</tr>

View File

@@ -59,15 +59,9 @@
<div id="feedback-slider-inner">
<p><strong>If anything is not working as expected, or could be improved, let us know!</strong></p>
<p><strong>If you encounter an error, please include the log file (click on <span class="glyphicon glyphicon-wrench"></span> ) when contacting us.</strong></p>
<h4>General</h4>
<span class="glyphicon glyphicon-home"></span> <a href="https://forums.sabnzbd.org/" target="_blank">SABnzbd Forum</a><br />
<span class="glyphicon glyphicon-home"></span> <a href="https://forums.sabnzbd.org/viewforum.php?f=11" target="_blank">SABnzbd Forum</a><br />
<span class="glyphicon glyphicon-plane"></span> <a href="https://github.com/sabnzbd/sabnzbd/" target="_blank">SABnzbd on Github</a><br />
<span class="glyphicon glyphicon-globe"></span> <a href="https://translations.launchpad.net/sabnzbd" target="_blank">Translations of SABnzbd</a><br />
<span class="glyphicon glyphicon-envelope"></span> <a href="mailto:bugs@sabnzbd.org?body=Version:%20$version%20Skin:%20Glitter">Email bugs@sabnzbd.org</a>
<h4>Interface (Glitter)</h4>
<span class="glyphicon glyphicon-home"></span> <a href="https://forums.sabnzbd.org/viewtopic.php?f=5&amp;t=18880" target="_blank">Glitter at SABnzbd Forum</a><br />
<span class="glyphicon glyphicon-envelope"></span> <a href="mailto:safihre@sabnzbd.org?body=Version:%20$version">Email safihre@sabnzbd.org</a>
</div>
</div>

View File

@@ -46,7 +46,7 @@
var sabSpeedHistory = [$bytespersec_list];
var newRelease = "$new_release";
var newReleaseUrl = "$new_rel_url";
var glitterIsBeta = ("$version".search(/Alpa|Beta|x/)) > 0;
var glitterIsBeta = ("$version".search(/[develop|Alpha|Beta|RC]/)) > 0;
var glitterPreLoadQueue = $preload_queue;
var glitterPreLoadHistory = $preload_history;
@@ -63,6 +63,7 @@
glitterTranslate.removeDown = "$T('Glitter-confirmClearDownloads')";
glitterTranslate.removeDow1 = "$T('Glitter-confirmClear1Download')";
glitterTranslate.retryAll = "$T('link-retryAll')?";
glitterTranslate.fetch = "$T('Glitter-fetch')";
glitterTranslate.encrypted = "$T('Glitter-encrypted')";
glitterTranslate.duplicate = "$T('Glitter-duplicate')";
glitterTranslate.tooLarge = "$T('Glitter-tooLarge')";

View File

@@ -128,7 +128,7 @@ function displayDateTime(inDate, outFormat, inFormat) {
if(inDate == '') {
var theMoment = moment()
} else {
var theMoment = moment(inDate, inFormat)
var theMoment = moment.utc(inDate, inFormat)
}
// Special format or regular format?
if(outFormat == 'fromNow') {

View File

@@ -536,6 +536,7 @@ function ViewModel() {
callAPI({
mode: 'warnings'
}).then(function(response) {
// Reset it all
self.allWarnings.removeAll();
if(response) {
@@ -544,20 +545,16 @@ function ViewModel() {
// Go over all warnings and add
$.each(response.warnings, function(index, warning) {
// Split warning into parts
var warningSplit = convertHTMLtoText(warning).split(/\n/);
// Reformat CSS label and date
// Replaces spaces by non-breakable spaces and newlines with br's
var warningData = {
index: index,
type: glitterTranslate.status[warningSplit[1]].slice(0, -1),
text: warningSplit.slice(2).join('<br/>').replace(/ /g, '\u00A0'), // Recombine if multiple lines
date: displayDateTime(warningSplit[0], self.dateFormat(), 'YYYY-MM-DD HH:mm'),
timestamp: moment(warningSplit[0], 'YYYY-MM-DD HH:mm').unix(),
css: (warningSplit[1] == "ERROR" ? "danger" : warningSplit[1] == "WARNING" ? "warning" : "info"),
type: glitterTranslate.status[warning.type].slice(0, -1),
text: warning.text.replace(/ /g, '\u00A0').replace(/(?:\r\n|\r|\n)/g, '<br />'),
timestamp: warning.time,
css: (warning.type == "ERROR" ? "danger" : warning.type == "WARNING" ? "warning" : "info"),
clear: self.clearWarnings
};
self.allWarnings.push(warningData)
})
}

View File

@@ -533,6 +533,10 @@ function QueueModel(parent, data) {
if(self.status() == 'Checking') {
return glitterTranslate.checking
}
// Grabbing
if(self.status() == 'Grabbing') {
return glitterTranslate.fetch
}
// Pausing status
if((self.parent.parent.downloadsPaused() && self.priority() != 2) || self.pausedStatus()) {
return glitterTranslate.paused;

View File

@@ -360,7 +360,7 @@ li.dropdown {
#feedback-slider:hover {
left: 0px;
height: 340px;
height: 200px;
opacity: 1;
}
@@ -404,7 +404,6 @@ thead {
tr th {
border-bottom: none !important;
visibility: hidden;
padding: 0px !important;
height: 0px;
}

View File

@@ -99,9 +99,8 @@
#if $loadavg#$T('ft-sysload'):&nbsp;<span id="loadavg">$loadavg</span>#end if#
</div>
<div id="nav_text_left">
<span id="warning_box"><b><a href="${path}status/#tabs-warnings" id="last_warning" title="#echo $last_warning.replace("\n"," ").replace('"',"'") #"><span id="have_warnings">$have_warnings</span> $T('warnings')</a></b></span>
<span id="warning_box"><b><a href="${path}status/#tabs-warnings" id="last_warning"><span id="have_warnings">$have_warnings</span> $T('warnings')</a></b></span>
#if $pane=="Main"#
&sdot; <a href="${path}config/general#web_dir">#echo $T('useGlitter').split('.')[0]#.</a>
#if $new_release#&sdot; <a href="$new_rel_url" id="new_release" target="_blank">$T('Plush-updateAvailable').replace(' ','&nbsp;')</a>#end if#
#end if#
</div>

View File

@@ -6,7 +6,7 @@
$.plush.queuenoofslots = $noofslots;
$.plush.SetQueueSpeedLimit('$speedlimit', '$speedlimit_abs');
$.plush.SetQueueFinishAction('$finishaction');
$.plush.SetWarnings($have_warnings,"<!--#echo $last_warning.replace("\n"," ").replace('"',"'").replace('\\','\\\\') #-->");
$.plush.SetWarnings($have_warnings,"");
$.plush.SetQueuePauseInfo(<!--#if $paused#-->true<!--#else#-->false<!--#end if#-->,'$pause_int');
$.plush.SetQueueETAStats("<!--#if float($kbpersec) > 1023 #-->$speed<!--#else#--><!--#echo "%.0f" % float($kbpersec)#--> K<!--#end if#-->",<!--#echo "%.0f" % float($kbpersec)#-->,'$timeleft','$T('eta'): $eta');

View File

@@ -146,7 +146,7 @@ jQuery(function($){
$("#plush_options").colorbox({ inline:true, href:"#plush_options_modal", title:$("#plush_options").text(),
innerWidth:"375px", innerHeight:"350px", initialWidth:"375px", initialHeight:"350px", speed:0, opacity:0.7
});
// Save the type of speedlimit display
$('#maxSpeed-label').change(function() {
$.plush.speedLimitType = $(this).val();
@@ -159,19 +159,19 @@ jQuery(function($){
$('#maxSpeed-label').val($.plush.speedLimitType)
// Max Speed main menu input -- don't change value on refresh when focused
$("#maxSpeed-option").focus(function(){
$.plush.focusedOnSpeedChanger = true;
}).blur(function(){
$.plush.focusedOnSpeedChanger = false;
$("#maxSpeed-option").focus(function(){
$.plush.focusedOnSpeedChanger = true;
}).blur(function(){
$.plush.focusedOnSpeedChanger = false;
}).keyup(function (e) {
// Catch the enter
if (e.keyCode == 13) {
$("#maxSpeed-enable").click()
}
})
// Submit the new speedlimit
$("#maxSpeed-enable, #maxSpeed-disable").click( function(e) {
$("#maxSpeed-enable, #maxSpeed-disable").click( function(e) {
// Remove
if ($(e.target).attr('id')=="maxSpeed-disable") {
$('#maxSpeed-option').val('');
@@ -496,7 +496,7 @@ jQuery(function($){
};
// static-element tooltips
$('body').delegate('#pausefor_title, #last_warning, #time-left, #multi_delete, #explain-blockRefresh, #pause_resume, #hist_purge, #queueTable td.download-title a, #queueTable td.eta span, #queueTable td.options .icon_nzb_remove, #historyTable td.options .icon_nzb_remove, #historyTable td div.icon_history_verbose', 'mouseover mouseout mousemove', function(event) {
$('body').delegate('#pausefor_title, #time-left, #multi_delete, #explain-blockRefresh, #pause_resume, #hist_purge, #queueTable td.download-title a, #queueTable td.eta span, #queueTable td.options .icon_nzb_remove, #historyTable td.options .icon_nzb_remove, #historyTable td div.icon_history_verbose', 'mouseover mouseout mousemove', function(event) {
var link = this,
$link = $(this);
@@ -1095,7 +1095,7 @@ $("a","#multiops_inputs").click(function(e){
title:function(){return $(this).text().replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");},
innerWidth:"80%", innerHeight:"300px", initialWidth:"80%", initialHeight:"300px", speed:0, opacity:0.7 });
// modal for reporting issues
// modal for reporting issues
$("#historyTable .modal-report").colorbox({ inline:true,
href: function(){return "#report-"+$(this).parent().parent().parent().attr('id');},
title:function(){return $(this).text();},
@@ -1252,7 +1252,7 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
$('#queue-pagination span').removeClass('loading'); // Remove spinner graphic from pagination
$('#manual_refresh_wrapper').removeClass('refreshing'); // Refresh state notification
},
error: function(xhr){
error: function(xhr){
// Only reason for a 404 error could be a login failure -> redirect
if(xhr.status == 404) {
document.location=document.location;
@@ -1320,7 +1320,7 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
$('#history .avg_rate').rateit({readonly: true, resetable: false, step: 0.5});
$('#history .avg_rate').each(function() { $(this).rateit('value', $(this).attr('value') / 2); });
$('#history .user_combo option').filter(function() {
return $(this).attr('value') == $(this).parent().parent().find('input.user_combo').attr('value');
return $(this).attr('value') == $(this).parent().parent().find('input.user_combo').attr('value');
}).attr('selected', true);
$('#history-pagination span').removeClass('loading'); // Remove spinner graphic from pagination
}
@@ -1342,11 +1342,11 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
// For switching using the select
if(!speedLimit) speedLimit = $.plush.speedLimit;
if(speedLimitAbs == undefined) speedLimitAbs = $.plush.speedLimitAbs;
// Save
// Save
$.plush.speedLimit = speedLimit;
$.plush.speedLimitAbs = speedLimitAbs;
// How do we format?
switch($.plush.speedLimitType) {
case '%':
@@ -1360,11 +1360,11 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
speedlimitDisplay = speedLimitAbs/1024/1024;
break;
}
// In case nothing and we make the displaying of the float more pretty
speedlimitDisplay = (isNaN(speedlimitDisplay) || speedlimitDisplay == '0') ? '' : speedlimitDisplay;
speedlimitDisplay = Math.round(speedlimitDisplay*10)/10;
// Update
if ($("#maxSpeed-option").val() != speedlimitDisplay && !$.plush.focusedOnSpeedChanger)
$("#maxSpeed-option").val(speedlimitDisplay);

View File

@@ -109,6 +109,11 @@ body {
font-weight: bold;
}
#new_release {
color: green;
font-weight: bold;
}
#livetip {
position: absolute;
background-color: #cfc;
@@ -338,7 +343,6 @@ body {
clear:left;
padding: 0 20px 0 25px;
font-size:90%;
font-weight: bold;
}
#nav_text_left a, #nav_text_right a {
color:#000;
@@ -1079,7 +1083,7 @@ tr:hover .history_added { color: black; }
color: red;
margin-left: 10px;
}
.rating_icon_vision {
width: 16px;
height: 16px;

View File

@@ -1,7 +1,7 @@
<!--#set global $pane="Status"#-->
<!--#set global $help_uri="GUI+Status-0-7"#-->
<!--#include $webdir + "/_inc_header.tmpl"#-->
<!--#import datetime#-->
<div class="tabs">
<ul>
<li><a href="#tabs-warnings">$T('lastWarnings')</a></li>
@@ -33,7 +33,11 @@
<!--#for $warn in $warnings#-->
<!--#set $odd = not $odd#-->
<tr class="<!--#if $odd then "odd" else "even"#-->">
<td>$warn.replace("\n","</td><td>", 2)</td></tr>
<!--#set when = datetime.datetime.fromtimestamp($warn.time) #-->
<td>$when</td>
<td>$warn.type</td>
<td>$warn.text</td>
</tr>
<!--#end for#-->
</table>
<!--#else#-->

View File

@@ -1,3 +1,4 @@
<!--#import datetime#-->
<script type="text/javascript">
window.onload = function() {
location = "../#/status"
@@ -36,7 +37,10 @@ $T('logging'):
<!--#if $warnings#-->
<h2>$T('lastWarnings') (<a class="config" onClick="lr('status/clearwarnings','', '-1', this.parentNode.id);">$T('clearWarnings')</a>)</h2>
<!--#for $warn in $warnings#-->
$warn<br/>
<!--#set when = datetime.datetime.fromtimestamp($warn.time) #-->
$when<br>
$warn.type<br>
$warn.text<br>
<!--#end for#-->
<!--#end if#-->

View File

@@ -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-09-04 13:27+W. Europe Daylight Time\n"
"POT-Creation-Date: 2017-09-10 21:44+W. Europe Daylight Time\n"
"Generated-By: pygettext.py 1.5\n"
@@ -212,15 +212,6 @@ msgstr ""
msgid "&nbsp;Resolving address"
msgstr ""
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr ""
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
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 ""
@@ -621,7 +612,7 @@ msgstr ""
msgid "Authentication missing, please enter username/password from Config->General into your 3rd party program:"
msgstr ""
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid "Try our new skin Glitter! Fresh new design that is optimized for desktop and mobile devices. Go to Config -> General to change your skin."
msgstr ""
@@ -689,6 +680,10 @@ msgstr ""
msgid "Back"
msgstr ""
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr ""
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -983,12 +978,12 @@ msgid "Verifying"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Checking extra files"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
msgstr ""
#: sabnzbd/newsunpack.py [Error message]
@@ -2601,6 +2596,10 @@ msgstr ""
msgid "Optional authentication password."
msgstr ""
#: sabnzbd/skintext.py
msgid "If the SABnzbd Host or Port is exposed to the internet, your current settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4101,6 +4100,10 @@ msgstr ""
msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr ""
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr ""

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2017-06-22 07:07+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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:24+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -226,15 +226,6 @@ msgstr "Afprøv notifikation"
msgid "&nbsp;Resolving address"
msgstr "&nbsp; Server løsning"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FEJL:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "ADVARSEL:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Ingen"
@@ -673,7 +664,7 @@ msgstr ""
"Brugeroplysninger mangler, indtast brugernavn / password fra Konfiguration-> "
"Generelt i dit tredjepartsprogram:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -752,6 +743,10 @@ msgstr "Fejl parameter"
msgid "Back"
msgstr "Tilbage"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FEJL:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1051,6 +1046,10 @@ msgstr "Disk fuld"
msgid "Verifying"
msgstr "Bekræfter"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2739,6 +2738,12 @@ msgstr "SABnzbd password"
msgid "Optional authentication password."
msgstr "Valgfrit password."
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr "Sikkerhed"
@@ -4385,6 +4390,10 @@ msgstr "Mistet forbindelsen til SABnzbd.."
msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr "I tilfælde af SABnzbd genstart vil denne skærm forsvinde automatisk!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "ADVARSEL:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Opdateringsfrekvens"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2017-08-24 15:39+0000\n"
"Last-Translator: jcfp <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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:24+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "MultiPar binary... NOT found!"
@@ -237,15 +237,6 @@ msgstr "Benachrichtigungen testen"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Adresse wird aufgelöst …"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FEHLER:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "WARNUNG:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Nichts"
@@ -698,7 +689,7 @@ msgstr ""
"Authentifizierung fehlt. Bitte Benutzernamen und Passwort aus Einstellungen-"
">Allgemein in die externe Anwendung eingeben:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -776,6 +767,10 @@ msgstr "Fehlerhafter Parameter"
msgid "Back"
msgstr "Zurück"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FEHLER:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1086,6 +1081,10 @@ msgstr "Festplatte voll"
msgid "Verifying"
msgstr "Überprüfen"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2800,6 +2799,12 @@ msgstr "SABnzbd-Passwort"
msgid "Optional authentication password."
msgstr "Optionale Anmeldung mit Passwort"
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr "Sicherheit"
@@ -4493,6 +4498,10 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
"Wenn SABnzbd neustartet, wird diese Anzeige automatisch verschwinden!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "WARNUNG:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Aktualisierungsrate"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2017-06-22 07:07+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-09-03 05:50+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -226,15 +226,6 @@ msgstr "Notificación de prueba"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Resolviendo sitio"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ERROR:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "AVISO:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Ninguno"
@@ -675,7 +666,7 @@ msgstr ""
"Faltaron datos de cuenta, favor ingresar usuario/contraseña desde Config-"
">General en tu aplicacion externa:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -754,6 +745,10 @@ msgstr "Parámetro incorrecto"
msgid "Back"
msgstr "Atrás"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ERROR:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1059,6 +1054,10 @@ msgstr "Disco lleno"
msgid "Verifying"
msgstr "Verificando"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2753,6 +2752,12 @@ msgstr "Contraseña de SABnzbd"
msgid "Optional authentication password."
msgstr "Contraseña opcional"
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4409,6 +4414,10 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
"Esta ventana desaparecerá automáticamente una vez SABnzbd se haya reiniciado."
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "AVISO:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Frecuencia de actualización"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2017-06-22 07:07+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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:24+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -229,15 +229,6 @@ msgstr "Testaa ilmoitusta"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Selvitetään osoitetta"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "VIRHE:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "VAROITUS:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Ei mitään"
@@ -672,7 +663,7 @@ msgstr ""
"Authentikointi puuttuu, ole hyvä ja syötä käyttäjänimi/salasana Asetukset-"
">Yleiset kolmannen osapuolen ohjelmaasi:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -750,6 +741,10 @@ msgstr "Virheellinen parametri"
msgid "Back"
msgstr "Takaisin"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "VIRHE:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1049,6 +1044,10 @@ msgstr "Levy täynnä"
msgid "Verifying"
msgstr "Varmennetaan"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2741,6 +2740,12 @@ msgstr "SABnzbd salasana"
msgid "Optional authentication password."
msgstr "Vaihtoehtoinen salasana todennukseen."
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4400,6 +4405,10 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
"Mikäli SABnzbd käynnistetään uudelleen, tämä ruutu häviää automaattisesti!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "VAROITUS:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Päivitysväli"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"PO-Revision-Date: 2017-08-21 19:45+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2017-09-12 18:26+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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-13 05:28+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -38,7 +38,7 @@ msgstr ""
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
"Module SABYenc... NON trouvé! v%s attendue - https://sabnzbd.org/sabyenc"
"Module SABYenc... NON trouvé ! v%s attendue - https://sabnzbd.org/sabyenc"
#: SABnzbd.py [Error message]
msgid "_yenc module... NOT found!"
@@ -238,15 +238,6 @@ msgstr "Test de Notification"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Résolution de l'adresse"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ERREUR:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "AVERTISSEMENT :"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Aucun"
@@ -701,7 +692,7 @@ msgstr ""
"Authentification manquante, entrez vos identifiant/mot de passe de la "
"configuration générale dans votre application tierce :"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -780,6 +771,10 @@ msgstr "Paramètre incorrect"
msgid "Back"
msgstr "Retour"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ERREUR:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1091,6 +1086,10 @@ msgstr "Disque plein"
msgid "Verifying"
msgstr "Vérification en cours"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr "Vérification des fichiers supplémentaires"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2808,6 +2807,14 @@ msgstr "Mot de passe SABnzbd"
msgid "Optional authentication password."
msgstr "Mot de passe pour l'authentification (facultatif)."
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
"Vos paramètres actuels permettent un accès externe complet à l'interface "
"SABnzbd si l'hôte ou le port SABnzbd est ouvert vers l'internet."
#: sabnzbd/skintext.py
msgid "Security"
msgstr "Sécurité"
@@ -4506,6 +4513,10 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
"En cas de redémarrage de SABnzbd cet écran disparaîtra automatiquement!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "AVERTISSEMENT :"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Taux de rafraîchissement"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"PO-Revision-Date: 2017-09-01 23:03+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2017-09-11 21:29+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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-12 05:29+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -222,15 +222,6 @@ msgstr "בחן התראה"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;פותר כתובת"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "שגיאה:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
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 "ללא"
@@ -665,7 +656,7 @@ msgstr ""
":אימות חסר, אנא הכנס שם משתמש/סיסמה מתוך תצורה->כללי לתוך תכנית הצד השלישי "
"שלך"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -742,6 +733,10 @@ msgstr "משתנה לא נכון"
msgid "Back"
msgstr "הקודם"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "שגיאה:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1042,6 +1037,10 @@ msgstr "דיסק מלא"
msgid "Verifying"
msgstr "מוודא"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr "בודק קבצי תוספת"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2727,6 +2726,14 @@ msgstr "SABnzbd סיסמת"
msgid "Optional authentication password."
msgstr "סיסמת אימות רשותית"
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
".SABnzbd חשופים לאינטרנט, ההגדרות הנוכחיות שלך מאפשרות גישה חיצונית מלאה אל "
"ממשק SABnzbd אם המארח או הפתחה של"
#: sabnzbd/skintext.py
msgid "Security"
msgstr "אבטחה"
@@ -4357,6 +4364,10 @@ msgstr "..SABnzbd אבד חיבור אל"
msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr "!המסך יעלם באופן אוטומטי SABnzbd במקרה של הפעלה מחדש של"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "אזהרה:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "קצב רענון"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2017-09-03 14:07+0000\n"
"Last-Translator: Steffen Bærø <steffen.baro@gmail.com>\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-09-04 05:51+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -228,15 +228,6 @@ msgstr "Test varslingen"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Løs adresse"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FEIL:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "ADVARSEL:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Ingen"
@@ -668,7 +659,7 @@ msgstr ""
"Autentisering mangler, angi brukernavn/passord fra Konfigurasjon->Generelt i "
"ditt tredjepartsprogram:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -746,6 +737,10 @@ msgstr "Feil parameter"
msgid "Back"
msgstr "Tilbake"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FEIL:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1045,6 +1040,10 @@ msgstr "Harddisken er full"
msgid "Verifying"
msgstr "Verifiserer"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2727,6 +2726,12 @@ msgstr "SABnzbd Passord"
msgid "Optional authentication password."
msgstr "Kan velge autentiserings passord."
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4355,6 +4360,10 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
"Hvis SABnzbd skulle starte på nytt vil denne skjermen forsvinne automatisk!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "ADVARSEL:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Oppdateringsfrekvens"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"PO-Revision-Date: 2017-09-04 13:02+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2017-09-11 07:07+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-09-05 04:59+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-12 05:29+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -233,15 +233,6 @@ msgstr "Test melding"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Adres opzoeken"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FOUT:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "WAARSCHUWING:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Geen"
@@ -690,7 +681,7 @@ msgstr ""
"Autenticatie ontbreekt; vul gebruikersnaam en wachtwoord van 'Configuratie' "
"=> 'Algemeen' in bij het externe programma:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -769,6 +760,10 @@ msgstr "Incorrecte parameter"
msgid "Back"
msgstr "Terug"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FOUT:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1072,6 +1067,10 @@ msgstr "Schijf is vol"
msgid "Verifying"
msgstr "Verifiëren"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr "Controleren van extra bestanden"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2772,6 +2771,15 @@ msgstr "Wachtwoord"
msgid "Optional authentication password."
msgstr "Wachtwoord voor web login."
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
"Als de Host of Poort open is gesteld naar het internet zorgen de huidige "
"instellingen ervoor dat de webinterface volledig beschikbaar is voor "
"externen."
#: sabnzbd/skintext.py
msgid "Security"
msgstr "Beveiliging"
@@ -4449,6 +4457,10 @@ msgstr "Verbinding met SABnzbd verbroken"
msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr "Wanneer SABnzbd opnieuw is gestart, gaat dit venster vanzelf weg!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "WAARSCHUWING:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Ververssnelheid"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2015-12-28 10:22+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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -226,15 +226,6 @@ msgstr "Powiadomienie testowe"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Rozwiązywanie adresu"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "BŁĄD:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "UWAGA:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Brak"
@@ -670,7 +661,7 @@ msgstr ""
"Brak danych uwierzytelniających, wprowadź nazwę użytkownika/hasło z sekcji "
"Konfiguracja->Ogólne do zewnętrznego programu:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -749,6 +740,10 @@ msgstr "Błędny parametr"
msgid "Back"
msgstr "Powrót"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "BŁĄD:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1050,6 +1045,10 @@ msgstr "Dysk pełny"
msgid "Verifying"
msgstr "Weryfikowanie"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2733,6 +2732,12 @@ msgstr "Hasło SABnzbd"
msgid "Optional authentication password."
msgstr "Opcjonalne hasło"
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4373,6 +4378,10 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
"W razie ponownego uruchomienia SABnzbd ten ekran zniknie automatycznie!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "UWAGA:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Częstotliwość odświeżania"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2016-01-01 22:58+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-09-03 05:50+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -226,15 +226,6 @@ msgstr "Notificação de teste"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Resolvendo endereço"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ERRO:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "AVISO:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Nenhum"
@@ -671,7 +662,7 @@ msgstr ""
"Autenticação faltando. Por favor insira usuário/senha de Configuração->Geral "
"em seu programa de terceiros:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -749,6 +740,10 @@ msgstr "Parâmetro incorreto"
msgid "Back"
msgstr "Voltar"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ERRO:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1047,6 +1042,10 @@ msgstr "Disco cheio"
msgid "Verifying"
msgstr "Verificando"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2733,6 +2732,12 @@ msgstr "Senha do SABnzbd"
msgid "Optional authentication password."
msgstr "Senha de autenticação opcional."
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4371,6 +4376,10 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
"No caso de reinício do SABnzbd, esta janela irá desaparecer automaticamente!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "AVISO:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Taxa de atualização"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2016-07-29 16:20+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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -229,15 +229,6 @@ msgstr "Notificări Test"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Reolvare adresă"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "EROARE:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "ATENŢIE:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Niciunul"
@@ -673,7 +664,7 @@ msgstr ""
"Autentificare lipsă, vă rugăm să introduceţi numele de utilizator/parola de "
"la Configurare->General în programul dumneavoastră terţ:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -752,6 +743,10 @@ msgstr "Parametru Incorect"
msgid "Back"
msgstr "Înapoi"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "EROARE:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1051,6 +1046,10 @@ msgstr "Disc plin"
msgid "Verifying"
msgstr "Se verifică"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2740,6 +2739,12 @@ msgstr "Parolă SABnzbd"
msgid "Optional authentication password."
msgstr "Parolă autentificare opţională"
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4374,6 +4379,10 @@ msgstr "Am pierdut conexiunea cu SABnzbd.."
msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr "În cazul repornirii SABnzbd acest ecran va dispărea în mod automat!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "ATENŢIE:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Rată actualizare"

View File

@@ -2,15 +2,15 @@ msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-0.7.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
"Generated-By: pygettext.py 1.5\n"
#: SABnzbd.py [Error message]
@@ -221,15 +221,6 @@ msgstr "Тестовое уведомление"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Разрешение адреса"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ОШИБКА"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
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 "Ничего"
@@ -663,7 +654,7 @@ msgstr ""
"Отсутствуют учётные данные. Введите в сторонней программе имя пользователя и "
"пароль из раздела «Настройка -> Общие»:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -739,6 +730,10 @@ msgstr "Неправильный параметр"
msgid "Back"
msgstr "Назад"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ОШИБКА"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1039,6 +1034,10 @@ msgstr ""
msgid "Verifying"
msgstr "Проверка"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2723,6 +2722,12 @@ msgstr "Пароль SABnzbd"
msgid "Optional authentication password."
msgstr "Необязательный пароль для входа."
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4352,6 +4357,10 @@ msgstr ""
msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "ПРЕДУПРЕЖДЕНИЕ"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Частота обновления"

View File

@@ -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-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2015-12-28 10:25+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-09-03 05:49+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -223,15 +223,6 @@ msgstr "Probno obaveštenje"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Решавање адресе"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ГРЕШКА:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
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 "Ниједно"
@@ -663,7 +654,7 @@ msgstr ""
"Недостаје аутентификација, унети у спољни програм име/лозинку из Подешавања-"
">Опште:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -741,6 +732,10 @@ msgstr "Погрешан параметар"
msgid "Back"
msgstr "Назад"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "ГРЕШКА:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1040,6 +1035,10 @@ msgstr "Диск је пун"
msgid "Verifying"
msgstr "Проверавање"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2715,6 +2714,12 @@ msgstr "Лозинка SABnzbd-а"
msgid "Optional authentication password."
msgstr "Лозинка за аутентификацију (опционо)"
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4339,6 +4344,10 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr ""
"U slučaju ponovnog pokretanja SABnzbd-a ovaj prozor će nestati automatski!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "ПАЖЊА:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Брзина освежавања"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+0000\n"
"PO-Revision-Date: 2016-02-20 20:34+0000\n"
"Last-Translator: shypike <Unknown>\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-09-03 05:50+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -224,15 +224,6 @@ msgstr "Testa notifikation"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Lösa adress"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FEL:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
msgstr "VARNING:"
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
msgid "None"
msgstr "Ingen"
@@ -666,7 +657,7 @@ msgstr ""
"Autentisering saknas, ange användarnamn / lösenord från Konfiguration-> "
"Allmänt i ditt tredjepartsprogram:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -745,6 +736,10 @@ msgstr "Fel parameter"
msgid "Back"
msgstr "Bakåt"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "FEL:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1045,6 +1040,10 @@ msgstr "Disken är full"
msgid "Verifying"
msgstr "Verifierar"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2728,6 +2727,12 @@ msgstr "SABnzbd Lösenord"
msgid "Optional authentication password."
msgstr "Väljbart autentiserings lösenord."
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
@@ -4353,6 +4358,10 @@ msgstr "Förlorade förbindelse till SABnzbd.."
msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr "Om SABnzbd startar om kommer denna skärm att försvinna automatiskt!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "VARNING:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "Uppdateringsfrekvens"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
"POT-Creation-Date: 2017-09-10 20:30+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-09-03 05:50+0000\n"
"X-Generator: Launchpad (build 18446)\n"
"X-Launchpad-Export-Date: 2017-09-11 06:25+0000\n"
"X-Generator: Launchpad (build 18449)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -220,15 +220,6 @@ msgstr "测试通知"
msgid "&nbsp;Resolving address"
msgstr "&nbsp;正在解析地址"
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
#: sabnzbd/skintext.py
msgid "ERROR:"
msgstr "错误:"
#: sabnzbd/api.py # sabnzbd/skintext.py
msgid "WARNING:"
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 "无"
@@ -653,7 +644,7 @@ msgid ""
"into your 3rd party program:"
msgstr "缺身份认证信息,请在第三方程序中输入“配置”->“常规”中的用户名/密码:"
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
#: sabnzbd/interface.py [Warning message]
msgid ""
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
"mobile devices. Go to Config -> General to change your skin."
@@ -728,6 +719,10 @@ msgstr "参数不正确"
msgid "Back"
msgstr "返回"
#: sabnzbd/interface.py # sabnzbd/skintext.py
msgid "ERROR:"
msgstr "错误:"
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
#: sabnzbd/interface.py # sabnzbd/interface.py
@@ -1025,6 +1020,10 @@ msgstr "磁盘空间已满"
msgid "Verifying"
msgstr "正在验证"
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -2695,6 +2694,12 @@ msgstr "SABnzbd 密码"
msgid "Optional authentication password."
msgstr "可选身份验证密码。"
#: sabnzbd/skintext.py
msgid ""
"If the SABnzbd Host or Port is exposed to the internet, your current "
"settings allow full external access to the SABnzbd interface."
msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr "安全"
@@ -4279,6 +4284,10 @@ msgstr "失去与 SABnzbd 的连接.."
msgid "In case of SABnzbd restart this screen will disappear automatically!"
msgstr "SABnzbd 重启后本画面将自动消失!"
#: sabnzbd/skintext.py
msgid "WARNING:"
msgstr "警告:"
#: sabnzbd/skintext.py # sabnzbd/skintext.py
msgid "Refresh rate"
msgstr "刷新频率"

View File

@@ -537,7 +537,7 @@ def guard_https_ver():
set_https_verification(cfg.enable_https_verification())
def add_url(url, pp=None, script=None, cat=None, priority=None, nzbname=None, feed_name=None):
def add_url(url, pp=None, script=None, cat=None, priority=None, nzbname=None):
""" Add NZB based on a URL, attributes optional """
if 'http' not in url:
return
@@ -551,8 +551,8 @@ def add_url(url, pp=None, script=None, cat=None, priority=None, nzbname=None, fe
# Add feed name if it came from RSS
msg = T('Trying to fetch NZB from %s') % url
if feed_name:
msg = '%s - %s' % (feed_name, msg)
if nzbname:
msg = '%s - %s' % (nzbname, msg)
# Generate the placeholder
future_nzo = NzbQueue.do.generate_future(msg, pp, script, cat, url=url, priority=priority, nzbname=nzbname)

View File

@@ -1277,11 +1277,7 @@ def build_status(skip_dashboard=False, output=None):
info['servers'].append((server.displayname, '', connected, serverconnections, server.ssl,
server.active, server.errormsg, server.priority, server.optional))
wlist = []
for w in sabnzbd.GUIHANDLER.content():
w = w.replace('WARNING', T('WARNING:')).replace('ERROR', T('ERROR:'))
wlist.insert(0, unicoder(w))
info['warnings'] = wlist
info['warnings'] = sabnzbd.GUIHANDLER.content()
return info
@@ -1633,8 +1629,6 @@ def build_header(webdir='', output=None):
header['restart_req'] = sabnzbd.RESTART_REQ
header['pid'] = os.getpid()
header['last_warning'] = sabnzbd.GUIHANDLER.last().replace('WARNING', ('WARNING:')).replace('ERROR', T('ERROR:'))
header['active_lang'] = cfg.language()
header['my_lcldata'] = sabnzbd.DIR_LCLDATA

View File

@@ -292,6 +292,9 @@ def check_encrypted_and_unwanted_files(nzo, filepath):
# Did any work?
if password_hit:
# We always trust the user's input
if not nzo.password:
nzo.password = password_hit
# Don't check other files
logging.info('Password "%s" matches for job "%s"', password_hit, nzo.final_name)
nzo.encrypted = -1

View File

@@ -51,7 +51,7 @@ RENAMES_FILE = '__renames__'
ATTRIB_FILE = 'SABnzbd_attrib'
REPAIR_REQUEST = 'repair-all.sab'
SABYENC_VERSION_REQUIRED = '3.0.2'
SABYENC_VERSION_REQUIRED = '3.1.1'
DB_HISTORY_VERSION = 1
DB_HISTORY_NAME = 'history%s.db' % DB_HISTORY_VERSION

View File

@@ -504,15 +504,9 @@ def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_out
if seriesname and season and episode:
series = u'%s/%s/%s' % (seriesname.lower(), season, episode)
# See whatever the first password was, for the Retry
password = ''
passwords = get_all_passwords(nzo)
if passwords:
password = passwords[0]
return (completed, name, nzb_name, category, pp, script, report, url, status, nzo_id, storage, path,
script_log, script_line, download_time, postproc_time, stage_log, downloaded, completeness,
fail_message, url_info, bytes, series, nzo.md5sum, password)
fail_message, url_info, bytes, series, nzo.md5sum, nzo.password)
def unpack_history_info(item):

View File

@@ -144,7 +144,7 @@ class Decoder(Thread):
register = False
except CrcError, e:
logme = T('CRC Error in %s (%s -> %s)') % (art_id, e.needcrc, e.gotcrc)
logme = T('CRC Error in %s') % art_id
logging.info(logme)
data = e.data

View File

@@ -325,7 +325,7 @@ class MainPage(object):
if not check_login():
raise NeedLogin()
if not cfg.notified_new_skin() and cfg.web_dir() not in ('Glitter', 'Plush'):
if not cfg.notified_new_skin() and cfg.web_dir() != 'Glitter':
logging.warning(T('Try our new skin Glitter! Fresh new design that is optimized for desktop and mobile devices. Go to Config -> General to change your skin.'))
if not cfg.notified_new_skin():
cfg.notified_new_skin.set(1)
@@ -2076,7 +2076,7 @@ class ConfigRss(object):
prio = att.get('prio')
if url:
sabnzbd.add_url(url, pp, script, cat, prio, nzbname, feed_name=feed)
sabnzbd.add_url(url, pp, script, cat, prio, nzbname)
# Need to pass the title instead
sabnzbd.rss.flag_downloaded(feed, url)
raise rssRaiser(self.__root, kwargs)

View File

@@ -29,6 +29,7 @@ import threading
import subprocess
import socket
import time
import calendar
import datetime
import fnmatch
import stat

View File

@@ -1763,6 +1763,10 @@ def MultiPar_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False)
nzo.set_unpack_info('Repair', msg)
nzo.status = Status.FAILED
# MultiPar can say 'PAR File(s) Incomplete' also when it needs more blocks
# But the Need-more-blocks message is always last, so force failure
finished = 0
# Result of verification
elif line.startswith('All Files Complete') or line.endswith('PAR File(s) Incomplete'):
# Completed without damage!

View File

@@ -27,7 +27,7 @@ import datetime
import sabnzbd
from sabnzbd.nzbstuff import NzbObject
from sabnzbd.misc import exit_sab, cat_to_opts, \
get_admin_path, remove_all, globber_full
get_admin_path, remove_all, globber_full, int_conv
from sabnzbd.panic import panic_queue
import sabnzbd.database as database
from sabnzbd.decorators import notify_downloader
@@ -620,7 +620,7 @@ class NzbQueue(object):
def __set_priority(self, nzo_id, priority):
""" Sets the priority on the nzo and places it in the queue at the appropriate position """
try:
priority = int(priority)
priority = int_conv(priority)
nzo = self.__nzo_table[nzo_id]
nzo_id_pos1 = -1
pos = -1
@@ -640,7 +640,7 @@ class NzbQueue(object):
if priority == self.__nzo_list[nzo_id_pos1].priority:
return nzo_id_pos1
nzo.priority = priority
nzo.set_priority(priority)
if sabnzbd.scheduler.analyse(False, priority) and \
nzo.status in (Status.CHECKING, Status.DOWNLOADING, Status.QUEUED):
nzo.status = Status.PAUSED

View File

@@ -40,8 +40,8 @@ except ImportError:
# SABnzbd modules
import sabnzbd
from sabnzbd.constants import GIGI, ATTRIB_FILE, JOB_ADMIN, \
DEFAULT_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY, \
PAUSED_PRIORITY, TOP_PRIORITY, DUP_PRIORITY, REPAIR_PRIORITY, \
REPAIR_PRIORITY, TOP_PRIORITY, HIGH_PRIORITY, NORMAL_PRIORITY, \
LOW_PRIORITY, DEFAULT_PRIORITY, PAUSED_PRIORITY, DUP_PRIORITY, STOP_PRIORITY, \
RENAMES_FILE, MAX_BAD_ARTICLES, Status, PNFO
from sabnzbd.misc import to_units, cat_to_opts, cat_convert, sanitize_foldername, \
get_unique_path, get_admin_path, remove_all, sanitize_filename, globber_full, \
@@ -618,6 +618,7 @@ 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
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
@@ -647,11 +648,6 @@ class NzbObject(TryList):
self.status = status
self.avg_bps_freq = 0
self.avg_bps_total = 0
try:
priority = int(priority)
except:
priority = DEFAULT_PRIORITY
self.priority = priority
self.saved_articles = []
@@ -806,7 +802,8 @@ class NzbObject(TryList):
self.password = unicoder(password, True)
# Determine category and find pp/script values
self.cat, pp_tmp, self.script, self.priority = cat_to_opts(cat, pp, script, priority)
self.cat, pp_tmp, self.script, priority = cat_to_opts(cat, pp, script, priority)
self.set_priority(priority)
self.repair, self.unpack, self.delete = sabnzbd.pp_to_opts(pp_tmp)
# Run user pre-queue script if needed
@@ -819,10 +816,6 @@ class NzbObject(TryList):
pp = int(pp)
except:
pp = None
try:
priority = int(priority)
except:
priority = None
if accept < 1:
self.purge_data()
raise TypeError
@@ -834,7 +827,8 @@ class NzbObject(TryList):
self.fail_msg = T('Pre-queue script marked job as failed')
# Re-evaluate results from pre-queue script
self.cat, pp, self.script, self.priority = cat_to_opts(cat, pp, script, priority)
self.cat, pp, self.script, priority = cat_to_opts(cat, pp, script, int_conv(priority))
self.set_priority(priority)
self.repair, self.unpack, self.delete = sabnzbd.pp_to_opts(pp)
else:
accept = 1
@@ -1020,6 +1014,10 @@ class NzbObject(TryList):
# Change the properties
nzf.set_par2(setname, vol, block)
logging.debug('Got additional md5pack for set %s', nzf.setname)
# Make sure it exists, could be removed by newsunpack
if setname not in self.extrapars:
self.extrapars[setname] = []
self.extrapars[setname].append(nzf)
elif self.repair:
@@ -1227,7 +1225,13 @@ class NzbObject(TryList):
# Abort unpacking if not desired anymore
if not self.unpack:
self.abort_direct_unpacker()
self.save_to_disk()
def set_priority(self, value):
""" Check if this is a valid priority """
value = int_conv(value)
if value in (REPAIR_PRIORITY, TOP_PRIORITY, HIGH_PRIORITY, NORMAL_PRIORITY, \
LOW_PRIORITY, DEFAULT_PRIORITY, PAUSED_PRIORITY, DUP_PRIORITY, STOP_PRIORITY):
self.priority = value
@property
def final_name_labeled(self):
@@ -1664,11 +1668,13 @@ class NzbObject(TryList):
def gather_info(self, full=False):
queued_files = []
if full:
for _set in self.extrapars:
for nzf in self.extrapars[_set]:
# Don't show files twice
if not nzf.completed and nzf not in self.files:
queued_files.append(nzf)
# extrapars can change during iteration
with NZO_LOCK:
for _set in self.extrapars:
for nzf in self.extrapars[_set]:
# Don't show files twice
if not nzf.completed and nzf not in self.files:
queued_files.append(nzf)
return PNFO(self.repair, self.unpack, self.delete, self.script, self.nzo_id,
self.final_name_labeled, self.password, {}, '', self.cat, self.url, self.remaining,

View File

@@ -180,6 +180,10 @@ class RSSQueue(object):
logging.warning(T('Cannot read %s'), RSS_FILE_NAME)
logging.info("Traceback: ", exc_info=True)
# Storage needs to be dict
if not self.jobs:
self.jobs = {}
# jobs is a NAME-indexed dictionary
# Each element is link-indexed dictionary
# Each element is another dictionary:
@@ -618,7 +622,7 @@ def _HandleLink(jobs, feed, link, title, size, age, season, episode, flag, orgca
jobs[link]['status'] = 'D'
jobs[link]['time_downloaded'] = time.localtime()
logging.info("Adding %s (%s) to queue", link, title)
sabnzbd.add_url(link, pp=pp, script=script, cat=cat, priority=priority, nzbname=nzbname, feed_name=feed)
sabnzbd.add_url(link, pp=pp, script=script, cat=cat, priority=priority, nzbname=nzbname)
else:
if star:
jobs[link]['status'] = flag + '*'

View File

@@ -189,7 +189,6 @@ SKIN_TEXT = {
'ft-newRelease@1' : TT('New release %s available at'), # Used in Footer
# Main page
'useGlitter': TT('Try our new skin Glitter! Fresh new design that is optimized for desktop and mobile devices. Go to Config -> General to change your skin.'),
'shutdownOK?' : TT('Are you sure you want to shutdown SABnzbd?'),
'link-shutdown' : TT('Shutdown'), #: Shutdown SABnzbd
'link-pause' : TT('Pause'), #: Pause downloading
@@ -343,6 +342,7 @@ SKIN_TEXT = {
'explain-web_username' : TT('Optional authentication username.'),
'opt-web_password' : TT('SABnzbd Password'),
'explain-web_password' : TT('Optional authentication password.'),
'checkSafety' : TT('If the SABnzbd Host or Port is exposed to the internet, your current settings allow full external access to the SABnzbd interface.'),
'security' : TT('Security'),
'opt-enable_https' : TT('Enable HTTPS'),
'opt-notInstalled' : TT('not installed'),
@@ -804,6 +804,7 @@ SKIN_TEXT = {
'Glitter-filtered' : TT('FILTERED'),
'Glitter-waitSec' : TT('WAIT %s sec'),
'Glitter-error' : TT('ERROR:'),
'Glitter-fetch' : TT('Fetch'),
'Glitter-interfaceOptions' : TT('Web Interface'),
'Glitter-interfaceRefresh' : TT('Refresh rate'),
'Glitter-useGlobalOptions' : TT('Use global interface settings'),

View File

@@ -83,6 +83,7 @@ class URLGrabber(Thread):
# Re-queue when too early and still active
if future_nzo.wait and future_nzo.wait > time.time():
self.add(url, future_nzo)
time.sleep(1.0)
continue
# Paused
if future_nzo.status == Status.PAUSED:
@@ -171,7 +172,6 @@ class URLGrabber(Thread):
elif item == 'x-dnzb-password':
nzo_info['password'] = value
elif item == 'retry-after':
# For NZBFinder
wait = misc.int_conv(value)
# Rating fields

71
tests/conftest.py Normal file
View File

@@ -0,0 +1,71 @@
#!/usr/bin/python -OO
# Copyright 2008-2017 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
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""
tests.conftest - Wrappers to start SABnzbd for testing
"""
import os
import itertools
import urllib2
import pytest
import shutil
import time
import testhelper
from xprocess import ProcessStarter
@pytest.fixture(scope='session')
def sabnzbd_connect(request, xprocess):
# Get cache directory
base_path = os.path.dirname(os.path.abspath(__file__))
cache_dir = os.path.join(base_path, 'cache')
# Copy basic config file
try:
os.mkdir(cache_dir)
shutil.copyfile(os.path.join(base_path, 'sabnzbd.basic.ini'), os.path.join(cache_dir, 'sabnzbd.ini'))
except:
pass
class Starter(ProcessStarter):
# Wait for SABnzbd to start
pattern = "ENGINE Bus STARTED"
# Start without browser and with basic logging
args = 'python ../../SABnzbd.py -l1 -s %s:%s -b0 -f %s' % (testhelper.SAB_HOST, testhelper.SAB_PORT, cache_dir)
args = args.split()
# We have to wait a bit longer than default
def filter_lines(self, lines):
return itertools.islice(lines, 500)
# Shut it down at the end
def shutdown_sabnzbd():
# Gracefull shutdown request
testhelper.get_url_result('shutdown')
# Takes a second to shutdown
for x in range(5):
try:
shutil.rmtree(cache_dir)
break
except:
time.sleep(1)
request.addfinalizer(shutdown_sabnzbd)
return xprocess.ensure("sabnzbd", Starter)

20
tests/data/reftestnzb.nzb Normal file
View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE nzb PUBLIC "-//newzBin//DTD NZB 1.0//EN" "http://www.newzbin.com/DTD/nzb/nzb-1.0.dtd">
<nzb xmlns="http://www.newzbin.com/DTD/2003/nzb">
<file poster="nzbtester5@gmail.com" date="1495557432" subject="RefTestNZB: rar5 8288192_RAR5_FILE.rar ff2f7ca6 - &quot;8288192_RAR5_FILE.rar&quot; yEnc (1/11)">
<groups><group>alt.binaries.boneless</group></groups>
<segments>
<segment bytes="350593" number="1">YyZUA.55279$4Z1.8096@fx31.am4</segment>
<segment bytes="350823" number="2">ZyZUA.55280$4Z1.25561@fx31.am4</segment>
<segment bytes="350639" number="3">ZyZUA.55281$4Z1.11063@fx31.am4</segment>
<segment bytes="350732" number="4">_yZUA.55282$4Z1.16876@fx31.am4</segment>
<segment bytes="350700" number="5">_yZUA.55283$4Z1.13779@fx31.am4</segment>
<segment bytes="350608" number="6">%yZUA.55284$4Z1.46223@fx31.am4</segment>
<segment bytes="350828" number="7">0zZUA.55285$4Z1.6649@fx31.am4</segment>
<segment bytes="119105" number="11">2zZUA.55289$4Z1.25108@fx31.am4</segment>
<segment bytes="350796" number="8">0zZUA.55286$4Z1.37644@fx31.am4</segment>
<segment bytes="350756" number="9">1zZUA.55287$4Z1.2275@fx31.am4</segment>
<segment bytes="350656" number="10">2zZUA.55288$4Z1.18213@fx31.am4</segment>
</segments>
</file>
</nzb>

8
tests/requirements.txt Normal file
View File

@@ -0,0 +1,8 @@
# SAB-Specific
cheetah
cryptography
sabyenc
# Testing
pytest-xprocess
requests

11
tests/sabnzbd.basic.ini Normal file
View File

@@ -0,0 +1,11 @@
__version__ = 19
__encoding__ = utf-8
[misc]
api_key = apikey
[servers]
[[sabnzbd.test]]
enable = 1
host = sabnzd.test
username = sabnzbd
password = sabnzbd

61
tests/test_api_pages.py Normal file
View File

@@ -0,0 +1,61 @@
#!/usr/bin/python -OO
# Copyright 2008-2017 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
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""
tests.test_api_pages - The most basic testing if things work
"""
import pytest
import testhelper
def test_basic_api(sabnzbd_connect):
# Basic API test
assert 'queue' in testhelper.get_api_result('queue')
assert 'history' in testhelper.get_api_result('history')
assert 'status' in testhelper.get_api_result('fullstatus')
assert 'config' in testhelper.get_api_result('get_config')
def test_main_pages(sabnzbd_connect):
# See if the basic pages work
assert 'Traceback' not in testhelper.get_url_result()
assert 'Traceback' not in testhelper.get_url_result('history')
assert 'Traceback' not in testhelper.get_url_result('queue')
assert 'Traceback' not in testhelper.get_url_result('status')
def test_wizard_pages(sabnzbd_connect):
# Test if wizard pages work
assert 'Traceback' not in testhelper.get_url_result('wizard')
assert 'Traceback' not in testhelper.get_url_result('wizard/one')
assert 'Traceback' not in testhelper.get_url_result('wizard/two')
def test_config_pages(sabnzbd_connect):
# Test if config pages work
assert 'Traceback' not in testhelper.get_url_result('config')
assert 'Traceback' not in testhelper.get_url_result('config/general')
assert 'Traceback' not in testhelper.get_url_result('config/server')
assert 'Traceback' not in testhelper.get_url_result('config/categories')
assert 'Traceback' not in testhelper.get_url_result('config/switches')
assert 'Traceback' not in testhelper.get_url_result('config/sorting')
assert 'Traceback' not in testhelper.get_url_result('config/notify')
assert 'Traceback' not in testhelper.get_url_result('config/scheduling')
assert 'Traceback' not in testhelper.get_url_result('config/rss')
assert 'Traceback' not in testhelper.get_url_result('config/special')

58
tests/test_nzb.py Normal file
View File

@@ -0,0 +1,58 @@
#!/usr/bin/python -OO
# Copyright 2008-2017 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
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""
tests.test_nzb - Basic NZB adding support
"""
import os
import pytest
import testhelper
# Where are we now?
base_path = os.path.dirname(os.path.abspath(__file__))
def nzo_in_queue(nzo_response):
""" Helper function for checking if file is in queue and then remove it """
queue_res = testhelper.get_api_result('queue')
nzo_id = nzo_response['nzo_ids'][0]
# Was it added?
assert nzo_response['status'] == True
assert queue_res['queue']['slots'][0]['nzo_id'] == nzo_response['nzo_ids'][0]
# Let's remove it
remove_response = testhelper.get_api_result('queue', {'name': 'delete', 'value': nzo_id})
assert nzo_response['status'] == True
# Really gone?
queue_res = testhelper.get_api_result('queue')
assert not queue_res['queue']['slots']
def test_addfile(sabnzbd_connect):
# See if basic upload works
nzo_response = testhelper.upload_nzb(os.path.join(base_path, 'data', 'reftestnzb.nzb'))
nzo_in_queue(nzo_response)
def test_addlocalfile(sabnzbd_connect):
# See if basic adding from disk-file works
nzo_response = testhelper.get_api_result('addlocalfile', {'name': os.path.join(base_path, 'data', 'reftestnzb.nzb')})
nzo_in_queue(nzo_response)

48
tests/testhelper.py Normal file
View File

@@ -0,0 +1,48 @@
#!/usr/bin/python -OO
# Copyright 2008-2017 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
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""
tests.testhelper - Basic helper functions
"""
import urllib2
import json
import requests
SAB_HOST = 'localhost'
SAB_PORT = 8081
def get_url_result(url=''):
""" Do basic request to web page """
arguments = {'session': 'apikey'}
return requests.get('http://%s:%s/%s/' % (SAB_HOST, SAB_PORT, url), params=arguments).text
def get_api_result(mode, extra_arguments={}):
""" Build JSON request to SABnzbd """
arguments = {'apikey': 'apikey', 'output': 'json', 'mode': mode}
arguments.update(extra_arguments)
r = requests.get('http://%s:%s/api' % (SAB_HOST, SAB_PORT), params=arguments)
return r.json()
def upload_nzb(file):
""" Upload file and return nzo_id reponse """
files = {'name': open(file, 'rb')}
arguments ={'apikey':'apikey', 'mode':'addfile', 'output': 'json'}
return requests.post('http://%s:%s/api' % (SAB_HOST, SAB_PORT), files=files, data=arguments).json()