mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2026-01-05 14:09:22 -05:00
Compare commits
231 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cc2e25cda | ||
|
|
0dc2c6687d | ||
|
|
b061e582b6 | ||
|
|
690731fd79 | ||
|
|
068b7ed7f5 | ||
|
|
aae2fdcd32 | ||
|
|
d3628a1eb7 | ||
|
|
9cc8176d87 | ||
|
|
27f83f21be | ||
|
|
5e31a31a21 | ||
|
|
a077012478 | ||
|
|
fed0e0f765 | ||
|
|
fbdbf7ab22 | ||
|
|
f013d38d00 | ||
|
|
93b9c8a6da | ||
|
|
e3a779bbc6 | ||
|
|
adfce8c8b6 | ||
|
|
a49d68c0db | ||
|
|
e4156e76d1 | ||
|
|
35b66eea0e | ||
|
|
4d0cf8d45f | ||
|
|
ad9fef5f41 | ||
|
|
6235174995 | ||
|
|
4b9ca989c4 | ||
|
|
4d54aecceb | ||
|
|
11eeb6f2e9 | ||
|
|
00364b1317 | ||
|
|
6666663f78 | ||
|
|
3d6dfec47a | ||
|
|
0f3d44aa4b | ||
|
|
d2d2471950 | ||
|
|
b71343e8ab | ||
|
|
489f3f4ba0 | ||
|
|
3765e8c350 | ||
|
|
28d4f527b8 | ||
|
|
1d8af8f97d | ||
|
|
829ef4bee8 | ||
|
|
7e40c12e47 | ||
|
|
37d8d659f5 | ||
|
|
0a29291be2 | ||
|
|
7f3a5f309b | ||
|
|
60ec5f9191 | ||
|
|
d03e801e74 | ||
|
|
56bf484e77 | ||
|
|
66674469d5 | ||
|
|
09a86683e5 | ||
|
|
fc9a13879e | ||
|
|
73f0885566 | ||
|
|
090b22f193 | ||
|
|
f9c092ae8f | ||
|
|
4605c3fd30 | ||
|
|
ed7dc3f827 | ||
|
|
e69eeebdd8 | ||
|
|
5da5f1adc1 | ||
|
|
f47e92dec0 | ||
|
|
a894ca5171 | ||
|
|
5abe1140ae | ||
|
|
d34e14370c | ||
|
|
c4f4a3131c | ||
|
|
dcbd9b57f3 | ||
|
|
aad3b54a17 | ||
|
|
cde142a371 | ||
|
|
8bfc98ffc6 | ||
|
|
e46f21d566 | ||
|
|
0e45fdcdfd | ||
|
|
eec7af16d7 | ||
|
|
6532425902 | ||
|
|
44b896522c | ||
|
|
1b16ee44cb | ||
|
|
d5f608c28c | ||
|
|
555d8418e7 | ||
|
|
8c22e35da4 | ||
|
|
95a7924b31 | ||
|
|
5830bebd95 | ||
|
|
d32cf57c75 | ||
|
|
6d9242ebc5 | ||
|
|
cbc4f6a964 | ||
|
|
2a3b2b9556 | ||
|
|
53a219f12b | ||
|
|
48519dcfa0 | ||
|
|
92542c58fe | ||
|
|
7eafe730f9 | ||
|
|
494e72a996 | ||
|
|
84cc86f1d3 | ||
|
|
64479e2e5d | ||
|
|
13b523d9bd | ||
|
|
181881a21b | ||
|
|
86d11095ac | ||
|
|
927ba3cd9d | ||
|
|
6296fc1762 | ||
|
|
60fbe44724 | ||
|
|
29e45da431 | ||
|
|
d82e69eef4 | ||
|
|
8c7d557252 | ||
|
|
a56d6e5517 | ||
|
|
7548d9e975 | ||
|
|
b7e2bd9684 | ||
|
|
f0a243e3d3 | ||
|
|
6e108c9ef2 | ||
|
|
89edcc1924 | ||
|
|
8a6aca47a1 | ||
|
|
d03e5780b8 | ||
|
|
209d8f9b40 | ||
|
|
c257b1be3d | ||
|
|
2c48c8de2e | ||
|
|
a767ef6aed | ||
|
|
ad61d1dd03 | ||
|
|
33c3d187a0 | ||
|
|
4eb486d4e2 | ||
|
|
bfb6c167a4 | ||
|
|
44abf3bdf6 | ||
|
|
c950572592 | ||
|
|
3999cb13fd | ||
|
|
af65075f0c | ||
|
|
de2a2b465b | ||
|
|
cd7a77f02d | ||
|
|
f4a5394b63 | ||
|
|
3fb6a8dedb | ||
|
|
50c8f84eba | ||
|
|
2c7ecdee92 | ||
|
|
72390a793a | ||
|
|
04ad4e5d3e | ||
|
|
5ef9c6a433 | ||
|
|
e6baffc839 | ||
|
|
e361eb25a5 | ||
|
|
9b420e91c9 | ||
|
|
3a4bf971b2 | ||
|
|
1128691c5d | ||
|
|
15043aef3f | ||
|
|
2a3b4afa03 | ||
|
|
00a98efa81 | ||
|
|
f013dd7f0d | ||
|
|
7b91b1c769 | ||
|
|
5583cce322 | ||
|
|
b995c5f992 | ||
|
|
214ac4a53d | ||
|
|
fc7e87f0df | ||
|
|
c0f2f59fc1 | ||
|
|
b90a847a6f | ||
|
|
a58bb385f5 | ||
|
|
9754baeb1c | ||
|
|
ffcd154966 | ||
|
|
97cfe9488c | ||
|
|
374b6f616a | ||
|
|
e2f51595b6 | ||
|
|
04091a16aa | ||
|
|
9d9d2fd9a2 | ||
|
|
5746115331 | ||
|
|
42f1a4926c | ||
|
|
7d87fd461b | ||
|
|
1ba9976979 | ||
|
|
659c199043 | ||
|
|
81a3f53226 | ||
|
|
1cbff28f67 | ||
|
|
8e15acbf30 | ||
|
|
e07be60db6 | ||
|
|
539c9662ff | ||
|
|
b396014f8d | ||
|
|
1db32415b6 | ||
|
|
b24629db6b | ||
|
|
9b5cdcf8fb | ||
|
|
4831415d14 | ||
|
|
a4c51f0b20 | ||
|
|
ec3ba1fb93 | ||
|
|
61966f7036 | ||
|
|
4f69e81841 | ||
|
|
d0d90581df | ||
|
|
8ea5c27633 | ||
|
|
517500fdf3 | ||
|
|
c4c1c9b6ab | ||
|
|
2388889ede | ||
|
|
55cfe878d7 | ||
|
|
a2daaee468 | ||
|
|
2c360e395e | ||
|
|
399cfee594 | ||
|
|
be646ae6ab | ||
|
|
b470253d9f | ||
|
|
b83c493492 | ||
|
|
991277bb01 | ||
|
|
5626013b81 | ||
|
|
2810d37758 | ||
|
|
c2f08f01e0 | ||
|
|
17ff087e06 | ||
|
|
77de565b7c | ||
|
|
54d238aa4d | ||
|
|
379d09f8cc | ||
|
|
00de72b127 | ||
|
|
f9c84fa7dd | ||
|
|
c8e46691bb | ||
|
|
df1bb636e5 | ||
|
|
ff886fad0d | ||
|
|
6dbee7a413 | ||
|
|
3f8fcd7172 | ||
|
|
d94f7388e6 | ||
|
|
ad8b49fea8 | ||
|
|
ce00270c12 | ||
|
|
8c501f8f58 | ||
|
|
ce313ebc65 | ||
|
|
887ad881a2 | ||
|
|
ce40827552 | ||
|
|
2777d89482 | ||
|
|
727b300a0e | ||
|
|
652b021a8e | ||
|
|
fdf33acfbb | ||
|
|
b001bc9b6f | ||
|
|
8802cb1d8c | ||
|
|
e19a2fbae7 | ||
|
|
53e38f98f9 | ||
|
|
e783e227f6 | ||
|
|
f3dfbe4181 | ||
|
|
bcd8ca8bc4 | ||
|
|
816d6a63cd | ||
|
|
88d3f25700 | ||
|
|
80f69b11db | ||
|
|
81a11f20c8 | ||
|
|
9e2a839953 | ||
|
|
3cefcde270 | ||
|
|
87a1eacfe7 | ||
|
|
7cbc1a8419 | ||
|
|
7b5570eb0b | ||
|
|
1a43a4dcf0 | ||
|
|
2c2a6592c7 | ||
|
|
f31de6ee4e | ||
|
|
8fcd1f6b6c | ||
|
|
d7f3a473d7 | ||
|
|
ab2eb0c94e | ||
|
|
e51f4fc45a | ||
|
|
65278120e2 | ||
|
|
2eed355e9c | ||
|
|
018955f4d5 | ||
|
|
12fd63c1cf |
4
PKG-INFO
4
PKG-INFO
@@ -1,7 +1,7 @@
|
||||
Metadata-Version: 1.0
|
||||
Name: SABnzbd
|
||||
Version: 2.2.0RC1
|
||||
Summary: SABnzbd-2.2.0RC1
|
||||
Version: 2.2.0
|
||||
Summary: SABnzbd-2.2.0
|
||||
Home-page: https://sabnzbd.org
|
||||
Author: The SABnzbd Team
|
||||
Author-email: team@sabnzbd.org
|
||||
|
||||
26
README.mkd
26
README.mkd
@@ -1,4 +1,4 @@
|
||||
Release Notes - SABnzbd 2.2.0 Release Candidate 1
|
||||
Release Notes - SABnzbd 2.2.0
|
||||
=========================================================
|
||||
|
||||
NOTE: Due to changes in this release, the queue will be converted when 2.2.0
|
||||
@@ -19,25 +19,28 @@ fetching before the upgrade will be lost!
|
||||
- New option "History Retention" to automatically purge jobs from History
|
||||
- Jobs outside server retention are processed faster
|
||||
- Obfuscated filenames are renamed during downloading, if possible
|
||||
- Disk-space is now checked before writing files
|
||||
- Add "Retry All Failed" button to Glitter
|
||||
- Smoother animations in Firefox (disabled previously due to FF high-CPU usage)
|
||||
- Show missing articles in MB instead of number of articles
|
||||
- Correct value in "Speed" Extra History Column
|
||||
- Better indication of verification process before and after repair
|
||||
- Remove video and audio rating icons from Queue
|
||||
- Show vote buttons instead of video and audio rating buttons in History
|
||||
- If enable_par_cleanup is disabled all par2 files be downloaded
|
||||
- If enabled, replace dots in filenames also when there are spaces already
|
||||
- Handling of par2 files made more robust
|
||||
- All par2 files are only downloaded when enabled, not on enable_par_cleanup
|
||||
- Update GNTP bindings to 1.0.3
|
||||
- max_art_opt and replace_illegal moved from Switches to Specials
|
||||
- Removed Specials par2_multicore and allow_streaming
|
||||
- Windows: Full unicode support when calling repair and unpack
|
||||
- Windows: Move enable_MultiPar to Specials
|
||||
- Windows: Better indication of verification process before and after repair
|
||||
- Windows: Move enable_multipar to Specials
|
||||
- Windows: MultiPar verification of a job is skipped after blocks are fetched
|
||||
- Windows & macOS: removed par2cmdline in favor of par2tbb/MultiPar
|
||||
- Windows & macOS: Updated WinRAR to 5.5.0
|
||||
|
||||
## Bugfixes since 2.1.0
|
||||
- Shutdown/suspend did not work on some Linux systems
|
||||
- Standby/Hibernate was not working on Windows
|
||||
- Deleting a job could result in write errors
|
||||
- Display warning if "Extra par2 parameters" turn out to be wrong
|
||||
- RSS URLs with commas in the URL were broken
|
||||
@@ -49,10 +52,17 @@ fetching before the upgrade will be lost!
|
||||
- Fix race-condition in Post-processing
|
||||
- History would not always show latest changes
|
||||
- Convert HTML in error messages
|
||||
- In some cases not all RAR-sets were unpacked
|
||||
- Fixed unicode error during Sorting
|
||||
- Faulty pynotify could stop shutdown
|
||||
- Categories with ' in them could result in SQL errors
|
||||
- Special characters like []!* in filenames could break repair
|
||||
- Wizard was always accessible, even with username and password set
|
||||
- Correct value in "Speed" Extra History Column
|
||||
- Not all texts were shown in the selected Language
|
||||
- Various CSS fixes in Glitter and the Config
|
||||
- Catch "error 0" when using HTTPS on some Linux platforms
|
||||
- Warning is shown when many files with duplicate filenames are discarded
|
||||
- Improve zeroconf/bonjour by sending HTTPS setting and auto-discover of IP
|
||||
- Windows: Fix error in MultiPar-code when first par2-file was damaged
|
||||
- macOS: Catch "Protocol wrong type for socket" errors
|
||||
@@ -60,7 +70,11 @@ fetching before the upgrade will be lost!
|
||||
## Translations
|
||||
- Added Hebrew translation by ION IL, many other languages updated.
|
||||
|
||||
## Upgrading from 0.7.x and older
|
||||
## Depreciation notices
|
||||
- Option to limit Servers to specific Categories is now scheduled
|
||||
to be removed in the next release.
|
||||
|
||||
## Upgrading from 2.1.x and older
|
||||
- Finish queue
|
||||
- Stop SABnzbd
|
||||
- Install new version
|
||||
|
||||
@@ -200,8 +200,8 @@ socket_errors_nonblocking = plat_specific_errors(
|
||||
'EAGAIN', 'EWOULDBLOCK', 'WSAEWOULDBLOCK')
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
socket_errors_to_ignore.append(plat_specific_errors('EPROTOTYPE'))
|
||||
socket_errors_nonblocking.append(plat_specific_errors('EPROTOTYPE'))
|
||||
socket_errors_to_ignore.extend(plat_specific_errors('EPROTOTYPE'))
|
||||
socket_errors_nonblocking.extend(plat_specific_errors('EPROTOTYPE'))
|
||||
|
||||
comma_separated_headers = [
|
||||
ntob(h) for h in
|
||||
|
||||
@@ -85,7 +85,7 @@ class BuiltinSSLAdapter(wsgiserver.SSLAdapter):
|
||||
|
||||
# Check if it's one of the known errors
|
||||
# Errors that are caught by PyOpenSSL, but thrown by built-in ssl
|
||||
_block_errors = ('unknown protocol', 'unknown ca', 'unknown error', 'errno 0',
|
||||
_block_errors = ('unknown protocol', 'unknown ca', 'unknown_ca', 'unknown error',
|
||||
'https proxy request', 'inappropriate fallback', 'wrong version number',
|
||||
'no shared cipher', 'certificate unknown', 'ccs received early')
|
||||
for error_text in _block_errors:
|
||||
@@ -98,6 +98,12 @@ class BuiltinSSLAdapter(wsgiserver.SSLAdapter):
|
||||
# The connection can safely be dropped.
|
||||
return None, {}
|
||||
raise
|
||||
except:
|
||||
# Temporary fix for https://github.com/cherrypy/cherrypy/issues/1618
|
||||
e = sys.exc_info()[1]
|
||||
if e.args == (0, 'Error'):
|
||||
return None, {}
|
||||
raise
|
||||
return s, self.get_environ(s)
|
||||
|
||||
# TODO: fill this out more with mod ssl env
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1" />
|
||||
<meta name="apple-mobile-web-app-title" content="SABnzbd" />
|
||||
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="${root}staticcfg/ico/apple-touch-icon-76x76-precomposed.png" />
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/bootstrap/css/bootstrap.min.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/chartist.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/style.css?p=$pid" />
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/style.css?v=$version" />
|
||||
|
||||
<link rel="shortcut icon" href="${root}staticcfg/ico/favicon.ico?v=$version" />
|
||||
|
||||
|
||||
@@ -178,6 +178,45 @@
|
||||
</div>
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
<div class="section" id="nscript">
|
||||
<div class="col2">
|
||||
<h3>$T('section-NScript')</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="nscript_enable" id="nscript_enable" value="1" <!--#if int($nscript_enable) > 0 then 'checked="checked"' else ""#--> /></td>
|
||||
<td><label for="nscript_enable"> $T('opt-nscript_enable')</label></td>
|
||||
</tr>
|
||||
</table>
|
||||
<em>$T('explain-nscript_enable')</em><br><a href="$helpuri$help_uri#nscript" target="_blank">$T('readwiki')</a>
|
||||
$show_cat_box('nscript')
|
||||
</div>
|
||||
<div class="col1" <!--#if int($nscript_enable) > 0 then '' else 'style="display:none"'#-->>
|
||||
<fieldset>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="nscript_script">$T('opt-nscript_script')</label>
|
||||
<select name="nscript_script">
|
||||
<!--#for $sc in $scripts#-->
|
||||
<option value="$sc" <!--#if $nscript_script == $sc then 'selected="selected"' else ""#-->>$Tspec($sc)</option>
|
||||
<!--#end for#-->
|
||||
</select>
|
||||
<span class="desc">$T('explain-nscript_script')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="nscript_parameters">$T('opt-nscript_parameters')</label>
|
||||
<input type="text" name="nscript_parameters" id="nscript_parameters" value="$nscript_parameters" />
|
||||
<span class="desc">$T('Optional') - $T('explain-nscript_parameters')</span>
|
||||
</div>
|
||||
$show_notify_checkboxes('nscript')
|
||||
<div class="field-pair">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_nscript"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="growl">
|
||||
<div class="col2">
|
||||
<h3>$T('growlSettings') <a href="$helpuri$help_uri#toc3" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
|
||||
@@ -350,45 +389,6 @@
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="nscript">
|
||||
<div class="col2">
|
||||
<h3>$T('section-NScript')</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="nscript_enable" id="nscript_enable" value="1" <!--#if int($nscript_enable) > 0 then 'checked="checked"' else ""#--> /></td>
|
||||
<td><label for="nscript_enable"> $T('opt-nscript_enable')</label></td>
|
||||
</tr>
|
||||
</table>
|
||||
<em>$T('explain-nscript_enable')</em>
|
||||
$show_cat_box('nscript')
|
||||
</div>
|
||||
<div class="col1" <!--#if int($nscript_enable) > 0 then '' else 'style="display:none"'#-->>
|
||||
<fieldset>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="nscript_script">$T('opt-nscript_script')</label>
|
||||
<select name="nscript_script">
|
||||
<!--#for $sc in $scripts#-->
|
||||
<option value="$sc" <!--#if $nscript_script == $sc then 'selected="selected"' else ""#-->>$Tspec($sc)</option>
|
||||
<!--#end for#-->
|
||||
</select>
|
||||
<span class="desc">$T('explain-nscript_script')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="nscript_parameters">$T('opt-nscript_parameters')</label>
|
||||
<input type="text" name="nscript_parameters" id="nscript_parameters" value="$nscript_parameters" />
|
||||
<span class="desc">$T('Optional') - $T('explain-nscript_parameters')</span>
|
||||
</div>
|
||||
$show_notify_checkboxes('nscript')
|
||||
<div class="field-pair">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_nscript"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div><!-- /colmask -->
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
var serverData = {}
|
||||
var chartOptions = {
|
||||
fullWidth: true,
|
||||
showPoint: false,
|
||||
showArea: true,
|
||||
axisX: {
|
||||
labelOffset: {
|
||||
x: -5
|
||||
@@ -140,21 +140,24 @@
|
||||
<!--
|
||||
We need to find how many months we have recorded so far, so we
|
||||
loop over all the dates to find the lowest value and then use
|
||||
the number of days passed as an estimate of the months we have.
|
||||
this to calculate the date-selector
|
||||
-->
|
||||
|
||||
<!--#import json#-->
|
||||
<!--#import datetime#-->
|
||||
<!--#import sabnzbd.misc#-->
|
||||
|
||||
<!--#def show_date_selector($server, $id)#-->
|
||||
<!--#set month_names = [$T('January'), $T('February'), $T('March'), $T('April'), $T('May'), $T('June'), $T('July'), $T('August'), $T('September'), $T('October'), $T('November'), $T('December')] #-->
|
||||
<!--#set min_date = datetime.date.today()#-->
|
||||
<!--#for date in $server['amounts'][4]#-->
|
||||
<!--#set split_date = $date.split('-')#-->
|
||||
<!--#set min_date = min(min_date, datetime.date(int(split_date[0]), int(split_date[1]), int(split_date[2])))#-->
|
||||
<!--#set min_date = min(min_date, datetime.date(int(split_date[0]), int(split_date[1]), 1))#-->
|
||||
<!--#end for#-->
|
||||
<!--#set months_recorded = int((datetime.date.today()-min_date).days / (365/12))#-->
|
||||
<!--#set months_recorded = list(sabnzbd.misc.monthrange(min_date, datetime.date.today()))#-->
|
||||
<!--#$months_recorded.reverse()#-->
|
||||
<select class="chart-selector" name="chart-selector-${id}" id="chart-selector-${id}" data-id="${id}">
|
||||
<!--#for $i in range(months_recorded+1)#-->
|
||||
<!--#set cur_date = (datetime.date.today() - datetime.timedelta($i*365/12))#-->
|
||||
<!--#for $cur_date in months_recorded#-->
|
||||
<option value="<!--#echo '%d-%02d' % ($cur_date.year, $cur_date.month)#-->">$month_names[$cur_date.month-1] $cur_date.year</option>
|
||||
<!--#end for#-->
|
||||
</select>
|
||||
@@ -258,7 +261,7 @@
|
||||
</option>
|
||||
<!--#end for#-->
|
||||
</select>
|
||||
<span class="desc">$T('srv-explain-categories')</span>
|
||||
<span class="desc">$T('srv-explain-categories')<br><span class="label label-warning">$T('warning').upper()</span> <strong>This option is scheduled to be removed in the next release of SABnzbd.</strong></span>
|
||||
<div class="alert alert-info alert-no-category">
|
||||
<span class="glyphicon glyphicon-info-sign"></span>
|
||||
$T('srv-explain-no-categories')
|
||||
@@ -300,7 +303,7 @@
|
||||
// Server data
|
||||
serverData[${cur}] = <!--#echo json.dumps($server['amounts'][4])#-->
|
||||
\$(document).ready(function() {
|
||||
showChart(${cur})
|
||||
showChart(${cur}, \$('#chart-selector-${cur}').val())
|
||||
})
|
||||
</script>
|
||||
<!--#end if#-->
|
||||
@@ -317,13 +320,9 @@
|
||||
var thisDay = new Date()
|
||||
|
||||
// What month are we doing?
|
||||
if(month) {
|
||||
var inputDate = new Date(month+'-01')
|
||||
} else {
|
||||
var inputDate = new Date()
|
||||
}
|
||||
var baseDate = new Date(inputDate.getFullYear(), inputDate.getMonth(), 1)
|
||||
var maxDaysInMonth = new Date(baseDate.getYear(), baseDate.getMonth()+1, 0).getDate()
|
||||
var inputDate = new Date(month+'-01')
|
||||
var baseDate = new Date(inputDate.getUTCFullYear(), inputDate.getUTCMonth(), 1)
|
||||
var maxDaysInMonth = new Date(baseDate.getFullYear(), baseDate.getMonth()+1, 0).getDate()
|
||||
|
||||
// Fill the data array
|
||||
var data = {
|
||||
@@ -378,15 +377,16 @@
|
||||
// Show the chart
|
||||
chart = new Chartist.Line('#server-chart-'+server_id, data, chartOptions);
|
||||
chart.on('created', function(context) {
|
||||
// Make sure to add this as the first child so it's at the bottom
|
||||
context.svg.elem('rect', {
|
||||
x: context.chartRect.x1,
|
||||
y: context.chartRect.y2,
|
||||
y: context.chartRect.y2-1,
|
||||
width: context.chartRect.width(),
|
||||
height: context.chartRect.height()+2,
|
||||
fill: 'none',
|
||||
stroke: '#B9B9B9',
|
||||
'stroke-width': '1px'
|
||||
})
|
||||
}, '', context.svg, true)
|
||||
\$('#server-chart-'+server_id+' .ct-label.ct-vertical').each(function(index, elmn) {
|
||||
elmn.innerHTML += axisLabel
|
||||
})
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<title>SABnzbd - $T('login')</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1" />
|
||||
<meta name="apple-mobile-web-app-title" content="SABnzbd" />
|
||||
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="../staticcfg/ico/apple-touch-icon-76x76-precomposed.png" />
|
||||
|
||||
@@ -619,7 +619,6 @@ h2.activeRSS {
|
||||
padding: 0 0 .5em;
|
||||
}
|
||||
.feed-row div {
|
||||
padding-right: 10px;
|
||||
overflow:hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
@@ -1010,6 +1009,15 @@ input[type="checkbox"] {
|
||||
stroke: #666666;
|
||||
}
|
||||
|
||||
.Servers .ct-series-a .ct-point {
|
||||
stroke: #666666;
|
||||
stroke-width: 4px;
|
||||
}
|
||||
|
||||
.Servers .ct-series-a .ct-area {
|
||||
fill: #666666
|
||||
}
|
||||
|
||||
.Servers .ct-label {
|
||||
font-size: 1em;
|
||||
color: black;
|
||||
@@ -1159,7 +1167,7 @@ input[type="checkbox"] {
|
||||
|
||||
.navbar-nav {
|
||||
/* For extra wide languages like Polish */
|
||||
margin-right: -50px;
|
||||
margin-right: -150px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<title data-bind="text: title">SABnzbd</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="application-name" content="SABnzbd">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
@@ -30,13 +30,13 @@
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="./staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="./staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="192x192" href="./staticcfg/ico/android-192x192.png" />
|
||||
<link rel="shortcut icon" type="image/ico" href="./staticcfg/ico/favicon.ico?v=1.0.0" data-bind="attr: { 'href': SABIcon }" />
|
||||
<link rel="shortcut icon" type="image/ico" href="./staticcfg/ico/favicon.ico?v=$version" data-bind="attr: { 'href': SABIcon }" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./static/bootstrap/css/bootstrap.min.css?p=$pid" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.css?p=$pid" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.mobile.css?p=$pid" media="all and (max-width: 768px)" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/bootstrap/css/bootstrap.min.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.mobile.css?v=$version" media="all and (max-width: 768px)" />
|
||||
<!--#if $color_scheme not in ('Default', '') #-->
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/colorschemes/${color_scheme}.css?p=$pid"/>
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/colorschemes/${color_scheme}.css?v=$version"/>
|
||||
<!--#end if#-->
|
||||
|
||||
<!-- Make translations available in scripts -->
|
||||
|
||||
@@ -37,19 +37,10 @@ function Fileslisting(parent) {
|
||||
|
||||
// Move to top and bottom buttons
|
||||
self.moveButton = function (item,event) {
|
||||
var ITEMKEY = "ko_sortItem",
|
||||
INDEXKEY = "ko_sourceIndex",
|
||||
LISTKEY = "ko_sortList",
|
||||
PARENTKEY = "ko_parentList",
|
||||
DRAGKEY = "ko_dragItem",
|
||||
unwrap = ko.utils.unwrapObservable,
|
||||
dataGet = ko.utils.domData.get,
|
||||
dataSet = ko.utils.domData.set;
|
||||
var targetRow,sourceRow,tbody;
|
||||
var targetRow, sourceRow, tbody;
|
||||
sourceRow = $(event.currentTarget).parents("tr").filter(":first");
|
||||
tbody = sourceRow.parents("tbody").filter(":first");
|
||||
//debugger;
|
||||
dataSet(sourceRow[0], INDEXKEY, ko.utils.arrayIndexOf(sourceRow.parent().children(), sourceRow[0]));
|
||||
ko.utils.domData.set(sourceRow[0], "ko_sourceIndex", ko.utils.arrayIndexOf(sourceRow.parent().children(), sourceRow[0]));
|
||||
sourceRow = sourceRow.detach();
|
||||
if ($(event.currentTarget).is(".buttonMoveToTop")) {
|
||||
// we are moving to the top
|
||||
@@ -67,7 +58,7 @@ function Fileslisting(parent) {
|
||||
}
|
||||
tbody.sortable('option', 'update').call(tbody[0],null, { item: sourceRow });
|
||||
};
|
||||
|
||||
|
||||
// Trigger update
|
||||
self.triggerUpdate = function() {
|
||||
// Call API
|
||||
@@ -230,9 +221,9 @@ function FileslistingModel(parent, data) {
|
||||
self.nzf_id = ko.observable(data.nzf_id);
|
||||
self.file_age = ko.observable(data.age);
|
||||
self.mb = ko.observable(data.mb);
|
||||
self.percentage = ko.observable(fixPercentages((100 - (data.mbleft / data.mb * 100)).toFixed(0)));
|
||||
self.canselect = ko.observable(data.status != "finished" && data.status != "queued");
|
||||
self.isdone = ko.observable(data.status == "finished");
|
||||
self.percentage = ko.observable(self.isdone() ? fixPercentages(100) : fixPercentages((100 - (data.mbleft / data.mb * 100)).toFixed(0)));
|
||||
|
||||
// Update internally
|
||||
self.updateFromData = function(data) {
|
||||
@@ -240,9 +231,10 @@ function FileslistingModel(parent, data) {
|
||||
self.nzf_id(data.nzf_id)
|
||||
self.file_age(data.age)
|
||||
self.mb(data.mb)
|
||||
self.percentage(fixPercentages((100 - (data.mbleft / data.mb * 100)).toFixed(0)));
|
||||
self.canselect(data.status != "finished" && data.status != "queued")
|
||||
self.isdone(data.status == "finished")
|
||||
// Data is given in MB, would always show 0% for small files even if completed
|
||||
self.percentage(self.isdone() ? fixPercentages(100) : fixPercentages((100 - (data.mbleft / data.mb * 100)).toFixed(0)))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ legend,
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
.navbar-collapse.in .dropdown-menu {
|
||||
.navbar-collapse.in .dropdown-menu, {
|
||||
border: none;
|
||||
}
|
||||
|
||||
@@ -111,6 +111,7 @@ legend,
|
||||
color: #EBEBEB;
|
||||
}
|
||||
|
||||
table,
|
||||
.table-striped>tbody>tr:nth-child(even)>td,
|
||||
.table>tbody>tr:nth-child(even)>td,
|
||||
.table th,
|
||||
@@ -158,7 +159,9 @@ select.form-control,
|
||||
.retry-button, .retry-button-inactive,
|
||||
.history-options-show-failed,
|
||||
.queue-error-info,
|
||||
.options-bad-status {
|
||||
.options-bad-status,
|
||||
.history-failed-download:hover .retry-button .glyphicon:before,
|
||||
.retry-button:hover .glyphicon:before {
|
||||
color: #F95151 !important;
|
||||
}
|
||||
|
||||
@@ -205,6 +208,10 @@ hr {
|
||||
border-bottom: none !important;
|
||||
}
|
||||
|
||||
#modal-item-files .item-files-table {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
||||
.history-queue-swicher .nav-tabs>li>a,
|
||||
.history-queue-swicher .nav-tabs>li.active>a {
|
||||
border-bottom: none;
|
||||
@@ -222,6 +229,11 @@ hr {
|
||||
box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 1);
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
border-color: #727272;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
/* Placeholders - Will not work if grouped! */
|
||||
::-webkit-input-placeholder {
|
||||
color: #EBEBEB !important;
|
||||
|
||||
16146
interfaces/smpl/templates/static/MochiKit/MochiKit.js
vendored
16146
interfaces/smpl/templates/static/MochiKit/MochiKit.js
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,2 @@
|
||||
dojo.hostenv.conditionalLoadModule({"common": ["MochiKit.MochiKit"]});
|
||||
dojo.hostenv.moduleLoaded("MochiKit.*");
|
||||
dojo.hostenv.conditionalLoadModule({"common": ["MochiKit.MochiKit"]});
|
||||
dojo.hostenv.moduleLoaded("MochiKit.*");
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<div class="clearfix"></div>
|
||||
<iframe style="float: right; width: 315px; height: 315px;" frameborder="0" src="https://resources.sabnzbd.org/wizard/ad/$language"></iframe>
|
||||
<iframe style="float: right; width: 325px; height: 325px;" frameborder="0" src="https://sabnzbd.org/wizard#$language"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
The original author of SABnzbd based his work on Pynewsleecher by Freddy@madcowdesease.org.
|
||||
|
||||
Few parts of Pynewsleecher have survived the generations of SABnzbd in a
|
||||
recognizable form.
|
||||
Still, we wish to thank Freddy for his inspiration.
|
||||
|
||||
The home of the Pynewsleecher project:
|
||||
http://www.madcowdisease.org/mcd/pynewsleecher
|
||||
|
||||
The software does not carry any license information.
|
||||
|
||||
The original author of SABnzbd based his work on Pynewsleecher by Freddy@madcowdesease.org.
|
||||
|
||||
Few parts of Pynewsleecher have survived the generations of SABnzbd in a
|
||||
recognizable form.
|
||||
Still, we wish to thank Freddy for his inspiration.
|
||||
|
||||
The home of the Pynewsleecher project:
|
||||
http://www.madcowdisease.org/mcd/pynewsleecher
|
||||
|
||||
The software does not carry any license information.
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
On http://www.brunningonline.net/simon/blog/archives/001835.html,
|
||||
the author licensed SysTrayIcon.py under a variant of the WTFPL:
|
||||
|
||||
> Any road up, help yourself. Consider SysTrayIcon.py to be under an
|
||||
> "Aleister Crowley" style license - "Do what thou wilt shall be the
|
||||
> only law".
|
||||
>
|
||||
> Err, but don't sue me if it doesn't work. ;-)
|
||||
On http://www.brunningonline.net/simon/blog/archives/001835.html,
|
||||
the author licensed SysTrayIcon.py under a variant of the WTFPL:
|
||||
|
||||
> Any road up, help yourself. Consider SysTrayIcon.py to be under an
|
||||
> "Aleister Crowley" style license - "Do what thou wilt shall be the
|
||||
> only law".
|
||||
>
|
||||
> Err, but don't sue me if it doesn't work. ;-)
|
||||
|
||||
BIN
osx/unrar/unrar
BIN
osx/unrar/unrar
Binary file not shown.
@@ -8,14 +8,14 @@ msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-06-22 20:42+0000\n"
|
||||
"PO-Revision-Date: 2017-07-22 17:36+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"PO-Revision-Date: 2017-08-01 16:45+0000\n"
|
||||
"Last-Translator: ION IL <Unknown>\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-07-23 06:02+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-02 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
@@ -72,11 +72,11 @@ msgstr ""
|
||||
"## !שורות חדשות ורווחים לבנים הם משמעותיים\n"
|
||||
"##\n"
|
||||
"## אלו כותרות הדוא\"ל\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
"job $name\n"
|
||||
"$to :אל\n"
|
||||
"$from :מאת\n"
|
||||
"תאריך: $date\n"
|
||||
"<!--#if $status then \"completed\" else \"failed\" #--> $name יש עבודה אשר "
|
||||
"SABnzbd-נושא: ל\n"
|
||||
"## !אחרי זה בא הגוף, השורה הריקה דרושה\n"
|
||||
"\n"
|
||||
",היי\n"
|
||||
@@ -87,7 +87,7 @@ msgstr ""
|
||||
"SABnzbd נכשל להוריד את \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
"\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
"<!--#end if#-->\n"
|
||||
"הסתיים ב $end_time\n"
|
||||
"הסתיים ב-$end_time\n"
|
||||
"הורדו $size\n"
|
||||
"\n"
|
||||
":תוצאות העבודה\n"
|
||||
@@ -143,10 +143,10 @@ msgstr ""
|
||||
"## !שורות חדשות ורווחים לבנים הם משמעותיים\n"
|
||||
"##\n"
|
||||
"## אלו כותרות הדוא\"ל\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"הוסיף $amount עבודות לתור Subject: SABnzbd\n"
|
||||
"$to :אל\n"
|
||||
"$from :מאת\n"
|
||||
"תאריך: $date\n"
|
||||
"הוסיף $amount עבודות לתור SABnzbd :נושא\n"
|
||||
"## !אחרי זה בא הגוף, השורה הריקה דרושה\n"
|
||||
"\n"
|
||||
",היי\n"
|
||||
@@ -185,18 +185,17 @@ msgid ""
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd רעה עבור URL תבנית דוא\"ל של "
|
||||
"משיכת\n"
|
||||
"## SABnzbd רעה עבור URL תבנית דוא\"ל של משיכת\n"
|
||||
"## זאת תבנית ברדלס\n"
|
||||
"## http://sabnzbd.wikidot.com/email-templates :תיעוד\n"
|
||||
"##\n"
|
||||
"## !שורות חדשות ורווחים לבנים הם משמעותיים\n"
|
||||
"##\n"
|
||||
"## אלו כותרות הדוא\"ל\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"NZB נכשל במשיכת Subject: SABnzbd\n"
|
||||
"$to :אל\n"
|
||||
"$from :מאת\n"
|
||||
"תאריך: $date\n"
|
||||
"NZB נכשל במשיכת SABnzbd :נושא\n"
|
||||
"## !אחרי זה בא הגוף, השורה הריקה דרושה\n"
|
||||
"\n"
|
||||
",היי\n"
|
||||
|
||||
@@ -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-07-27 15:58+W. Europe Daylight Time\n"
|
||||
"POT-Creation-Date: 2017-08-16 13:33+W. Europe Daylight Time\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
@@ -178,10 +178,6 @@ msgstr ""
|
||||
msgid "Trying to set status of non-existing server %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py [Warning message]
|
||||
msgid "Too little diskspace forcing PAUSE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py [Error message]
|
||||
msgid "Failure in tempfile.mkstemp"
|
||||
msgstr ""
|
||||
@@ -229,6 +225,10 @@ msgstr ""
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/assembler.py [Warning message]
|
||||
msgid "Too little diskspace forcing PAUSE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/assembler.py [Error message]
|
||||
msgid "Disk full! Forcing Pause"
|
||||
msgstr ""
|
||||
@@ -946,6 +946,11 @@ msgstr ""
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -962,10 +967,6 @@ msgstr ""
|
||||
msgid "Checking"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1123,6 +1124,10 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid "%d files with duplicate filenames were discared for \"%s\". Enable \"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr ""
|
||||
@@ -4568,6 +4573,10 @@ msgid ""
|
||||
"It is licensed under the GNU GENERAL PUBLIC LICENSE Version 2 or (at your option) any later version.\n"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "In order to download from Usenet you will require access to a provider. Your ISP may provide you with access, however a premium provider is recommended. Don't have a Usenet provider? We recommend trying %s."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:10+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -656,7 +656,7 @@ msgstr ""
|
||||
"Brugeroplysninger mangler, indtast brugernavn / password fra Konfiguration-> "
|
||||
"Generelt i dit tredjepartsprogram:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1012,6 +1012,11 @@ msgstr "Reparerer"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Repareret i %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1028,10 +1033,6 @@ msgstr "Bekræfter"
|
||||
msgid "Checking"
|
||||
msgstr "Kontrollerer"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr "Python script '%s' har ikke udfør (+x) tilladelsessæt"
|
||||
@@ -1091,7 +1092,7 @@ msgid "Not available"
|
||||
msgstr "Ikke tilgængelig"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kan ikke sende, mangler nødvendige data"
|
||||
|
||||
@@ -1191,6 +1192,12 @@ msgstr "Dublet NZB"
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pause duplikeret NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Afbrudt, kan ikke afsluttes"
|
||||
@@ -1632,6 +1639,22 @@ msgstr "Fejl ved lukning af system"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Indexer id (%s) ikke fundet for ratings fil"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Serveradresse"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-nøgle"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
"Denne nøgle indeholder identitet indekseringen. Tjek din profil på "
|
||||
"indekseringens hjemmeside."
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Forkert RSS-feed beskrivelse \"%s\""
|
||||
@@ -2823,9 +2846,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Historie Elementbegrænsning"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2855,10 +2878,6 @@ msgstr ""
|
||||
"Hjælp os med at oversætte SABnzbd på dit sprog! <br/> Tilføj uoversatte "
|
||||
"tekster eller forbedrede eksisterende oversættelser her:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-nøgle"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr "Denne nøgle vil give 3. parts programmer fuld adgang til SABnzbd."
|
||||
@@ -3227,6 +3246,16 @@ msgstr "Ved fejl, prøv alternativ NZB"
|
||||
msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr "Nogle servere levere en alternativ NZB når et download mislykkes."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Aktiver mappe omdøbning"
|
||||
@@ -3455,20 +3484,8 @@ msgstr "Aktiver indekseringen Integration"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
"Indeksatorer kan levere klassifikationsoplysninger, når et job er tilføjet "
|
||||
"og SABnzbd kan rapportere indekseringen, hvis et job ikke kunne fuldføres. "
|
||||
"Afhængigt af din indekseringen, kan API tasteindstillingen stå tomt."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
"Denne nøgle indeholder identitet indekseringen. Tjek din profil på "
|
||||
"indekseringens hjemmeside."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable Filtering"
|
||||
@@ -3822,10 +3839,6 @@ msgstr "Aktiver Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Send meddelelser til Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Serveradresse"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Bruges kun ved Growl fjern server (vært: port)"
|
||||
@@ -4349,6 +4362,10 @@ msgstr "Brug globale grænseflade indstillinger"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Køen elementbegrænsning"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Historie Elementbegrænsning"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Datoformat"
|
||||
@@ -4878,7 +4895,7 @@ msgstr "Kunne ikke omdøbe lignende fil: %s til %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernavnet løser ikke"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Uautoriseret adgang"
|
||||
|
||||
|
||||
112
po/main/de.po
112
po/main/de.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"PO-Revision-Date: 2017-07-27 00:34+0000\n"
|
||||
"Last-Translator: Tobias Bannert <tobannert@gmail.com>\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+0000\n"
|
||||
"PO-Revision-Date: 2017-08-09 21:46+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\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-07-27 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build 18439)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-10 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -457,7 +457,7 @@ msgstr "%s wurde auf keinem Server gefunden und daher übersprungen"
|
||||
#: sabnzbd/directunpacker.py # sabnzbd/directunpacker.py
|
||||
#: sabnzbd/directunpacker.py # sabnzbd/skintext.py
|
||||
msgid "Direct Unpack"
|
||||
msgstr ""
|
||||
msgstr "Direkt entpacken"
|
||||
|
||||
#: sabnzbd/directunpacker.py # sabnzbd/skintext.py [PP status]
|
||||
#: sabnzbd/skintext.py [History: job status]
|
||||
@@ -470,13 +470,16 @@ msgstr "%s Datei(en)/Ordner entpackt in %s"
|
||||
|
||||
#: sabnzbd/directunpacker.py [Warning message]
|
||||
msgid "Direct Unpack was automatically enabled."
|
||||
msgstr ""
|
||||
msgstr "Direkt entpacken wurde automatisch aktiviert"
|
||||
|
||||
#: sabnzbd/directunpacker.py [Warning message] # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Jobs will start unpacking during the downloading to reduce post-processing "
|
||||
"time. Only works for jobs that do not need repair."
|
||||
msgstr ""
|
||||
"Aufträge werden bereits während des Download-Vorgangs entpackt, um die "
|
||||
"Nachbearbeitungszeit zu verkürzen. Nur für Aufträge, die nicht repariert "
|
||||
"werden müssen."
|
||||
|
||||
#: sabnzbd/dirscanner.py [Error message] # sabnzbd/dirscanner.py [Error message]
|
||||
msgid "Error removing %s"
|
||||
@@ -678,7 +681,7 @@ msgstr ""
|
||||
"Authentifizierung fehlt. Bitte Benutzernamen und Passwort aus Einstellungen-"
|
||||
">Allgemein in die externe Anwendung eingeben:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1039,6 +1042,11 @@ msgstr "Reparieren"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Repariert in %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr "Überprüfe Reparatur"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1055,10 +1063,6 @@ msgstr "Überprüfen"
|
||||
msgid "Checking"
|
||||
msgstr "Wird überprüft"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr "Dem Pythonskript \"%s\" fehlen die Ausführenrechte (+x)"
|
||||
@@ -1072,10 +1076,13 @@ msgid ""
|
||||
"Certificate hostname mismatch: the server hostname is not listed in the "
|
||||
"certificate. This is a server issue."
|
||||
msgstr ""
|
||||
"Zertifikat ungültig: Der Server-Host ist nicht im angegeben Zertifikat "
|
||||
"enthalten. Dies ist ein Serverproblem."
|
||||
|
||||
#: sabnzbd/newswrapper.py
|
||||
msgid "Certificate not valid. This is most probably a server issue."
|
||||
msgstr ""
|
||||
"Zertifikat ist nicht gültig. Dies ist wahrscheinlich ein Serverproblem."
|
||||
|
||||
#: sabnzbd/newswrapper.py
|
||||
msgid "Server %s uses an untrusted certificate [%s]"
|
||||
@@ -1118,7 +1125,7 @@ msgid "Not available"
|
||||
msgstr "Nicht verfügbar"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Absenden nicht möglich, benötigte Daten fehlen"
|
||||
|
||||
@@ -1223,6 +1230,14 @@ msgstr "Doppelte NZB"
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Doppelt vorhandene NZB \"%s\" angehalten"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
"%d Dateien mit doppelten Dateinamen wurden für \"%s\" verworfen. Aktiviere "
|
||||
"\"allow_duplicate_files\" um doppelte Dateinamen zu erlauben."
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Abgebrochen, kann nicht fertiggestellt werden"
|
||||
@@ -1512,6 +1527,8 @@ msgid ""
|
||||
"Unable to bind to port %s on %s. Some other software uses the port or "
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
"Konnte nicht an Port %s auf %s starten. Eine andere Software nutzt diesen "
|
||||
"Port oder SABnzbd läuft bereits."
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
@@ -1677,6 +1694,22 @@ msgstr "Fehler beim Herunterfahren des Systems"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Indexer ID (%s) für Bewertung nicht gefunden"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Server-Adresse"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-Schlüssel"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
"Der Schlüssel liefert die Identität des Indexers. Prüfe dein Profil auf der "
|
||||
"indexer Webseite."
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Ungültige RSS-Feed-Beschreibung \"%s\""
|
||||
@@ -2647,7 +2680,7 @@ msgstr "7zip aktivieren"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multicore Par2"
|
||||
msgstr ""
|
||||
msgstr "Multicore Par2"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -2851,17 +2884,19 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
msgstr ""
|
||||
msgstr "Verlaufsgröße"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Automatically delete completed jobs from History. Beware that Duplicate "
|
||||
"Detection and some external tools rely on History information."
|
||||
msgstr ""
|
||||
"Fertige Aufträge automatisch aus dem Verlauf entfernen. Duplikatserkennung "
|
||||
"und manche externe Skripte benötigen Informationen aus dem Verlauf."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Keep all jobs"
|
||||
msgstr ""
|
||||
msgstr "Alle Aufträge behalten"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Keep maximum number of completed jobs"
|
||||
@@ -2873,11 +2908,11 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
msgstr "Fertige Aufträge nicht behalten"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limit der Objekte im Verlauf"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr "Aufträge"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2907,10 +2942,6 @@ msgstr ""
|
||||
"Hilf uns beim Übersetzen von SABnzbd in deiner Sprache! <br/>Neue "
|
||||
"Übersetzungen hinzufügen oder bestehende verbessern kannst du hier:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-Schlüssel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr ""
|
||||
@@ -3292,6 +3323,16 @@ msgstr ""
|
||||
"Manche Server stellen ein alternatives NZB zur Verfügung, falls ein Download "
|
||||
"fehlschlägt."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Ordner-Umbenennung aktivieren"
|
||||
@@ -3534,18 +3575,9 @@ msgstr "Indexer Integration eingeschaltet"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
"Der Schlüssel liefert die Identität des Indexers. Prüfe dein Profil auf der "
|
||||
"indexer Webseite."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable Filtering"
|
||||
msgstr "Filter aktivieren"
|
||||
@@ -3680,7 +3712,7 @@ msgstr "Optional"
|
||||
|
||||
#: sabnzbd/skintext.py [Explain server optional tickbox]
|
||||
msgid "For unreliable servers, will be ignored longer in case of failures"
|
||||
msgstr ""
|
||||
msgstr "Für unzuverlässige Server, wird bei Fehlern länger ignoriert"
|
||||
|
||||
#: sabnzbd/skintext.py [Enable server tickbox]
|
||||
msgid "Enable"
|
||||
@@ -3902,10 +3934,6 @@ msgstr "Growl aktivieren"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Benachrichtigungen an Growl senden"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Server-Adresse"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Nur für entfernten Growl-Server verwenden (Rechnername:Port)"
|
||||
@@ -4426,6 +4454,10 @@ msgstr "die globalen Interface-Einstellungen verwenden"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Limit der Objekte in der Warteschlange"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limit der Objekte im Verlauf"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Datumsformat"
|
||||
@@ -4957,7 +4989,7 @@ msgstr "Umbenennen der gleichen Datei von %s nach %s fehlgeschlagen."
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Konnte Servernamen nicht auflösen"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Unerlaubter Zugriff"
|
||||
|
||||
|
||||
@@ -105,3 +105,11 @@ msgstr "Posts will be paused until they are at least this age. Setting job prior
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Support the project, donate!"
|
||||
|
||||
msgid "%d files with duplicate filenames were discared for \"%s\". Enable \"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr "%d files with duplicate filenames were discarded for \"%s\". Enable \"allow_duplicate_files\" to allow duplicate filenames."
|
||||
|
||||
msgid "User script can flag job as failed"
|
||||
msgstr "Post-processing script can flag job as failed"
|
||||
|
||||
msgid "When the user script returns a non-zero exit code, the job will be flagged as failed."
|
||||
msgstr "When the post-processing script returns a non-zero exit code, the job will be flagged as failed."
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:54+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -658,7 +658,7 @@ msgstr ""
|
||||
"Faltaron datos de cuenta, favor ingresar usuario/contraseña desde Config-"
|
||||
">General en tu aplicacion externa:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1020,6 +1020,11 @@ msgstr "Reparando"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Reparado en %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1036,10 +1041,6 @@ msgstr "Verificando"
|
||||
msgid "Checking"
|
||||
msgstr "Verificando"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1099,7 +1100,7 @@ msgid "Not available"
|
||||
msgstr "No disponible"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "No se ha podido enviar, faltan datos"
|
||||
|
||||
@@ -1202,6 +1203,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausando NZB duplicados \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Abortado, No puede ser completado"
|
||||
@@ -1651,6 +1658,20 @@ msgstr ""
|
||||
"Identificación del indexador (%s) no encontrado para archivo de "
|
||||
"calificaciones"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Dirección del Servidor"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Clave API"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "iaDescripción de canal RSS incorrecta \"%s\""
|
||||
@@ -2840,9 +2861,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Límite del historial"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2872,10 +2893,6 @@ msgstr ""
|
||||
"¡Ayúdanos a traducir SABnzbd en tu idioma!<br/>Traduce textos que aun no "
|
||||
"tienen ninguna traducción o mejora los que ya lo están traducidos aquí:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Clave API"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr ""
|
||||
@@ -3245,6 +3262,16 @@ msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr ""
|
||||
"Algunos servidores ofrecen una NZB alternativa cuando falla una descarga ."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Habilitar renombrado de directorios"
|
||||
@@ -3480,14 +3507,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3846,10 +3866,6 @@ msgstr "Habilitar Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Enviar notificaciones a Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Dirección del Servidor"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Usar sólo para un servidor Growl remoto (servidor:puerto)"
|
||||
@@ -4370,6 +4386,10 @@ msgstr "Usar ajustes de la interfaz global"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Límite de elementos encolables"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Límite del historial"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Formato de fecha"
|
||||
@@ -4900,7 +4920,7 @@ msgstr "Error al renombrar ficheros similares: %s a %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "No se puede resolver el nombre de servidor"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Acceso no autorizado"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:10+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -655,7 +655,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/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1010,6 +1010,11 @@ msgstr "Korjataan"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Korjattiin ajassa %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1026,10 +1031,6 @@ msgstr "Varmennetaan"
|
||||
msgid "Checking"
|
||||
msgstr "Tarkistetaan"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1089,7 +1090,7 @@ msgid "Not available"
|
||||
msgstr "Ei saatavilla"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Ei voida lähettää, vaaditut tiedot ovat puutteelliset"
|
||||
|
||||
@@ -1191,6 +1192,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Keskeytetään kaksoiskappale NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Peruutettu, ei voi valmistua"
|
||||
@@ -1636,6 +1643,20 @@ msgstr "Virhe sammutettaessa järjestelmää"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Indeksoijan id:tä (%s) ei löydetty arviointitiedostolle"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Palvelimen osoite"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API avain"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Virheellinen RSS syötteen kuvaus \"%s\""
|
||||
@@ -2830,9 +2851,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Historian pituusrajoitus"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2862,10 +2883,6 @@ msgstr ""
|
||||
"Auta meitä kääntämään SABnzbd sinun kielellesi!<br/>Käännä tai muokkaa "
|
||||
"olemassaolevia käännöksiä täällä:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API avain"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr ""
|
||||
@@ -3238,6 +3255,16 @@ msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr ""
|
||||
"Jotkin palvelimet tarjoavat vaihtoehtoisen NZB:n kun lataus epäonnistuu."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Kansion uudelleennimeäminen käytössä"
|
||||
@@ -3468,14 +3495,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3831,10 +3851,6 @@ msgstr "Growl käytössä"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Lähetä ilmoitukset Growliin"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Palvelimen osoite"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Käytä vain Growl etäpalvelimelle (isäntä:portti)"
|
||||
@@ -4361,6 +4377,10 @@ msgstr "Käytä yleisiä käyttöliittymän asetuksia"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Jonon pituusrajoitus"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Historian pituusrajoitus"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Päivämäärän muoto"
|
||||
@@ -4891,7 +4911,7 @@ msgstr "Samankaltaisen tiedoston uudelleennimeäminen epäonnistui: %s %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Palvelimen osoitetta ei voitu selvittää"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Luvaton käyttö"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"PO-Revision-Date: 2017-07-24 20:58+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+0000\n"
|
||||
"PO-Revision-Date: 2017-08-07 18:53+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-07-25 06:10+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-08 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -684,7 +684,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/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1048,6 +1048,11 @@ msgstr "Réparation en cours"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Réparé(s) dans %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr "Vérification de la réparation"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1064,10 +1069,6 @@ msgstr "Vérification en cours"
|
||||
msgid "Checking"
|
||||
msgstr "Vérification"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr "Vérification de la réparation"
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1132,7 +1133,7 @@ msgid "Not available"
|
||||
msgstr "Non disponible"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Impossible d'envoyer, données requises manquantes"
|
||||
|
||||
@@ -1234,6 +1235,14 @@ msgstr "Dupliquer NZB"
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Mise en pause du doublon NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
"%d fichiers avec des noms en double ont été rejetés pour \"%s\". Cochez "
|
||||
"\"allow_duplicate_files\" pour autoriser les noms de fichiers en double."
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Interrompu, ne peut être achevé"
|
||||
@@ -1690,6 +1699,22 @@ msgstr "Erreur lors de l'arrêt du système"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "id de l'Indexer (%s) non trouvé pour le fichier des classements"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Adresse du serveur"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Clé API"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
"Cette clé fournit l'identité à l'indexeur. Vérifiez votre profil sur le site "
|
||||
"web de l'indexeur."
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Description du flux RSS incorrecte \"%s\""
|
||||
@@ -2894,9 +2919,9 @@ msgstr "Durée maximale d'historisation des tâches complétées"
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr "Ne conserver aucune tâche terminée"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limite des éléments historisés"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr "Tâches"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2926,10 +2951,6 @@ msgstr ""
|
||||
"Aidez-nous à traduire SABnzbd dans votre langue ! <br/>Améliorez les "
|
||||
"traductions existantes ou ajoutez celles qui manquent ici :"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Clé API"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr ""
|
||||
@@ -3313,6 +3334,19 @@ msgstr ""
|
||||
"Certains serveurs proposent un NZB alternatif lorsqu'un téléchargement "
|
||||
"échoue."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr "Utiliser les tags de l'indexeur"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
"Lors du tri, utiliser les tags de l'indexeur pour le titre, la saison, "
|
||||
"l'episode, etc. Sinon, toutes les dénominations seront dérivées du fichier "
|
||||
"NZB."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Activer le renommage du dossier"
|
||||
@@ -3551,21 +3585,11 @@ msgstr "Activer l'intégration de l'indexeur"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
"Les indexeurs peuvent fournir des informations de notation lorsqu'une tâche "
|
||||
"est ajoutée, et SABnzbd peut signaler à l'indexeur si une tâche n'a pu être "
|
||||
"terminée. Le paramètre de clé API peut être laissé vide en fonction de votre "
|
||||
"indexeur."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
"Cette clé fournit l'identité à l'indexeur. Vérifiez votre profil sur le site "
|
||||
"web de l'indexeur."
|
||||
"est ajoutée, et SABnzbd peut signaler à l'indexeur si une tâche n'a pas pu "
|
||||
"être terminée."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable Filtering"
|
||||
@@ -3927,10 +3951,6 @@ msgstr "Activer Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Envoie les notifications à Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Adresse du serveur"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Utiliser seulement pour le serveur Growl à distance (hôte:port)"
|
||||
@@ -4459,6 +4479,10 @@ msgstr "Utiliser les paramètres globaux de l'interface"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Limite des éléments de la file d'attente"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limite des éléments historisés"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Format de la date"
|
||||
@@ -4992,7 +5016,7 @@ msgstr "Impossible de renommer le fichier similaire : %s en %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Resolution du nom de serveur impossible"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Accès non autorisé"
|
||||
|
||||
|
||||
151
po/main/he.po
151
po/main/he.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"PO-Revision-Date: 2017-07-18 20:20+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+0000\n"
|
||||
"PO-Revision-Date: 2017-08-15 20:47+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-16 05:16+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -648,7 +648,7 @@ msgstr ""
|
||||
":אימות חסר, אנא הכנס שם משתמש/סיסמה מתוך תצורה->כללי לתוך תכנית הצד השלישי "
|
||||
"שלך"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1000,6 +1000,11 @@ msgstr "מתקן"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "%s-תוקן ב [%s]"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr "מוודא תיקון"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1016,10 +1021,6 @@ msgstr "מוודא"
|
||||
msgid "Checking"
|
||||
msgstr "בודק"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr "מוודא תיקון"
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr "(+x) אין ערכת הרשאות ביצוע \"%s\" לתסריט פייתון"
|
||||
@@ -1081,7 +1082,7 @@ msgid "Not available"
|
||||
msgstr "לא זמין"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "לא ניתן לשלוח, נתונים דרושים חסרים"
|
||||
|
||||
@@ -1181,6 +1182,14 @@ msgstr "NZB שכפל"
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "\"%s\" NZB משהה שכפול"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
".כדי להתיר שמות כפולים של קבצים \"allow_duplicate_files\" אפשר את .\"%s\" "
|
||||
"הושלכו %d קבצים עם שמות כפולים עבור"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "בוטל, לא יכול להיות שלם"
|
||||
@@ -1607,7 +1616,7 @@ msgstr "נכשלו בוידוא RAR קבצי"
|
||||
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py [Error message]
|
||||
msgid "Removing %s failed"
|
||||
msgstr "הסרת %s נכשלה"
|
||||
msgstr "נכשלה %s הסרת"
|
||||
|
||||
#: sabnzbd/powersup.py [Error message]
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1625,6 +1634,20 @@ msgstr "שגיאה בזמן כיבוי מערכת"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "לא נמצאה עבור קובץ מידרגים (%s) זהות מדדן"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "כתובת שרת"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API מפתח"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ".מפתח זה מספק זהות למדדן. בדוק את המתאר שלך באתר של המדדן"
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "\"%s\" לא נכון RSS תיאור הזנת"
|
||||
@@ -1801,7 +1824,7 @@ msgstr "RSS קרא הזנות"
|
||||
|
||||
#: sabnzbd/skintext.py [Config->Scheduler]
|
||||
msgid "Remove failed jobs"
|
||||
msgstr "הסר עבודות כושלות"
|
||||
msgstr "הסר עבודות נכשלות"
|
||||
|
||||
#: sabnzbd/skintext.py [Config->Scheduler]
|
||||
msgid "Remove completed jobs"
|
||||
@@ -1921,51 +1944,51 @@ msgstr "שנה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "January"
|
||||
msgstr ""
|
||||
msgstr "ינואר"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "February"
|
||||
msgstr ""
|
||||
msgstr "פברואר"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "March"
|
||||
msgstr ""
|
||||
msgstr "מרץ"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "April"
|
||||
msgstr ""
|
||||
msgstr "אפריל"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "May"
|
||||
msgstr ""
|
||||
msgstr "מאי"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
msgstr "יוני"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "July"
|
||||
msgstr ""
|
||||
msgstr "יולי"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "August"
|
||||
msgstr ""
|
||||
msgstr "אוגוסט"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
msgstr "ספטמבר"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "October"
|
||||
msgstr ""
|
||||
msgstr "אוקטובר"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "November"
|
||||
msgstr ""
|
||||
msgstr "נובמבר"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "December"
|
||||
msgstr ""
|
||||
msgstr "דצמבר"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Day of month"
|
||||
@@ -2306,15 +2329,15 @@ msgstr "ומחק קבצים NZB טהר"
|
||||
|
||||
#: sabnzbd/skintext.py [Retry all failed jobs dialog box]
|
||||
msgid "Retry all failed jobs"
|
||||
msgstr "נסה שוב את כל העבודות שנכשלו"
|
||||
msgstr "נסה שוב את כל העבודות הנכשלות"
|
||||
|
||||
#: sabnzbd/skintext.py [Queue page button]
|
||||
msgid "Remove NZB"
|
||||
msgstr "הסר NZB"
|
||||
msgstr "NZB הסר"
|
||||
|
||||
#: sabnzbd/skintext.py [Queue page button] # sabnzbd/skintext.py
|
||||
msgid "Remove NZB & Delete Files"
|
||||
msgstr "הסר NZB ומחק קבצים"
|
||||
msgstr "ומחק קבצים NZB הסר"
|
||||
|
||||
#: sabnzbd/skintext.py [Queue page, as in "4G *of* 10G"]
|
||||
msgid "of"
|
||||
@@ -2362,11 +2385,11 @@ msgstr "גודל"
|
||||
|
||||
#: sabnzbd/skintext.py [Button to delete all failed jobs in History]
|
||||
msgid "Purge Failed NZBs"
|
||||
msgstr "שנכשלו NZB טהר"
|
||||
msgstr "נכשלים NZB טהר"
|
||||
|
||||
#: sabnzbd/skintext.py [Button to delete all failed jobs in History, including files]
|
||||
msgid "Purge Failed NZBs & Delete Files"
|
||||
msgstr "שנכשלו ומחק קבצים NZB טהר"
|
||||
msgstr "נכשלים ומחק קבצים NZB טהר"
|
||||
|
||||
#: sabnzbd/skintext.py [Button to delete all completed jobs in History]
|
||||
msgid "Purge Completed NZBs"
|
||||
@@ -2783,33 +2806,35 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
msgstr ""
|
||||
msgstr "שימור היסטוריה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Automatically delete completed jobs from History. Beware that Duplicate "
|
||||
"Detection and some external tools rely on History information."
|
||||
msgstr ""
|
||||
".מחק באופן אוטומטי עבודות שלמות מההיסטוריה. שים לב ששימור כפול ומספר כלים "
|
||||
"חיצוניים מסתמכים על מידע היסטוריה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Keep all jobs"
|
||||
msgstr ""
|
||||
msgstr "שמור את כל העבודות"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Keep maximum number of completed jobs"
|
||||
msgstr ""
|
||||
msgstr "שמור מספר מרבי של עבודות שלמות"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Keep completed jobs maximum number of days"
|
||||
msgstr ""
|
||||
msgstr "שמור מספר ימים מרבי של עבודות שלמות"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
msgstr "אל תשמור עבודות שלמות כלשהן"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "מגבלת פריטי היסטוריה"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr "עבודות"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2839,10 +2864,6 @@ msgstr ""
|
||||
"!לעברית SABnzbd עזור לנו לתרגם את<br/>הוסף מלל לא מתורגם או שפר תרגומים "
|
||||
"קיימים כאן:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API מפתח"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr ".SABnzbd מפתח זה יתן לתכניות צד שלישי גישה מלאה אל"
|
||||
@@ -3147,7 +3168,7 @@ msgstr "הכשל עבודה (העבר להיסטוריה)"
|
||||
|
||||
#: sabnzbd/skintext.py [Four way switch for duplicates]
|
||||
msgid "Tag job"
|
||||
msgstr ""
|
||||
msgstr "הצמד תג לעבודה"
|
||||
|
||||
#: sabnzbd/skintext.py [Three way switch for encrypted posts]
|
||||
msgid "Abort"
|
||||
@@ -3198,6 +3219,18 @@ msgstr "חלופי NZB בכישלון, נסה"
|
||||
msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr ".חלופי כאשר הורדת נכשלת NZB מספר שרתים מספקים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr "השתמש בתגים ממדדן"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
".NZB-בעת מיון, השתמש בתגים ממדדן עבור כותרת, עונה, פרק וכדומה. אחרת כל מתן "
|
||||
"השמות נגזר משם ה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "אפשר שינוי שם תיקייה"
|
||||
@@ -3421,18 +3454,10 @@ msgstr "אפשר מיזוג מדדן"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
".יכול לדווח למדדן במקרה שעבודה לא יכלה להיות מושלמת SABnzbd-מדדנים יכולים "
|
||||
"לספק מידע מידרג כאשר עבודה מתווספת ו\r\n"
|
||||
".שלך יכולה להישאר ריקה API-תלוי במדדן שלך, קביעת מפתח ה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ".מפתח זה מספק זהות למדדן. בדוק את המתאר שלך באתר של המדדן"
|
||||
"יכול לדווח למדדן במקרה שעבודה לא יכלה להישלם SABnzbd-מדדנים יכולים לספק מידע "
|
||||
"מידרג כאשר עבודה מתווספת ו"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable Filtering"
|
||||
@@ -3786,10 +3811,6 @@ msgstr "Growl אפשר"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Growl שלח התראות אל"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "כתובת שרת"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "מרוחק (מארח:פתחה) Growl השתמש רק עבור שרת"
|
||||
@@ -4189,7 +4210,7 @@ msgstr "ערכים"
|
||||
|
||||
#: sabnzbd/skintext.py [Job details page]
|
||||
msgid "Edit NZB Details"
|
||||
msgstr "ערוך פרטי NZB"
|
||||
msgstr "NZB ערוך פרטי"
|
||||
|
||||
#: sabnzbd/skintext.py [Job details page, delete button]
|
||||
msgid "Delete"
|
||||
@@ -4311,6 +4332,10 @@ msgstr "השתמש בקביעות ממשק עולמיות"
|
||||
msgid "Queue item limit"
|
||||
msgstr "מגבלת פריטי תור"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "מגבלת פריטי היסטוריה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "תסדיר תאריך"
|
||||
@@ -4337,7 +4362,7 @@ msgstr "מאמרים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Rename"
|
||||
msgstr ""
|
||||
msgstr "שנה שם"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Queue repair"
|
||||
@@ -4569,7 +4594,7 @@ msgstr "?לטהר את התור"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retry all failed jobs in History?"
|
||||
msgstr "לנסות שוב את כל העבודות שנכשלו בהיסטוריה?"
|
||||
msgstr "לנסות שוב את כל העבודות הנכשלות בהיסטוריה?"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Purge"
|
||||
@@ -4647,7 +4672,7 @@ msgstr "מחק שלמים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Delete the all failed items from the history?"
|
||||
msgstr "למחוק את כל הפריטים שנכשלו מההיסטוריה?"
|
||||
msgstr "למחוק את כל הפריטים הנכשלים מההיסטוריה?"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Delete Failed"
|
||||
@@ -4655,7 +4680,7 @@ msgstr "מחק נכשלים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retry all failed jobs?"
|
||||
msgstr "לנסות שוב את העבודות שנכשלו?"
|
||||
msgstr "לנסות שוב את העבודות הנכשלות?"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Links"
|
||||
@@ -4836,7 +4861,7 @@ msgstr "%s אל %s :נכשל בשינוי שם של קובץ דומה"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "שם השרת אינו פותר"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "גישה בלתי מורשת"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+0000\n"
|
||||
"PO-Revision-Date: 2017-05-23 11:46+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -651,7 +651,7 @@ msgstr ""
|
||||
"Autentisering mangler, angi brukernavn/passord fra Konfigurasjon->Generelt i "
|
||||
"ditt tredjepartsprogram:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1006,6 +1006,11 @@ msgstr "Reparerer"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Reparert på %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1022,10 +1027,6 @@ msgstr "Verifiserer"
|
||||
msgid "Checking"
|
||||
msgstr "Undersøker"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1085,7 +1086,7 @@ msgid "Not available"
|
||||
msgstr "Ikke tilgjengelig"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kan ikke sendes, mangler nødvendig data"
|
||||
|
||||
@@ -1185,6 +1186,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Stanser duplikatfil \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Avbrutt, kan ikke fullføres"
|
||||
@@ -1628,6 +1635,20 @@ msgstr "Feil under avslutting av systemet"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Fant ikke indekser id (%s) for rangeringsfil."
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Tjeneradresse"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-nøkkel"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Feilaktig RSS-kilde beskrivelse \"%s\""
|
||||
@@ -2812,9 +2833,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Historikk-grense"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2842,10 +2863,6 @@ msgid ""
|
||||
"improved existing translations here:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-nøkkel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr "Denne nøkkelen vil gi tredjepartsprogrammer full tilgang til SABnzbd"
|
||||
@@ -3207,6 +3224,16 @@ msgstr "Når den feiler, prøv alternativ NZB-fil"
|
||||
msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr "Noen servere vil gi en alternativ NZB når en nedlasting mislykkes."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Aktiver omdøping av mappe"
|
||||
@@ -3432,14 +3459,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3791,10 +3811,6 @@ msgstr "Aktiver Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Send varsler til Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Tjeneradresse"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Brukes kun for fjerntliggende Growl tjener (vert:port)"
|
||||
@@ -4316,6 +4332,10 @@ msgstr "Bruk globale grensesnittinnstillinger"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Kø-grense"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Historikk-grense"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Datoformat"
|
||||
@@ -4842,7 +4862,7 @@ msgstr "Kunne ikke endre navn på lik fil: %s til %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Kunne ikke finne servernavn"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Uautorisert tilgang"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"PO-Revision-Date: 2017-07-25 11:01+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+0000\n"
|
||||
"PO-Revision-Date: 2017-08-09 21:46+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-07-26 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-10 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -673,7 +673,7 @@ msgstr ""
|
||||
"Autenticatie ontbreekt; vul gebruikersnaam en wachtwoord van 'Configuratie' "
|
||||
"=> 'Algemeen' in bij het externe programma:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1028,6 +1028,11 @@ msgstr "Repareren"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Reparatie in %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr "Reparatie controleren"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1044,10 +1049,6 @@ msgstr "Verifiëren"
|
||||
msgid "Checking"
|
||||
msgstr "Controleren"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr "Reparatie controleren"
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr "Python-script '%s' heeft geen uitvoerpermissie (+x)"
|
||||
@@ -1110,7 +1111,7 @@ msgid "Not available"
|
||||
msgstr "Niet beschikbaar"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Versturen kan niet, vereiste gegevens ontbreken"
|
||||
|
||||
@@ -1210,6 +1211,15 @@ msgstr "Dubbele NZB"
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pauzeer dubbele NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
"Er zijn %d bestanden met dezelfde bestandsnaam niet toegevoegd aan opdracht "
|
||||
"\"%s\". Zet \"allow_duplicate_files\" aan om dubbele bestandsnamen toe te "
|
||||
"staan."
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Afgebroken, kan niet voltooid worden"
|
||||
@@ -1658,6 +1668,22 @@ msgstr "Fout bij het afsluiten van het systeem"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Indexer id (%s) niet gevonden in het bestand met beoordelingen"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Server adres"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-sleutel"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
"Deze sleutel is voor je identificatie door de indexer. Kijk in je profiel op "
|
||||
"de website van de indexer."
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Foutieve RSS-feed definitie \"%s\""
|
||||
@@ -1838,7 +1864,7 @@ msgstr "Verwijder mislukte opdrachten"
|
||||
|
||||
#: sabnzbd/skintext.py [Config->Scheduler]
|
||||
msgid "Remove completed jobs"
|
||||
msgstr "Verwijder afgehandelde taken"
|
||||
msgstr "Verwijder voltooide opdrachten"
|
||||
|
||||
#: sabnzbd/skintext.py [Config->Scheduler]
|
||||
msgid "Pause low prioirty jobs"
|
||||
@@ -2857,9 +2883,9 @@ msgstr "Behoud voltooide downloads maximaal aantal dagen"
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr "Behoud geen enkele download"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Items in geschiedenis"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr "Downloads"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2889,10 +2915,6 @@ msgstr ""
|
||||
"Help ons om SABnzbd in jouw taal te vertalen! <br/>Met nieuwe vertalingen of "
|
||||
"verbeteringen kun je hier terecht:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-sleutel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr ""
|
||||
@@ -3260,6 +3282,19 @@ msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr ""
|
||||
"Sommige indexers hebben een alternatieve NZB wanneer een download mislukt"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr "Gebruik indexer informatie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
"Maak tijdens het sorteren gebruik van informatie van de indexer zoals titel, "
|
||||
"seizoen, aflevering, enz. Anders wordt alle informatie uit de naam van de "
|
||||
"download gehaald."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Gebruik tijdelijke mapnamen"
|
||||
@@ -3493,20 +3528,11 @@ msgstr "Sta integratie met index websites toe"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
"Indexers kunnen waarderingsinformatie leveren wanneer een NZB wordt "
|
||||
"opgehaald. SABnzbd kan mislukte downloads aanmelden bij de indexer. Sommige "
|
||||
"indexers hebben een API sleutel nodig."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
"Deze sleutel is voor je identificatie door de indexer. Kijk in je profiel op "
|
||||
"de website van de indexer."
|
||||
"Indexers kunnen beoordelingen meesturen wanneer een opdracht wordt "
|
||||
"toegevoegd en SABnzbd kan de indexer informeren wanneer een download niet "
|
||||
"slaagt."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable Filtering"
|
||||
@@ -3868,10 +3894,6 @@ msgstr "Growl meldingen activeren"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Zend meldingen naar Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Server adres"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr ""
|
||||
@@ -4398,6 +4420,10 @@ msgstr "Instellen voor alle sessies"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Items in wachtrij"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Items in geschiedenis"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Datumnotatie"
|
||||
@@ -4926,7 +4952,7 @@ msgstr "Hernoemen van gelijkaardig bestand %s naar %s mislukt"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernaam niet te vinden"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Geen toegangsrechten"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -653,7 +653,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/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1011,6 +1011,11 @@ msgstr "Naprawianie"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Naprawiono w %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1027,10 +1032,6 @@ msgstr "Weryfikowanie"
|
||||
msgid "Checking"
|
||||
msgstr "Sprawdzanie"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1090,7 +1091,7 @@ msgid "Not available"
|
||||
msgstr "Niedostępne"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nie można wysłać wiadomości, brak wymaganych danych"
|
||||
|
||||
@@ -1192,6 +1193,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Wstrzymuję zduplikowany NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Przerwano, nie można ukończyć"
|
||||
@@ -1636,6 +1643,20 @@ msgstr "Wyłączenie systemu nie powiodło się"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Identyfikator indeksera (%s) nie został znaleziony w pliku ocen"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Adres serwera"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Klucz API"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Nieprawidłowy opis kanału RSS \"%s\""
|
||||
@@ -2821,9 +2842,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limit wyświetlanych pozycji historii"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2851,10 +2872,6 @@ msgid ""
|
||||
"improved existing translations here:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Klucz API"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr "Ten klucz umożliwi innym programom dostęp do SABnzbd"
|
||||
@@ -3222,6 +3239,16 @@ msgstr ""
|
||||
"Niektóre serwery udostępniają alternatywne NZB, kiedy pobieranie kończy się "
|
||||
"niepowodzeniem"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Włącz zmianę nazw katalogów"
|
||||
@@ -3450,14 +3477,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3809,10 +3829,6 @@ msgstr "Włącz Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Wysyłaj powiadomienia Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Adres serwera"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Tylko dla zdalnych serwerów Growl (host:port)"
|
||||
@@ -4334,6 +4350,10 @@ msgstr "Użyj globalnych ustawień interfejsu"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Limit wyświetlanych pozycji kolejki"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limit wyświetlanych pozycji historii"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Format daty"
|
||||
@@ -4859,7 +4879,7 @@ msgstr "Nie udało się zmienić nazwy podobnego pliku %s na %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Nie udało się rozwiązać nazwy serwera"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Dostęp zabroniony"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:54+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -654,7 +654,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/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1008,6 +1008,11 @@ msgstr "Reparando"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Reparado em %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1024,10 +1029,6 @@ msgstr "Verificando"
|
||||
msgid "Checking"
|
||||
msgstr "Verificando"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1087,7 +1088,7 @@ msgid "Not available"
|
||||
msgstr "Não disponível"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Não foi possível enviar, faltam dados obrigatórios"
|
||||
|
||||
@@ -1189,6 +1190,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausando NZB duplicado \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Cancelado, não é possível concluir"
|
||||
@@ -1634,6 +1641,20 @@ msgstr "Erro ao desligar o sistema"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Indexador id (%s) não foi encontrador para avaliar arquivos"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Endereço do servidor"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Chave API"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Descrição de feed RSS incorreta \"%s\""
|
||||
@@ -2820,9 +2841,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limite de itens no histórico"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2850,10 +2871,6 @@ msgid ""
|
||||
"improved existing translations here:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Chave API"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr "Esta chave dará a programas de terceiros pleno acesso ao SABnzbd."
|
||||
@@ -3220,6 +3237,16 @@ msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr ""
|
||||
"Alguns servidores fornecem um NZB alternativo quando um download falha."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Habilitar renomeação de pasta"
|
||||
@@ -3447,14 +3474,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3807,10 +3827,6 @@ msgstr "Habilitar Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Enviar notificações ao Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Endereço do servidor"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Utilize apenas para servidor remoto Growl (host: porta)"
|
||||
@@ -4332,6 +4348,10 @@ msgstr "Usar configurações globais de interface"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Limite de itens na fila"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limite de itens no histórico"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Formato da data"
|
||||
@@ -4859,7 +4879,7 @@ msgstr "Falha ao renomear arquivo similar: %s para %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Nome de servidor não encontrado"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Acesso não autorizado"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -656,7 +656,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/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1012,6 +1012,11 @@ msgstr "Se repară"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Reparat în %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1028,10 +1033,6 @@ msgstr "Se verifică"
|
||||
msgid "Checking"
|
||||
msgstr "Se verifică"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1091,7 +1092,7 @@ msgid "Not available"
|
||||
msgstr "Indisponibil"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nu pot trimite, informații necesare lipsă"
|
||||
|
||||
@@ -1194,6 +1195,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Întrerupem duplicat NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Anulat nu poate fi finalizat"
|
||||
@@ -1640,6 +1647,20 @@ msgstr "Eroare la oprirea sistemului"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Id-ul indexului (%s) nu a fost găsit pentru fișierul de rating"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Adresă server"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Cheie API"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Descriere flux RSS incorectă \"%s\""
|
||||
@@ -2825,9 +2846,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limită maximă la Istoric"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2855,10 +2876,6 @@ msgid ""
|
||||
"improved existing translations here:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Cheie API"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr "Această cheie va oferi programelor terţe acces deplin la SABnzbd."
|
||||
@@ -3219,6 +3236,16 @@ msgstr "La eroare, încearcă NZB alternativ"
|
||||
msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr "Unele server oferă o alternativă dacă un NZB eșuează."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Activează redenumire dosar"
|
||||
@@ -3449,14 +3476,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3812,10 +3832,6 @@ msgstr "Activează Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Trimite notificări Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Adresă server"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Foloseşte doar pentru server Growl de la distanţă (gazdă:port)"
|
||||
@@ -4335,6 +4351,10 @@ msgstr "Folosește setările globale de interfață"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Limită maximă la coadă"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limită maximă la Istoric"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Format dată"
|
||||
@@ -4865,7 +4885,7 @@ msgstr "Redenumire fişiere similare : %s în %s nereuşită"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Numele de server nu se rezolvă la DNS"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Acces neautorizat"
|
||||
|
||||
|
||||
@@ -2,15 +2,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.7.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:54+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
@@ -646,7 +646,7 @@ msgstr ""
|
||||
"Отсутствуют учётные данные. Введите в сторонней программе имя пользователя и "
|
||||
"пароль из раздела «Настройка -> Общие»:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1000,6 +1000,11 @@ msgstr "Исправление"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Исправлено за %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1016,10 +1021,6 @@ msgstr "Проверка"
|
||||
msgid "Checking"
|
||||
msgstr "Проверка"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1079,7 +1080,7 @@ msgid "Not available"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr ""
|
||||
|
||||
@@ -1179,6 +1180,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Приостановлен повторяющийся NZB-файл «%s»"
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr ""
|
||||
@@ -1626,6 +1633,20 @@ msgstr "Не удалось завершить работу системы"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Адрес сервера"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Ключ API"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Неправильное описание RSS-ленты «%s»"
|
||||
@@ -2807,8 +2828,8 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2837,10 +2858,6 @@ msgid ""
|
||||
"improved existing translations here:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "Ключ API"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr ""
|
||||
@@ -3198,6 +3215,16 @@ msgstr ""
|
||||
msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Переименовывать папки"
|
||||
@@ -3424,14 +3451,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3790,10 +3810,6 @@ msgstr "Использовать Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Отправлять уведомления в Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Адрес сервера"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Используется только для удалённого сервера Growl (адрес:порт)"
|
||||
@@ -4313,6 +4329,10 @@ msgstr ""
|
||||
msgid "Queue item limit"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr ""
|
||||
@@ -4842,7 +4862,7 @@ msgstr "Не удалось переименовать похожий файл:
|
||||
msgid "Server name does not resolve"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: ОZZII <ozzii.translate@gmail.com>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:54+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -646,7 +646,7 @@ msgstr ""
|
||||
"Недостаје аутентификација, унети у спољни програм име/лозинку из Подешавања-"
|
||||
">Опште:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1001,6 +1001,11 @@ msgstr "Поправљање"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Поправљено за %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1017,10 +1022,6 @@ msgstr "Проверавање"
|
||||
msgid "Checking"
|
||||
msgstr "Провера"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1080,7 +1081,7 @@ msgid "Not available"
|
||||
msgstr "Недоступно"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nemoguće poslati, nedostaju obavezni podaci"
|
||||
|
||||
@@ -1180,6 +1181,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Паузирам због дуплог NZB-а \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Поништено, не може да се заврши"
|
||||
@@ -1620,6 +1627,20 @@ msgstr "Greška pri gašenju sistema"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Indekser id (%s) nije pronađen za datoteku ocenjivanja"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Адреса сервера"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API кључ"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Погрешан опис RSS фида \"%s\""
|
||||
@@ -2799,9 +2820,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limit stavki u istoriji"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2829,10 +2850,6 @@ msgid ""
|
||||
"improved existing translations here:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API кључ"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr "Овај кључ допушта пун приступ SABnzbd-а другим програмима."
|
||||
@@ -3194,6 +3211,16 @@ msgstr "U slučaju neuspeha, pokušaj sa alternativnim NZB-om"
|
||||
msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr "Neki serveri nude alternativni NZB pri neuspešnom preuzimanju"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Упали преименовање фасцикле"
|
||||
@@ -3418,14 +3445,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3776,10 +3796,6 @@ msgstr "Упали „Growl“"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Пошаљи обавештења у „Growl“"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Адреса сервера"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Користи само удаљен „Growl“ сервер (хост:порт)"
|
||||
@@ -4300,6 +4316,10 @@ msgstr "Koristi globalna podešavanja interfejsa"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Limit stavku u redu"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Limit stavki u istoriji"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Формат датума"
|
||||
@@ -4825,7 +4845,7 @@ msgstr "Неуспешно преименовање сличне датотек
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Ime servera se ne može odrediti"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Neautorizovan pristup"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:54+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -649,7 +649,7 @@ msgstr ""
|
||||
"Autentisering saknas, ange användarnamn / lösenord från Konfiguration-> "
|
||||
"Allmänt i ditt tredjepartsprogram:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -1006,6 +1006,11 @@ msgstr "Reparerar"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Reparerad i %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1022,10 +1027,6 @@ msgstr "Verifierar"
|
||||
msgid "Checking"
|
||||
msgstr "Kontrollerar"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
@@ -1085,7 +1086,7 @@ msgid "Not available"
|
||||
msgstr "Ej tillgänglig"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kunde inte skicka, saknar nödvändig data"
|
||||
|
||||
@@ -1185,6 +1186,12 @@ msgstr ""
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausar dubblett för NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "Avbrutet, kan inte slutföras"
|
||||
@@ -1631,6 +1638,20 @@ msgstr "Fel uppstod då systemet skulle stängas"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "Index id (%s) inte hittad för betygsfil"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Serveradress"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-nyckel"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "Felaktigt RSS-flödesbeskrivning \"%s\""
|
||||
@@ -2813,9 +2834,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Historik artikelgräns"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2843,10 +2864,6 @@ msgid ""
|
||||
"improved existing translations here:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API-nyckel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr "Denna nyckel ger tredjepartsprogram full tillgång till SABnzbd."
|
||||
@@ -3207,6 +3224,16 @@ msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr ""
|
||||
"Vissa servrar kan förse en alternativ NZB när en nerladdning misslyckas"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "Döp om mappar"
|
||||
@@ -3432,14 +3459,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3791,10 +3811,6 @@ msgstr "Aktivera Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "Skicka notis till Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "Serveradress"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "Använd endast för extern Growl.server (host:port)"
|
||||
@@ -4314,6 +4330,10 @@ msgstr "Använda globala gränsnittsinställningar"
|
||||
msgid "Queue item limit"
|
||||
msgstr "Kö artikelgräns"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "Historik artikelgräns"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "Datumformat"
|
||||
@@ -4843,7 +4863,7 @@ msgstr "Det gick inte att döpa om liknande fil: %s till %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "Servernamn kunde inte läsas"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "Otillåten åtkomst"
|
||||
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-07-24 08:21+0000\n"
|
||||
"POT-Creation-Date: 2017-08-06 09:51+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-07-25 06:11+0000\n"
|
||||
"X-Generator: Launchpad (build 18419)\n"
|
||||
"X-Launchpad-Export-Date: 2017-08-07 05:54+0000\n"
|
||||
"X-Generator: Launchpad (build 18441)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -636,7 +636,7 @@ msgid ""
|
||||
"into your 3rd party program:"
|
||||
msgstr "缺身份认证信息,请在第三方程序中输入“配置”->“常规”中的用户名/密码:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
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."
|
||||
@@ -986,6 +986,11 @@ msgstr "正在修复"
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] 已修复,耗时 %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Disk full"
|
||||
@@ -1002,10 +1007,6 @@ msgstr "正在验证"
|
||||
msgid "Checking"
|
||||
msgstr "正在检查"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr "Python 脚本 \"%s\" 不具有执行 (+x) 权限"
|
||||
@@ -1065,7 +1066,7 @@ msgid "Not available"
|
||||
msgstr "不可用"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "无法发送,缺少必要的数据"
|
||||
|
||||
@@ -1165,6 +1166,12 @@ msgstr "重复的 NZB 文件"
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "正在暂停重复 NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbstuff.py [Warning message]
|
||||
msgid ""
|
||||
"%d files with duplicate filenames were discared for \"%s\". Enable "
|
||||
"\"allow_duplicate_files\" to allow duplicate filenames."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
msgstr "已中止,无法完成"
|
||||
@@ -1604,6 +1611,20 @@ msgstr "关闭系统时出错"
|
||||
msgid "Indexer id (%s) not found for ratings file"
|
||||
msgstr "评分文件的索引器 id (%s) 未找到"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "服务器地址"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API Key"
|
||||
|
||||
#: sabnzbd/rating.py # sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr "这个密钥用来向服务器表明身份。查看您在索引网站上的个人档案。"
|
||||
|
||||
#: sabnzbd/rss.py [Error message] # sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr "RSS feed 描述不正确 \"%s\""
|
||||
@@ -2775,9 +2796,9 @@ msgstr ""
|
||||
msgid "Do not keep any completed jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "历史数目限制"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Save Changes"
|
||||
@@ -2805,10 +2826,6 @@ msgid ""
|
||||
"improved existing translations here:"
|
||||
msgstr "帮助我们来本地化 SABnzbd !<br/>您可以在这里来添加未被翻译的文字或者改进现有的翻译:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "API Key"
|
||||
msgstr "API Key"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "This key will give 3rd party programs full access to SABnzbd."
|
||||
msgstr "该 key 将授予第三方程序 SABnzbd 的完整权限。"
|
||||
@@ -3144,6 +3161,16 @@ msgstr "失败时,尝试备用 NZB"
|
||||
msgid "Some servers provide an alternative NZB when a download fails."
|
||||
msgstr "部分服务器在下载失败时可提供备用 NZB 文件。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Use tags from indexer"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When sorting, use tags from indexer for title, season, episode, etc. "
|
||||
"Otherwise all naming is derived from the NZB name."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
msgstr "启用文件夹重命名"
|
||||
@@ -3361,16 +3388,8 @@ msgstr "启用索引集成"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Indexers can supply rating information when a job is added and SABnzbd can "
|
||||
"report to the indexer if a job couldn't be completed. Depending on your "
|
||||
"indexer, the API key setting can be left blank."
|
||||
"report to the indexer if a job couldn't be completed."
|
||||
msgstr ""
|
||||
"当任务添加时,索引服务可提供评分信息。当任务无法完成时,SABnzbd 也可发送报告给索引服务。有些时候 API 密钥设定可以留空,取决于索引服务的要求。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"This key provides identity to indexer. Check your profile on the indexer's "
|
||||
"website."
|
||||
msgstr "这个密钥用来向服务器表明身份。查看您在索引网站上的个人档案。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable Filtering"
|
||||
@@ -3719,10 +3738,6 @@ msgstr "启用 Growl"
|
||||
msgid "Send notifications to Growl"
|
||||
msgstr "将通知发送到 Growl"
|
||||
|
||||
#: sabnzbd/skintext.py [Address of Growl server]
|
||||
msgid "Server address"
|
||||
msgstr "服务器地址"
|
||||
|
||||
#: sabnzbd/skintext.py [Don't translate "Growl"]
|
||||
msgid "Only use for remote Growl server (host:port)"
|
||||
msgstr "仅当使用远程 Growl 服务器时需要 (主机:端口)"
|
||||
@@ -4241,6 +4256,10 @@ msgstr "使用全局界面设置"
|
||||
msgid "Queue item limit"
|
||||
msgstr "队列数目限制"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History item limit"
|
||||
msgstr "历史数目限制"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Date format"
|
||||
msgstr "日期格式"
|
||||
@@ -4762,7 +4781,7 @@ msgstr "重命名相似文件失败: %s 为 %s"
|
||||
msgid "Server name does not resolve"
|
||||
msgstr "服务器名无法解析"
|
||||
|
||||
#: sabnzbd/urlgrabber.py # sabnzbd/urlgrabber.py
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
msgstr "未授权访问"
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ import sabnzbd.lang as lang
|
||||
import sabnzbd.api
|
||||
import sabnzbd.directunpacker as directunpacker
|
||||
from sabnzbd.decorators import synchronized, notify_downloader
|
||||
from sabnzbd.constants import NORMAL_PRIORITY, VALID_ARCHIVES, GIGI, \
|
||||
from sabnzbd.constants import NORMAL_PRIORITY, VALID_ARCHIVES, \
|
||||
REPAIR_REQUEST, QUEUE_FILE_NAME, QUEUE_VERSION, QUEUE_FILE_TMPL
|
||||
import sabnzbd.getipaddress as getipaddress
|
||||
|
||||
@@ -843,16 +843,6 @@ def keep_awake():
|
||||
sleepless.allow_sleep()
|
||||
|
||||
|
||||
def CheckFreeSpace():
|
||||
""" Check if enough disk space is free, if not pause downloader and send email """
|
||||
if cfg.download_free() and not sabnzbd.downloader.Downloader.do.paused:
|
||||
if misc.diskspace(force=True)['download_dir'][1] < cfg.download_free.get_float() / GIGI:
|
||||
logging.warning(T('Too little diskspace forcing PAUSE'))
|
||||
# Pause downloader, but don't save, since the disk is almost full!
|
||||
Downloader.do.pause(save=False)
|
||||
emailer.diskfull()
|
||||
|
||||
|
||||
################################################################################
|
||||
# Data IO #
|
||||
################################################################################
|
||||
|
||||
@@ -30,8 +30,8 @@ import hashlib
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.misc import get_filepath, sanitize_filename, get_unique_filename, renamer, \
|
||||
set_permissions, long_path, clip_path, has_win_device, get_all_passwords
|
||||
from sabnzbd.constants import Status
|
||||
set_permissions, long_path, clip_path, has_win_device, get_all_passwords, diskspace
|
||||
from sabnzbd.constants import Status, GIGI
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.articlecache import ArticleCache
|
||||
from sabnzbd.postproc import PostProcessor
|
||||
@@ -69,17 +69,31 @@ class Assembler(Thread):
|
||||
nzo, nzf = job
|
||||
|
||||
if nzf:
|
||||
sabnzbd.CheckFreeSpace()
|
||||
# Check if enough disk space is free, if not pause downloader and send email
|
||||
if diskspace(force=True)['download_dir'][1] < (cfg.download_free.get_float() + nzf.bytes) / GIGI:
|
||||
# Only warn and email once
|
||||
if not sabnzbd.downloader.Downloader.do.paused:
|
||||
logging.warning(T('Too little diskspace forcing PAUSE'))
|
||||
# Pause downloader, but don't save, since the disk is almost full!
|
||||
sabnzbd.downloader.Downloader.do.pause(save=False)
|
||||
sabnzbd.emailer.diskfull()
|
||||
# Abort all direct unpackers, just to be sure
|
||||
sabnzbd.directunpacker.abort_all()
|
||||
|
||||
filename = sanitize_filename(nzf.filename)
|
||||
nzf.filename = filename
|
||||
dupe = nzo.check_for_dupe(nzf)
|
||||
filepath = get_filepath(long_path(cfg.download_dir.get_path()), nzo, filename)
|
||||
# Place job back in queue and wait 30 seconds to hope it gets resolved
|
||||
self.process(job)
|
||||
sleep(30)
|
||||
continue
|
||||
|
||||
# Prepare filename
|
||||
nzo.verify_nzf_filename(nzf)
|
||||
nzf.filename = sanitize_filename(nzf.filename)
|
||||
filepath = get_filepath(long_path(cfg.download_dir.get_path()), nzo, nzf.filename)
|
||||
|
||||
if filepath:
|
||||
logging.info('Decoding %s %s', filepath, nzf.type)
|
||||
try:
|
||||
filepath = self.assemble(nzf, filepath, dupe)
|
||||
filepath = self.assemble(nzf, filepath)
|
||||
except IOError, (errno, strerror):
|
||||
# If job was deleted, ignore error
|
||||
if not nzo.is_gone():
|
||||
@@ -95,19 +109,23 @@ class Assembler(Thread):
|
||||
logging.error(T('Fatal error in Assembler'), exc_info=True)
|
||||
break
|
||||
|
||||
# Clean-up admin data
|
||||
nzf.remove_admin()
|
||||
setname = nzf.setname
|
||||
if nzf.is_par2 and (nzo.md5packs.get(setname) is None):
|
||||
pack = self.parse_par2_file(filepath, nzo.md5of16k)
|
||||
if pack:
|
||||
nzo.md5packs[setname] = pack
|
||||
logging.debug('Got md5pack for set %s', setname)
|
||||
# Valid md5pack, so use this par2-file as main par2 file for the set
|
||||
if setname in nzo.partable:
|
||||
# First copy the set of extrapars, we need them later
|
||||
nzf.extrapars = nzo.partable[setname].extrapars
|
||||
nzo.partable[setname] = nzf
|
||||
|
||||
# Parse par2 files
|
||||
if nzf.is_par2:
|
||||
# Always parse par2 files to get new md5of16k info
|
||||
pack = self.parse_par2_file(nzf, filepath)
|
||||
if pack and (nzo.md5packs.get(nzf.setname) is None):
|
||||
nzo.md5packs[nzf.setname] = pack
|
||||
logging.debug('Got md5pack for set %s', nzf.setname)
|
||||
# Valid md5pack, so use this par2-file as main par2 file for the set
|
||||
if nzf.setname in nzo.partable:
|
||||
# First copy the set of extrapars, we need them later
|
||||
nzf.extrapars = nzo.partable[nzf.setname].extrapars
|
||||
nzo.partable[nzf.setname] = nzf
|
||||
|
||||
# Encryption and unwanted extension detection
|
||||
rar_encrypted, unwanted_file = check_encrypted_and_unwanted_files(nzo, filepath)
|
||||
if rar_encrypted:
|
||||
if cfg.pause_on_pwrar() == 1:
|
||||
@@ -146,15 +164,8 @@ class Assembler(Thread):
|
||||
sabnzbd.nzbqueue.NzbQueue.do.remove(nzo.nzo_id, add_to_history=False, cleanup=False)
|
||||
PostProcessor.do.process(nzo)
|
||||
|
||||
def assemble(self, nzf, path, dupe):
|
||||
def assemble(self, nzf, path):
|
||||
""" Assemble a NZF from its table of articles """
|
||||
if os.path.exists(path):
|
||||
unique_path = get_unique_filename(path)
|
||||
if dupe:
|
||||
path = unique_path
|
||||
else:
|
||||
renamer(path, unique_path)
|
||||
|
||||
md5 = hashlib.md5()
|
||||
fout = open(path, 'ab')
|
||||
decodetable = nzf.decodetable
|
||||
@@ -185,7 +196,7 @@ class Assembler(Thread):
|
||||
|
||||
return path
|
||||
|
||||
def parse_par2_file(self, fname, table16k):
|
||||
def parse_par2_file(self, nzf, fname):
|
||||
""" Get the hash table and the first-16k hash table from a PAR2 file
|
||||
Return as dictionary, indexed on names or hashes for the first-16 table
|
||||
For a full description of the par2 specification, visit:
|
||||
@@ -205,8 +216,8 @@ class Assembler(Thread):
|
||||
name, hash, hash16k = parse_par2_file_packet(f, header)
|
||||
if name:
|
||||
table[name] = hash
|
||||
if hash16k not in table16k:
|
||||
table16k[hash16k] = name
|
||||
if hash16k not in nzf.nzo.md5of16k:
|
||||
nzf.nzo.md5of16k[hash16k] = name
|
||||
else:
|
||||
# Not unique, remove to avoid false-renames
|
||||
duplicates16k.append(hash16k)
|
||||
@@ -225,10 +236,18 @@ class Assembler(Thread):
|
||||
# Have to remove duplicates at the end to make sure
|
||||
# no trace is left in case of multi-duplicates
|
||||
for hash16k in duplicates16k:
|
||||
if hash16k in table16k:
|
||||
old_name = table16k.pop(hash16k)
|
||||
if hash16k in nzf.nzo.md5of16k:
|
||||
old_name = nzf.nzo.md5of16k.pop(hash16k)
|
||||
logging.debug('Par2-16k signature of %s not unique, discarding', old_name)
|
||||
|
||||
# If the filename was changed (duplicate filename) check if we already have the set
|
||||
base_fname = os.path.split(fname)[1]
|
||||
if table and base_fname != nzf.filename and table not in nzf.nzo.md5packs.values():
|
||||
# Re-parse this par2 file to create new set
|
||||
nzf.filename = base_fname
|
||||
nzf.is_par2 = False
|
||||
nzf.nzo.handle_par2(nzf, True)
|
||||
|
||||
return table
|
||||
|
||||
|
||||
|
||||
@@ -982,17 +982,21 @@ def get_rss():
|
||||
# We have to remove non-seperator commas by detecting if they are valid URL's
|
||||
for feed_key in database['rss']:
|
||||
feed = database['rss'][feed_key]
|
||||
# Only modify if we have to, to prevent repeated config-saving
|
||||
have_new_uri = False
|
||||
# Create a new corrected list
|
||||
new_feed_uris = []
|
||||
for feed_uri in feed.uri():
|
||||
if new_feed_uris and not urlparse(feed_uri).scheme and urlparse(new_feed_uris[-1]).scheme:
|
||||
# Current one has no scheme but previous one does, append to previous
|
||||
new_feed_uris[-1] += '%2C' + feed_uri
|
||||
have_new_uri = True
|
||||
continue
|
||||
# Add full working URL
|
||||
new_feed_uris.append(feed_uri)
|
||||
# Set new list
|
||||
feed.uri.set(new_feed_uris)
|
||||
if have_new_uri:
|
||||
feed.uri.set(new_feed_uris)
|
||||
|
||||
return database['rss']
|
||||
except KeyError:
|
||||
|
||||
@@ -154,7 +154,8 @@ class HistoryDB(object):
|
||||
return 'duplicate column name' not in error
|
||||
else:
|
||||
logging.error(T('SQL Command Failed, see log'))
|
||||
logging.debug("SQL: %s", command)
|
||||
logging.info("SQL: %s", command)
|
||||
logging.info("Arguments: %s", repr(args))
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
try:
|
||||
self.con.rollback()
|
||||
@@ -286,19 +287,20 @@ class HistoryDB(object):
|
||||
|
||||
def fetch_history(self, start=None, limit=None, search=None, failed_only=0, categories=None):
|
||||
""" Return records for specified jobs """
|
||||
search = convert_search(search)
|
||||
command_args = [convert_search(search)]
|
||||
|
||||
post = ''
|
||||
if categories:
|
||||
categories = ['*' if c == 'Default' else c for c in categories]
|
||||
post = " AND (CATEGORY = '"
|
||||
post += "' OR CATEGORY = '".join(categories)
|
||||
post += "' )"
|
||||
post = " AND (CATEGORY = ?"
|
||||
post += " OR CATEGORY = ? " * (len(categories)-1)
|
||||
post += ")"
|
||||
command_args.extend(categories)
|
||||
if failed_only:
|
||||
post += ' AND STATUS = "Failed"'
|
||||
|
||||
cmd = 'SELECT COUNT(*) FROM history WHERE name LIKE ?'
|
||||
res = self.execute(cmd + post, (search,))
|
||||
res = self.execute(cmd + post, tuple(command_args))
|
||||
total_items = -1
|
||||
if res:
|
||||
try:
|
||||
@@ -311,9 +313,9 @@ class HistoryDB(object):
|
||||
if not limit:
|
||||
limit = total_items
|
||||
|
||||
t = (search, start, limit)
|
||||
command_args.extend([start, limit])
|
||||
cmd = 'SELECT * FROM history WHERE name LIKE ?'
|
||||
fetch_ok = self.execute(cmd + post + ' ORDER BY completed desc LIMIT ?, ?', t)
|
||||
fetch_ok = self.execute(cmd + post + ' ORDER BY completed desc LIMIT ?, ?', tuple(command_args))
|
||||
|
||||
if fetch_ok:
|
||||
items = self.c.fetchall()
|
||||
|
||||
@@ -31,8 +31,8 @@ from sabnzbd.constants import Status, MAX_DECODE_QUEUE, LIMIT_DECODE_QUEUE, SABY
|
||||
import sabnzbd.articlecache
|
||||
import sabnzbd.downloader
|
||||
import sabnzbd.nzbqueue
|
||||
from sabnzbd.encoding import yenc_name_fixer, platform_encode
|
||||
from sabnzbd.misc import match_str, is_obfuscated_filename
|
||||
from sabnzbd.encoding import yenc_name_fixer
|
||||
from sabnzbd.misc import match_str
|
||||
|
||||
# Check for basic-yEnc
|
||||
try:
|
||||
@@ -336,26 +336,8 @@ class Decoder(Thread):
|
||||
if article.partnum == nzf.lowest_partnum:
|
||||
nzf.md5of16k = hashlib.md5(decoded_data[:16384]).digest()
|
||||
|
||||
# If we have the md5, use it to rename
|
||||
if nzf.md5of16k:
|
||||
# Don't check again, even if no match
|
||||
nzf.filename_checked = True
|
||||
# Find the match and rename
|
||||
if nzf.md5of16k in nzf.nzo.md5of16k:
|
||||
new_filename = platform_encode(nzf.nzo.md5of16k[nzf.md5of16k])
|
||||
# Was it even new?
|
||||
if new_filename != nzf.filename:
|
||||
logging.info('Detected filename based on par2: %s -> %s', nzf.filename, new_filename)
|
||||
nzf.nzo.renamed_file(new_filename, nzf.filename)
|
||||
nzf.filename = new_filename
|
||||
return
|
||||
|
||||
# Fallback to yenc/nzb name (also when there is no partnum=1)
|
||||
# We also keep the NZB name in case it ends with ".par2" (usually correct)
|
||||
if yenc_filename != nzf.filename and not is_obfuscated_filename(yenc_filename) and not nzf.filename.endswith('.par2'):
|
||||
logging.info('Detected filename from yenc: %s -> %s', nzf.filename, yenc_filename)
|
||||
nzf.nzo.renamed_file(yenc_filename, nzf.filename)
|
||||
nzf.filename = yenc_filename
|
||||
# Try the rename
|
||||
nzf.nzo.verify_nzf_filename(nzf, yenc_filename)
|
||||
|
||||
|
||||
def yCheck(data):
|
||||
|
||||
@@ -29,8 +29,8 @@ import logging
|
||||
import sabnzbd
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.misc import int_conv, clip_path, remove_all, globber, format_time_string, has_win_device
|
||||
from sabnzbd.encoding import unicoder
|
||||
from sabnzbd.newsunpack import build_command
|
||||
from sabnzbd.encoding import TRANS, unicoder
|
||||
from sabnzbd.newsunpack import build_command, EXTRACTFROM_RE, rar_volumelist
|
||||
from sabnzbd.postproc import prepare_extraction_path
|
||||
from sabnzbd.utils.rarfile import RarFile
|
||||
from sabnzbd.utils.diskspeed import diskspeedmeasure
|
||||
@@ -65,7 +65,7 @@ class DirectUnpacker(threading.Thread):
|
||||
self.total_volumes = {}
|
||||
self.unpack_time = 0.0
|
||||
|
||||
self.success_sets = []
|
||||
self.success_sets = {}
|
||||
self.next_sets = []
|
||||
|
||||
nzo.direct_unpacker = self
|
||||
@@ -149,6 +149,7 @@ class DirectUnpacker(threading.Thread):
|
||||
linebuf = ''
|
||||
last_volume_linebuf = ''
|
||||
unrar_log = []
|
||||
rarfiles = []
|
||||
start_time = time.time()
|
||||
|
||||
# Need to read char-by-char because there's no newline after new-disk message
|
||||
@@ -171,6 +172,11 @@ class DirectUnpacker(threading.Thread):
|
||||
logging.info('Error in DirectUnpack of %s', self.cur_setname)
|
||||
self.abort()
|
||||
|
||||
if linebuf.startswith('Extracting from') and linebuf.endswith('\n'):
|
||||
filename = TRANS((re.search(EXTRACTFROM_RE, linebuf.strip()).group(1)))
|
||||
if filename not in rarfiles:
|
||||
rarfiles.append(filename)
|
||||
|
||||
# Did we reach the end?
|
||||
if linebuf.endswith('All OK'):
|
||||
# Stop timer and finish
|
||||
@@ -178,15 +184,17 @@ class DirectUnpacker(threading.Thread):
|
||||
ACTIVE_UNPACKERS.remove(self)
|
||||
|
||||
# Add to success
|
||||
self.success_sets.append(self.cur_setname)
|
||||
rarfile_path = os.path.join(self.nzo.downpath, self.rarfile_nzf.filename)
|
||||
self.success_sets[self.cur_setname] = rar_volumelist(rarfile_path, self.nzo.password, rarfiles)
|
||||
logging.info('DirectUnpack completed for %s', self.cur_setname)
|
||||
self.nzo.set_action_line(T('Direct Unpack'), T('Completed'))
|
||||
|
||||
# Write current log
|
||||
# Write current log and clear
|
||||
unrar_log.append(linebuf.strip())
|
||||
linebuf = ''
|
||||
logging.debug('DirectUnpack Unrar output %s', '\n'.join(unrar_log))
|
||||
unrar_log = []
|
||||
rarfiles = []
|
||||
|
||||
# Are there more files left?
|
||||
while self.nzo.files and not self.next_sets:
|
||||
@@ -246,7 +254,9 @@ class DirectUnpacker(threading.Thread):
|
||||
|
||||
# Save information if success
|
||||
if self.success_sets:
|
||||
msg = T('Unpacked %s files/folders in %s') % (len(globber(self.unpack_dir_info[0])), format_time_string(self.unpack_time))
|
||||
# The number is wrong if one_folder, just leave empty
|
||||
nr_files = '' if self.unpack_dir_info[3] else len(globber(self.unpack_dir_info[0]))
|
||||
msg = T('Unpacked %s files/folders in %s') % (nr_files, format_time_string(self.unpack_time))
|
||||
msg = '%s - %s' % (T('Direct Unpack'), msg)
|
||||
self.nzo.set_unpack_info('Unpack', '[%s] %s' % (unicoder(self.cur_setname), msg))
|
||||
|
||||
@@ -349,13 +359,13 @@ class DirectUnpacker(threading.Thread):
|
||||
|
||||
# No new sets
|
||||
self.next_sets = []
|
||||
self.success_sets = []
|
||||
self.success_sets = {}
|
||||
|
||||
# Remove files
|
||||
if self.unpack_dir_info:
|
||||
extraction_path, _, _, one_folder, _ = self.unpack_dir_info
|
||||
# In case of flat-unpack we need to remove the files manually
|
||||
if one_folder or cfg.flat_unpack():
|
||||
if one_folder:
|
||||
# RarFile can fail for mysterious reasons
|
||||
try:
|
||||
rar_contents = RarFile(os.path.join(self.nzo.downpath, rarfile_nzf.filename), all_names=True).filelist()
|
||||
@@ -420,4 +430,4 @@ def test_disk_performance():
|
||||
else:
|
||||
logging.info('Direct Unpack was not enabled, incomplete folder disk speed below 40MB/s')
|
||||
cfg.direct_unpack_tested.set(True)
|
||||
config.save_config()
|
||||
sabnzbd.config.save_config()
|
||||
|
||||
@@ -83,6 +83,10 @@ class Server(object):
|
||||
|
||||
self.categories = categories
|
||||
|
||||
# Temporary deprication warning
|
||||
if categories and (len(categories) > 1 or 'Default' not in categories):
|
||||
logging.warning('[%s] Server specific categories option is scheduled to be removed in the next release of SABnzbd', self.host)
|
||||
|
||||
self.busy_threads = []
|
||||
self.idle_threads = []
|
||||
self.active = True
|
||||
|
||||
225
sabnzbd/misc.py
225
sabnzbd/misc.py
@@ -42,9 +42,11 @@ import sabnzbd.config as config
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.encoding import unicoder, special_fixer, gUTF
|
||||
|
||||
RE_VERSION = re.compile(r'(\d+)\.(\d+)\.(\d+)([a-zA-Z]*)(\d*)')
|
||||
RE_UNITS = re.compile(r'(\d+\.*\d*)\s*([KMGTP]{0,1})', re.I)
|
||||
TAB_UNITS = ('', 'K', 'M', 'G', 'T', 'P')
|
||||
RE_UNITS = re.compile(r'(\d+\.*\d*)\s*([KMGTP]{0,1})', re.I)
|
||||
RE_VERSION = re.compile(r'(\d+)\.(\d+)\.(\d+)([a-zA-Z]*)(\d*)')
|
||||
RE_IP4 = re.compile(r'inet\s+(addr:\s*){0,1}(\d+\.\d+\.\d+\.\d+)')
|
||||
RE_IP6 = re.compile(r'inet6\s+(addr:\s*){0,1}([0-9a-f:]+)', re.I)
|
||||
|
||||
# Check if strings are defined for AM and PM
|
||||
HAVE_AMPM = bool(time.strftime('%p', time.localtime()))
|
||||
@@ -92,6 +94,15 @@ def calc_age(date, trans=False):
|
||||
return age
|
||||
|
||||
|
||||
def monthrange(start, finish):
|
||||
""" Calculate months between 2 dates, used in the Config template """
|
||||
months = (finish.year - start.year) * 12 + finish.month + 1
|
||||
for i in xrange(start.month, months):
|
||||
year = (i - 1) / 12 + start.year
|
||||
month = (i - 1) % 12 + 1
|
||||
yield datetime.date(year, month, 1)
|
||||
|
||||
|
||||
def safe_lower(txt):
|
||||
""" Return lowercased string. Return '' for None """
|
||||
if txt:
|
||||
@@ -100,13 +111,22 @@ def safe_lower(txt):
|
||||
return ''
|
||||
|
||||
|
||||
def safe_fnmatch(f, pattern):
|
||||
""" fnmatch will fail if the pattern contains any of it's
|
||||
key characters, like [, ] or !.
|
||||
"""
|
||||
try:
|
||||
return fnmatch.fnmatch(f, pattern)
|
||||
except re.error:
|
||||
return False
|
||||
|
||||
|
||||
def globber(path, pattern=u'*'):
|
||||
""" Return matching base file/folder names in folder `path` """
|
||||
# Cannot use glob.glob() because it doesn't support Windows long name notation
|
||||
if os.path.exists(path):
|
||||
return [f for f in os.listdir(path) if fnmatch.fnmatch(f, pattern)]
|
||||
else:
|
||||
return []
|
||||
return [f for f in os.listdir(path) if safe_fnmatch(f, pattern)]
|
||||
return []
|
||||
|
||||
|
||||
def globber_full(path, pattern=u'*'):
|
||||
@@ -114,13 +134,12 @@ def globber_full(path, pattern=u'*'):
|
||||
# Cannot use glob.glob() because it doesn't support Windows long name notation
|
||||
if os.path.exists(path):
|
||||
try:
|
||||
return [os.path.join(path, f) for f in os.listdir(path) if fnmatch.fnmatch(f, pattern)]
|
||||
return [os.path.join(path, f) for f in os.listdir(path) if safe_fnmatch(f, pattern)]
|
||||
except UnicodeDecodeError:
|
||||
# This happens on Linux when names are incorrectly encoded, retry using a non-Unicode path
|
||||
path = path.encode('utf-8')
|
||||
return [os.path.join(path, f) for f in os.listdir(path) if fnmatch.fnmatch(f, pattern)]
|
||||
else:
|
||||
return []
|
||||
return [os.path.join(path, f) for f in os.listdir(path) if safe_fnmatch(f, pattern)]
|
||||
return []
|
||||
|
||||
|
||||
def cat_to_opts(cat, pp=None, script=None, priority=None):
|
||||
@@ -843,9 +862,11 @@ def get_cache_limit():
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Directory operations
|
||||
# Locked directory operations to avoid problems with simultaneous add/remove
|
||||
##############################################################################
|
||||
DIR_LOCK = threading.RLock()
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def get_unique_path(dirpath, n=0, create_dir=True):
|
||||
""" Determine a unique folder or filename """
|
||||
|
||||
@@ -865,6 +886,7 @@ def get_unique_path(dirpath, n=0, create_dir=True):
|
||||
return get_unique_path(dirpath, n=n + 1, create_dir=create_dir)
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def get_unique_filename(path):
|
||||
""" Check if path is unique. If not, add number like: "/path/name.NUM.ext". """
|
||||
num = 1
|
||||
@@ -877,6 +899,7 @@ def get_unique_filename(path):
|
||||
return path
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def create_dirs(dirpath):
|
||||
""" Create directory tree, obeying permissions """
|
||||
if not os.path.exists(dirpath):
|
||||
@@ -887,6 +910,7 @@ def create_dirs(dirpath):
|
||||
return dirpath
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def move_to_path(path, new_path):
|
||||
""" Move a file to a new path, optionally give unique filename
|
||||
Return (ok, new_path)
|
||||
@@ -927,6 +951,7 @@ def move_to_path(path, new_path):
|
||||
return ok, new_path
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def cleanup_empty_directories(path):
|
||||
""" Remove all empty folders inside (and including) 'path' """
|
||||
path = os.path.normpath(path)
|
||||
@@ -947,6 +972,7 @@ def cleanup_empty_directories(path):
|
||||
pass
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def get_filepath(path, nzo, filename):
|
||||
""" Create unique filepath """
|
||||
# This procedure is only used by the Assembler thread
|
||||
@@ -983,6 +1009,94 @@ def get_filepath(path, nzo, filename):
|
||||
return fullPath
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def renamer(old, new):
|
||||
""" Rename file/folder with retries for Win32 """
|
||||
# Sanitize last part of new name
|
||||
path, name = os.path.split(new)
|
||||
# Use the more stringent folder rename to end up with a nicer name,
|
||||
# but do not trim size
|
||||
new = os.path.join(path, sanitize_foldername(name, False))
|
||||
|
||||
logging.debug('Renaming "%s" to "%s"', old, new)
|
||||
if sabnzbd.WIN32:
|
||||
retries = 15
|
||||
while retries > 0:
|
||||
# First we try 3 times with os.rename
|
||||
if retries > 12:
|
||||
try:
|
||||
os.rename(old, new)
|
||||
return
|
||||
except:
|
||||
retries -= 1
|
||||
time.sleep(3)
|
||||
continue
|
||||
|
||||
# Now we try the back-up method
|
||||
logging.debug('Could not rename, trying move for %s to %s', old, new)
|
||||
try:
|
||||
shutil.move(old, new)
|
||||
return
|
||||
except WindowsError, err:
|
||||
logging.debug('Error renaming "%s" to "%s" <%s>', old, new, err)
|
||||
if err[0] == 32:
|
||||
logging.debug('Retry rename %s to %s', old, new)
|
||||
retries -= 1
|
||||
else:
|
||||
raise WindowsError(err)
|
||||
time.sleep(3)
|
||||
raise WindowsError(err)
|
||||
else:
|
||||
shutil.move(old, new)
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def remove_dir(path):
|
||||
""" Remove directory with retries for Win32 """
|
||||
logging.debug('Removing dir %s', path)
|
||||
if sabnzbd.WIN32:
|
||||
retries = 15
|
||||
while retries > 0:
|
||||
try:
|
||||
os.rmdir(path)
|
||||
return
|
||||
except WindowsError, err:
|
||||
if err[0] == 32:
|
||||
logging.debug('Retry delete %s', path)
|
||||
retries -= 1
|
||||
else:
|
||||
raise WindowsError(err)
|
||||
time.sleep(3)
|
||||
raise WindowsError(err)
|
||||
else:
|
||||
os.rmdir(path)
|
||||
|
||||
|
||||
@synchronized(DIR_LOCK)
|
||||
def remove_all(path, pattern='*', keep_folder=False, recursive=False):
|
||||
""" Remove folder and all its content (optionally recursive) """
|
||||
if os.path.exists(path):
|
||||
files = globber_full(path, pattern)
|
||||
if pattern == '*' and not sabnzbd.WIN32:
|
||||
files.extend(globber_full(path, '.*'))
|
||||
|
||||
for f in files:
|
||||
if os.path.isfile(f):
|
||||
try:
|
||||
logging.debug('Removing file %s', f)
|
||||
os.remove(f)
|
||||
except:
|
||||
logging.info('Cannot remove file %s', f)
|
||||
elif recursive:
|
||||
remove_all(f, pattern, False, True)
|
||||
if not keep_folder:
|
||||
try:
|
||||
logging.debug('Removing dir %s', path)
|
||||
os.rmdir(path)
|
||||
except:
|
||||
logging.info('Cannot remove folder %s', path)
|
||||
|
||||
|
||||
def trim_win_path(path):
|
||||
""" Make sure Windows path stays below 70 by trimming last part """
|
||||
if sabnzbd.WIN32 and len(path) > 69:
|
||||
@@ -1294,8 +1408,6 @@ def find_on_path(targets):
|
||||
return None
|
||||
|
||||
|
||||
_RE_IP4 = re.compile(r'inet\s+(addr:\s*){0,1}(\d+\.\d+\.\d+\.\d+)')
|
||||
_RE_IP6 = re.compile(r'inet6\s+(addr:\s*){0,1}([0-9a-f:]+)', re.I)
|
||||
def ip_extract():
|
||||
""" Return list of IP addresses of this system """
|
||||
ips = []
|
||||
@@ -1322,99 +1434,14 @@ def ip_extract():
|
||||
output = p.stdout.read()
|
||||
p.wait()
|
||||
for line in output.split('\n'):
|
||||
m = _RE_IP4.search(line)
|
||||
m = RE_IP4.search(line)
|
||||
if not (m and m.group(2)):
|
||||
m = _RE_IP6.search(line)
|
||||
m = RE_IP6.search(line)
|
||||
if m and m.group(2):
|
||||
ips.append(m.group(2))
|
||||
return ips
|
||||
|
||||
|
||||
def renamer(old, new):
|
||||
""" Rename file/folder with retries for Win32 """
|
||||
# Sanitize last part of new name
|
||||
path, name = os.path.split(new)
|
||||
# Use the more stringent folder rename to end up with a nicer name,
|
||||
# but do not trim size
|
||||
new = os.path.join(path, sanitize_foldername(name, False))
|
||||
|
||||
logging.debug('Renaming "%s" to "%s"', old, new)
|
||||
if sabnzbd.WIN32:
|
||||
retries = 15
|
||||
while retries > 0:
|
||||
# First we try 3 times with os.rename
|
||||
if retries > 12:
|
||||
try:
|
||||
os.rename(old, new)
|
||||
return
|
||||
except:
|
||||
retries -= 1
|
||||
time.sleep(3)
|
||||
continue
|
||||
|
||||
# Now we try the back-up method
|
||||
logging.debug('Could not rename, trying move for %s to %s', old, new)
|
||||
try:
|
||||
shutil.move(old, new)
|
||||
return
|
||||
except WindowsError, err:
|
||||
logging.debug('Error renaming "%s" to "%s" <%s>', old, new, err)
|
||||
if err[0] == 32:
|
||||
logging.debug('Retry rename %s to %s', old, new)
|
||||
retries -= 1
|
||||
else:
|
||||
raise WindowsError(err)
|
||||
time.sleep(3)
|
||||
raise WindowsError(err)
|
||||
else:
|
||||
shutil.move(old, new)
|
||||
|
||||
|
||||
def remove_dir(path):
|
||||
""" Remove directory with retries for Win32 """
|
||||
logging.debug('Removing dir %s', path)
|
||||
if sabnzbd.WIN32:
|
||||
retries = 15
|
||||
while retries > 0:
|
||||
try:
|
||||
os.rmdir(path)
|
||||
return
|
||||
except WindowsError, err:
|
||||
if err[0] == 32:
|
||||
logging.debug('Retry delete %s', path)
|
||||
retries -= 1
|
||||
else:
|
||||
raise WindowsError(err)
|
||||
time.sleep(3)
|
||||
raise WindowsError(err)
|
||||
else:
|
||||
os.rmdir(path)
|
||||
|
||||
|
||||
def remove_all(path, pattern='*', keep_folder=False, recursive=False):
|
||||
""" Remove folder and all its content (optionally recursive) """
|
||||
if os.path.exists(path):
|
||||
files = globber_full(path, pattern)
|
||||
if pattern == '*' and not sabnzbd.WIN32:
|
||||
files.extend(globber_full(path, '.*'))
|
||||
|
||||
for f in files:
|
||||
if os.path.isfile(f):
|
||||
try:
|
||||
logging.debug('Removing file %s', f)
|
||||
os.remove(f)
|
||||
except:
|
||||
logging.info('Cannot remove file %s', f)
|
||||
elif recursive:
|
||||
remove_all(f, pattern, False, True)
|
||||
if not keep_folder:
|
||||
try:
|
||||
logging.debug('Removing dir %s', path)
|
||||
os.rmdir(path)
|
||||
except:
|
||||
logging.info('Cannot remove folder %s', path)
|
||||
|
||||
|
||||
def is_writable(path):
|
||||
""" Return True is file is writable (also when non-existent) """
|
||||
if os.path.isfile(path):
|
||||
|
||||
@@ -33,7 +33,7 @@ from sabnzbd.encoding import TRANS, UNTRANS, unicoder, platform_encode, deunicod
|
||||
import sabnzbd.utils.rarfile as rarfile
|
||||
from sabnzbd.misc import format_time_string, find_on_path, make_script_path, int_conv, \
|
||||
real_path, globber, globber_full, get_all_passwords, renamer, clip_path, \
|
||||
has_win_device, calc_age
|
||||
has_win_device, calc_age, long_path
|
||||
from sabnzbd.tvsort import SeriesSorter
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.constants import Status
|
||||
@@ -226,9 +226,10 @@ def unpack_magic(nzo, workdir, workdir_complete, dele, one_folder, joinables, zi
|
||||
# First time, ignore anything in workdir_complete
|
||||
xjoinables, xzips, xrars, xsevens, xts = build_filelists(workdir)
|
||||
else:
|
||||
xjoinables, xzips, xrars, xsevens, xts = build_filelists(workdir, workdir_complete)
|
||||
xjoinables, xzips, xrars, xsevens, xts = build_filelists(workdir, workdir_complete, check_both=dele)
|
||||
|
||||
rerun = False
|
||||
force_rerun = False
|
||||
newfiles = []
|
||||
error = 0
|
||||
new_joins = new_rars = new_zips = new_ts = None
|
||||
@@ -290,7 +291,14 @@ def unpack_magic(nzo, workdir, workdir_complete, dele, one_folder, joinables, zi
|
||||
if nzo.reuse and depth == 1 and any(build_filelists(workdir, workdir_complete)):
|
||||
rerun = True
|
||||
|
||||
if rerun and (cfg.enable_recursive() or new_ts or new_joins):
|
||||
# Double-check that we didn't miss any files in workdir
|
||||
# But only if dele=True, otherwise of course there will be files left
|
||||
if rerun and dele and depth == 1 and any(build_filelists(workdir)):
|
||||
force_rerun = True
|
||||
# Clear lists to force re-scan of files
|
||||
xjoinables, xzips, xrars, xsevens, xts = ([], [], [], [], [])
|
||||
|
||||
if rerun and (cfg.enable_recursive() or new_ts or new_joins or force_rerun):
|
||||
z, y = unpack_magic(nzo, workdir, workdir_complete, dele, one_folder,
|
||||
xjoinables, xzips, xrars, xsevens, xts, depth)
|
||||
if z:
|
||||
@@ -483,11 +491,10 @@ def rar_unpack(nzo, workdir, workdir_complete, delete, one_folder, rars):
|
||||
# Did we already direct-unpack it? Not when recursive-unpacking
|
||||
if nzo.direct_unpacker and rar_set in nzo.direct_unpacker.success_sets:
|
||||
logging.info("Set %s completed by DirectUnpack", rar_set)
|
||||
fail = 0
|
||||
success = 1
|
||||
rars = rar_sets[rar_set]
|
||||
fail = False
|
||||
success = True
|
||||
rars = nzo.direct_unpacker.success_sets.pop(rar_set)
|
||||
newfiles = globber(extraction_path)
|
||||
nzo.direct_unpacker.success_sets.remove(rar_set)
|
||||
else:
|
||||
logging.info("Extracting rarfile %s (belonging to %s) to %s",
|
||||
rarpath, rar_set, extraction_path)
|
||||
@@ -496,7 +503,7 @@ def rar_unpack(nzo, workdir, workdir_complete, delete, one_folder, rars):
|
||||
one_folder, nzo, rar_set, extraction_path)
|
||||
# Was it aborted?
|
||||
if not nzo.pp_active:
|
||||
fail = 1
|
||||
fail = True
|
||||
break
|
||||
success = not fail
|
||||
except:
|
||||
@@ -615,8 +622,6 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
|
||||
|
||||
# Get list of all the volumes part of this set
|
||||
logging.debug("Analyzing rar file ... %s found", rarfile.is_rarfile(rarfile_path))
|
||||
rarfiles = rarfile.RarFile(rarfile_path).volumelist()
|
||||
|
||||
logging.debug("Running unrar %s", command)
|
||||
p = Popen(command, shell=need_shell, stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
||||
@@ -631,6 +636,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
|
||||
# Loop over the output from rar!
|
||||
curr = 0
|
||||
extracted = []
|
||||
rarfiles = []
|
||||
fail = 0
|
||||
inrecovery = False
|
||||
lines = []
|
||||
@@ -653,6 +659,9 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
|
||||
lines.append(line)
|
||||
|
||||
if line.startswith('Extracting from'):
|
||||
filename = TRANS((re.search(EXTRACTFROM_RE, line).group(1)))
|
||||
if filename not in rarfiles:
|
||||
rarfiles.append(filename)
|
||||
curr += 1
|
||||
nzo.set_action_line(T('Unpacking'), '%02d/%02d' % (curr, numrars))
|
||||
|
||||
@@ -777,6 +786,9 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
|
||||
proc.close()
|
||||
p.wait()
|
||||
|
||||
# Which files did we use to extract this?
|
||||
rarfiles = rar_volumelist(rarfile_path, password, rarfiles)
|
||||
|
||||
logging.debug('UNRAR output %s', '\n'.join(lines))
|
||||
nzo.fail_msg = ''
|
||||
msg = T('Unpacked %s files/folders in %s') % (str(len(extracted)), format_time_string(time.time() - start))
|
||||
@@ -1217,6 +1229,8 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False):
|
||||
verifytotal = 0
|
||||
verified = 0
|
||||
|
||||
in_verify_repaired = False
|
||||
|
||||
# Loop over the output, whee
|
||||
while 1:
|
||||
char = proc.read(1)
|
||||
@@ -1278,6 +1292,9 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False):
|
||||
format_time_string(time.time() - start))
|
||||
start = time.time()
|
||||
verified = 1
|
||||
# Reset to use them again for verification of repair
|
||||
verifytotal = 0
|
||||
verifynum = 0
|
||||
|
||||
elif line.startswith('Loading "'):
|
||||
# Found an extra par2 file. Only the next line will tell whether it's usable
|
||||
@@ -1369,9 +1386,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False):
|
||||
|
||||
else:
|
||||
block_table.pop(block_size)
|
||||
|
||||
logging.info('Added %s blocks to %s',
|
||||
added_blocks, nzo.final_name)
|
||||
logging.info('Added %s blocks to %s', added_blocks, nzo.final_name)
|
||||
|
||||
if not force:
|
||||
msg = T('Fetching %s blocks...') % str(added_blocks)
|
||||
@@ -1401,6 +1416,20 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, single=False):
|
||||
logging.info('Repaired in %s', format_time_string(time.time() - start))
|
||||
finished = 1
|
||||
|
||||
elif verified and line.endswith(('are missing.', 'exist but are damaged.')):
|
||||
# Files that will later be verified after repair
|
||||
chunks = line.split()
|
||||
verifytotal += int(chunks[0])
|
||||
|
||||
elif line.startswith('Verifying repaired files'):
|
||||
in_verify_repaired = True
|
||||
nzo.set_action_line(T('Verifying repair'), '%02d/%02d' % (verifynum, verifytotal))
|
||||
|
||||
elif in_verify_repaired and line.startswith('Target'):
|
||||
verifynum += 1
|
||||
if verifynum <= verifytotal:
|
||||
nzo.set_action_line(T('Verifying repair'), '%02d/%02d' % (verifynum, verifytotal))
|
||||
|
||||
elif line.startswith('File:') and line.find('data blocks from') > 0:
|
||||
m = _RE_BLOCK_FOUND.search(line)
|
||||
if m:
|
||||
@@ -1979,6 +2008,7 @@ def userxbit(filename):
|
||||
xbitset = (rwxbits & userxbit) > 0
|
||||
return xbitset
|
||||
|
||||
|
||||
def build_command(command):
|
||||
""" Prepare list from running an external program """
|
||||
if not sabnzbd.WIN32:
|
||||
@@ -2030,6 +2060,28 @@ def build_command(command):
|
||||
return stup, need_shell, command, creationflags
|
||||
|
||||
|
||||
def rar_volumelist(rarfile_path, password, known_volumes):
|
||||
""" Extract volumes that are part of this rarset
|
||||
and merge them with existing list, removing duplicates
|
||||
"""
|
||||
zf = rarfile.RarFile(rarfile_path)
|
||||
if password:
|
||||
try:
|
||||
# setpassword can fail due to bugs in RarFile
|
||||
zf.setpassword(password)
|
||||
except:
|
||||
pass
|
||||
zf_volumes = zf.volumelist()
|
||||
|
||||
# Remove duplicates
|
||||
known_volumes_base = [os.path.basename(vol) for vol in known_volumes]
|
||||
for zf_volume in zf_volumes:
|
||||
if os.path.basename(zf_volume) not in known_volumes_base:
|
||||
# Long-path notation just to be sure
|
||||
known_volumes.append(long_path(zf_volume))
|
||||
return known_volumes
|
||||
|
||||
|
||||
# Sort the various RAR filename formats properly :\
|
||||
def rar_sort(a, b):
|
||||
""" Define sort method for rar file names """
|
||||
@@ -2046,8 +2098,9 @@ def rar_sort(a, b):
|
||||
return cmp(a, b)
|
||||
|
||||
|
||||
def build_filelists(workdir, workdir_complete=None, check_rar=True):
|
||||
def build_filelists(workdir, workdir_complete=None, check_both=False, check_rar=True):
|
||||
""" Build filelists, if workdir_complete has files, ignore workdir.
|
||||
Optionally scan both directories.
|
||||
Optionally test content to establish RAR-ness
|
||||
"""
|
||||
sevens, joinables, zips, rars, ts, filelist = ([], [], [], [], [], [])
|
||||
@@ -2063,7 +2116,7 @@ def build_filelists(workdir, workdir_complete=None, check_rar=True):
|
||||
# Just skip failing names
|
||||
pass
|
||||
|
||||
if workdir and not filelist:
|
||||
if workdir and (not filelist or check_both):
|
||||
for root, dirs, files in os.walk(workdir):
|
||||
for _file in files:
|
||||
if '.AppleDouble' not in root and '.DS_Store' not in root:
|
||||
|
||||
@@ -42,12 +42,14 @@ from sabnzbd.newsunpack import external_script
|
||||
from gntp.core import GNTPRegister
|
||||
from gntp.notifier import GrowlNotifier
|
||||
import gntp.errors
|
||||
|
||||
try:
|
||||
import Growl
|
||||
# Detect classic Growl (older than 1.3)
|
||||
_HAVE_CLASSIC_GROWL = os.path.isfile('/Library/PreferencePanes/Growl.prefPane/Contents/MacOS/Growl')
|
||||
except ImportError:
|
||||
_HAVE_CLASSIC_GROWL = False
|
||||
|
||||
try:
|
||||
import warnings
|
||||
# Make any warnings exceptions, so that pynotify is ignored
|
||||
@@ -56,6 +58,10 @@ try:
|
||||
warnings.simplefilter("error")
|
||||
import pynotify
|
||||
_HAVE_NTFOSD = True
|
||||
|
||||
# Check for working version, not all pynotify are the same
|
||||
if not hasattr(pynotify, 'init'):
|
||||
_HAVE_NTFOSD = False
|
||||
except:
|
||||
_HAVE_NTFOSD = False
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ from sabnzbd.constants import GIGI, ATTRIB_FILE, JOB_ADMIN, \
|
||||
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, \
|
||||
int_conv, set_permissions, format_time_string, long_path, trim_win_path, \
|
||||
fix_unix_encoding, calc_age
|
||||
fix_unix_encoding, calc_age, is_obfuscated_filename
|
||||
from sabnzbd.decorators import synchronized
|
||||
import sabnzbd.config as config
|
||||
import sabnzbd.cfg as cfg
|
||||
@@ -279,7 +279,7 @@ class NzbFile(TryList):
|
||||
self.decodetable[partnum] = article
|
||||
|
||||
self.import_finished = True
|
||||
else:
|
||||
elif not self.nzo.is_gone():
|
||||
# TEMPORARY ERRORS
|
||||
if not os.path.exists(os.path.join(self.nzf_id, self.nzo.workpath)):
|
||||
logging.warning('Article DB file not found %s', self)
|
||||
@@ -492,6 +492,11 @@ class NzbParser(xml.sax.handler.ContentHandler):
|
||||
nzo_matches = filter(lambda x: (x.filename == nzf.filename), self.nzo.files)
|
||||
if nzo_matches:
|
||||
logging.info('File %s occured twice in NZB, discarding smaller file', nzf.filename)
|
||||
# Keep some logging how many were duplicates
|
||||
if 'duplicate_files' not in self.nzo.nzo_info:
|
||||
self.nzo.nzo_info['duplicate_files'] = 0
|
||||
self.nzo.nzo_info['duplicate_files'] += 1
|
||||
|
||||
# Which is smaller? Current or old one
|
||||
if nzo_matches[0].bytes >= nzf.bytes:
|
||||
# Skip this new one
|
||||
@@ -553,7 +558,7 @@ NzbObjectSaver = (
|
||||
'filename', 'work_name', 'final_name', 'created', 'bytes', 'bytes_downloaded', 'bytes_tried',
|
||||
'repair', 'unpack', 'delete', 'script', 'cat', 'url', 'groups', 'avg_date', 'md5of16k',
|
||||
'partable', 'extrapars', 'md5packs', 'files', 'files_table', 'finished_files', 'status',
|
||||
'avg_bps_freq', 'avg_bps_total', 'priority', 'dupe_table', 'saved_articles', 'nzo_id',
|
||||
'avg_bps_freq', 'avg_bps_total', 'priority', 'saved_articles', 'nzo_id',
|
||||
'futuretype', 'deleted', 'parsed', 'action_line', 'unpack_info', 'fail_msg', 'nzo_info',
|
||||
'custom_name', 'password', 'next_save', 'save_timeout', 'encrypted', 'bad_articles',
|
||||
'duplicate', 'oversized', 'precheck', 'incomplete', 'reuse', 'meta',
|
||||
@@ -646,8 +651,6 @@ class NzbObject(TryList):
|
||||
priority = DEFAULT_PRIORITY
|
||||
self.priority = priority
|
||||
|
||||
self.dupe_table = {}
|
||||
|
||||
self.saved_articles = []
|
||||
|
||||
self.nzo_id = None
|
||||
@@ -881,6 +884,10 @@ class NzbObject(TryList):
|
||||
else:
|
||||
self.files.sort(cmp=nzf_cmp_name)
|
||||
|
||||
# Warn if there were many duplicate files
|
||||
if 'duplicate_files' in self.nzo_info and self.nzo_info['duplicate_files'] >= 10:
|
||||
logging.warning(T('%d files with duplicate filenames were discared for "%s". Enable "allow_duplicate_files" to allow duplicate filenames.'), self.nzo_info['duplicate_files'], self.final_name)
|
||||
|
||||
# In the hunt for Unwanted Extensions:
|
||||
# The file with the unwanted extension often is in the first or the last rar file
|
||||
# So put the last rar immediately after the first rar file so that it gets detected early
|
||||
@@ -930,21 +937,6 @@ class NzbObject(TryList):
|
||||
# Raise error, so it's not added
|
||||
raise TypeError
|
||||
|
||||
def check_for_dupe(self, nzf):
|
||||
filename = nzf.filename
|
||||
|
||||
dupe = False
|
||||
|
||||
if filename in self.dupe_table:
|
||||
old_nzf = self.dupe_table[filename]
|
||||
if nzf.article_count <= old_nzf.article_count:
|
||||
dupe = True
|
||||
|
||||
if not dupe:
|
||||
self.dupe_table[filename] = nzf
|
||||
|
||||
return dupe
|
||||
|
||||
@synchronized(NZO_LOCK)
|
||||
def update_download_stats(self, bps, serverid, bytes):
|
||||
if bps:
|
||||
@@ -985,8 +977,9 @@ class NzbObject(TryList):
|
||||
head, vol, block = analyse_par2(name)
|
||||
if head and matcher(lparset, head.lower()):
|
||||
xnzf.set_par2(parset, vol, block)
|
||||
# Don't postpone if all par2 should be kept
|
||||
if cfg.enable_par_cleanup():
|
||||
# Don't postpone if all par2 are desired and should be kept
|
||||
# Also don't postpone header-only-files, to extract all possible md5of16k
|
||||
if not(cfg.enable_all_par() and not cfg.enable_par_cleanup()) and block:
|
||||
self.extrapars[parset].append(xnzf)
|
||||
self.files.remove(xnzf)
|
||||
|
||||
@@ -1480,6 +1473,33 @@ class NzbObject(TryList):
|
||||
self.files[pos + 1] = nzf
|
||||
self.files[pos] = tmp_nzf
|
||||
|
||||
def verify_nzf_filename(self, nzf, yenc_filename=None):
|
||||
""" Get filename from par2-info or from yenc """
|
||||
# Already done?
|
||||
if nzf.filename_checked:
|
||||
return
|
||||
|
||||
# If we have the md5, use it to rename
|
||||
if nzf.md5of16k and self.md5of16k:
|
||||
# Don't check again, even if no match
|
||||
nzf.filename_checked = True
|
||||
# Find the match and rename
|
||||
if nzf.md5of16k in self.md5of16k:
|
||||
new_filename = platform_encode(self.md5of16k[nzf.md5of16k])
|
||||
# Was it even new?
|
||||
if new_filename != nzf.filename:
|
||||
logging.info('Detected filename based on par2: %s -> %s', nzf.filename, new_filename)
|
||||
self.renamed_file(new_filename, nzf.filename)
|
||||
nzf.filename = new_filename
|
||||
return
|
||||
|
||||
# Fallback to yenc/nzb name (also when there is no partnum=1)
|
||||
# We also keep the NZB name in case it ends with ".par2" (usually correct)
|
||||
if yenc_filename and yenc_filename != nzf.filename and not is_obfuscated_filename(yenc_filename) and not nzf.filename.endswith('.par2'):
|
||||
logging.info('Detected filename from yenc: %s -> %s', nzf.filename, yenc_filename)
|
||||
self.renamed_file(yenc_filename, nzf.filename)
|
||||
nzf.filename = yenc_filename
|
||||
|
||||
@synchronized(NZO_LOCK)
|
||||
def renamed_file(self, name_set, old_name=None):
|
||||
""" Save renames at various stages (Download/PP)
|
||||
|
||||
@@ -28,12 +28,28 @@ import time
|
||||
##############################################################################
|
||||
# Power management for Windows
|
||||
##############################################################################
|
||||
try:
|
||||
import win32security
|
||||
import win32api
|
||||
import ntsecuritycon
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
|
||||
def win_power_privileges():
|
||||
""" To do any power-options, the process needs higher privileges """
|
||||
flags = ntsecuritycon.TOKEN_ADJUST_PRIVILEGES | ntsecuritycon.TOKEN_QUERY
|
||||
htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), flags)
|
||||
id_ = win32security.LookupPrivilegeValue(None, ntsecuritycon.SE_SHUTDOWN_NAME)
|
||||
newPrivileges = [(id_, ntsecuritycon.SE_PRIVILEGE_ENABLED)]
|
||||
win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
|
||||
|
||||
|
||||
def win_hibernate():
|
||||
""" Hibernate Windows system, returns after wakeup """
|
||||
try:
|
||||
subprocess.Popen("rundll32 powrprof.dll,SetSuspendState Hibernate")
|
||||
time.sleep(10)
|
||||
win_power_privileges()
|
||||
win32api.SetSystemPowerState(False, True)
|
||||
except:
|
||||
logging.error(T('Failed to hibernate system'))
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
@@ -42,8 +58,8 @@ def win_hibernate():
|
||||
def win_standby():
|
||||
""" Standby Windows system, returns after wakeup """
|
||||
try:
|
||||
subprocess.Popen("rundll32 powrprof.dll,SetSuspendState Standby")
|
||||
time.sleep(10)
|
||||
win_power_privileges()
|
||||
win32api.SetSystemPowerState(True, True)
|
||||
except:
|
||||
logging.error(T('Failed to standby system'))
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
@@ -52,15 +68,7 @@ def win_standby():
|
||||
def win_shutdown():
|
||||
""" Shutdown Windows system, never returns """
|
||||
try:
|
||||
import win32security
|
||||
import win32api
|
||||
import ntsecuritycon
|
||||
|
||||
flags = ntsecuritycon.TOKEN_ADJUST_PRIVILEGES | ntsecuritycon.TOKEN_QUERY
|
||||
htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), flags)
|
||||
id_ = win32security.LookupPrivilegeValue(None, ntsecuritycon.SE_SHUTDOWN_NAME)
|
||||
newPrivileges = [(id_, ntsecuritycon.SE_PRIVILEGE_ENABLED)]
|
||||
win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges)
|
||||
win_power_privileges()
|
||||
win32api.InitiateSystemShutdown("", "", 30, 1, 0)
|
||||
finally:
|
||||
os._exit(0)
|
||||
|
||||
@@ -993,5 +993,6 @@ SKIN_TEXT = {
|
||||
SABnzbd comes with ABSOLUTELY NO WARRANTY.
|
||||
This is free software, and you are welcome to redistribute it under certain conditions.
|
||||
It is licensed under the GNU GENERAL PUBLIC LICENSE Version 2 or (at your option) any later version.
|
||||
''')
|
||||
'''),
|
||||
'wizard-ad': TT('In order to download from Usenet you will require access to a provider. Your ISP may provide you with access, however a premium provider is recommended. Don\'t have a Usenet provider? We recommend trying %s.''')
|
||||
}
|
||||
|
||||
@@ -86,17 +86,20 @@ def CreateProcess(executable, args, _p_attr, _t_attr,
|
||||
Python implementation of CreateProcess using CreateProcessW for Win32
|
||||
|
||||
"""
|
||||
|
||||
si = STARTUPINFOW(
|
||||
dwFlags=startup_info.dwFlags,
|
||||
wShowWindow=startup_info.wShowWindow,
|
||||
cb=sizeof(STARTUPINFOW),
|
||||
## XXXvlab: not sure of the casting here to ints.
|
||||
hStdInput=int(startup_info.hStdInput),
|
||||
hStdOutput=int(startup_info.hStdOutput),
|
||||
hStdError=int(startup_info.hStdError),
|
||||
)
|
||||
|
||||
# Only cast to ints when it's given
|
||||
if startup_info.hStdInput:
|
||||
si.hStdInput = int(startup_info.hStdInput)
|
||||
if startup_info.hStdOutput:
|
||||
si.hStdOutput = int(startup_info.hStdOutput)
|
||||
if startup_info.hStdError:
|
||||
si.hStdError = int(startup_info.hStdError)
|
||||
|
||||
wenv = None
|
||||
if env is not None:
|
||||
## LPCWSTR seems to be c_wchar_p, so let's say CWSTR is c_wchar
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
|
||||
# You MUST use double quotes (so " and not ')
|
||||
|
||||
__version__ = "2.2.0-develop"
|
||||
__baseline__ = "unknown"
|
||||
__version__ = "2.2.0"
|
||||
__baseline__ = "b061e582b63491f5a7dca02277b1ccd490bbd388"
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
@echo off
|
||||
rem Example of a post processing script for SABnzbd
|
||||
|
||||
echo.
|
||||
echo Running in directory "%~d0%~p0"
|
||||
echo.
|
||||
echo The first parameter (result-dir) = %1
|
||||
echo The second parameter (nzb-name) = %2
|
||||
echo The third parameter (nice name) = %3
|
||||
echo The fourth parameter (newzbin #) = %4
|
||||
echo The fifth parameter (category) = %5
|
||||
echo The sixth parameter (group) = %6
|
||||
echo The seventh parameter (status) = %7
|
||||
echo The eight parameter (failure_url)= %8
|
||||
echo.
|
||||
@echo off
|
||||
rem Example of a post processing script for SABnzbd
|
||||
|
||||
echo.
|
||||
echo Running in directory "%~d0%~p0"
|
||||
echo.
|
||||
echo The first parameter (result-dir) = %1
|
||||
echo The second parameter (nzb-name) = %2
|
||||
echo The third parameter (nice name) = %3
|
||||
echo The fourth parameter (newzbin #) = %4
|
||||
echo The fifth parameter (category) = %5
|
||||
echo The sixth parameter (group) = %6
|
||||
echo The seventh parameter (status) = %7
|
||||
echo The eight parameter (failure_url)= %8
|
||||
echo.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user