Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
713993140f | ||
|
|
176e6b6afd | ||
|
|
5ecbf795af | ||
|
|
42b1202b06 | ||
|
|
37acad6ec7 | ||
|
|
74d90b8361 | ||
|
|
952682d557 | ||
|
|
c1f3e44fb8 | ||
|
|
fa2a6c673c | ||
|
|
b46ae4782d | ||
|
|
6ebbc81792 | ||
|
|
1d7170f193 | ||
|
|
3dea948ecc | ||
|
|
1e960ae2e9 | ||
|
|
e6b21f1ca5 | ||
|
|
ebd3cbd932 | ||
|
|
b8fb5cbfbf | ||
|
|
01494bd010 | ||
|
|
6dd4c0551e | ||
|
|
8225dae182 | ||
|
|
9999065f0a | ||
|
|
90d11ada6b | ||
|
|
67a1ee3cde | ||
|
|
0f8df0f072 | ||
|
|
9c9936e7ae | ||
|
|
92926a4825 | ||
|
|
92ac787315 | ||
|
|
2cc53e8dc3 | ||
|
|
18cb5710f9 | ||
|
|
11b8f23528 | ||
|
|
cf72abedfd | ||
|
|
31f92ebdd5 | ||
|
|
39a6635229 | ||
|
|
a87a70d9c6 |
15
.bzreol
@@ -1,15 +0,0 @@
|
||||
[LF]
|
||||
.bzreol
|
||||
.bzrignore
|
||||
*.py
|
||||
*.tmpl
|
||||
*.js
|
||||
*.css
|
||||
*.txt
|
||||
*.po
|
||||
*.pot
|
||||
*.sh
|
||||
[CRLF]
|
||||
*.bat
|
||||
*.cmd
|
||||
*.nsi
|
||||
10
.bzrignore
@@ -1,10 +0,0 @@
|
||||
*.pyc
|
||||
*.pyo
|
||||
build
|
||||
dist
|
||||
locale
|
||||
srcdist
|
||||
cherrypy
|
||||
*.wpr
|
||||
*.keep
|
||||
*.bak
|
||||
13
.bzrtab
@@ -1,13 +0,0 @@
|
||||
[NOTAB]
|
||||
*.py
|
||||
*.txt
|
||||
*.po
|
||||
*.pot
|
||||
*.sh
|
||||
*.bat
|
||||
*.cmd
|
||||
*.nsi
|
||||
*.tmpl
|
||||
*.js
|
||||
*.css
|
||||
[TAB]
|
||||
28
.gitignore
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
#Compiled python
|
||||
*.py[co]
|
||||
|
||||
# Working folders for Win build
|
||||
build/
|
||||
dist/
|
||||
locale/
|
||||
srcdist/
|
||||
|
||||
# Generated email templates
|
||||
email/
|
||||
|
||||
# Romanian ro.po is generated from ro.px, due to mapping to latin-1
|
||||
po/*/ro.po
|
||||
|
||||
# Build results
|
||||
SABnzbd*.zip
|
||||
SABnzbd*.exe
|
||||
SABnzbd*.gz
|
||||
SABnzbd*.dmg
|
||||
|
||||
# WingIDE project file
|
||||
*.wpr
|
||||
|
||||
# General junk
|
||||
*.keep
|
||||
*.bak
|
||||
*.log
|
||||
@@ -1,5 +1,5 @@
|
||||
*******************************************
|
||||
*** This is SABnzbd 0.6.7 ***
|
||||
*** This is SABnzbd 0.6.9 ***
|
||||
*******************************************
|
||||
SABnzbd is an open-source cross-platform binary newsreader.
|
||||
It simplifies the process of downloading from Usenet dramatically,
|
||||
|
||||
@@ -1,3 +1,33 @@
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.9Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Change the OSX DMG window size (again) so that the optional "path bar"
|
||||
doesn't obsure part of the background image.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.9RC2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Generic Sorter failed to uppercase first letter of title when starting with "the/a/to" etc.
|
||||
- Add "hidden" option allow_64bit_tools (lost when going from 0.5.6 to 0.6.0)
|
||||
- Improve handling of non-creatable final and category folders
|
||||
- Fix and I18N the "Downloaded in X days Y hours Z seconds" text in the history report.
|
||||
- Change the OSX DMG window size so that the optional "path bar" doesn't obsure part of the background image.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.9RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Update Plush to solve minor browser incompatibilities
|
||||
- On Windows the 64bit versions of par2 and unrar were never used
|
||||
- Updated unrar to 4.01
|
||||
- Using the "Download" button in newzbin.com RSS feeds produced malformed names.
|
||||
- For OSX make a Lion and a Leopard/SnowLeopard version and show this in DMG background image
|
||||
- When removing job folders in the "temporary download folder", remove everything.
|
||||
This is needed because some operating systems add spurious files and folders.
|
||||
- Servers with square brackets in the name could not be removed.
|
||||
- Check email parameters also when only email_rss is set.
|
||||
- Try out work-around for potential memory leak in pickle.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.8Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix several RSS issues, due to corruption of stored RSS data
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.7Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
SABnzbd 0.6.6
|
||||
SABnzbd 0.6.9
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
0) LICENSE
|
||||
@@ -49,6 +49,11 @@ You need to have Python installed and some modules.
|
||||
Unix/Linux/OSX
|
||||
Python-2.5, 2.6 or 2.7 http://www.python.org
|
||||
|
||||
OSX Leopard/SnowLeopard
|
||||
Python 2.6 http://www.activestate.com
|
||||
|
||||
OSX Lion Apple Python 2.7 (included in OSX)
|
||||
|
||||
Windows
|
||||
Python-2.5.latest http://www.activestate.com
|
||||
Python-2.6.latest
|
||||
|
||||
4
PKG-INFO
@@ -1,7 +1,7 @@
|
||||
Metadata-Version: 1.0
|
||||
Name: SABnzbd
|
||||
Version: 0.6.7
|
||||
Summary: SABnzbd-0.6.7
|
||||
Version: 0.6.9
|
||||
Summary: SABnzbd-0.6.9
|
||||
Home-page: http://sourceforge.net/projects/sabnzbdplus
|
||||
Author: The SABnzbd Team
|
||||
Author-email: team@sabnzbd.org
|
||||
|
||||
54
README.md
Normal file
@@ -0,0 +1,54 @@
|
||||
SABnzbd - The automated Usenet download tool
|
||||
============================================
|
||||
|
||||
SABnzbd is an Open Source Binary Newsreader written in Python.
|
||||
|
||||
It's totally free, incredibly easy to use, and works practically everywhere.
|
||||
|
||||
SABnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.
|
||||
|
||||
If you want to know more you can head over to our website: http://sabnzbd.org.
|
||||
|
||||
## Resolving Dependencies
|
||||
|
||||
SABnzbd has a good deal of dependencies you'll need before you can get running. If you've previously run SABnzbd from one of the various Linux packages floating around (Ubuntu, Debian, Fedora, etc), then you likely already have all the needed dependencies. If not, here's what you're looking for:
|
||||
|
||||
- `python` (We support Python 2.5-2.7, preferably 2.6 or 2.7.)
|
||||
- `python-cheetah`
|
||||
- `python-configobj`
|
||||
- `python-feedparser`
|
||||
- `python-dbus`
|
||||
- `python-openssl`
|
||||
- `python-support`
|
||||
- `python-yenc`
|
||||
- `par2` (Multi-threaded par2 can be downloaded from [ChuChuSoft](http://chuchusoft.com/par2_tbb/download.html) )
|
||||
- `unrar` (Make sure you get the "official" non-free version of unrar)
|
||||
- `unzip`
|
||||
|
||||
Your package manager should supply these. If not, we've got links in our more in-depth [installation guide](https://github.com/sabnzbd/sabnzbd/blob/master/INSTALL.txt).
|
||||
|
||||
## Running SABnzbd from source
|
||||
|
||||
Once you've sorted out all the dependencies, simply run:
|
||||
|
||||
```
|
||||
python SABnzbd.py
|
||||
```
|
||||
|
||||
Or, if you want to run in the background:
|
||||
|
||||
```
|
||||
python -d -f /path/to/sabnzbd.ini
|
||||
```
|
||||
|
||||
If you want multi-language support, run:
|
||||
|
||||
```
|
||||
python tools/make_mo.py
|
||||
```
|
||||
|
||||
Our many other commandline options are explained in depth [here](http://wiki.sabnzbd.org/command-line-parameters).
|
||||
|
||||
## About Our Repo
|
||||
|
||||
We're going to be attempting to follow the [gitflow model](http://nvie.com/posts/a-successful-git-branching-model/), so you can consider "master" to be whatever our present stable release build is (presently 0.6.x) and "develop" to be whatever our next build will be (presently 0.7.x). Once we transition from unstable to stable dev builds we'll create release branches, and encourage you to follow along and help us test.
|
||||
19
README.rtf
@@ -4,19 +4,24 @@
|
||||
\paperw11900\paperh16840\vieww16360\viewh15680\viewkind0
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
|
||||
|
||||
\f0\b\fs48 \cf0 SABnzbd 0.6.7\
|
||||
\f0\b\fs48 \cf0 SABnzbd 0.6.9\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
|
||||
\b0\fs26 \cf0 \
|
||||
|
||||
\b What's new
|
||||
\b0 \
|
||||
- Prevent immediate exit after startup when queue is empty and an end-of-queue action like "shutdown" was set\
|
||||
- Fix failure to launch browser when clicking shortcut the second time\
|
||||
- Allow jobs still waiting for post-processing to be deleted\
|
||||
- Plush: button "Purge failed NZBs & delete files" will now actually delete files\
|
||||
- Classic/smpl: add link "Purge failed NZBs & delete files"\
|
||||
- Plush: fix flashing top menu in Safari 5.1\
|
||||
- Update Plush to solve minor browser incompatibilities\
|
||||
- On Windows the 64bit versions of par2 and unrar were never used\
|
||||
- Updated unrar to 4.01\
|
||||
- Using the "Download" button in newzbin.com RSS feeds produced malformed names.\
|
||||
- When removing job folders in the "temporary download folder", remove everything.\
|
||||
This is needed because some operating systems add spurious files and folders.\
|
||||
- Generic Sorter failed to uppercase first letter of title when starting with "the/a/to" etc.\
|
||||
- Add "hidden" option allow_64bit_tools (lost when going from 0.5.6 to 0.6.0)\
|
||||
\
|
||||
- OSX has now a Leopard/SnowLeopard DMG and a Lion-only DMG\
|
||||
You can see the difference in the DMG's background image\
|
||||
\
|
||||
|
||||
\b About
|
||||
|
||||
21
README.txt
@@ -1,13 +1,18 @@
|
||||
************************ SABnzbd 0.6.7 ************************
|
||||
************************ SABnzbd 0.6.9 ************************
|
||||
|
||||
What's new:
|
||||
- Prevent immediate exit after startup when queue is empty and
|
||||
an end-of-queue action like "shutdown" was set
|
||||
- Fix failure to launch browser when clicking shortcut the second time
|
||||
- Allow jobs still waiting for post-processing to be deleted
|
||||
- Plush: button "Purge failed NZBs & delete files" will now actually delete files
|
||||
- Classic/smpl: add link "Purge failed NZBs & delete files"
|
||||
- Plush: fix flashing top menu in Safari 5.1
|
||||
- Update Plush to solve minor browser incompatibilities
|
||||
- On Windows the 64bit versions of par2 and unrar were never used
|
||||
- Updated unrar to 4.01
|
||||
- Using the "Download" button in newzbin.com RSS feeds produced malformed names.
|
||||
- When removing job folders in the "temporary download folder", remove everything.
|
||||
This is needed because some operating systems add spurious files and folders.
|
||||
- Generic Sorter failed to uppercase first letter of title when starting with "the/a/to" etc.
|
||||
- Add "hidden" option allow_64bit_tools (lost when going from 0.5.6 to 0.6.0)
|
||||
|
||||
- OSX has now a Leopard/SnowLeopard DMG and a Lion-only DMG
|
||||
You can see the difference in the DMG's background image
|
||||
|
||||
|
||||
About:
|
||||
SABnzbd is an open-source cross-platform binary newsreader.
|
||||
|
||||
@@ -967,6 +967,8 @@ def main():
|
||||
# Detect Windows variant
|
||||
if sabnzbd.WIN32:
|
||||
vista_plus, vista64 = windows_variant()
|
||||
sabnzbd.WIN64 = vista64
|
||||
|
||||
|
||||
if not SQLITE_DLL:
|
||||
panic_sqlite(sabnzbd.MY_FULLNAME)
|
||||
@@ -1180,7 +1182,6 @@ def main():
|
||||
suffix = ' (=Vista+)'
|
||||
if vista64:
|
||||
suffix = ' (=Vista+ x64)'
|
||||
sabnzbd.WIN64 = True
|
||||
try:
|
||||
logging.info('Platform=%s%s Class=%s', platform.platform(), suffix, os.name)
|
||||
except:
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<title>SABnzbd $version - $T('queued'): $mbleft $T('MB')</title>
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="${path}rss?mode=history"/>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="${path}static/stylesheets/jqueryui/overcast/jquery-ui-1.8.9.custom.css?$version"/>
|
||||
<link rel="stylesheet" type="text/css" href="${path}static/stylesheets/jqueryui/overcast/jquery-ui-1.8.15.custom.css?$version"/>
|
||||
#if $color_scheme#
|
||||
<link rel="shortcut icon" type="image/ico" href="${path}static/stylesheets/colorschemes/$color_scheme/images/sabnzbdplus.ico"/>
|
||||
<link rel="stylesheet" type="text/css" href="${path}static/stylesheets/colorschemes/$color_scheme/${color_scheme}.css?$version"/>
|
||||
|
||||
@@ -79,27 +79,27 @@ jQuery(document).ready(function($){
|
||||
|
||||
// selections
|
||||
$("#nzo_select_all").click(function(){
|
||||
$("INPUT[type='checkbox']").attr('checked', true).trigger('change');
|
||||
$("INPUT[type='checkbox']").prop('checked', true).trigger('change');
|
||||
});
|
||||
var last1, last2;
|
||||
$("#nzo_select_range").click(function(){
|
||||
if (last1 && last2 && last1 < last2)
|
||||
$("INPUT[type='checkbox']").slice(last1,last2).attr('checked', true).trigger('change');
|
||||
$("INPUT[type='checkbox']").slice(last1,last2).prop('checked', true).trigger('change');
|
||||
else if (last1 && last2)
|
||||
$("INPUT[type='checkbox']").slice(last2,last1).attr('checked', true).trigger('change');
|
||||
$("INPUT[type='checkbox']").slice(last2,last1).prop('checked', true).trigger('change');
|
||||
});
|
||||
$("#nzo_select_invert").click(function(){
|
||||
$("INPUT[type='checkbox']").each( function() {
|
||||
$(this).attr('checked', !$(this).attr('checked')).trigger('change');
|
||||
$(this).prop('checked', !$(this).prop('checked')).trigger('change');
|
||||
});
|
||||
});
|
||||
$("#nzo_select_none").click(function(){
|
||||
$("INPUT[type='checkbox']").attr('checked', false).trigger('change');
|
||||
$("INPUT[type='checkbox']").prop('checked', false).trigger('change');
|
||||
});
|
||||
|
||||
// click filenames to select
|
||||
$('#config_content .nzoTable .nzf_row').click(function(event) {
|
||||
$('#box-'+$(event.target).parent().attr('id')).attr('checked', !$('#box-'+$(event.target).parent().attr('id')).attr('checked')).trigger('change');
|
||||
$('#box-'+$(event.target).parent().attr('id')).prop('checked', !$('#box-'+$(event.target).parent().attr('id')).prop('checked')).trigger('change');
|
||||
|
||||
// range event interaction -- see further above
|
||||
if (last1) last2 = last1;
|
||||
@@ -108,7 +108,7 @@ jQuery(document).ready(function($){
|
||||
|
||||
//
|
||||
$('#config_content .nzoTable .nzf_row input').change(function(e){
|
||||
if ($(e.target).attr('checked'))
|
||||
if ($(e.target).prop('checked'))
|
||||
$(e.target).parent().parent().addClass("nzo_highlight");
|
||||
else
|
||||
$(e.target).parent().parent().removeClass("nzo_highlight");
|
||||
|
||||
@@ -161,20 +161,20 @@ jQuery(function($){
|
||||
}).trigger('change');
|
||||
|
||||
// Confirm Queue Deletions toggle
|
||||
$("#confirmDeleteQueue").attr('checked', $.plush.confirmDeleteQueue ).change( function() {
|
||||
$.plush.confirmDeleteQueue = $("#confirmDeleteQueue").attr('checked');
|
||||
$("#confirmDeleteQueue").prop('checked', $.plush.confirmDeleteQueue ).change( function() {
|
||||
$.plush.confirmDeleteQueue = $("#confirmDeleteQueue").prop('checked');
|
||||
$.cookie('plushConfirmDeleteQueue', $.plush.confirmDeleteQueue ? 1 : 0, { expires: 365, path: '/' });
|
||||
});
|
||||
|
||||
// Confirm History Deletions toggle
|
||||
$("#confirmDeleteHistory").attr('checked', $.plush.confirmDeleteHistory ).change( function() {
|
||||
$.plush.confirmDeleteHistory = $("#confirmDeleteHistory").attr('checked');
|
||||
$("#confirmDeleteHistory").prop('checked', $.plush.confirmDeleteHistory ).change( function() {
|
||||
$.plush.confirmDeleteHistory = $("#confirmDeleteHistory").prop('checked');
|
||||
$.cookie('plushConfirmDeleteHistory', $.plush.confirmDeleteHistory ? 1 : 0, { expires: 365, path: '/' });
|
||||
});
|
||||
|
||||
// Block Refreshes on Hover toggle
|
||||
$("#blockRefresh").attr('checked', $.plush.blockRefresh ).change( function() {
|
||||
$.plush.blockRefresh = $("#blockRefresh").attr('checked');
|
||||
$("#blockRefresh").prop('checked', $.plush.blockRefresh ).change( function() {
|
||||
$.plush.blockRefresh = $("#blockRefresh").prop('checked');
|
||||
$.cookie('plushBlockRefresh', $.plush.blockRefresh ? 1 : 0, { expires: 365, path: '/' });
|
||||
});
|
||||
|
||||
@@ -690,22 +690,22 @@ $.plush.queueprevslots = $.plush.queuenoofslots; // for the next refresh
|
||||
|
||||
// selections
|
||||
$("#multiops_select_all").click(function(){
|
||||
$("INPUT[type='checkbox']","#queueTable").attr('checked', true).trigger('change');
|
||||
$("INPUT[type='checkbox']","#queueTable").prop('checked', true).trigger('change');
|
||||
});
|
||||
var last1, last2;
|
||||
$("#multiops_select_range").click(function(){
|
||||
if (last1 && last2 && last1 < last2)
|
||||
$("INPUT[type='checkbox']","#queueTable").slice(last1,last2).attr('checked', true).trigger('change');
|
||||
$("INPUT[type='checkbox']","#queueTable").slice(last1,last2).prop('checked', true).trigger('change');
|
||||
else if (last1 && last2)
|
||||
$("INPUT[type='checkbox']","#queueTable").slice(last2,last1).attr('checked', true).trigger('change');
|
||||
$("INPUT[type='checkbox']","#queueTable").slice(last2,last1).prop('checked', true).trigger('change');
|
||||
});
|
||||
$("#multiops_select_invert").click(function(){
|
||||
$("INPUT[type='checkbox']","#queueTable").each( function() {
|
||||
$(this).attr('checked', !$(this).attr('checked')).trigger('change');
|
||||
$(this).prop('checked', !$(this).prop('checked')).trigger('change');
|
||||
});
|
||||
});
|
||||
$("#multiops_select_none").click(function(){
|
||||
$("INPUT[type='checkbox']","#queueTable").attr('checked', false).trigger('change');
|
||||
$("INPUT[type='checkbox']","#queueTable").prop('checked', false).trigger('change');
|
||||
});
|
||||
$("#queue").delegate('.multiops','change',function(event) {
|
||||
// range event interaction
|
||||
@@ -713,7 +713,7 @@ $.plush.queueprevslots = $.plush.queuenoofslots; // for the next refresh
|
||||
last1 = $(event.target).parent()[0].rowIndex ? $(event.target).parent()[0].rowIndex : $(event.target).parent().parent()[0].rowIndex;
|
||||
|
||||
// checkbox state persistence
|
||||
if ($(this).attr('checked'))
|
||||
if ($(this).prop('checked'))
|
||||
$.plush.multiOpsChecks[$(this).parent().parent().attr('id')] = true;
|
||||
else if ($.plush.multiOpsChecks[$(this).parent().parent().attr('id')])
|
||||
delete $.plush.multiOpsChecks[$(this).parent().parent().attr('id')];
|
||||
@@ -740,7 +740,7 @@ $("a","#multiops_inputs").click(function(e){
|
||||
nzo_ids = nzo_ids.substr(1);
|
||||
if (!nzo_ids) return;
|
||||
|
||||
$(this).attr('disabled',true);
|
||||
$(this).prop('disabled',true);
|
||||
|
||||
if ($('#multi_status').val())
|
||||
$.ajax({
|
||||
@@ -777,7 +777,7 @@ $("a","#multiops_inputs").click(function(e){
|
||||
data: {mode: 'change_script', value: nzo_ids, value2: $('#multi_script').val(), apikey: $.plush.apikey}
|
||||
});
|
||||
|
||||
$(this).attr('disabled',false);
|
||||
$(this).prop('disabled',false);
|
||||
$.plush.RefreshQueue();
|
||||
});
|
||||
|
||||
@@ -1073,7 +1073,7 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
|
||||
$('<input type="checkbox" class="multiops" />').appendTo('#queue tr td.nzb_status_col');
|
||||
if ($.plush.multiOpsChecks) // checkbox state persistence
|
||||
for (var nzo_id in $.plush.multiOpsChecks)
|
||||
$('#'+nzo_id+' .multiops').attr('checked',true);
|
||||
$('#'+nzo_id+' .multiops').prop('checked',true);
|
||||
|
||||
|
||||
$('#queue-pagination span').removeClass('loading'); // Remove spinner graphic from pagination
|
||||
|
||||
|
Before Width: | Height: | Size: 105 B After Width: | Height: | Size: 129 B |
|
Before Width: | Height: | Size: 96 B After Width: | Height: | Size: 142 B |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 5.2 KiB |
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* jQuery UI CSS Framework 1.8.9
|
||||
* jQuery UI CSS Framework 1.8.15
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
|
||||
/*
|
||||
* jQuery UI CSS Framework 1.8.9
|
||||
* jQuery UI CSS Framework 1.8.15
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
@@ -280,20 +280,44 @@
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; }
|
||||
.ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
|
||||
.ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
|
||||
.ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
|
||||
.ui-corner-top { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; }
|
||||
.ui-corner-bottom { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
|
||||
.ui-corner-right { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
|
||||
.ui-corner-left { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
|
||||
.ui-corner-all { -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; }
|
||||
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; }
|
||||
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; }
|
||||
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; }
|
||||
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; }
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { background: #eeeeee url(images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
|
||||
.ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0pxdow=0px; -webkit-border-radius: 0pxdow=0px; border-radius: 0pxdow=0px; }/*
|
||||
* jQuery UI Button 1.8.9
|
||||
.ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0pxdow=0px; -khtml-border-radius: 0pxdow=0px; -webkit-border-radius: 0pxdow=0px; border-radius: 0pxdow=0px; }/*
|
||||
* jQuery UI Resizable 1.8.15
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Resizable#theming
|
||||
*/
|
||||
.ui-resizable { position: relative;}
|
||||
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
|
||||
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
||||
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
|
||||
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
|
||||
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
|
||||
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
|
||||
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
||||
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
||||
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
||||
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
|
||||
* jQuery UI Selectable 1.8.15
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Selectable#theming
|
||||
*/
|
||||
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
|
||||
/*
|
||||
* jQuery UI Button 1.8.15
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
@@ -331,7 +355,28 @@ input.ui-button { padding: .4em 1em; }
|
||||
/* workarounds */
|
||||
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
|
||||
/*
|
||||
* jQuery UI Tabs 1.8.9
|
||||
* jQuery UI Dialog 1.8.15
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Dialog#theming
|
||||
*/
|
||||
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
|
||||
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
|
||||
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
|
||||
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
||||
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
||||
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
||||
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
|
||||
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
|
||||
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
|
||||
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
|
||||
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
||||
.ui-draggable .ui-dialog-titlebar { cursor: move; }
|
||||
/*
|
||||
* jQuery UI Tabs 1.8.15
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
BIN
osx/image/sabnzbd_leopard.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
osx/image/sabnzbd_lion.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
osx/image/template.sparseimage.zip
Normal file
34
osx/unrar/license.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
****** ***** ****** UnRAR - free utility for RAR archives
|
||||
** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
****** ******* ****** License for use and distribution of
|
||||
** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
** ** ** ** ** ** FREEWARE version
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
The UnRAR utility is freeware. This means:
|
||||
|
||||
1. All copyrights to RAR and the utility UnRAR are exclusively
|
||||
owned by the author - Alexander Roshal.
|
||||
|
||||
2. The UnRAR utility may be freely distributed. It is allowed
|
||||
to distribute UnRAR inside of other software packages.
|
||||
|
||||
3. THE RAR ARCHIVER AND THE UnRAR UTILITY ARE DISTRIBUTED "AS IS".
|
||||
NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT
|
||||
YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS,
|
||||
DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING
|
||||
OR MISUSING THIS SOFTWARE.
|
||||
|
||||
4. Neither RAR binary code, WinRAR binary code, UnRAR source or UnRAR
|
||||
binary code may be used or reverse engineered to re-create the RAR
|
||||
compression algorithm, which is proprietary, without written
|
||||
permission of the author.
|
||||
|
||||
5. If you don't agree with terms of the license you must remove
|
||||
UnRAR files from your storage devices and cease to use the
|
||||
utility.
|
||||
|
||||
Thank you for your interest in RAR and UnRAR.
|
||||
|
||||
|
||||
Alexander L. Roshal
|
||||
BIN
osx/unrar/unrar
140
package.py
@@ -48,7 +48,8 @@ def DeleteFiles(name):
|
||||
''' Delete one file or set of files from wild-card spec '''
|
||||
for f in glob.glob(name):
|
||||
try:
|
||||
os.remove(f)
|
||||
if os.path.exists(f):
|
||||
os.remove(f)
|
||||
except:
|
||||
print "Cannot remove file %s" % f
|
||||
exit(1)
|
||||
@@ -70,26 +71,38 @@ def CheckPath(name):
|
||||
|
||||
|
||||
def PatchVersion(name):
|
||||
""" Patch in the Bazaar baseline number, but only when this is
|
||||
""" Patch in the Git commit hash, but only when this is
|
||||
an unmodified checkout
|
||||
"""
|
||||
global my_version, my_baseline
|
||||
|
||||
commit = ''
|
||||
try:
|
||||
pipe = subprocess.Popen(BzrVersion, shell=True, stdout=subprocess.PIPE).stdout
|
||||
pipe = subprocess.Popen(GitVersion, shell=True, stdout=subprocess.PIPE).stdout
|
||||
for line in pipe.read().split('\n'):
|
||||
if 'revno: ' in line:
|
||||
bzr = line.split(' ')[1].strip()
|
||||
if 'commit ' in line:
|
||||
commit = line.split(' ')[1].strip()
|
||||
break
|
||||
pipe.close()
|
||||
except:
|
||||
pass
|
||||
print 'Cannot run %s' % GitVersion
|
||||
exit(1)
|
||||
|
||||
if not bzr:
|
||||
print "WARNING: Cannot run %s" % BzrVersion
|
||||
bzr = 'unknown'
|
||||
state = ' (not committed)'
|
||||
try:
|
||||
pipe = subprocess.Popen(GitStatus, shell=True, stdout=subprocess.PIPE).stdout
|
||||
for line in pipe.read().split('\n'):
|
||||
if 'nothing to commit' in line:
|
||||
state = ''
|
||||
break
|
||||
pipe.close()
|
||||
except:
|
||||
print 'Cannot run %s' % GitStatus
|
||||
exit(1)
|
||||
|
||||
if not (bzr and bzr.isdigit()):
|
||||
bzr = 'unknown'
|
||||
if not commit:
|
||||
print "WARNING: Cannot run %s" % GitVersion
|
||||
commit = 'unknown'
|
||||
|
||||
try:
|
||||
ver = open(VERSION_FILE, 'rb')
|
||||
@@ -99,12 +112,12 @@ def PatchVersion(name):
|
||||
print "WARNING: cannot patch " + VERSION_FILE
|
||||
return
|
||||
|
||||
my_baseline = bzr
|
||||
my_baseline = commit + state
|
||||
my_version = name
|
||||
|
||||
regex = re.compile(r'__baseline__\s+=\s+"\w*"')
|
||||
text = re.sub(r'__baseline__\s*=\s*"[^"]*"', '__baseline__ = "%s"' % bzr, text)
|
||||
text = re.sub(r'__version__\s*=\s*"[^"]*"', '__version__ = "%s"' % name, text)
|
||||
text = re.sub(r'__baseline__\s*=\s*"[^"]*"', '__baseline__ = "%s"' % my_baseline, text)
|
||||
text = re.sub(r'__version__\s*=\s*"[^"]*"', '__version__ = "%s"' % my_version, text)
|
||||
|
||||
try:
|
||||
ver = open(VERSION_FILE, 'wb')
|
||||
@@ -120,14 +133,14 @@ def PairList(src):
|
||||
A dir returns for its root and each of its subdirs
|
||||
(path, <list-of-files>)
|
||||
Always return paths with Unix slashes.
|
||||
Skip all Bazaar elements, .bak .pyc .pyo and *.~*
|
||||
Skip all Git elements, .bak .pyc .pyo and *.~*
|
||||
"""
|
||||
lst = []
|
||||
for item in src:
|
||||
if item.endswith('/'):
|
||||
for root, dirs, files in os.walk(item.rstrip('/\\')):
|
||||
path = root.replace('\\', '/')
|
||||
if path.find('.bzr') < 0:
|
||||
if path.find('.git') < 0:
|
||||
flist = []
|
||||
for file in files:
|
||||
if not (file.endswith('.bak') or file.endswith('.pyc') or file.endswith('.pyo') or '~' in file):
|
||||
@@ -239,18 +252,27 @@ def check_runtimes():
|
||||
if path:
|
||||
path = os.path.join(path, 'Bazaar')
|
||||
if not os.path.exists(path):
|
||||
path = None
|
||||
if not path:
|
||||
print 'Cannot find runtime libraries, have you installed Bazaar'
|
||||
print 'in %s ?' % path
|
||||
exit(1)
|
||||
print 'Cannot find runtime libraries, have you installed Bazaar'
|
||||
print 'in %s ?' % path
|
||||
exit(1)
|
||||
return path
|
||||
|
||||
def write_dll_message(path):
|
||||
f = open(path, 'w')
|
||||
f.write('''
|
||||
**** IMPORTANT ****
|
||||
|
||||
If you get a Windows error message, claiming that DLL files are missing,
|
||||
please install "Microsoft Visual C++ 2008 Redistributable Package (x86)".
|
||||
Download from http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=29
|
||||
Install this and *not* the SP1 package (or install both).
|
||||
|
||||
''')
|
||||
f.close()
|
||||
|
||||
print sys.argv[0]
|
||||
|
||||
Bazaar = CheckPath('bzr')
|
||||
Git = CheckPath('git')
|
||||
ZipCmd = CheckPath('zip')
|
||||
UnZipCmd = CheckPath('unzip')
|
||||
if os.name == 'nt':
|
||||
@@ -258,12 +280,13 @@ if os.name == 'nt':
|
||||
else:
|
||||
NSIS = '-'
|
||||
|
||||
BzrRevertApp = Bazaar + ' revert --no-backup '
|
||||
BzrUpdateApp = Bazaar + ' update '
|
||||
BzrRevert = Bazaar + ' revert --no-backup ' + VERSION_FILE
|
||||
BzrVersion = Bazaar + ' version-info'
|
||||
GitRevertApp = Git + ' checkout -- '
|
||||
#GitUpdateApp = Git + ' update '
|
||||
GitRevertVersion = GitRevertApp + ' ' + VERSION_FILE
|
||||
GitVersion = Git + ' log -1'
|
||||
GitStatus = Git + ' status'
|
||||
|
||||
if not (Bazaar and ZipCmd and UnZipCmd and NSIS):
|
||||
if not (Git and ZipCmd and UnZipCmd and NSIS):
|
||||
exit(1)
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
@@ -299,6 +322,7 @@ PatchVersion(release)
|
||||
|
||||
# List of data elements, directories end with a '/'
|
||||
data_files = [
|
||||
'ABOUT.txt',
|
||||
'README.txt',
|
||||
'INSTALL.txt',
|
||||
'GPL2.txt',
|
||||
@@ -307,6 +331,7 @@ data_files = [
|
||||
'COPYRIGHT.txt',
|
||||
'ISSUES.txt',
|
||||
'nzb.ico',
|
||||
'sabnzbd.ico',
|
||||
'Sample-PostProc.cmd',
|
||||
'Sample-PostProc.sh',
|
||||
'PKG-INFO',
|
||||
@@ -341,18 +366,34 @@ options = dict(
|
||||
if target == 'app':
|
||||
if not platform.system() == 'Darwin':
|
||||
print "Sorry, only works on Apple OSX!"
|
||||
os.system(BzrRevert)
|
||||
os.system(GitRevertVersion)
|
||||
exit(1)
|
||||
|
||||
# Check which Python flavour
|
||||
apple_py = 'ActiveState' not in sys.copyright
|
||||
|
||||
#Create sparseimage from template
|
||||
os.system("unzip sabnzbd-template.sparseimage.zip")
|
||||
os.rename('sabnzbd-template.sparseimage', fileImg)
|
||||
os.system("unzip osx/image/template.sparseimage.zip")
|
||||
os.rename('template.sparseimage', fileImg)
|
||||
|
||||
#mount sparseimage and modify volume label
|
||||
os.system("hdiutil mount %s | grep /Volumes/SABnzbd >mount.log" % (fileImg))
|
||||
|
||||
# Select OSX version specific background image
|
||||
# Take care to preserve the special attributes of the background image file
|
||||
if [int(n) for n in platform.mac_ver()[0].split('.')] >= [10, 7, 0]:
|
||||
# Lion and higher
|
||||
f = open('osx/image/sabnzbd_lion.png', 'rb')
|
||||
png = f.read()
|
||||
f.close()
|
||||
f = open('/Volumes/SABnzbd/sabnzbd.png', 'wb')
|
||||
f.write(png)
|
||||
f.close()
|
||||
else:
|
||||
# Snow Leopard and lower
|
||||
pass
|
||||
|
||||
# Rename the volume
|
||||
fp = open('mount.log', 'r')
|
||||
data = fp.read()
|
||||
fp.close()
|
||||
@@ -407,13 +448,13 @@ if target == 'app':
|
||||
os.system("cp -pR osx/par2/ dist/SABnzbd.app/Contents/Resources/osx/par2>/dev/null")
|
||||
os.system("mkdir dist/SABnzbd.app/Contents/Resources/osx/unrar>/dev/null")
|
||||
os.system("cp -pR osx/unrar/ dist/SABnzbd.app/Contents/Resources/osx/unrar>/dev/null")
|
||||
os.system("find dist/SABnzbd.app -name .bzr | xargs rm -rf")
|
||||
os.system("find dist/SABnzbd.app -name .git | xargs rm -rf")
|
||||
|
||||
#copy builded app to mounted sparseimage
|
||||
os.system("cp -r dist/SABnzbd.app /Volumes/%s/>/dev/null" % volume)
|
||||
|
||||
print 'Create src %s' % fileOSr
|
||||
os.system('tar -czf %s --exclude ".bzr*" --exclude "sab*.zip" --exclude "SAB*.tar.gz" --exclude "*.cmd" --exclude "*.pyc" '
|
||||
os.system('tar -czf %s --exclude ".git*" --exclude "sab*.zip" --exclude "SAB*.tar.gz" --exclude "*.cmd" --exclude "*.pyc" '
|
||||
'--exclude "*.sparseimage" --exclude "dist" --exclude "build" --exclude "*.nsi" --exclude "win" --exclude "*.dmg" '
|
||||
'./ >/dev/null' % (fileOSr) )
|
||||
|
||||
@@ -435,18 +476,17 @@ if target == 'app':
|
||||
os.system("hdiutil internet-enable %s" % fileDmg)
|
||||
|
||||
|
||||
os.system(BzrRevertApp + "NSIS_Installer.nsi")
|
||||
os.system(BzrRevertApp + VERSION_FILEAPP)
|
||||
os.system(BzrRevertApp + VERSION_FILE)
|
||||
os.system(BzrUpdateApp)
|
||||
os.system(GitRevertApp + "NSIS_Installer.nsi")
|
||||
os.system(GitRevertApp + VERSION_FILEAPP)
|
||||
os.system(GitRevertApp + VERSION_FILE)
|
||||
|
||||
elif target in ('binary', 'installer'):
|
||||
if not py2exe:
|
||||
print "Sorry, only works on Windows!"
|
||||
os.system(BzrRevert)
|
||||
os.system(GitRevertVersion)
|
||||
exit(1)
|
||||
|
||||
run_times = check_runtimes()
|
||||
#run_times = check_runtimes()
|
||||
|
||||
# Create MO files
|
||||
os.system('tools\\make_mo.py all')
|
||||
@@ -521,14 +561,21 @@ elif target in ('binary', 'installer'):
|
||||
rename_file('dist', Win32HelperName, Win32ServiceHelpName)
|
||||
|
||||
|
||||
############################
|
||||
# Remove unwanted system DLL files that Py2Exe copies when running on Win7
|
||||
DeleteFiles(r'dist\lib\API-MS-Win-*.dll')
|
||||
DeleteFiles(r'dist\lib\MSWSOCK.DLL')
|
||||
DeleteFiles(r'dist\lib\POWRPROF.DLL')
|
||||
|
||||
############################
|
||||
# Copy MS runtime files or Curl
|
||||
if run_times:
|
||||
# MS Runtimes for Python 2.6+
|
||||
shutil.copy2(os.path.join(run_times, r'Microsoft.VC90.CRT.manifest'), r'dist')
|
||||
shutil.copy2(os.path.join(run_times, r'msvcp90.dll'), r'dist')
|
||||
shutil.copy2(os.path.join(run_times, r'msvcr90.dll'), r'dist')
|
||||
shutil.copy2(os.path.join(run_times, r'lib\Microsoft.VC90.CRT.manifest'), r'dist\lib')
|
||||
if sys.version > (2, 5):
|
||||
#Won't work with OpenSSL DLLs :(
|
||||
#shutil.copy2(os.path.join(run_times, r'Microsoft.VC90.CRT.manifest'), r'dist')
|
||||
#shutil.copy2(os.path.join(run_times, r'msvcp90.dll'), r'dist')
|
||||
#shutil.copy2(os.path.join(run_times, r'msvcr90.dll'), r'dist')
|
||||
#shutil.copy2(os.path.join(run_times, r'lib\Microsoft.VC90.CRT.manifest'), r'dist\lib')
|
||||
pass
|
||||
else:
|
||||
# Curl for Python 2.5
|
||||
os.system(r'unzip -o win\curl\curl.zip -d dist\lib')
|
||||
@@ -542,12 +589,13 @@ elif target in ('binary', 'installer'):
|
||||
|
||||
|
||||
DeleteFiles(fileBin)
|
||||
write_dll_message('dist/IMPORTANT_MESSAGE.txt')
|
||||
os.rename('dist', prod)
|
||||
os.system('zip -9 -r -X %s %s' % (fileBin, prod))
|
||||
time.sleep(1.0)
|
||||
os.rename(prod, 'dist')
|
||||
|
||||
os.system(BzrRevert)
|
||||
os.system(GitRevertVersion)
|
||||
|
||||
############################
|
||||
# Check for uncompressed sqlite3.dll
|
||||
@@ -614,5 +662,5 @@ else:
|
||||
# Prepare the TAR.GZ pacakge
|
||||
CreateTar('srcdist', fileSrc, prod)
|
||||
|
||||
os.system(BzrRevert)
|
||||
os.system(GitRevertVersion)
|
||||
|
||||
|
||||
@@ -8,14 +8,14 @@ msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.6.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-01-15 19:19+0000\n"
|
||||
"PO-Revision-Date: 2011-01-16 09:57+0000\n"
|
||||
"Last-Translator: Fox Ace <Unknown>\n"
|
||||
"PO-Revision-Date: 2011-08-01 19:14+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@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: 2011-01-17 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 12177)\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-02 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 13552)\n"
|
||||
"Language: fr\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
@@ -150,14 +150,14 @@ msgstr ""
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd a ajouté $amount fichier(s) à la file d'attente\n"
|
||||
"Subject: SABnzbd a ajouté $amount fichier(s) à la file d'attente\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## Après cela vient le contenu, la ligne vide est nécessaire!\n"
|
||||
"\n"
|
||||
"Bonjour,\n"
|
||||
"\n"
|
||||
"SABnzbd a ajouté $amount fichier(s) à la file d'attente.\n"
|
||||
"SABnzbd a ajouté $amount fichier(s) à la file d'attente.\n"
|
||||
"Ils proviennent du Flux RSS \"$feed\".\n"
|
||||
"<!--#for $job in $jobs#-->\n"
|
||||
" $job <!--#slurp#-->\n"
|
||||
|
||||
@@ -65,32 +65,32 @@ msgid ""
|
||||
"<!--#end if#-->\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## Șablon Email Original pentru SABnzbd\n"
|
||||
"## Acesta este un Șablon Cheetah\n"
|
||||
"## Documentație: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"## sablon Email Original pentru SABnzbd\n"
|
||||
"## Acesta este un sablon Cheetah\n"
|
||||
"## Documentatie: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"##Rândurile noi și caracterele spațiu sunt importante!\n"
|
||||
"##Rândurile noi si caracterele spatiu sunt importante!\n"
|
||||
"##\n"
|
||||
"## Acestea sunt antetele email\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd <!--#if $status then \"a terminat\" else \"nu a reuşit\" #--"
|
||||
"Subject: SABnzbd <!--#if $status then \"a terminat\" else \"nu a reusit\" #--"
|
||||
"> sarcina $name\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## După acesta urmează conţinutul, este necesar o linie goală!\n"
|
||||
"## Dupã acesta urmeazã continutul, este necesar o linie goalã!\n"
|
||||
"\n"
|
||||
"Salut,\n"
|
||||
"<!--#if $status #-->\n"
|
||||
"SABnzbd a descărcat \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin "
|
||||
"SABnzbd a descãrcat \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin "
|
||||
"#\" + $msgid + \")\"#-->\n"
|
||||
"<!--#else#-->\n"
|
||||
"SABnzbd nu a reuşit să descarce \"$name\" <!--#if $msgid==\"\" then \"\" "
|
||||
"SABnzbd nu a reusit sã descarce \"$name\" <!--#if $msgid==\"\" then \"\" "
|
||||
"else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
"<!--#end if#-->\n"
|
||||
"Terminat la $end_time\n"
|
||||
"Mărime $size\n"
|
||||
"Mãrime $size\n"
|
||||
"\n"
|
||||
"Rezultatele sarcinii:\n"
|
||||
"<!--#for $stage in $stages #-->\n"
|
||||
@@ -105,7 +105,7 @@ msgstr ""
|
||||
"$script_output\n"
|
||||
"<!--#end if#-->\n"
|
||||
"<!--#if $status #-->\n"
|
||||
"Bucuraţi-vă!\n"
|
||||
"Bucurati-vã!\n"
|
||||
"<!--#else#-->\n"
|
||||
"Ne pare rau!\n"
|
||||
"<!--#end if#-->\n"
|
||||
@@ -138,24 +138,24 @@ msgid ""
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
"## Şablon Email RSS pentru SABnzbd\n"
|
||||
"## Acesta este un şablon Cheetah \n"
|
||||
"## Documentaţie: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"## Sablon Email RSS pentru SABnzbd\n"
|
||||
"## Acesta este un sablon Cheetah \n"
|
||||
"## Documentatie: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Rândurile noi și caracterele spațiu sunt importante!\n"
|
||||
"## Rândurile noi si caracterele spatiu sunt importante!\n"
|
||||
"##\n"
|
||||
"## Acestea sunt antetele email\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd a adăugat $amount sarcini în coadă\n"
|
||||
"Subject: SABnzbd a adãugat $amount sarcini în coadã\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## După acesta urmează conţinutul, este necesar o linie goală!\n"
|
||||
"## Dupã acesta urmeazã continutul, este necesar o linie goalã!\n"
|
||||
"\n"
|
||||
"Salut,\n"
|
||||
"\n"
|
||||
"SABnzbd a adăugat $amount sarcină(e) în coadă.\n"
|
||||
"SABnzbd a adãugat $amount sarcinã(e) în coadã.\n"
|
||||
"Ele sunt din fluxuri RSS \"$feed\".\n"
|
||||
"<!--#for $job in $jobs#-->\n"
|
||||
" $job <!--#slurp#-->\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: 2011-07-18 21:36+West-Europa (zomertijd)\n"
|
||||
"POT-Creation-Date: 2011-09-04 12:16+CEST\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
@@ -44,156 +44,88 @@ msgstr ""
|
||||
msgid "Please be aware the 0.0.0.0 hostname will need an IPv6 address for external access"
|
||||
msgstr ""
|
||||
|
||||
#: SABnzbd.py:1281 [Warning message]
|
||||
#: SABnzbd.py:1273 [Warning message]
|
||||
msgid "Disabled HTTPS because of missing CERT and KEY files"
|
||||
msgstr ""
|
||||
|
||||
#: SABnzbd.py:1526 # sabnzbd/osxmenu.py:731
|
||||
#: SABnzbd.py:1532 # sabnzbd/osxmenu.py:731
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:31 [Message class for Growl server]
|
||||
msgid "Startup/Shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:32 [Message class for Growl server]
|
||||
msgid "Added NZB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:33 [Message class for Growl server]
|
||||
msgid "Post-processing started"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:34 [Message class for Growl server]
|
||||
msgid "Job finished"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:35 [Message class for Growl server]
|
||||
msgid "Other Messages"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:35
|
||||
msgid "The hostname is not set."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:41
|
||||
msgid "There are no connections set. Please set at least one connection."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:74
|
||||
msgid "Password masked in ******, please re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:78
|
||||
msgid "Invalid server details"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:90
|
||||
msgid "Timed out: Try enabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:92
|
||||
msgid "Timed out"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:97
|
||||
msgid "Invalid server address."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:119
|
||||
msgid "Server requires username and password."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:122
|
||||
msgid "Connection Successful!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:125
|
||||
msgid "Authentication failed, check username/password."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:128
|
||||
msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:131
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:159 [Warning message]
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:425
|
||||
#: sabnzbd/__init__.py:429
|
||||
msgid "fetching msgid %s from www.newzbin.com"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:431 [Error message]
|
||||
#: sabnzbd/__init__.py:435 [Error message]
|
||||
msgid "Error Fetching msgid %s from www.newzbin.com - Please make sure your Username and Password are set"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:443
|
||||
#: sabnzbd/__init__.py:447
|
||||
msgid "Trying to fetch NZB from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:566 [Error message] # sabnzbd/config.py:751 [Error message]
|
||||
#: sabnzbd/__init__.py:570 [Error message] # sabnzbd/config.py:749 [Error message]
|
||||
msgid "Cannot create temp file for %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:584 [Warning message] # sabnzbd/__init__.py:596 [Warning message]
|
||||
#: sabnzbd/__init__.py:588 [Warning message] # sabnzbd/__init__.py:600 [Warning message]
|
||||
msgid "Trying to set status of non-existing server %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:729 [Warning message]
|
||||
#: sabnzbd/__init__.py:733 [Warning message]
|
||||
msgid "Too little diskspace forcing PAUSE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:755 [Error message]
|
||||
#: sabnzbd/__init__.py:759 [Error message]
|
||||
msgid "Failure in tempfile.mkstemp"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:777 [Error message] # sabnzbd/__init__.py:840 [Error message]
|
||||
#: sabnzbd/__init__.py:786 [Error message] # sabnzbd/__init__.py:854 [Error message]
|
||||
msgid "Saving %s failed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/__init__.py:804 [Error message] # sabnzbd/__init__.py:869 [Error message]
|
||||
#: sabnzbd/__init__.py:813 [Error message] # sabnzbd/__init__.py:883 [Error message]
|
||||
msgid "Loading %s failed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1396 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:66 [No value, used in dropdown menus]
|
||||
#: sabnzbd/api.py:1410 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:66 [No value, used in dropdown menus]
|
||||
#: sabnzbd/skintext.py:636 [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1398 # sabnzbd/interface.py:92 # sabnzbd/skintext.py:65 [Default value, used in dropdown menus]
|
||||
#: sabnzbd/api.py:1412 # sabnzbd/interface.py:92 # sabnzbd/skintext.py:65 [Default value, used in dropdown menus]
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1454 # sabnzbd/interface.py:2173
|
||||
#: sabnzbd/api.py:1468 # sabnzbd/interface.py:2183
|
||||
msgid "WARNING:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1454 # sabnzbd/interface.py:2173 # sabnzbd/interface.py:2266
|
||||
#: sabnzbd/api.py:1468 # sabnzbd/interface.py:2183 # sabnzbd/interface.py:2276
|
||||
msgid "ERROR:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1512
|
||||
#: sabnzbd/api.py:1526
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1535 [Error message]
|
||||
#: sabnzbd/api.py:1549 [Error message]
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1722 [Single letter abbreviation of day]
|
||||
#: sabnzbd/api.py:1736 [Single letter abbreviation of day]
|
||||
msgid "d"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1723 [Single letter abbreviation of hour]
|
||||
#: sabnzbd/api.py:1737 [Single letter abbreviation of hour]
|
||||
msgid "h"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py:1724 [Single letter abbreviation of minute]
|
||||
#: sabnzbd/api.py:1738 [Single letter abbreviation of minute]
|
||||
msgid "m"
|
||||
msgstr ""
|
||||
|
||||
@@ -205,11 +137,11 @@ msgstr ""
|
||||
msgid "Disk error on creating file %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/assembler.py:108 [Warning message]
|
||||
#: sabnzbd/assembler.py:109 [Warning message]
|
||||
msgid "WARNING: Paused job \"%s\" because of encrypted RAR file"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/assembler.py:140
|
||||
#: sabnzbd/assembler.py:141
|
||||
msgid "%s missing"
|
||||
msgstr ""
|
||||
|
||||
@@ -217,27 +149,31 @@ msgstr ""
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1460
|
||||
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1464
|
||||
msgid "Server address required"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py:874 [Error message]
|
||||
#: sabnzbd/config.py:204
|
||||
msgid "Cannot create %s folder %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py:872 [Error message]
|
||||
msgid "Incorrectly encoded password %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py:898
|
||||
#: sabnzbd/config.py:896
|
||||
msgid "%s is not a correct octal value"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py:907
|
||||
#: sabnzbd/config.py:905
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py:915
|
||||
#: sabnzbd/config.py:913
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py:924
|
||||
#: sabnzbd/config.py:922
|
||||
msgid "Folder \"%s\" does not exist"
|
||||
msgstr ""
|
||||
|
||||
@@ -253,7 +189,7 @@ msgstr ""
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/database.py:365 [Error message] # sabnzbd/database.py:382 [Error message]
|
||||
#: sabnzbd/database.py:373 [Error message] # sabnzbd/database.py:390 [Error message]
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr ""
|
||||
|
||||
@@ -359,15 +295,19 @@ msgstr ""
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py:163
|
||||
msgid "No email templates found"
|
||||
#: sabnzbd/emailer.py:180
|
||||
msgid "No recipients given, no email sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py:178
|
||||
#: sabnzbd/emailer.py:182
|
||||
msgid "Invalid encoding of email template %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py:222
|
||||
#: sabnzbd/emailer.py:185
|
||||
msgid "No email templates found"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py:230
|
||||
msgid ""
|
||||
"To: %s\n"
|
||||
"From: %s\n"
|
||||
@@ -429,89 +369,89 @@ msgstr ""
|
||||
msgid "No PAR2 program found, repairs not possible<br />"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1025 # sabnzbd/interface.py:1037
|
||||
#: sabnzbd/interface.py:1028 # sabnzbd/interface.py:1040
|
||||
msgid "Initiating restart...<br />"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1027 # sabnzbd/interface.py:1039
|
||||
#: sabnzbd/interface.py:1030 # sabnzbd/interface.py:1042
|
||||
msgid " <br />SABnzbd shutdown finished.<br />Wait for about 5 second and then click the button below.<br /><br /><strong><a href=\"..\">Refresh</a></strong><br />"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1572 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:479 [Config->RSS, tab header]
|
||||
#: sabnzbd/interface.py:1578 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:479 [Config->RSS, tab header]
|
||||
msgid "Feed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1784 # sabnzbd/skintext.py:80
|
||||
#: sabnzbd/interface.py:1791 # sabnzbd/skintext.py:80
|
||||
msgid "Daily"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1785 # sabnzbd/skintext.py:81
|
||||
#: sabnzbd/interface.py:1792 # sabnzbd/skintext.py:81
|
||||
msgid "Monday"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1786 # sabnzbd/skintext.py:82
|
||||
#: sabnzbd/interface.py:1793 # sabnzbd/skintext.py:82
|
||||
msgid "Tuesday"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1787 # sabnzbd/skintext.py:83
|
||||
#: sabnzbd/interface.py:1794 # sabnzbd/skintext.py:83
|
||||
msgid "Wednesday"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1788 # sabnzbd/skintext.py:84
|
||||
#: sabnzbd/interface.py:1795 # sabnzbd/skintext.py:84
|
||||
msgid "Thursday"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1789 # sabnzbd/skintext.py:85
|
||||
#: sabnzbd/interface.py:1796 # sabnzbd/skintext.py:85
|
||||
msgid "Friday"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1790 # sabnzbd/skintext.py:86
|
||||
#: sabnzbd/interface.py:1797 # sabnzbd/skintext.py:86
|
||||
msgid "Saturday"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:1791 # sabnzbd/skintext.py:87
|
||||
#: sabnzbd/interface.py:1798 # sabnzbd/skintext.py:87
|
||||
msgid "Sunday"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2165
|
||||
#: sabnzbd/interface.py:2175
|
||||
msgid " Resolving address"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2266
|
||||
#: sabnzbd/interface.py:2276
|
||||
msgid "Incorrect parameter"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2266 # sabnzbd/interface.py:2292
|
||||
#: sabnzbd/interface.py:2316 # sabnzbd/interface.py:2333
|
||||
#: sabnzbd/interface.py:2418 # sabnzbd/interface.py:2437 # sabnzbd/skintext.py:98 [Generic "Back" button]
|
||||
#: sabnzbd/interface.py:2276 # sabnzbd/interface.py:2302
|
||||
#: sabnzbd/interface.py:2326 # sabnzbd/interface.py:2343
|
||||
#: sabnzbd/interface.py:2428 # sabnzbd/interface.py:2447 # sabnzbd/skintext.py:98 [Generic "Back" button]
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2333
|
||||
#: sabnzbd/interface.py:2343
|
||||
msgid "Job \"%s\" was re-added to the queue"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2418
|
||||
#: sabnzbd/interface.py:2428
|
||||
msgid "Jobs marked with a '*' will not be automatically downloaded."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2418 # sabnzbd/skintext.py:493 [Config->RSS section header]
|
||||
#: sabnzbd/interface.py:2428 # sabnzbd/skintext.py:493 [Config->RSS section header]
|
||||
msgid "Matched"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2419
|
||||
#: sabnzbd/interface.py:2429
|
||||
msgid "Not matched"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2419 # sabnzbd/skintext.py:495 [Config->RSS section header]
|
||||
#: sabnzbd/interface.py:2429 # sabnzbd/skintext.py:495 [Config->RSS section header]
|
||||
msgid "Downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2437
|
||||
#: sabnzbd/interface.py:2447
|
||||
msgid "Downloaded so far"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py:2482
|
||||
#: sabnzbd/interface.py:2492
|
||||
msgid "Incorrect value for %s: %s"
|
||||
msgstr ""
|
||||
|
||||
@@ -809,59 +749,59 @@ msgstr ""
|
||||
msgid "%s -> Unknown encoding"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:410 [Warning message]
|
||||
#: sabnzbd/nzbstuff.py:411 [Warning message]
|
||||
msgid "File %s is empty, skipping"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:438 [Warning message]
|
||||
#: sabnzbd/nzbstuff.py:439 [Warning message]
|
||||
msgid "Failed to import %s files from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:656 [Warning message] # sabnzbd/nzbstuff.py:661 [Warning message]
|
||||
#: sabnzbd/nzbstuff.py:657 [Warning message] # sabnzbd/nzbstuff.py:662 [Warning message]
|
||||
msgid "Invalid NZB file %s, skipping (reason=%s, line=%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:669 [Warning message]
|
||||
#: sabnzbd/nzbstuff.py:670 [Warning message]
|
||||
msgid "Empty NZB file %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:728 [Warning message]
|
||||
#: sabnzbd/nzbstuff.py:729 [Warning message]
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:733 [Warning message]
|
||||
#: sabnzbd/nzbstuff.py:734 [Warning message]
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:911 [Queue indicator for duplicate job]
|
||||
#: sabnzbd/nzbstuff.py:912 [Queue indicator for duplicate job]
|
||||
msgid "DUPLICATE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:913 [Queue indicator for encrypted job]
|
||||
#: sabnzbd/nzbstuff.py:914 [Queue indicator for encrypted job]
|
||||
msgid "ENCRYPTED"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:915 [Queue indicator for oversized job]
|
||||
#: sabnzbd/nzbstuff.py:916 [Queue indicator for oversized job]
|
||||
msgid "TOO LARGE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:970
|
||||
#: sabnzbd/nzbstuff.py:971
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:976
|
||||
#: sabnzbd/nzbstuff.py:977
|
||||
msgid "%s articles were malformed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:978
|
||||
#: sabnzbd/nzbstuff.py:979
|
||||
msgid "%s articles were missing"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:980
|
||||
#: sabnzbd/nzbstuff.py:981
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py:1010 [Error message]
|
||||
#: sabnzbd/nzbstuff.py:1011 [Error message]
|
||||
msgid "Error importing %s"
|
||||
msgstr ""
|
||||
|
||||
@@ -1094,95 +1034,95 @@ msgstr ""
|
||||
msgid "Failed to remove nzo from postproc queue (id)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:224
|
||||
#: sabnzbd/postproc.py:242
|
||||
msgid "Download failed - Out of your server's retention?"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:278
|
||||
#: sabnzbd/postproc.py:296
|
||||
msgid "Cannot create final folder %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:300
|
||||
#: sabnzbd/postproc.py:318
|
||||
msgid "No post-processing because of failed verification"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:308
|
||||
#: sabnzbd/postproc.py:326
|
||||
msgid "Moving"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:328
|
||||
#: sabnzbd/postproc.py:350
|
||||
msgid "Sent %s to queue"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:347 [Error message]
|
||||
#: sabnzbd/postproc.py:369 [Error message]
|
||||
msgid "Error renaming \"%s\" to \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:366
|
||||
#: sabnzbd/postproc.py:388
|
||||
msgid "Running script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:367
|
||||
#: sabnzbd/postproc.py:389
|
||||
msgid "Running user script %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:376
|
||||
#: sabnzbd/postproc.py:398
|
||||
msgid "Ran %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:397
|
||||
#: sabnzbd/postproc.py:419
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:401
|
||||
#: sabnzbd/postproc.py:423
|
||||
msgid "View script output"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:414
|
||||
#: sabnzbd/postproc.py:436
|
||||
msgid "Download Completed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:417 # sabnzbd/postproc.py:426
|
||||
#: sabnzbd/postproc.py:439 # sabnzbd/postproc.py:448
|
||||
msgid "Download Failed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:421 [Error message]
|
||||
#: sabnzbd/postproc.py:443 [Error message]
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:424
|
||||
#: sabnzbd/postproc.py:446
|
||||
msgid "see logfile"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:425
|
||||
#: sabnzbd/postproc.py:447
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:453 [Error message]
|
||||
#: sabnzbd/postproc.py:475 [Error message]
|
||||
msgid "Cleanup of %s failed."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:464 [Error message]
|
||||
#: sabnzbd/postproc.py:485 [Error message]
|
||||
msgid "Error removing workdir (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:476
|
||||
#: sabnzbd/postproc.py:497
|
||||
msgid "Post-processing"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:515
|
||||
#: sabnzbd/postproc.py:536
|
||||
msgid "Some files failed to verify against \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:519
|
||||
#: sabnzbd/postproc.py:540
|
||||
msgid "[%s] No par2 sets"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:551 [Error message] # sabnzbd/postproc.py:558 [Error message]
|
||||
#: sabnzbd/postproc.py:572 [Error message] # sabnzbd/postproc.py:579 [Error message]
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py:609 [Error message] # sabnzbd/postproc.py:684 [Error message]
|
||||
#: sabnzbd/postproc.py:630 [Error message] # sabnzbd/postproc.py:705 [Error message]
|
||||
msgid "Removing %s failed"
|
||||
msgstr ""
|
||||
|
||||
@@ -1198,27 +1138,27 @@ msgstr ""
|
||||
msgid "Error while shutting down system"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py:125 [Error message]
|
||||
#: sabnzbd/rss.py:127 [Error message]
|
||||
msgid "Could not compile regex: %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py:238 [Error message] # sabnzbd/rss.py:240
|
||||
#: sabnzbd/rss.py:264 [Error message] # sabnzbd/rss.py:266
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py:297 # sabnzbd/rss.py:309
|
||||
#: sabnzbd/rss.py:323 # sabnzbd/rss.py:335
|
||||
msgid "Failed to retrieve RSS from %s: %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py:303
|
||||
#: sabnzbd/rss.py:329
|
||||
msgid "Do not have valid authentication for feed %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py:313
|
||||
#: sabnzbd/rss.py:339
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py:624 [Warning message]
|
||||
#: sabnzbd/rss.py:640 [Warning message]
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr ""
|
||||
|
||||
@@ -3816,15 +3756,83 @@ msgstr ""
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/tvsort.py:1031 [Error message]
|
||||
#: sabnzbd/tvsort.py:1035 [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/urlgrabber.py:272
|
||||
#: sabnzbd/urlgrabber.py:274
|
||||
msgid "Problem accessing nzbmatrix server (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/urlgrabber.py:281
|
||||
#: sabnzbd/urlgrabber.py:283
|
||||
msgid "Invalid nzbmatrix report number %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:31 [Message class for Growl server]
|
||||
msgid "Startup/Shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:32 [Message class for Growl server]
|
||||
msgid "Added NZB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:33 [Message class for Growl server]
|
||||
msgid "Post-processing started"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:34 [Message class for Growl server]
|
||||
msgid "Job finished"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/osx.py:35 [Message class for Growl server]
|
||||
msgid "Other Messages"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:35
|
||||
msgid "The hostname is not set."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:41
|
||||
msgid "There are no connections set. Please set at least one connection."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:74
|
||||
msgid "Password masked in ******, please re-enter"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:78
|
||||
msgid "Invalid server details"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:90
|
||||
msgid "Timed out: Try enabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:92
|
||||
msgid "Timed out"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:97
|
||||
msgid "Invalid server address."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:119
|
||||
msgid "Server requires username and password."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:122
|
||||
msgid "Connection Successful!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:125
|
||||
msgid "Authentication failed, check username/password."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:128
|
||||
msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py:131
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr ""
|
||||
|
||||
|
||||
1849
po/main/da.po
1896
po/main/de.po
1850
po/main/fr.po
1740
po/main/nb.po
1862
po/main/nl.po
1714
po/main/ro.px
1741
po/main/sv.po
@@ -14,54 +14,54 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 7bit\n"
|
||||
|
||||
#: NSIS_Installer.nsi:350
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:359
|
||||
msgid "Show Release Notes"
|
||||
msgid "Show Release Notes"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:368
|
||||
msgid "Support the project, Donate!"
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:377
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:386
|
||||
msgid " >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
msgid " >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:395
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:404
|
||||
msgid "Run at startup"
|
||||
msgid "Run at startup"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:413
|
||||
msgid "Desktop Icon"
|
||||
msgid "Desktop Icon"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:422
|
||||
msgid "NZB File association"
|
||||
msgid "NZB File association"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:431
|
||||
msgid "Delete Program"
|
||||
msgid "Delete Program"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:440
|
||||
msgid "Delete Settings"
|
||||
msgid "Delete Settings"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:449
|
||||
msgid "Delete Logs"
|
||||
msgid "Delete Logs"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:458
|
||||
msgid "Delete Cache"
|
||||
msgid "Delete Cache"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -7,34 +7,34 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.6.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-21 19:21+0000\n"
|
||||
"POT-Creation-Date: 2011-08-20 14:21+0000\n"
|
||||
"PO-Revision-Date: 2011-03-11 15:27+0000\n"
|
||||
"Last-Translator: Rene <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@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: 2011-06-22 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 13168)\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-21 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 13697)\n"
|
||||
"Language: da\n"
|
||||
|
||||
#: NSIS_Installer.nsi:350
|
||||
#: NSIS_Installer.nsi:408
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgstr "Start SABnzbd"
|
||||
|
||||
#: NSIS_Installer.nsi:359
|
||||
#: NSIS_Installer.nsi:417
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Vis udgivelsesbemærkninger"
|
||||
|
||||
#: NSIS_Installer.nsi:368
|
||||
#: NSIS_Installer.nsi:426
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Støtte projektet, donere!"
|
||||
|
||||
#: NSIS_Installer.nsi:377
|
||||
#: NSIS_Installer.nsi:435
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Luk 'SABnzbd.exe' først"
|
||||
|
||||
#: NSIS_Installer.nsi:386
|
||||
#: NSIS_Installer.nsi:444
|
||||
msgid ""
|
||||
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
|
||||
"release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
@@ -42,56 +42,34 @@ msgstr ""
|
||||
" >>>> WARNING <<<<\\r\\n\\r\\nVenligst, kontrollér først "
|
||||
"udgivelsesnoter eller gå til http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
|
||||
#: NSIS_Installer.nsi:395
|
||||
#: NSIS_Installer.nsi:453
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dette vil afinstallere SABnzbd fra dit system"
|
||||
|
||||
#: NSIS_Installer.nsi:404
|
||||
#: NSIS_Installer.nsi:462
|
||||
msgid "Run at startup"
|
||||
msgstr "Kør ved opstart"
|
||||
|
||||
#: NSIS_Installer.nsi:413
|
||||
#: NSIS_Installer.nsi:471
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Skrivebords ikon"
|
||||
|
||||
#: NSIS_Installer.nsi:422
|
||||
#: NSIS_Installer.nsi:480
|
||||
msgid "NZB File association"
|
||||
msgstr "NZB filtilknytning"
|
||||
|
||||
#: NSIS_Installer.nsi:431
|
||||
#: NSIS_Installer.nsi:489
|
||||
msgid "Delete Program"
|
||||
msgstr "Slet program"
|
||||
|
||||
#: NSIS_Installer.nsi:440
|
||||
#: NSIS_Installer.nsi:498
|
||||
msgid "Delete Settings"
|
||||
msgstr "Slet instillinger"
|
||||
|
||||
#: NSIS_Installer.nsi:449
|
||||
#: NSIS_Installer.nsi:507
|
||||
msgid "Delete Logs"
|
||||
msgstr "Slet logs"
|
||||
|
||||
#: NSIS_Installer.nsi:458
|
||||
#: NSIS_Installer.nsi:516
|
||||
msgid "Delete Cache"
|
||||
msgstr "Slet hukommelse"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "If not empty, download your current queue with the old program.\r\n"
|
||||
#~ "The new program will ignore your current queue!"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> ADVARSEL <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Hvis ikke tom, skal du downloade din nuværende kø med det gamle program. \r\n"
|
||||
#~ "Det nye program vil ignorere din nuværende kø!"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Please, first check the release notes or go to "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> ADVARSEL <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Venligst, check først udgivelse notaer eller gå til "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
|
||||
@@ -7,34 +7,34 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.6.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-21 19:21+0000\n"
|
||||
"POT-Creation-Date: 2011-08-20 14:21+0000\n"
|
||||
"PO-Revision-Date: 2011-03-12 09:03+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@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: 2011-06-22 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 13168)\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-21 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 13697)\n"
|
||||
"Language: de\n"
|
||||
|
||||
#: NSIS_Installer.nsi:350
|
||||
#: NSIS_Installer.nsi:408
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgstr "SABnzbd starten (unsichtbar)"
|
||||
|
||||
#: NSIS_Installer.nsi:359
|
||||
#: NSIS_Installer.nsi:417
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Versionshinweise anzeigen"
|
||||
|
||||
#: NSIS_Installer.nsi:368
|
||||
#: NSIS_Installer.nsi:426
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Bitte unterstützen Sie das Projekt durch eine Spende!"
|
||||
|
||||
#: NSIS_Installer.nsi:377
|
||||
#: NSIS_Installer.nsi:435
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Schliessen Sie bitte zuerst \"SABnzbd.exe\"."
|
||||
|
||||
#: NSIS_Installer.nsi:386
|
||||
#: NSIS_Installer.nsi:444
|
||||
msgid ""
|
||||
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
|
||||
"release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
@@ -43,56 +43,34 @@ msgstr ""
|
||||
"Versionsanmerkungen lesen oder \"http://wiki.sabnzbd.org/introducing-0-6-0 "
|
||||
"besuchen!\""
|
||||
|
||||
#: NSIS_Installer.nsi:395
|
||||
#: NSIS_Installer.nsi:453
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dies entfernt SABnzbd von Ihrem System"
|
||||
|
||||
#: NSIS_Installer.nsi:404
|
||||
#: NSIS_Installer.nsi:462
|
||||
msgid "Run at startup"
|
||||
msgstr "Beim Systemstart ausführen"
|
||||
|
||||
#: NSIS_Installer.nsi:413
|
||||
#: NSIS_Installer.nsi:471
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Desktop-Symbol"
|
||||
|
||||
#: NSIS_Installer.nsi:422
|
||||
#: NSIS_Installer.nsi:480
|
||||
msgid "NZB File association"
|
||||
msgstr "Mit NZB-Dateien verknüpfen"
|
||||
|
||||
#: NSIS_Installer.nsi:431
|
||||
#: NSIS_Installer.nsi:489
|
||||
msgid "Delete Program"
|
||||
msgstr "Programm löschen"
|
||||
|
||||
#: NSIS_Installer.nsi:440
|
||||
#: NSIS_Installer.nsi:498
|
||||
msgid "Delete Settings"
|
||||
msgstr "Einstellungen löschen"
|
||||
|
||||
#: NSIS_Installer.nsi:449
|
||||
#: NSIS_Installer.nsi:507
|
||||
msgid "Delete Logs"
|
||||
msgstr "Protokoll löschen"
|
||||
|
||||
#: NSIS_Installer.nsi:458
|
||||
#: NSIS_Installer.nsi:516
|
||||
msgid "Delete Cache"
|
||||
msgstr "Cache löschen"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "If not empty, download your current queue with the old program.\r\n"
|
||||
#~ "The new program will ignore your current queue!"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> ACHTUNG <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Warten Sie, bis das alte Programm alle Downloads fertiggestellt hat.\r\n"
|
||||
#~ "Das neue Programm wird die noch ausstehenden Downloads ignorieren!"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Please, first check the release notes or go to "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> WARNUNG <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Bitte zuerst die Versionsanmerkungen lesen oder "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-6-0 besuchen!"
|
||||
|
||||
@@ -7,34 +7,34 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.6.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-21 19:21+0000\n"
|
||||
"POT-Creation-Date: 2011-08-20 14:21+0000\n"
|
||||
"PO-Revision-Date: 2011-03-10 21:33+0000\n"
|
||||
"Last-Translator: Fox Ace <Unknown>\n"
|
||||
"Language-Team: FRANCAIS <LL@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: 2011-06-22 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 13168)\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-21 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 13697)\n"
|
||||
"Language: fr\n"
|
||||
|
||||
#: NSIS_Installer.nsi:350
|
||||
#: NSIS_Installer.nsi:408
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgstr "Démarrer SABnzbd (caché)"
|
||||
|
||||
#: NSIS_Installer.nsi:359
|
||||
#: NSIS_Installer.nsi:417
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Afficher les notes de version"
|
||||
|
||||
#: NSIS_Installer.nsi:368
|
||||
#: NSIS_Installer.nsi:426
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Supportez le projet, faites un don !"
|
||||
|
||||
#: NSIS_Installer.nsi:377
|
||||
#: NSIS_Installer.nsi:435
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Quittez \"SABnzbd.exe\" avant l'installation, SVP"
|
||||
|
||||
#: NSIS_Installer.nsi:386
|
||||
#: NSIS_Installer.nsi:444
|
||||
msgid ""
|
||||
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
|
||||
"release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
@@ -43,57 +43,34 @@ msgstr ""
|
||||
"vérifiez d'abord les notes de version ou visiter "
|
||||
"http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
|
||||
#: NSIS_Installer.nsi:395
|
||||
#: NSIS_Installer.nsi:453
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Ceci désinstallera SABnzbd de votre système"
|
||||
|
||||
#: NSIS_Installer.nsi:404
|
||||
#: NSIS_Installer.nsi:462
|
||||
msgid "Run at startup"
|
||||
msgstr "Lancer au démarrage"
|
||||
|
||||
#: NSIS_Installer.nsi:413
|
||||
#: NSIS_Installer.nsi:471
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Icône sur le Bureau"
|
||||
|
||||
#: NSIS_Installer.nsi:422
|
||||
#: NSIS_Installer.nsi:480
|
||||
msgid "NZB File association"
|
||||
msgstr "Association des fichiers NZB"
|
||||
|
||||
#: NSIS_Installer.nsi:431
|
||||
#: NSIS_Installer.nsi:489
|
||||
msgid "Delete Program"
|
||||
msgstr "Supprimer le programme"
|
||||
|
||||
#: NSIS_Installer.nsi:440
|
||||
#: NSIS_Installer.nsi:498
|
||||
msgid "Delete Settings"
|
||||
msgstr "Supprimer les Paramètres"
|
||||
|
||||
#: NSIS_Installer.nsi:449
|
||||
#: NSIS_Installer.nsi:507
|
||||
msgid "Delete Logs"
|
||||
msgstr "Supprimer les logs"
|
||||
|
||||
#: NSIS_Installer.nsi:458
|
||||
#: NSIS_Installer.nsi:516
|
||||
msgid "Delete Cache"
|
||||
msgstr "Supprimer le Cache"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "If not empty, download your current queue with the old program.\r\n"
|
||||
#~ "The new program will ignore your current queue!"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> ATTENTION <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "si votre file d'attente de téléchargement n'est pas vide, terminez la avec "
|
||||
#~ "la version précédente du programme.\r\n"
|
||||
#~ "La nouvelle version l'ignorera!"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Please, first check the release notes or go to "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
#~ msgstr ""
|
||||
#~ " >>>>ATTENTION<<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "S'il vous plaît, vérifiez d'abord les notes de version ou aller sur "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
|
||||
@@ -7,67 +7,67 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.6.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-21 19:21+0000\n"
|
||||
"POT-Creation-Date: 2011-08-20 14:21+0000\n"
|
||||
"PO-Revision-Date: 2010-10-06 21:37+0000\n"
|
||||
"Last-Translator: shypike@sabnzbd.org\n"
|
||||
"Language-Team: LANGUAGE <LL@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: 2011-06-22 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 13168)\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-21 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 13697)\n"
|
||||
"Language: no\n"
|
||||
|
||||
#: NSIS_Installer.nsi:350
|
||||
#: NSIS_Installer.nsi:408
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:359
|
||||
#: NSIS_Installer.nsi:417
|
||||
msgid "Show Release Notes"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:368
|
||||
#: NSIS_Installer.nsi:426
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:377
|
||||
#: NSIS_Installer.nsi:435
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:386
|
||||
#: NSIS_Installer.nsi:444
|
||||
msgid ""
|
||||
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
|
||||
"release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:395
|
||||
#: NSIS_Installer.nsi:453
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:404
|
||||
#: NSIS_Installer.nsi:462
|
||||
msgid "Run at startup"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:413
|
||||
#: NSIS_Installer.nsi:471
|
||||
msgid "Desktop Icon"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:422
|
||||
#: NSIS_Installer.nsi:480
|
||||
msgid "NZB File association"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:431
|
||||
#: NSIS_Installer.nsi:489
|
||||
msgid "Delete Program"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:440
|
||||
#: NSIS_Installer.nsi:498
|
||||
msgid "Delete Settings"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:449
|
||||
#: NSIS_Installer.nsi:507
|
||||
msgid "Delete Logs"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi:458
|
||||
#: NSIS_Installer.nsi:516
|
||||
msgid "Delete Cache"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,34 +7,34 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.6.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-21 19:21+0000\n"
|
||||
"POT-Creation-Date: 2011-08-20 14:21+0000\n"
|
||||
"PO-Revision-Date: 2011-03-10 17:18+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@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: 2011-06-22 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 13168)\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-21 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 13697)\n"
|
||||
"Language: nl\n"
|
||||
|
||||
#: NSIS_Installer.nsi:350
|
||||
#: NSIS_Installer.nsi:408
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgstr "Start SABnzbd (verborgen)"
|
||||
|
||||
#: NSIS_Installer.nsi:359
|
||||
#: NSIS_Installer.nsi:417
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Toon vrijgave bericht"
|
||||
|
||||
#: NSIS_Installer.nsi:368
|
||||
#: NSIS_Installer.nsi:426
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Steun het project, Doneer!"
|
||||
|
||||
#: NSIS_Installer.nsi:377
|
||||
#: NSIS_Installer.nsi:435
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Sluit \"SABnzbd.exe\" eerst af"
|
||||
|
||||
#: NSIS_Installer.nsi:386
|
||||
#: NSIS_Installer.nsi:444
|
||||
msgid ""
|
||||
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
|
||||
"release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
@@ -42,56 +42,34 @@ msgstr ""
|
||||
" >>>> WAARSCHUWING <<<<\\r\\n\\r\\nLees eerst het vrijgave "
|
||||
"bericht of ga naar \"http://wiki.sabnzbd.org/introducing-0-6-0 !\""
|
||||
|
||||
#: NSIS_Installer.nsi:395
|
||||
#: NSIS_Installer.nsi:453
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dit verwijdert SABnzbd van je systeem"
|
||||
|
||||
#: NSIS_Installer.nsi:404
|
||||
#: NSIS_Installer.nsi:462
|
||||
msgid "Run at startup"
|
||||
msgstr "Opstarten bij systeem start"
|
||||
|
||||
#: NSIS_Installer.nsi:413
|
||||
#: NSIS_Installer.nsi:471
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Pictogram op bureaublad"
|
||||
|
||||
#: NSIS_Installer.nsi:422
|
||||
#: NSIS_Installer.nsi:480
|
||||
msgid "NZB File association"
|
||||
msgstr "NZB bestanden koppelen aan SABnzbd"
|
||||
|
||||
#: NSIS_Installer.nsi:431
|
||||
#: NSIS_Installer.nsi:489
|
||||
msgid "Delete Program"
|
||||
msgstr "Verwijder programma"
|
||||
|
||||
#: NSIS_Installer.nsi:440
|
||||
#: NSIS_Installer.nsi:498
|
||||
msgid "Delete Settings"
|
||||
msgstr "Verwijder instellingen"
|
||||
|
||||
#: NSIS_Installer.nsi:449
|
||||
#: NSIS_Installer.nsi:507
|
||||
msgid "Delete Logs"
|
||||
msgstr "Verwijder logging"
|
||||
|
||||
#: NSIS_Installer.nsi:458
|
||||
#: NSIS_Installer.nsi:516
|
||||
msgid "Delete Cache"
|
||||
msgstr "Verwijder Cache"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "If not empty, download your current queue with the old program.\r\n"
|
||||
#~ "The new program will ignore your current queue!"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> WAARSCHUWING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Indien niet leeg, download eerst de gehele huidige wachtrij met het oude "
|
||||
#~ "programma.\r\n"
|
||||
#~ "Het nieuwe programma zal je huidige wachtrij negeren!"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Please, first check the release notes or go to "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> WAARSCHUWING <<<<\r\n"
|
||||
#~ "Lees eerst het vrijgave bericht of ga naar "
|
||||
#~ "http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
|
||||
@@ -7,33 +7,33 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-06-21 19:21+0000\n"
|
||||
"POT-Creation-Date: 2011-08-20 14:21+0000\n"
|
||||
"PO-Revision-Date: 2011-05-07 04:50+0000\n"
|
||||
"Last-Translator: nicusor <Unknown>\n"
|
||||
"Language-Team: Romanian <ro@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-06-22 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 13168)\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-21 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 13697)\n"
|
||||
|
||||
#: NSIS_Installer.nsi:350
|
||||
#: NSIS_Installer.nsi:408
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgstr "Porneşte SABnzbd (ascuns)"
|
||||
|
||||
#: NSIS_Installer.nsi:359
|
||||
#: NSIS_Installer.nsi:417
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Arată Notele de Publicare"
|
||||
|
||||
#: NSIS_Installer.nsi:368
|
||||
#: NSIS_Installer.nsi:426
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Susţine proiectul, Donează!"
|
||||
|
||||
#: NSIS_Installer.nsi:377
|
||||
#: NSIS_Installer.nsi:435
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Închideţi mai întâi \"SABnzbd.exe\""
|
||||
|
||||
#: NSIS_Installer.nsi:386
|
||||
#: NSIS_Installer.nsi:444
|
||||
msgid ""
|
||||
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
|
||||
"release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
@@ -42,34 +42,34 @@ msgstr ""
|
||||
"întâi notele de publicare sau mergeţi la http://wiki.sabnzbd.org/introducing-"
|
||||
"0-6-0 !"
|
||||
|
||||
#: NSIS_Installer.nsi:395
|
||||
#: NSIS_Installer.nsi:453
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Acest lucru va dezinstala SABnzbd din sistem"
|
||||
|
||||
#: NSIS_Installer.nsi:404
|
||||
#: NSIS_Installer.nsi:462
|
||||
msgid "Run at startup"
|
||||
msgstr "Executare la pornire"
|
||||
|
||||
#: NSIS_Installer.nsi:413
|
||||
#: NSIS_Installer.nsi:471
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Icoană Desktop"
|
||||
|
||||
#: NSIS_Installer.nsi:422
|
||||
#: NSIS_Installer.nsi:480
|
||||
msgid "NZB File association"
|
||||
msgstr "Asociere cu Fişierele NZB"
|
||||
|
||||
#: NSIS_Installer.nsi:431
|
||||
#: NSIS_Installer.nsi:489
|
||||
msgid "Delete Program"
|
||||
msgstr "Şterge Program"
|
||||
|
||||
#: NSIS_Installer.nsi:440
|
||||
#: NSIS_Installer.nsi:498
|
||||
msgid "Delete Settings"
|
||||
msgstr "Ştergeţi Setări"
|
||||
|
||||
#: NSIS_Installer.nsi:449
|
||||
#: NSIS_Installer.nsi:507
|
||||
msgid "Delete Logs"
|
||||
msgstr "Ştergeţi Activitate"
|
||||
|
||||
#: NSIS_Installer.nsi:458
|
||||
#: NSIS_Installer.nsi:516
|
||||
msgid "Delete Cache"
|
||||
msgstr "Ştergeţi Cache"
|
||||
|
||||
@@ -7,34 +7,34 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.6.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-21 19:21+0000\n"
|
||||
"POT-Creation-Date: 2011-08-20 14:21+0000\n"
|
||||
"PO-Revision-Date: 2011-05-09 12:25+0000\n"
|
||||
"Last-Translator: Jerry Malmström <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@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: 2011-06-22 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 13168)\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-21 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 13697)\n"
|
||||
"Language: sv\n"
|
||||
|
||||
#: NSIS_Installer.nsi:350
|
||||
#: NSIS_Installer.nsi:408
|
||||
msgid "Start SABnzbd (hidden)"
|
||||
msgstr "Starta SABnzbd (dold)"
|
||||
|
||||
#: NSIS_Installer.nsi:359
|
||||
#: NSIS_Installer.nsi:417
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Visa release noteringar"
|
||||
|
||||
#: NSIS_Installer.nsi:368
|
||||
#: NSIS_Installer.nsi:426
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Donera och stöd detta projekt!"
|
||||
|
||||
#: NSIS_Installer.nsi:377
|
||||
#: NSIS_Installer.nsi:435
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Var vänlig stäng \"SABnzbd.exe\" först"
|
||||
|
||||
#: NSIS_Installer.nsi:386
|
||||
#: NSIS_Installer.nsi:444
|
||||
msgid ""
|
||||
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
|
||||
"release notes or go to http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
@@ -42,45 +42,34 @@ msgstr ""
|
||||
" >>>> VARNING <<<<\\r\\n\\r\\nVar vänlig och läs versions "
|
||||
"noteringarna eller gå till http://wiki.sabnzbd.org/introducing-0-6-0 !"
|
||||
|
||||
#: NSIS_Installer.nsi:395
|
||||
#: NSIS_Installer.nsi:453
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Detta kommer att avinstallera SABnzbd från systemet"
|
||||
|
||||
#: NSIS_Installer.nsi:404
|
||||
#: NSIS_Installer.nsi:462
|
||||
msgid "Run at startup"
|
||||
msgstr "Kör vid uppstart"
|
||||
|
||||
#: NSIS_Installer.nsi:413
|
||||
#: NSIS_Installer.nsi:471
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Skrivbordsikon"
|
||||
|
||||
#: NSIS_Installer.nsi:422
|
||||
#: NSIS_Installer.nsi:480
|
||||
msgid "NZB File association"
|
||||
msgstr "NZB Filassosication"
|
||||
|
||||
#: NSIS_Installer.nsi:431
|
||||
#: NSIS_Installer.nsi:489
|
||||
msgid "Delete Program"
|
||||
msgstr "Ta bort programmet"
|
||||
|
||||
#: NSIS_Installer.nsi:440
|
||||
#: NSIS_Installer.nsi:498
|
||||
msgid "Delete Settings"
|
||||
msgstr "Ta bort inställningar"
|
||||
|
||||
#: NSIS_Installer.nsi:449
|
||||
#: NSIS_Installer.nsi:507
|
||||
msgid "Delete Logs"
|
||||
msgstr "Ta bort logg"
|
||||
|
||||
#: NSIS_Installer.nsi:458
|
||||
#: NSIS_Installer.nsi:516
|
||||
msgid "Delete Cache"
|
||||
msgstr "Ta bort temporär-mapp"
|
||||
|
||||
#~ msgid ""
|
||||
#~ " >>>> WARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "If not empty, download your current queue with the old program.\r\n"
|
||||
#~ "The new program will ignore your current queue!"
|
||||
#~ msgstr ""
|
||||
#~ " >>>> VARNING <<<<\r\n"
|
||||
#~ "\r\n"
|
||||
#~ "Om kön inte är tom, hämta din nuvarande kö med det gamla programmet.\r\n"
|
||||
#~ "Det nya programmet kommer att ignorera din nuvarande kö!"
|
||||
|
||||
@@ -772,11 +772,16 @@ def save_data(data, _id, path, do_pickle = True, silent=False):
|
||||
try:
|
||||
_f = open(path, 'wb')
|
||||
if do_pickle:
|
||||
cPickle.dump(data, _f, 2)
|
||||
pickler = cPickle.Pickler(_f, 2)
|
||||
pickler.dump(data)
|
||||
_f.flush()
|
||||
_f.close()
|
||||
pickler.clear_memo()
|
||||
del pickler
|
||||
else:
|
||||
_f.write(data)
|
||||
_f.flush()
|
||||
_f.close()
|
||||
_f.flush()
|
||||
_f.close()
|
||||
except:
|
||||
logging.error(Ta('Saving %s failed'), path)
|
||||
logging.info("Traceback: ", exc_info = True)
|
||||
@@ -833,13 +838,18 @@ def save_admin(data, _id, do_pickle=True):
|
||||
logging.info("Saving data for %s in %s", _id, path)
|
||||
|
||||
try:
|
||||
f = open(path, 'wb')
|
||||
_f = open(path, 'wb')
|
||||
if do_pickle:
|
||||
cPickle.dump(data, f, 2)
|
||||
pickler = cPickle.Pickler(_f, 2)
|
||||
pickler.dump(data)
|
||||
_f.flush()
|
||||
_f.close()
|
||||
pickler.clear_memo()
|
||||
del pickler
|
||||
else:
|
||||
f.write(data)
|
||||
f.flush()
|
||||
f.close()
|
||||
_f.write(data)
|
||||
_f.flush()
|
||||
_f.close()
|
||||
except:
|
||||
logging.error(Ta('Saving %s failed'), path)
|
||||
logging.info("Traceback: ", exc_info = True)
|
||||
|
||||
@@ -45,7 +45,7 @@ from sabnzbd.utils.rsslib import RSS, Item
|
||||
from sabnzbd.utils.json import JsonWriter
|
||||
from sabnzbd.utils.pathbrowser import folders_at_path
|
||||
from sabnzbd.misc import loadavg, to_units, diskfree, disktotal, get_ext, \
|
||||
get_filename, int_conv, globber, time_format
|
||||
get_filename, int_conv, globber, time_format, remove_all
|
||||
from sabnzbd.encoding import xml_name, unicoder, special_fixer, platform_encode
|
||||
from sabnzbd.postproc import PostProcessor
|
||||
from sabnzbd.articlecache import ArticleCache
|
||||
@@ -1383,8 +1383,7 @@ def del_job_files(job_paths):
|
||||
""" Remove files of each path in the list """
|
||||
for path in job_paths:
|
||||
if path and path.lower().startswith(cfg.download_dir.get_path().lower()):
|
||||
nzbstuff.clean_folder(os.path.join(path, JOB_ADMIN))
|
||||
nzbstuff.clean_folder(path)
|
||||
remove_all(path, recursive=True)
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@@ -1401,8 +1400,7 @@ def del_hist_job(job, del_files):
|
||||
history_db.remove_history(job)
|
||||
|
||||
if path and del_files and path.lower().startswith(cfg.download_dir.get_path().lower()):
|
||||
nzbstuff.clean_folder(os.path.join(path, JOB_ADMIN))
|
||||
nzbstuff.clean_folder(path)
|
||||
remove_all(path, recursive=True)
|
||||
return True
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@@ -35,8 +35,8 @@ from sabnzbd.config import OptionBool, OptionNumber, OptionPassword, \
|
||||
#
|
||||
RE_VAL = re.compile('[^@ ]+@[^.@ ]+\.[^.@ ]')
|
||||
def validate_email(value):
|
||||
global email_endjob, email_full
|
||||
if email_endjob() or email_full():
|
||||
global email_endjob, email_full, email_rss
|
||||
if email_endjob() or email_full() or email_rss():
|
||||
if isinstance(value, list):
|
||||
values = value
|
||||
else:
|
||||
@@ -49,8 +49,8 @@ def validate_email(value):
|
||||
|
||||
def validate_server(value):
|
||||
""" Check if server non-empty"""
|
||||
global email_endjob, email_full
|
||||
if value == '' and (email_endjob() or email_full()):
|
||||
global email_endjob, email_full, email_rss
|
||||
if value == '' and (email_endjob() or email_full() or email_rss()):
|
||||
return T('Server address required'), None
|
||||
else:
|
||||
return None, value
|
||||
@@ -97,6 +97,7 @@ nice = OptionStr('misc', 'nice', '', validation=no_nonsense)
|
||||
ionice = OptionStr('misc', 'ionice', '', validation=no_nonsense)
|
||||
ignore_wrong_unrar = OptionBool('misc', 'ignore_wrong_unrar', False)
|
||||
par2_multicore = OptionBool('misc', 'par2_multicore', True)
|
||||
allow_64bit_tools = OptionBool('misc', 'allow_64bit_tools', True)
|
||||
allow_streaming = OptionBool('misc', 'allow_streaming', False)
|
||||
|
||||
newzbin_username = OptionStr('newzbin', 'username')
|
||||
|
||||
@@ -186,30 +186,26 @@ class OptionDir(Option):
|
||||
""" Set new root, is assumed to be valid """
|
||||
self.__root = root
|
||||
|
||||
def set(self, value):
|
||||
def set(self, value, create=False):
|
||||
""" Set new dir value, validate and create if needed
|
||||
Return None when directory is accepted
|
||||
Return error-string when not accepted, value will not be changed
|
||||
'create' means try to create (but don't set permanent create flag)
|
||||
"""
|
||||
error = None
|
||||
if value != None and value != self.get():
|
||||
if value != None and (create or value != self.get()):
|
||||
value = value.strip()
|
||||
if self.__validation:
|
||||
error, value = self.__validation(self.__root, value, self._Option__default_val)
|
||||
if not error:
|
||||
if value and self.__create:
|
||||
if value and (self.__create or create):
|
||||
res, path = sabnzbd.misc.create_real_path(self.ident()[1], self.__root, value, self.__apply_umask)
|
||||
if not res:
|
||||
error = "Cannot create %s folder %s" % (self.ident()[1], path)
|
||||
error = Ta("Cannot create %s folder %s") % (self.ident()[1], path)
|
||||
if not error:
|
||||
self._Option__set(value)
|
||||
return error
|
||||
|
||||
def set_create(self):
|
||||
""" Enable auto-creation and create now """
|
||||
self.__create = True
|
||||
self.get_path()
|
||||
|
||||
|
||||
class OptionList(Option):
|
||||
""" List option class """
|
||||
@@ -318,6 +314,8 @@ def delete_from_database(section, keyword):
|
||||
""" Remove section/keyword from INI database """
|
||||
global database, CFG, modified
|
||||
del database[section][keyword]
|
||||
if section == 'servers' and '[' in keyword:
|
||||
keyword = keyword.replace('[', '{').replace(']', '}')
|
||||
try:
|
||||
del CFG[section][keyword]
|
||||
except KeyError:
|
||||
|
||||
@@ -163,18 +163,21 @@ def send_with_template(prefix, parm):
|
||||
sent = False
|
||||
for temp in lst:
|
||||
if os.access(temp, os.R_OK):
|
||||
sent = True
|
||||
source = _decode_file(temp)
|
||||
if source:
|
||||
for recipient in cfg.email_to():
|
||||
parm['to'] = recipient
|
||||
message = Template(source=source,
|
||||
searchList=[parm],
|
||||
filter=EmailFilter,
|
||||
compilerSettings={'directiveStartToken': '<!--#',
|
||||
'directiveEndToken': '#-->'})
|
||||
ret = send(message.respond(), recipient)
|
||||
del message
|
||||
sent = True
|
||||
if len(cfg.email_to()):
|
||||
for recipient in cfg.email_to():
|
||||
parm['to'] = recipient
|
||||
message = Template(source=source,
|
||||
searchList=[parm],
|
||||
filter=EmailFilter,
|
||||
compilerSettings={'directiveStartToken': '<!--#',
|
||||
'directiveEndToken': '#-->'})
|
||||
ret = send(message.respond(), recipient)
|
||||
del message
|
||||
else:
|
||||
ret = T('No recipients given, no email sent')
|
||||
else:
|
||||
ret = T('Invalid encoding of email template %s') % temp
|
||||
errormsg(ret)
|
||||
|
||||
@@ -36,7 +36,7 @@ from Cheetah.Template import Template
|
||||
import sabnzbd.emailer as emailer
|
||||
from sabnzbd.misc import real_path, to_units, \
|
||||
diskfree, sanitize_foldername, time_format, HAVE_AMPM, \
|
||||
cat_to_opts, int_conv, globber, clean_folder
|
||||
cat_to_opts, int_conv, globber, remove_all
|
||||
from sabnzbd.panic import panic_old_queue
|
||||
from sabnzbd.newswrapper import GetServerParms
|
||||
from sabnzbd.newzbin import Bookmarks
|
||||
@@ -1060,8 +1060,7 @@ def orphan_delete(kwargs):
|
||||
path = kwargs.get('name')
|
||||
if path:
|
||||
path = os.path.join(cfg.download_dir.get_path(), path)
|
||||
clean_folder(os.path.join(path, JOB_ADMIN))
|
||||
clean_folder(path)
|
||||
remove_all(path, recursive=True)
|
||||
|
||||
def orphan_add(kwargs):
|
||||
path = kwargs.get('name')
|
||||
@@ -1108,12 +1107,14 @@ class ConfigDirectories(object):
|
||||
msg = check_session(kwargs)
|
||||
if msg: return msg
|
||||
|
||||
cfg.complete_dir.set_create()
|
||||
for kw in LIST_DIRPAGE:
|
||||
value = kwargs.get(kw)
|
||||
if value != None:
|
||||
value = platform_encode(value)
|
||||
msg = config.get_config('misc', kw).set(value)
|
||||
if kw == 'complete_dir':
|
||||
msg = config.get_config('misc', kw).set(value, create=True)
|
||||
else:
|
||||
msg = config.get_config('misc', kw).set(value)
|
||||
if msg:
|
||||
return badParameterResponse(msg)
|
||||
|
||||
@@ -1564,6 +1565,8 @@ class ConfigRss(object):
|
||||
self.__refresh_ignore = False
|
||||
msg = sabnzbd.rss.run_feed(active_feed, download=self.__refresh_download, force=self.__refresh_force, \
|
||||
ignoreFirst=self.__refresh_ignore, readout=readout)
|
||||
if readout:
|
||||
sabnzbd.rss.save()
|
||||
self.__refresh_readout = None
|
||||
conf['error'] = msg
|
||||
|
||||
@@ -1685,6 +1688,7 @@ class ConfigRss(object):
|
||||
kwargs['section'] = 'rss'
|
||||
kwargs['keyword'] = kwargs.get('feed')
|
||||
del_from_section(kwargs)
|
||||
sabnzbd.rss.clear_feed(kwargs.get('feed'))
|
||||
raise dcRaiser(self.__root, kwargs)
|
||||
|
||||
@cherrypy.expose
|
||||
@@ -2042,7 +2046,10 @@ class ConfigCats(object):
|
||||
name = newname.lower()
|
||||
if kwargs.get('dir'):
|
||||
kwargs['dir'] = platform_encode(kwargs['dir'])
|
||||
config.ConfigCat(name, kwargs)
|
||||
folder = config.ConfigCat(name, kwargs).dir
|
||||
msg = folder.set(folder(), create=True)
|
||||
if msg:
|
||||
return badParameterResponse(msg)
|
||||
|
||||
config.save_config()
|
||||
raise dcRaiser(self.__root, kwargs)
|
||||
@@ -2340,15 +2347,15 @@ def ShowOK(url):
|
||||
def GetRssLog(feed):
|
||||
def make_item(job):
|
||||
url = job.get('url', '')
|
||||
title = job.get('title', '')
|
||||
title = xml_name(job.get('title', ''))
|
||||
if url.isdigit():
|
||||
title = '<a href="https://www.newzbin.com/browse/post/%s/" target="_blank">%s</a>' % (url, title)
|
||||
else:
|
||||
title = xml_name(title)
|
||||
title = title
|
||||
if sabnzbd.rss.special_rss_site(url):
|
||||
nzbname = ""
|
||||
else:
|
||||
nzbname = sanitize_foldername(xml_name(title))
|
||||
nzbname = xml_name(sanitize_foldername(job.get('title', '')))
|
||||
return url, \
|
||||
title, \
|
||||
'*' * int(job.get('status', '').endswith('*')), \
|
||||
|
||||
@@ -1144,27 +1144,25 @@ def remove_dir(path):
|
||||
os.rmdir(path)
|
||||
|
||||
|
||||
def remove_all(path, pattern='*', keep_folder=False):
|
||||
""" Remove folder and all its content
|
||||
def remove_all(path, pattern='*', keep_folder=False, recursive=False):
|
||||
""" Remove folder and all its content (optionally recursive)
|
||||
"""
|
||||
if os.path.exists(path):
|
||||
for f in globber(path, pattern):
|
||||
os.remove(f)
|
||||
files = globber(path, pattern)
|
||||
if pattern == '*' and not sabnzbd.WIN32:
|
||||
files.extend(globber(path, '.*'))
|
||||
|
||||
for f in files:
|
||||
if os.path.isfile(f):
|
||||
try:
|
||||
os.remove(f)
|
||||
except:
|
||||
logging.info('Cannot remove file %s', f)
|
||||
elif recursive:
|
||||
remove_all(f, pattern, False, True)
|
||||
if not keep_folder:
|
||||
try:
|
||||
os.rmdir(path)
|
||||
except:
|
||||
pass
|
||||
logging.info('Cannot remove folder %s', path)
|
||||
|
||||
|
||||
def clean_folder(path, pattern='*'):
|
||||
""" Remove all files in root of folder, remove folder if empty afterwards """
|
||||
for file in globber(path, pattern):
|
||||
try:
|
||||
os.remove(file)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
os.rmdir(path)
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -96,7 +96,7 @@ def find_programs(curdir):
|
||||
sabnzbd.newsunpack.RAR_COMMAND = check(curdir, 'osx/unrar/unrar')
|
||||
|
||||
if sabnzbd.WIN32:
|
||||
if sabnzbd.WIN64:
|
||||
if sabnzbd.WIN64 and cfg.allow_64bit_tools.get():
|
||||
sabnzbd.newsunpack.PAR2_COMMAND = check(curdir, 'win/par2/x64/par2.exe')
|
||||
sabnzbd.newsunpack.RAR_COMMAND = check(curdir, 'win/unrar/x64/UnRAR.exe')
|
||||
if not sabnzbd.newsunpack.PAR2_COMMAND:
|
||||
|
||||
@@ -38,7 +38,7 @@ from sabnzbd.constants import sample_match, GIGI, ATTRIB_FILE, JOB_ADMIN, \
|
||||
DEFAULT_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY, \
|
||||
HIGH_PRIORITY, PAUSED_PRIORITY, TOP_PRIORITY, DUP_PRIORITY
|
||||
from sabnzbd.misc import to_units, cat_to_opts, cat_convert, sanitize_foldername, \
|
||||
get_unique_path, get_admin_path, remove_all, clean_folder, \
|
||||
get_unique_path, get_admin_path, remove_all, \
|
||||
sanitize_filename, globber, sanitize_foldername, int_conv
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.trylist import TryList
|
||||
@@ -1124,12 +1124,12 @@ class NzbObject(TryList):
|
||||
|
||||
if self.new_caching and not self.futuretype:
|
||||
if keep_basic:
|
||||
clean_folder(wpath, 'SABnzbd_nz?_*')
|
||||
clean_folder(wpath, 'SABnzbd_article_*')
|
||||
remove_all(wpath, 'SABnzbd_nz?_*')
|
||||
remove_all(wpath, 'SABnzbd_article_*')
|
||||
else:
|
||||
clean_folder(wpath)
|
||||
remove_all(wpath, recursive=True)
|
||||
if del_files:
|
||||
clean_folder(self.downpath)
|
||||
remove_all(self.downpath, recursive=True)
|
||||
else:
|
||||
try:
|
||||
os.rmdir(self.downpath)
|
||||
@@ -1352,33 +1352,33 @@ def split_filename(name):
|
||||
|
||||
def format_time_string(seconds, days=0):
|
||||
""" Given seconds and days, return formatted day/hour/min/sec string
|
||||
LACKS I18N !!
|
||||
"""
|
||||
def unit(n, single):
|
||||
if n == 1:
|
||||
return n, Tx(single)
|
||||
else:
|
||||
return n, Tx(single + 's')
|
||||
try:
|
||||
seconds = int(seconds)
|
||||
except:
|
||||
except ValueError:
|
||||
seconds = 0
|
||||
|
||||
completestr = ''
|
||||
if days:
|
||||
completestr += '%s day%s ' % (days, s_returner(days))
|
||||
completestr += '%s %s ' % unit(days, 'day')
|
||||
if (seconds/3600) >= 1:
|
||||
completestr += '%s hour%s ' % (seconds/3600, s_returner((seconds/3600)))
|
||||
completestr += '%s %s ' % unit(seconds/3600, 'hour')
|
||||
seconds -= (seconds/3600)*3600
|
||||
if (seconds/60) >= 1:
|
||||
completestr += '%s minute%s ' % (seconds/60, s_returner((seconds/60)))
|
||||
completestr += '%s %s ' % unit(seconds/60, 'minute')
|
||||
seconds -= (seconds/60)*60
|
||||
if seconds > 0:
|
||||
completestr += '%s second%s ' % (seconds, s_returner(seconds))
|
||||
completestr += '%s %s ' % unit(seconds, 'second')
|
||||
else:
|
||||
completestr += '%s %s' % unit(0, 'second')
|
||||
|
||||
return completestr.strip()
|
||||
|
||||
def s_returner(value):
|
||||
if value > 1:
|
||||
return 's'
|
||||
else:
|
||||
return ''
|
||||
|
||||
|
||||
RE_PASSWORD1 = re.compile(r'([^/\\]+)[/\\](.+)')
|
||||
RE_PASSWORD2 = re.compile(r'(.+){{([^{}]+)}}$')
|
||||
|
||||
@@ -181,7 +181,6 @@ class PostProcessor(Thread):
|
||||
## Pause downloader, if users wants that
|
||||
if cfg.pause_on_post_processing():
|
||||
sabnzbd.downloader.Downloader.do.wait_for_postproc()
|
||||
cfg.complete_dir.set_create()
|
||||
|
||||
self.__busy = True
|
||||
if process_job(nzo):
|
||||
@@ -481,8 +480,7 @@ def process_job(nzo):
|
||||
try:
|
||||
if os.path.exists(workdir):
|
||||
logging.debug('Removing workdir %s', workdir)
|
||||
remove_all(os.path.join(workdir, JOB_ADMIN))
|
||||
remove_dir(workdir)
|
||||
remove_all(workdir, recursive=True)
|
||||
except:
|
||||
logging.error(Ta('Error removing workdir (%s)'), workdir)
|
||||
logging.info("Traceback: ", exc_info = True)
|
||||
|
||||
@@ -127,6 +127,23 @@ def convert_filter(text):
|
||||
logging.error(Ta('Could not compile regex: %s'), text)
|
||||
return None
|
||||
|
||||
_EXPIRE_SEC = 3*24*3600 # 3 days
|
||||
def remove_obsolete(jobs, new_jobs):
|
||||
""" Expire G/B links that are not in new_jobs (mark them 'X')
|
||||
Expired links older than 3 days are removed from 'jobs'
|
||||
"""
|
||||
now = time.time()
|
||||
limit = now - _EXPIRE_SEC
|
||||
olds = jobs.keys()
|
||||
for old in olds:
|
||||
tm = jobs[old]['time']
|
||||
if old not in new_jobs:
|
||||
if jobs[old].get('status', ' ')[0] in ('G', 'B'):
|
||||
jobs[old]['status'] = 'X'
|
||||
if jobs[old]['status'] == 'X' and tm < limit:
|
||||
logging.debug("Purging link %s", old)
|
||||
del jobs[old]
|
||||
|
||||
|
||||
LOCK = threading.RLock()
|
||||
class RSSQueue(object):
|
||||
@@ -142,9 +159,13 @@ class RSSQueue(object):
|
||||
|
||||
self.jobs = {}
|
||||
try:
|
||||
defined = config.get_rss().keys()
|
||||
feeds = sabnzbd.load_admin(RSS_FILE_NAME)
|
||||
if type(feeds) == type({}):
|
||||
for feed in feeds:
|
||||
if feed not in defined:
|
||||
logging.debug('Dropping obsolete data for feed "%s"', feed)
|
||||
continue
|
||||
self.jobs[feed] = {}
|
||||
for link in feeds[feed]:
|
||||
data = feeds[feed][link]
|
||||
@@ -170,7 +191,8 @@ class RSSQueue(object):
|
||||
item = feeds[feed][link]
|
||||
if not isinstance(item, dict) or not isinstance(item.get('title'), unicode):
|
||||
raise IndexError
|
||||
if not item.get('status', ' ')[0] not in ('D', 'G', 'B', 'X'): item['status'] = 'X'
|
||||
if item.get('status', ' ')[0] not in ('D', 'G', 'B', 'X'):
|
||||
item['status'] = 'X'
|
||||
if not isinstance(item.get('url'), unicode): item['url'] = ''
|
||||
if not check_str(item.get('cat')): item['cat'] = ''
|
||||
if not check_str(item.get('orgcat')): item['orgcat'] = ''
|
||||
@@ -184,6 +206,8 @@ class RSSQueue(object):
|
||||
except (KeyError, IndexError):
|
||||
logging.info('Incorrect entry in %s detected, discarding %s', RSS_FILE_NAME, item)
|
||||
|
||||
remove_obsolete(self.jobs[feed], self.jobs[feed].keys())
|
||||
|
||||
except IOError:
|
||||
logging.debug('Cannot read file %s', RSS_FILE_NAME)
|
||||
|
||||
@@ -354,7 +378,11 @@ class RSSQueue(object):
|
||||
|
||||
newlinks.append(link)
|
||||
|
||||
if (link not in jobs) or (jobs[link].get('status', ' ') in ('G', 'B', 'G*', 'B*')):
|
||||
if link in jobs:
|
||||
jobstat = jobs[link].get('status', ' ')[0]
|
||||
else:
|
||||
jobstat = 'N'
|
||||
if jobstat in 'NGB' or (jobstat == 'X' and readout):
|
||||
# Match this title against all filters
|
||||
logging.debug('Trying title %s', atitle)
|
||||
result = False
|
||||
@@ -414,7 +442,7 @@ class RSSQueue(object):
|
||||
logging.info("Ignoring duplicate job %s", atitle)
|
||||
continue
|
||||
else:
|
||||
priority = DUP_PRIORITY
|
||||
myPrio = DUP_PRIORITY
|
||||
|
||||
act = download and not first
|
||||
if link in jobs:
|
||||
@@ -437,25 +465,7 @@ class RSSQueue(object):
|
||||
if new_downloads and cfg.email_rss() and not force:
|
||||
emailer.rss_mail(feed, new_downloads)
|
||||
|
||||
# If links are in table for more than 1 week, remove
|
||||
# Flag old D/B links as obsolete, so that they don't show up in Preview
|
||||
now = time.time()
|
||||
limit = now - 1*7*24*3600
|
||||
olds = jobs.keys()
|
||||
for old in olds:
|
||||
if old not in newlinks:
|
||||
if jobs[old].get('status', ' ')[0] in ('G', 'B'):
|
||||
jobs[old]['status'] = 'X'
|
||||
try:
|
||||
tm = float(jobs[old]['time'])
|
||||
except:
|
||||
# Fix missing timestamp in older RSS_DATA.SAB file
|
||||
jobs[old]['time'] = now
|
||||
tm = now
|
||||
if tm < limit:
|
||||
logging.debug("Purging link %s", old)
|
||||
del jobs[old]
|
||||
|
||||
remove_obsolete(jobs, newlinks)
|
||||
return ''
|
||||
|
||||
|
||||
|
||||
@@ -922,6 +922,10 @@ def getTitles(match, name):
|
||||
xtitled = titler(x)
|
||||
title = replace_word(title, xtitled, x)
|
||||
|
||||
# Make sure the first letter of the title is always uppercase
|
||||
if title:
|
||||
title = titler(title[0]) + title[1:]
|
||||
|
||||
# The title with spaces replaced by dots
|
||||
dots = title.replace(" - ", "-").replace(' ','.').replace('_','.')
|
||||
dots = dots.replace('(', '.').replace(')','.').replace('..','.').rstrip('.')
|
||||
|
||||
@@ -261,13 +261,19 @@ class Scheduler:
|
||||
if sys.version_info>=(2,6):
|
||||
# code for sched module of python 2.6+
|
||||
def _getqueuetoptime(self):
|
||||
return self.sched._queue[0].time
|
||||
try:
|
||||
return self.sched._queue[0].time
|
||||
except IndexError:
|
||||
return 0.0
|
||||
def _clearschedqueue(self):
|
||||
self.sched._queue[:] = []
|
||||
else:
|
||||
# code for sched module of python 2.5 and older
|
||||
def _getqueuetoptime(self):
|
||||
return self.sched.queue[0][0]
|
||||
try:
|
||||
return self.sched.queue[0][0]
|
||||
except IndexError:
|
||||
return 0.0
|
||||
def _clearschedqueue(self):
|
||||
self.sched.queue[:] = []
|
||||
|
||||
|
||||