Compare commits

...

34 Commits
0.6.7 ... 0.6.9

Author SHA1 Message Date
shypike
713993140f Update text files for 0.6.9 Final. 2011-09-10 10:57:25 +02:00
shypike
176e6b6afd Merge pull request #4 from sabnzbd/0.6.x
Merge 0.6.9RC2 into master.
2011-09-08 12:42:33 -07:00
ShyPike
5ecbf795af Merge remote-tracking branch 'remotes/origin/master' into 0.6.x
Conflicts:
	.gitignore
2011-09-08 21:39:43 +02:00
shypike
42b1202b06 Extend OSX DMG background images to avoid obscuring by the path bar. 2011-09-07 21:53:49 +02:00
shypike
37acad6ec7 Update text files for 0.6.9 RC2 2011-09-06 20:18:49 +02:00
shypike
74d90b8361 Correct formatting errors in translations. 2011-09-06 19:12:59 +02:00
shypike
952682d557 Update translations 2011-09-06 19:02:37 +02:00
shypike
c1f3e44fb8 Add hidden option "allow_64bit_tools" to allow or prevent use of 64bit par2 and unrar. 2011-09-04 16:37:38 +02:00
shypike
fa2a6c673c Improve handling of non-creatable "complete" and category folders.
Remove the tendency of the status-api to create final folders prematurely.
Make error message about folder creation translatable.
2011-09-04 13:00:32 +02:00
shypike
b46ae4782d GenericSorter should always uppercase the initial letter of "the", "a", "of" etc. at the start of a title.
"the way of the few" => "The Way of the Few".
2011-09-03 13:43:24 +02:00
shypike
6ebbc81792 Change the OSX DMG window size so that the optional "path bar" doesn't obsure part of the background image. 2011-09-03 13:12:35 +02:00
shypike
1d7170f193 Fix and I18N the "Downloaded in X days Y hours Z seconds" text in the history report. 2011-09-01 21:42:46 +02:00
shypike
3dea948ecc Update text files for 0.6.9 RC1. 2011-09-01 18:58:25 +02:00
shypike
1e960ae2e9 Check email parameters also when only email_rss option is enabled. 2011-09-01 18:55:44 +02:00
shypike
e6b21f1ca5 Attempt to remove memory leak due to pickling the admin files. Use Pickler object (and clear_memo) instead of pickle function. 2011-08-30 23:32:17 +02:00
shypike
ebd3cbd932 When removing a job folder in the "incomplete" folder, also remove files in subfolders and the subfolders. This is necessary because some operating systems produce stray files/folders. 2011-08-30 22:28:17 +02:00
shypike
b8fb5cbfbf Setting of WIN64 flag was done only after selecting unrar/par2 variants.
The result was that the x64 variants were never used.
Closes #3
2011-08-29 21:54:49 +02:00
shypike
01494bd010 When using the Download button in RSS feeds for newzbin, the nzb name was incorrect. Closes #2 2011-08-29 20:04:21 +02:00
Jon Saine
6dd4c0551e Reverted hoverIntent version back to r5. It was breaking the menu.
Forgot to upgrade plush.js for jquery 1.6.x compatibility.
2011-08-22 09:09:04 -05:00
Jon Saine
8225dae182 Converted some jquery code for 1.6.x compliance.
With jquery 1.6.x the attributes module was modified slightly to eliminate ambiguity between attributes and properties.
Long story short, $('blah').attr('checked', true) is now $('blah').prop('checked', true).
2011-08-22 09:09:03 -05:00
Jon Saine
9999065f0a jQuery 1.5.1 -> 1.6.2
-- http://blog.jquery.com/2011/06/30/jquery-162-released/
 -- 1.5 to 1.6 notes: http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/
jQuery UI 1.8.10 -> 1.8.15
 -- http://jqueryui.com/docs/Changelog/1.8.15
 -- Several additional modules was included due to dependency for the upcoming folder browser code.
ColorBox 1.3.15 -> 1.3.17
 -- http://colorpowered.com/colorbox/core/README
jQuery.hoverIntent r5 -> r6
 -- http://cherne.net/brian/resources/jquery.hoverIntent.html#defects
2011-08-22 09:09:03 -05:00
Jeff George
90d11ada6b Kill .bzr stuff, add .gitignore & a pretty README.md for GitHub. 2011-08-22 09:09:03 -05:00
shypike
67a1ee3cde Update translations. 2011-08-20 17:00:40 +02:00
shypike
0f8df0f072 Update POT files. 2011-08-20 16:11:13 +02:00
shypike
9c9936e7ae Update UnRAR to release 4.01 2011-08-20 15:26:34 +02:00
shypike
92926a4825 Use different background images for Lion and (Snow)Leopard DMG files. 2011-08-20 12:10:13 +02:00
Jeff George
92ac787315 Kill .bzr stuff, add .gitignore & a pretty README.md for GitHub. 2011-08-16 16:17:27 -04:00
shypike
2cc53e8dc3 Make package.py work in a git environment.
Remove bazaar specials and add .gitignore
2011-08-16 10:43:55 +02:00
ShyPike
18cb5710f9 Servers with square brackets in the name were not removed from the INI file.
The reason was that the required substitution of "[]" with "{}" wasn't done in all situations.
2011-08-16 10:32:33 +02:00
ShyPike
11b8f23528 Fix crash of emailer.py when email notification is on, without having proper email settings. 2011-08-16 10:30:22 +02:00
ShyPike
cf72abedfd Update text files or 0.6.8 Final. 2011-08-11 20:42:14 +02:00
ShyPike
31f92ebdd5 Update text files for 0.6.8 RC1 2011-08-08 16:22:41 +02:00
ShyPike
39a6635229 Prevent occasional exit crashes of the Kronos module. 2011-08-08 14:11:00 +02:00
ShyPike
a87a70d9c6 Solve several RSS issues:
- Remove links from feeds that have been deleted from rss_data.sab
- Expired links should be re-examined when they re-appear in the feed
- Sanity check of rss_data.sab at startup could expire links without reason
- Reduce storage of expired links from 7 days to 3 days.
- Duplicates detected were not given the pseudo-priority "Duplicate" (if that option was set by the user)
2011-08-07 16:11:05 +02:00
60 changed files with 6908 additions and 7501 deletions

15
.bzreol
View File

@@ -1,15 +0,0 @@
[LF]
.bzreol
.bzrignore
*.py
*.tmpl
*.js
*.css
*.txt
*.po
*.pot
*.sh
[CRLF]
*.bat
*.cmd
*.nsi

View File

@@ -1,10 +0,0 @@
*.pyc
*.pyo
build
dist
locale
srcdist
cherrypy
*.wpr
*.keep
*.bak

13
.bzrtab
View File

@@ -1,13 +0,0 @@
[NOTAB]
*.py
*.txt
*.po
*.pot
*.sh
*.bat
*.cmd
*.nsi
*.tmpl
*.js
*.css
[TAB]

28
.gitignore vendored Normal file
View 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

View File

@@ -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,

View File

@@ -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
-------------------------------------------------------------------------------

View File

@@ -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

View File

@@ -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
View 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.

View File

@@ -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

View File

@@ -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.

View File

@@ -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:

View File

@@ -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"/>

View File

@@ -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");

View File

File diff suppressed because one or more lines are too long

View File

@@ -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

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

After

Width:  |  Height:  |  Size: 129 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 B

After

Width:  |  Height:  |  Size: 142 B

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -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.

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
osx/image/sabnzbd_lion.png Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

Binary file not shown.

34
osx/unrar/license.txt Normal file
View 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

View File

Binary file not shown.

View File

@@ -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)

View File

@@ -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"

View File

@@ -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"

View File

@@ -12,7 +12,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 7bit\n"
"POT-Creation-Date: 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 "&nbsp<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 "&nbsp;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 ""

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

@@ -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 ""

View File

@@ -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 !"

View File

@@ -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!"

View File

@@ -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 !"

View File

@@ -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 ""

View File

@@ -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 !"

View File

@@ -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"

View File

@@ -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ö!"

View File

Binary file not shown.

View File

@@ -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)

View File

@@ -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
#------------------------------------------------------------------------------

View File

@@ -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')

View File

@@ -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:

View File

@@ -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)

View File

@@ -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('*')), \

View File

@@ -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

View File

@@ -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:

View File

@@ -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'(.+){{([^{}]+)}}$')

View File

@@ -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)

View File

@@ -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 ''

View File

@@ -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('.')

View File

@@ -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[:] = []

View File

Binary file not shown.

View File

Binary file not shown.