Compare commits
237 Commits
0.6.x
...
0.7.0Alpha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa6b8199cb | ||
|
|
f2fffd8c0a | ||
|
|
eda7d3b560 | ||
|
|
7559804cbc | ||
|
|
0630cd35d6 | ||
|
|
28554e787c | ||
|
|
965e69b378 | ||
|
|
f9c3a9441a | ||
|
|
5ece2ce844 | ||
|
|
20c857dc31 | ||
|
|
2a5ec5a65d | ||
|
|
6654f75699 | ||
|
|
14d52a4ae7 | ||
|
|
b07214b706 | ||
|
|
a929d9d8ce | ||
|
|
386601ccdd | ||
|
|
75677d88cf | ||
|
|
1e8d51d921 | ||
|
|
9dadef60e7 | ||
|
|
edb39c34b7 | ||
|
|
be96f029a2 | ||
|
|
e741a6644a | ||
|
|
55e60a3e8e | ||
|
|
75e8381924 | ||
|
|
bf3a1b8d43 | ||
|
|
4c5e8a57c5 | ||
|
|
7c5e9b7874 | ||
|
|
1f35bc58e1 | ||
|
|
da105ba12f | ||
|
|
fa0474611d | ||
|
|
610c2c7f0f | ||
|
|
643f20048b | ||
|
|
6dc59f0d9a | ||
|
|
30cbe48f10 | ||
|
|
dc6f8a19e3 | ||
|
|
1da2c73ce0 | ||
|
|
15537de378 | ||
|
|
c72ecf0373 | ||
|
|
2b6adc90c9 | ||
|
|
5878ac81d7 | ||
|
|
92f12911ea | ||
|
|
5863ec6878 | ||
|
|
aeb83d3c93 | ||
|
|
6571788800 | ||
|
|
c335371b77 | ||
|
|
9f534f788f | ||
|
|
bf6b2c3809 | ||
|
|
ab00c54270 | ||
|
|
6932ccbfcd | ||
|
|
dd07dd44ba | ||
|
|
81ad6c1b05 | ||
|
|
4aa902429e | ||
|
|
8a683e4ef0 | ||
|
|
9046658d0f | ||
|
|
4c259d8d2b | ||
|
|
05ab19b5a6 | ||
|
|
9fb74616e8 | ||
|
|
eea2dab3a8 | ||
|
|
a133bb28cd | ||
|
|
b7cda43d36 | ||
|
|
3bee9b3ec0 | ||
|
|
6281684c46 | ||
|
|
41bc05a108 | ||
|
|
da2c0d5539 | ||
|
|
ac1c77d862 | ||
|
|
eccece6799 | ||
|
|
7dd5c03f64 | ||
|
|
406e155284 | ||
|
|
63069407b8 | ||
|
|
1314219d78 | ||
|
|
c602eadfa8 | ||
|
|
ea28b7023f | ||
|
|
c5580f8de4 | ||
|
|
c6b361950e | ||
|
|
4a12acc82c | ||
|
|
a1594f4915 | ||
|
|
be96a611af | ||
|
|
2104f3cb81 | ||
|
|
6761338dfe | ||
|
|
08966da22d | ||
|
|
d497ab0232 | ||
|
|
ff371e1328 | ||
|
|
0a0a8aae4b | ||
|
|
b98ef1817c | ||
|
|
e9f2abd954 | ||
|
|
2a7117d324 | ||
|
|
816850f211 | ||
|
|
45d14f92e5 | ||
|
|
9fa1840c31 | ||
|
|
47854f491b | ||
|
|
bd94148648 | ||
|
|
a54df8f2be | ||
|
|
3563b6450b | ||
|
|
5bb995f601 | ||
|
|
649ca5ad9a | ||
|
|
fed1c16524 | ||
|
|
e9a6f4b9bc | ||
|
|
8bb6d676ef | ||
|
|
8b3954d31b | ||
|
|
fa7ef0fc65 | ||
|
|
b9f42f689e | ||
|
|
9f85063eb3 | ||
|
|
f5a0ba59e5 | ||
|
|
8f553199a4 | ||
|
|
c9347eece8 | ||
|
|
b94c3ede4a | ||
|
|
0fafbd6f2e | ||
|
|
db8f9b5f8c | ||
|
|
76449721b1 | ||
|
|
bb29eb9dbc | ||
|
|
15a66b1f28 | ||
|
|
722c523893 | ||
|
|
9f553fd61f | ||
|
|
b16b625c7c | ||
|
|
dd7335c257 | ||
|
|
e6cb6d0171 | ||
|
|
af54add471 | ||
|
|
f812e9f6e6 | ||
|
|
96e1b81179 | ||
|
|
8b2bcc8d10 | ||
|
|
140cb53485 | ||
|
|
975bbbdbcd | ||
|
|
fe6d4f3673 | ||
|
|
095f3576c4 | ||
|
|
753ed1c846 | ||
|
|
ab80e2b15b | ||
|
|
11b5d2e998 | ||
|
|
3568d067be | ||
|
|
f85f5bf317 | ||
|
|
3f772b3ba7 | ||
|
|
293882b2bb | ||
|
|
103f71fa01 | ||
|
|
f30b5b1063 | ||
|
|
ae6deed7cd | ||
|
|
eaa1efb910 | ||
|
|
c5b7e021cd | ||
|
|
7b3c400124 | ||
|
|
6e31d55941 | ||
|
|
7ae2396167 | ||
|
|
d6bb30c84b | ||
|
|
9ffb2c2438 | ||
|
|
c0a12d5a11 | ||
|
|
ed720fffec | ||
|
|
a7e0cffe0f | ||
|
|
cf6eca6789 | ||
|
|
d5e60bf250 | ||
|
|
93f0f6f08c | ||
|
|
7ef486c44e | ||
|
|
36704e4ad6 | ||
|
|
c735e1da89 | ||
|
|
2ae38c8c04 | ||
|
|
9b79188526 | ||
|
|
d792ef30f9 | ||
|
|
60e1569016 | ||
|
|
de8ba245e9 | ||
|
|
1f125ca0fc | ||
|
|
bb30a5600a | ||
|
|
0229335c15 | ||
|
|
d3d16da3f0 | ||
|
|
4b959da7d2 | ||
|
|
eae8f65e15 | ||
|
|
816ea12993 | ||
|
|
7d186e4585 | ||
|
|
b128f4fa89 | ||
|
|
7c7cb84fd1 | ||
|
|
d3b2fba6a1 | ||
|
|
330b836e08 | ||
|
|
a7defa37bf | ||
|
|
a7724069b5 | ||
|
|
e4bba37ccb | ||
|
|
28aff1e8f3 | ||
|
|
8c060dbd44 | ||
|
|
c2ade817e7 | ||
|
|
681c466a18 | ||
|
|
d328762cd3 | ||
|
|
7299b61244 | ||
|
|
361c7dd51e | ||
|
|
cb2922a805 | ||
|
|
17e33def2e | ||
|
|
d817af8897 | ||
|
|
2904075724 | ||
|
|
730c2ec631 | ||
|
|
8b45af529a | ||
|
|
fbb5bc608c | ||
|
|
87bfcd4fb4 | ||
|
|
0fb45ba563 | ||
|
|
2eb62bf8c9 | ||
|
|
4f87b33df7 | ||
|
|
97de9cb93e | ||
|
|
72cfd48135 | ||
|
|
a886253bea | ||
|
|
d6363252ea | ||
|
|
d2c4f316c7 | ||
|
|
cdec953d96 | ||
|
|
0bc0d4b0e8 | ||
|
|
ec0555a86f | ||
|
|
e89ad70701 | ||
|
|
95c8440c36 | ||
|
|
a814b45851 | ||
|
|
0730f86304 | ||
|
|
84029045ba | ||
|
|
37cd87f3f4 | ||
|
|
b362ae3d8a | ||
|
|
a39cfa485b | ||
|
|
b4ae208943 | ||
|
|
45369fb5b2 | ||
|
|
713993140f | ||
|
|
57476ef7b7 | ||
|
|
176e6b6afd | ||
|
|
dd95becdff | ||
|
|
8d532a75ee | ||
|
|
27ac80c154 | ||
|
|
15058c37b3 | ||
|
|
6b85bf0a49 | ||
|
|
2b24ec2ece | ||
|
|
d99369d4f0 | ||
|
|
f85ec9007c | ||
|
|
f89ca6b390 | ||
|
|
6571ba90ca | ||
|
|
a638d182ab | ||
|
|
d5caeddb30 | ||
|
|
d818020915 | ||
|
|
9a0c8aa660 | ||
|
|
dd4918b6d8 | ||
|
|
11f7260b40 | ||
|
|
052746e16f | ||
|
|
c03921ad55 | ||
|
|
b0cd07dfc0 | ||
|
|
7e635e1f3d | ||
|
|
c5d675ac88 | ||
|
|
94b3629fa5 | ||
|
|
0956915d33 | ||
|
|
5e3cd8d77b | ||
|
|
53aed799a1 | ||
|
|
3a95707d79 | ||
|
|
c59a7a91a9 | ||
|
|
cdc086f2db |
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "interfaces/Config"]
|
||||
path = interfaces/Config
|
||||
url = https://github.com/thezoggy/sabnzbd-uni_Config.git
|
||||
13
ABOUT.txt
@@ -1,5 +1,5 @@
|
||||
*******************************************
|
||||
*** This is SABnzbd 0.6.9 ***
|
||||
*** This is SABnzbd 0.7.0 ***
|
||||
*******************************************
|
||||
SABnzbd is an open-source cross-platform binary newsreader.
|
||||
It simplifies the process of downloading from Usenet dramatically,
|
||||
@@ -12,8 +12,8 @@ and offers a complete API for third-party applications to hook into.
|
||||
There is an extensive Wiki on the use of SABnzbd.
|
||||
http://wiki.sabnzbd.org/
|
||||
|
||||
IMPORTANT INFORMATION about release 0.6.0:
|
||||
http://wiki.sabnzbd.org/introducing-0-6-0
|
||||
IMPORTANT INFORMATION about release 0.7.0:
|
||||
http://wiki.sabnzbd.org/introducing-0-7-0
|
||||
|
||||
|
||||
Please also read the file "ISSUES.txt"
|
||||
@@ -54,10 +54,3 @@ an nzb backup folder, or temporarily go back to 0.4.x until your queue is comple
|
||||
|
||||
The history is now stored in a better format meaning future upgrades should be backwards
|
||||
compatible.
|
||||
|
||||
|
||||
*******************************************
|
||||
*** Changes since 0.5.6 ***
|
||||
*******************************************
|
||||
|
||||
See: http://wiki.sabnzbd.org/introducing-0-6-0
|
||||
|
||||
853
CHANGELOG.txt
@@ -1,822 +1,33 @@
|
||||
-------------------------------------------------------------------------------
|
||||
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
|
||||
-------------------------------------------------------------------------------
|
||||
- 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
|
||||
- Delay starting of dowload task until after webserver is started.
|
||||
- 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
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.6Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Prevent crashes when running into disk-full situations.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.6RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- When "Download only" is used, do not send downloaded NZB files to the queue
|
||||
- Fix bad links coming from nzbclub.com
|
||||
- A job sometimes fails verification when the option "don't download samples" is used.
|
||||
Now this option will be ignored when you click "Retry" in the history.
|
||||
- File an error message when the RSS-email template is missing.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.6Beta2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix sending of duplicate emails when using a list of recipients
|
||||
- Fix handle leakage on Windows
|
||||
- On OSX, SABnzbd didn't handle "Open With" of nzb.gz files properly
|
||||
- Limit the amount of retries when getting a partial NZB from an index site
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.6Beta1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Compatible with OSX Lion
|
||||
- End-of-queue action now ignores paused items in the queue
|
||||
- Fetching extra par2 files now obeys pause too
|
||||
- Extension-based cleanup now also cleans sub-folders
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.5Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Since 0.6.3, all end-of-queue actions failed.
|
||||
- Generic sort: failed to recognize years surounded by underscores.
|
||||
- When running the Wizard in German, the last page crashed.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.4Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix silly error in the Wizard
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.3Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Save bookmark memory file right after reading newzbin's bookmarks
|
||||
- Add new command line option --new to force new SABnzbd instance
|
||||
- Plush: add "missing articles" to queue entry hover-over popup
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.3RC3 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Regression error: paused duplicates did not end in the queue
|
||||
- Better support for standby and hibernate on Linux
|
||||
- Remove the delay when items go from the download queue to History
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.3RC2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- On OSX, the top menu sometimes uses the wrong URL to start the browser
|
||||
- API: jsonp-callback now also supported in error responses
|
||||
- When a job is individually pause, save admin immediately
|
||||
- Sorting: support %fn parameter in folder names
|
||||
- Allow a server definition with a non-resolving name to be disabled.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.3RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Move option "Check unpack results" to Config->Switches
|
||||
You may want to set this on because the default was off.
|
||||
- Automatic redirection when addressing the HTTPS port using the HTTP url.
|
||||
- Option to store the files of all jobs in a single category folder
|
||||
(enable this by appending a '*' to the storage path)
|
||||
- The smpl skin failed to save the attributes of the default category
|
||||
- Replace double quote characters in job folder names (to avoid Samba issues)
|
||||
- When using the download button in an RSS overview, the title wasn't used as job name
|
||||
- Another attempt to fix the NZB-association problem on Windows 7 with HTTPS
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.2Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed association of NZB files with SABnzbd, when using HTTPS-only on Windows Vista/7
|
||||
(resulted in multiple running copies of SABnzbd instead of an NZB upload)
|
||||
- Fixed incorrect email date header when using other language than English
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.1Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed association of NZB files with SABnzbd (for real this time).
|
||||
(resulted in multiple running copies of SABnzbd instead of an NZB upload)
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.1RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed association of NZB files with SABnzbd
|
||||
(resulted in multiple running copies of SABnzbd instead of an NZB upload)
|
||||
- Fixed display of warning when upgrading from 0.4.x
|
||||
- Fixed problem when entering NZB files with names containing accented characters
|
||||
(happened only on OSX with Firefox 4)
|
||||
- Fixed several textual issues
|
||||
- Add PID file support for OSX/Unix (--pid <path>)
|
||||
- Fix attribute error caused by missing category field in nzbmatrix RSS feeds
|
||||
- Fix nzbmatrix category support by just reading the whole "Description" field.
|
||||
- Pause downloader when downloaded file cannot be written to disk.
|
||||
- Fix "~/" (home-dir) support for Unix/OSX and disable for Windows
|
||||
- Add Romanian translation
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix handling of semicolon in parameters for user scripts.
|
||||
- Fix attribute handling of 'addlocalfile' API.
|
||||
- Fixed broken Mobile skin
|
||||
- Prevent loss of sabnzbd.ini when disk is full
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0RC4 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed History in Classic skin
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0RC3 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed History paging with regards to queued jobs
|
||||
- Changing category in the queue failed to change to the PP setting.
|
||||
- Add support for categories in RSS feeds from nzb.su
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0RC2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Category returned by pre-queue script wasn't handled properly
|
||||
- Stop warning about duplicate articles in an NZB, just summarize after download
|
||||
- Speed-up the generation of RSS filter/preview page
|
||||
- "paused" priority at the RSS feed-level wasn't handled properly
|
||||
- Plush: fix some display issues
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix hangup during scheduled restart.
|
||||
- OSX: Launch browser from menu bar with HTTPS when only HTTPS is available.
|
||||
- Fix problem that caused SABnzbd always to startup in paused state.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Beta5 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Plush: added TopMenu-toggle and show warning-line only when needed
|
||||
- Plush: added "Now" menu entries for bookmarks, RSS and watched folder
|
||||
- Fix failing scheduled event "pause-postprocessing"
|
||||
- Improve handling of nzbmatrix waiting times
|
||||
- Fix sub-optimal handling of password tries on encrypted rar files
|
||||
- Allow "Default" category to be picked for all Sort functions
|
||||
- Fix server test function
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Beta4 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Unix/OSX: fixed download hangup when having non-responding servers
|
||||
- Fixed paging problem in Plush
|
||||
- Plush now uses full window width
|
||||
- New server could be not added in "disabled" mode
|
||||
- Prevent a discarded duplicate job from showing up as an orphan
|
||||
- Fixed disabled default script in Plush
|
||||
- Emails to multiple recipients are now sent per recipient
|
||||
allowing more flexibility in email templates.
|
||||
- Moved "email test" button to Config->Email
|
||||
- Plush cookies renamed to prevent interference by older versions
|
||||
- Stop "growl"-ing all queued jobs at startup (OSX)
|
||||
- Unix/OSX: prevent queue lockup when server connect times out
|
||||
- Fix problem with setting a scheduled server action
|
||||
- The API should give the same byte totals as the UI
|
||||
- Move email test to Config->Email
|
||||
- Fix loss of PP settings when retrying
|
||||
- When re-evaluating RSS entries, use original RSS categories
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Beta3 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed odd post-processing after upgrade
|
||||
- Fixed "Send Group" option
|
||||
- Fixed incorrect error handling for nzbmatrix unbookmarking
|
||||
- Remove "unknown decoding" message for files without any downloaded articles
|
||||
- Unstarted jobs inherited after upgrade would not download properly
|
||||
- Fix failing server test after change of server address
|
||||
- Add "Read all feeds now" button (will read and process all enabled feeds)
|
||||
- Add 'nzb_key' for "add nzb"-only API access
|
||||
- Prevent crash when incorrect host address triggers unexpected error code
|
||||
- Interpret 0-sized NZB files from nzbmatrix as "not found" (and don't retry forever)
|
||||
- Three way option for duplicate detection (off/ignore/pause)
|
||||
- Plush: lots of styling, navigation and browser compatibility fixes
|
||||
- Windows installer will now add a "Safe" entry to the Start menu
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Beta2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix problem in smpl skin's RSS download buttons
|
||||
- Fix paging and flag display in Wizard
|
||||
- Add clear-downloaded jobs in RSS
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Beta1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Text and translation fixes
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha13 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Duplicate NZBs will not be rejected but entered the queue
|
||||
as "paused" and flagged. Manual resuming will start the download anyway.
|
||||
- Add INI-only option to ignore unrar timestamps
|
||||
- More Plush touch-ups
|
||||
- Translation updates
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha12 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Delete from History did not always work
|
||||
- "Add server" dialog was broken
|
||||
- Add confirmation dialog to deleting from RSS feed table
|
||||
- Improve Queue and History deletion and purge in Plush
|
||||
- Cosmetic improvements to Plush
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha11 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Plush tweaks
|
||||
- Failed URL-based NZB fetches were not moved to History but became dead queue entries
|
||||
- Empty NZB files are now refused
|
||||
- Make some hard-coded texts in Plush translatable
|
||||
- Encrypted rar files without available password were not reported properly
|
||||
- Remove race condition which could cause crash of URL-based NZB fetches
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha10 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed issue in email that prevented HTML emails templates from working
|
||||
- Identical host:port combos are allowed for Usenet servers now
|
||||
- After auto-pause om encrypted files don't stop again after the user resumes
|
||||
- In RSS feeds give the feed-level category priority over the trackers's derived category
|
||||
- Add API handlers for new [rss] and [categories] entries.
|
||||
- Fix incorrect handling of End-Of-Queue script when NICE or IONICE parameters have been set
|
||||
- Filter hidden files and folders from script pick list
|
||||
- Make "folder_check" accessible from the UI
|
||||
- End-of-queue action could be be cleared properly from the INI file
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha9 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Plush top menu and navigation improvements
|
||||
- Active jobs sometimes showed up as orphaned jobs
|
||||
- Post processing retries in SMPL skin (not fully funtional)
|
||||
- Apply category attributes to RSS feed jobs correctly
|
||||
- Drop support for Python 2.4
|
||||
- Add json-p support by support 'callback' parameter in API
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha8 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Prevent active and waiting post-processing jobs from showing up
|
||||
in the orphans list.
|
||||
- Simplified Wizard (No skin selection, Usenet server first)
|
||||
- Accept non-alphanumerical characters in {{category}}name.nzb
|
||||
- Add priority support to RSS feeds
|
||||
- Add 'paused' as an extra priority in RSS feeds
|
||||
- Add %dn to Series terms (original job name)
|
||||
- Add hidden option "never_repair".
|
||||
- The Windows version writes its API URL to the registry
|
||||
- Colons were removed from folder names
|
||||
- Fix crash when an RSS feed had no filters
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha7 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Post-processing would crash on empty category folder
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha6 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Features:
|
||||
- Plush now has tabbed Config pages
|
||||
- Add retention time parameter to servers so that articles too old will not be tried
|
||||
- Disable top_only option (interferes with "retention" implementation)
|
||||
- Option to automatically remove nzbmatrix bookmark after successful download
|
||||
Bugs:
|
||||
- Prevent blocking of RSS preview by automatic RSS read-out
|
||||
- Windows binary had issues with sending non-english emails
|
||||
- Explicit RSS filter attributes (category, script, pp) influenced each other
|
||||
within a feed definition
|
||||
- rss_scan is now a scheduable event and will override the rss_rate option.
|
||||
- Improve handling of colon characters in filenames (compensating for par2 issues)
|
||||
- NZBs would be left behind, despite ".nzb" being in the cleanup-list
|
||||
- When only individually paused jobs are in the queue, unpausing them
|
||||
would not always resume downloading
|
||||
- Use nzbmatrix.com's new V1.1 api.
|
||||
- Sanitize nzbname parameter coming from API calls (led to problems with some
|
||||
third-party utilities)
|
||||
- NZB-chaining should ignore the duplicate NZB check and fix cleanup
|
||||
of "complete" folder after NZB-chaining.
|
||||
- Plush did not save end-of-queue action.
|
||||
- Zipped NZB files from URLs were not accepted.
|
||||
- OSX: The end-of-queue action "Hibernate" shut down the system.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha5 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Plush now has multi operations for the queue
|
||||
- You can now see any orphaned folders in "temporary download folder"
|
||||
and choose to delete or to re-add to the queue (Classic: Config-Main, others: Connections)
|
||||
(This replaces the "Scan" button, which was a blunt instrument)
|
||||
- There is now Default category, which provides attributes for all "Default" settings.
|
||||
The default PP, script and priority in Config->Switches are therefor removed.
|
||||
- nzbmatrix bookmarks are removed after successful download/post-processing
|
||||
(If you really don't want that, use the INI-only 'del_bookmark' option)
|
||||
- NZB chaining now ignores duplicate check.
|
||||
(Chaining is automatic re-queuing of a download containing only NZB(s))
|
||||
- Improve sorting of rar files to enable streaming
|
||||
- Normally when enabling HTTPS, the HTTP port will still be active.
|
||||
Now you can choose to run HTTPS-only on the standard port.
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha4 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix crash after queue repair cycle, which prevented restart
|
||||
- end-of-queue hibernate on OSX did shutdown instead of sleep
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha3 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Season sort got confused when show title contained a dot
|
||||
- Restore newzbin support in Plush
|
||||
- Show speeds from MB and higher with one decimal
|
||||
- Restore detection of empty downloads
|
||||
- Fix crash in post-processor caused by non-plain-ASCII in user script output
|
||||
- Proper converion of 0.5.x language codes and skin names
|
||||
- A repair scan would pick up folders waiting for retry in History, creating double entries
|
||||
- Small fixes
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Proper packaging
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.0Alpha1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Redesign of the download queue allowing repairs and retries of post-processing
|
||||
- pre-queue user script
|
||||
- optional email sent when RSS sends jobs to the queue
|
||||
- Redesign of the Config-RSS pages (note: "smpl" does not work here)
|
||||
- Full Windows Service support
|
||||
- Byte counters per server and independent of History database
|
||||
- Many bugfixes
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.5RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Add Norwegian translation
|
||||
- Remove illegal characters from nzbname parameter in API calls
|
||||
- Add INI-only option "api_warnings" to enable/disable warnings
|
||||
about unauthenticated access to the API.
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.4Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Ensure that sabnzbd.ini has no group/world access (Unix, OSX)
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.4RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Support unpacking of rar-files embedded in zip-files
|
||||
- Compensate for IPV6 issues of Chrome on OSX
|
||||
- Changes in dirscan-speed are now immediately effective
|
||||
- Reduce amount of logging
|
||||
- On Windows, detect whether sqlite3.dll is missing. If so, panic and
|
||||
complain about lame virus scanner.
|
||||
- Add hidden option "queue_complete_pers" to select non-persistence of
|
||||
non-script end-of-queue actions.
|
||||
- Restrict square bracket substitution to server names
|
||||
- Add hidden option "allow_64bit_tools" to allow or prevent use of 64bit par2 and unrar.
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.3Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Embed nzbmatrix categories in SABnzbd (preventing problem in OSX)
|
||||
- Remove leading spaces in user script output display
|
||||
- Solve problems with passing filenames with '&' as parameter in user scripts
|
||||
- Allow leading empty lines in email templates
|
||||
- Prevent oversized logfile when logging fails
|
||||
- Remove double header in email (some email server choke on that)
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.3RC2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed error in 101 season/episode handling (prevent years like 2010 from matching)
|
||||
- Fixed error in saving some email options
|
||||
- Accept ".nzb.gz" files coming from an URL fetch.
|
||||
- Make sysload support for Linux more universal
|
||||
- Restore newzbin support in UI
|
||||
- RSS feeds are now listed in alphabetic order
|
||||
- Fixed error handling & in names sent to post-processing script (Windows)
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.3RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Support of nzbmatrix categories
|
||||
- Support of X-DNZB headers for all indexing sites (allows categories for nzbs.org)
|
||||
- Support 101 season/episode notation
|
||||
- Use all text after the season/episode element as episode name (don't require '-')
|
||||
- Support of categories in RSS feeds
|
||||
(only for compatible feeds, like nzbmatrix.com and nzbs.org)
|
||||
- Accumulate all groups from an NZB (for category matching)
|
||||
- After reducing connections SABnzbd should retry full amount 10 min later
|
||||
This event was sometimes missed
|
||||
- Recursive unpack of archives should be done in nested folders instead of base folder
|
||||
- Sort strings with an absolute path were not handled properly
|
||||
- Restore compatibility with Python 2.4
|
||||
- Several fixes to improve robustness of NZB retrieval from indexers
|
||||
- Solved crash in NZB retrieval from indexers when explicit PP value was set
|
||||
- Remove newzbin features from UI
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.2 Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- API: &nzbname= was ignored for some sites
|
||||
- API: Server rename did not work properly
|
||||
- Remember end-of-queue action for next end-of-queue
|
||||
- Some updates to Danish
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.2 RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fixed: Large queue caused very slow UI and high memory usage
|
||||
- Fixed: Some very large rar sets failed to unpack
|
||||
- Fixed: garbled emails were sent
|
||||
- Python user scripts now run properly on OSX
|
||||
- Fixed: SeasonSort could produce trailing spaces, which fail on Windows
|
||||
- Fixed: unpacking errors not properly reported to user script
|
||||
- Keep trying when receiving garbage from nzbmatrix.com
|
||||
- Add total-size fields to API-call History.
|
||||
- Auto-search for free port when specified port is occupied
|
||||
- Improve reporting of newzbin errors
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.1 Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix accented character problems in emails
|
||||
- Warn when user doesn't have permission to use a web port (Linux/OSX)
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.1 RC2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Accept comma-separated email address in "email_to" option.
|
||||
- Allow manual retry of URL-based NZB fetches when a bad NZB is received
|
||||
- Add INI-file option "size_limit" that sets any oversized job
|
||||
to paused and low priority.
|
||||
- Added French translation of email template
|
||||
- Add Danish translation
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.1 RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Add 'size_limit' option. Any job bigger than this limit will be set to
|
||||
low priority and be paused.
|
||||
- TV Season sort now has "affected categories" too. Check your settings!!
|
||||
- Fixed problems that could lead to an infinite unpacking loop
|
||||
(when using a "sick" NZB and using +U instead of +D postprocessing)
|
||||
- Duplicate title checking in RSS is now done across all feeds
|
||||
- Fixed issues with accented characters in NZB names when using RSS
|
||||
- Fixed issues with accented characters in category folder names when using RSS
|
||||
- Plush: fix nzo range selection when clicking checkboxes
|
||||
- When detecting an unsupported unrar on Posix systems, drop unsupported features
|
||||
(This may lead to files being lost when duplicate names exist.)
|
||||
- Sorting examples were sometimes wrong
|
||||
- Sorting couldn't handle some pattern combinations
|
||||
- Fixed priority handling for RSS feeds and newzbin bookmarks
|
||||
- Fixed crash occuring when user profile contains characters outside ISO-8859-1
|
||||
- Allow nzb-backup folder field to be cleared
|
||||
- When using only manual newzbin bookmark reading, allow automatic un-bookmarking
|
||||
- Fixed several translation errors and omissions
|
||||
- Keep Windows awake during post-processing of last job (while queue is already empty)
|
||||
- Make it possible to run Python user scripts on OSX
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Relabeled to 0.5.0
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0RC8 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Add par2_multicore option to Config->Switches
|
||||
- Windows/OSX: Replaced OpenSSL libraries
|
||||
- Windows: Replaced par2-multicore by new version
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0RC7 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
- When priority of newzbin or RSS job comes from the category, it wasn't effective.
|
||||
- When unpacked file and directly download file have the same name,
|
||||
the latter got lost
|
||||
- Make nzbmatrix error handling robust
|
||||
- When apikey is present in API call, do not require username/password
|
||||
- Windows installer is now multi-language too
|
||||
- Windows installer warns about queue when upgrading from 0.4.x
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0RC6 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Changes:
|
||||
- Add INI-only option "par2_multicore" to enable/disable par2-multicore
|
||||
Fixes:
|
||||
- Prevent crash in RSS due to odd characters
|
||||
- Prevent deadlock in downloader when server is blocked
|
||||
- Unrar option -ai should only be used on Windows
|
||||
- Prevent deletion of par files of other sets in multi-set NZBs
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0RC5 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
- Incorrect job rename in SMPL skin on Windows
|
||||
- INI-only option "no_penalties" to limit timeout penalties for
|
||||
non-optional servers to 1 minute
|
||||
- HTTPS certificate paths should default to admin_dir directive
|
||||
- The second parameter of the user script should be the original NZB file name,
|
||||
even when the job has been renamed.
|
||||
- Show clear error message when RSS feed preview or force-download fails.
|
||||
- Don't warn about RSS reading problems when a scheduled scan is done.
|
||||
- Ignore empty "username" and "apikey" parameters in nzbmatrix.com URLs
|
||||
and add stored values.
|
||||
- Suppress authentication warning for API call "get_scripts".
|
||||
It's used by some external utilities to determine if username/password is required.
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0RC4 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
- Ignore read-only attributes of files in a RAR archive
|
||||
- Remove potential crash on OSX when handling corrupt par2 file
|
||||
- Enable manual unblocking of permantly blocked servers
|
||||
- Retry permanently blocked servers after 30 minutes (compensate for shoddy servers)
|
||||
- INI-only option "folder_length_max" for trimming folder name size
|
||||
(default 128 for Windows, for others 256)
|
||||
- Give unrar preference over rar when both installed on a Posix system
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0RC3 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
- Avoid potential crash when server closes connection
|
||||
- On Connections Page: show original error message sent by server
|
||||
- Make sure unrar check isn't done for OSX
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0RC2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
- Increase timeout for nzb fetches from URLs to 60 sec
|
||||
- Duplicate title checking in RSS is now case-insensitive
|
||||
- Only warn about presense of old queue when no new queue is present yet
|
||||
- Don't warn when a supported RAR (instead of UNRAR) program is present
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
- Fix broken server test in Wizard and Config->Servers
|
||||
- Add tbbmalloc.dll to par2 program (prevents problems when you have
|
||||
another version of that file on your system)
|
||||
- Fix uneven download speed of very large NZBs
|
||||
- Include special par2 variant for OSX 10.6+ (automatically selected)
|
||||
- Fix problem with the script folder path containing a space
|
||||
- Fix disabling of RSS feeds when changing settings
|
||||
- When forcing disconnect don't try to send "Quit" to a non-responding server
|
||||
- Warn user (once) about presence of old queue file
|
||||
- Updated German texts
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Beta6 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
- Solve problems with unwilling servers and "random" server time-outs.
|
||||
- Do not generate warnings for intermittent server problems.
|
||||
- Joinable rar-sets were not always properly joined.
|
||||
- Fixed timing problems when SABnzbd is running behind an Apache server
|
||||
- Don't report failed default permissions setting when the user has set none
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Beta5 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
- Removed potential deadlock from Downloader
|
||||
- Allow backup servers to be used when all primaries blocked or inactive
|
||||
- Scheduled PAUSE_ALL failed to stop downloading
|
||||
- Will now continue unpacking other rar-sets when one rar-set fails to unpack
|
||||
(but only when option "Post-process Verified jobs" is off)
|
||||
- QuickPar messed up the par files of multi-set NZBs
|
||||
- When the par2 tool joined multi-part files of a multi-NZB, it mixed up files
|
||||
from other sets
|
||||
- Work-around for a bug in par2-tbb (making if fail to join some multi-part jobs).
|
||||
- When scaling down the number of connections of a server,
|
||||
will now retry with the full amount 10 minutes later.
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Beta4 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
* Fixed poor reliability of reading RSS feeds and subsequent NZB fetches
|
||||
(caused by a too short time-out value).
|
||||
* Posix: when user has not set a permissions value, use the account's
|
||||
default permissions (prevents problems with permissions coming from rar files)
|
||||
* When option "Post-process only verified jobs" is set, do not execute
|
||||
user-script when job fails
|
||||
* NZB files read in from categorized watched folder did not inherit
|
||||
the category's priority
|
||||
* Fixed error reporting about incorrect NZB file
|
||||
* Improved year recognition in tvsort
|
||||
* Some skin fixes
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Beta3 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes:
|
||||
* Solved problems with adding NZB by URL (also through RSS)
|
||||
* Proper display of download speed in OSX menu
|
||||
* Fixed compatibility of Plush and IE8
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Beta2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Fixes
|
||||
* nzbmatrix.com support fixed (fetch NZB and Wizard settings)
|
||||
* Problems on some systems because of reading NZB-spec from newzbin
|
||||
for each NZB file
|
||||
* When an RSS feed has more than 9 filters, the order was disturbed
|
||||
* Fixed several TVSort problems including a hangup
|
||||
* Each RSS preview added jobs marked "will not be downloaded"
|
||||
instead of just the very first scan.
|
||||
* Email reporting disk-full was malformed
|
||||
* Sample detection was to eager to detect
|
||||
* Improve detection of 64bit versions of Windows Vista/7/Server2008
|
||||
* Explicit priorities in nzb upload were ignored
|
||||
* Corrections in translations
|
||||
Improvements
|
||||
* INI-only option to reduce the amount of admin saves (important for very large NZBs)
|
||||
* INI-only option to enable/disable final folder renaming (__UNPACK/__FAILED)
|
||||
* Fixed OSX uninstaller so that it will leave extra skins on the disk
|
||||
* Association of NZB files with SABnzbd for OSX
|
||||
* Retry folder renames and deletions on Windows
|
||||
* Don't save RSS admin to disk, when no feeds are active
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Beta1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Highlights
|
||||
* Multi-language UI: English, French, Dutch, German and Swedish
|
||||
* Start-up Wizard to get you going fast
|
||||
* QuickCheck : on-the-fly par2 check. When a download is correct,
|
||||
the normal par2 check is skipped
|
||||
* Configuration changes take immediate effect (except skins and some system folders)
|
||||
* Job priorities, individual job pausing, job renaming
|
||||
* Flexible server setup (scheduled on/off, optional servers)
|
||||
* The Plush and Smpl skins have been improved and are a lot faster than before
|
||||
and they have paging
|
||||
* New "Mobile" skin (replaces iPhone-skin)
|
||||
* RSS supports more sites and has generally improved
|
||||
* For Windows distribution: 64-bit par2 and unrar are used
|
||||
on 64-bit Vista/Win7/Server2008
|
||||
* Support for password protected rar-files (limited)
|
||||
* Expanded TV/Movie sorting
|
||||
More Tech stuff
|
||||
* HTTPS support for the Web-UI
|
||||
* Email templates to design your own emails (including multiple recipients)
|
||||
* Extensive API for utility developers
|
||||
* History survives a full queue/admin clean and future upgrades
|
||||
* Windows: optional association of NZB files with SABnzbd (double-click support)
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha12 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Drop country names from language strings
|
||||
* Fixed crash when setting script to None
|
||||
* Add missing "Restart required" messages in Config->General in Classic and Smpl
|
||||
* When pause-download-while-pp is reset, resume downloading immediately
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha11 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Fix foreign character problems in several places
|
||||
* Add Swedish translation
|
||||
* Plush tweaks
|
||||
* Allow foreign characters in email templates
|
||||
* Prevent selection of "Mobile" skin as primary
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha10 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Fix foreign character problems in several places
|
||||
* top_only option wasn't changable on-the-fly
|
||||
* Windows uninstaller left behind some files
|
||||
* Complete the API with the del_config function
|
||||
* German translation
|
||||
* Plush tweaks
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha9 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Fixed bug in handling fetching of additional par2 files
|
||||
* Fixed nzbmatrix support properly
|
||||
* Fixed potential urlgrabber crash on startup
|
||||
* Fixed problem with NZB files containing space before ".nzb"
|
||||
* Fixed Windows Vista/7/Server2008 x64 detection
|
||||
* Allow feed:// syntax in RSS feeds
|
||||
* Restore 0.4.x compatibility for the RSS URL.
|
||||
* Even more Plush improvements
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha8 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Fixed failing RSS filters
|
||||
* Fixed nzbmatrix.com RSS support
|
||||
Note: you URL must contain username and ApiKey
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha7 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Use RSS titles for job names instead of downloaded filename.
|
||||
(This bypasses newzbin's filename mangling).
|
||||
* URL grabber will do 5 retries before giving up (and generate
|
||||
correct retry links in History).
|
||||
* RSS support for nzbserien.org (and slight improvement for nzbs.org)
|
||||
* Plush overhaul
|
||||
* "smpl" is now the preferred skin, "Default" renamed to "Classic".
|
||||
* Detect internal problems and restart SABnzbd if found
|
||||
* Enable "hibernate" and "standby" as end-of-queue actions for Linux systems
|
||||
(Will only work if supported by the kernel of your platform)
|
||||
* Update to unrar 3.90 (OSX and Windows)
|
||||
* Remove segment files after par2-based joining
|
||||
* Internationalisation of all texts in History
|
||||
* Internationalisation of email templates
|
||||
* Prevent crash when encountering a corrupt par2 file during QuickCheck
|
||||
* Added new api call: api?mode=warnings&name=clear
|
||||
* Added new api call: api?mode=translate&value=ACRONYM&output=json
|
||||
* Priorities in RSS feeds now work properly
|
||||
* Add "Require" filter type for RSS feeds
|
||||
* Add SSL type (V23, V2, V3), only needed for som odd ISP's
|
||||
* Add INI-file-only option to skip the check after unrar.
|
||||
This is to support people with consistently failing checks.
|
||||
* Passwords for encrypted RARs can be set in the job title
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha6 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Add 64bit unrar/rar 3.90 for Windows
|
||||
* "Mobile" skin (limited functionality)
|
||||
* Removed a number category-related problems
|
||||
* Scan enabled RSS feeds 15 sec after startup
|
||||
* Get newzbin bookmarks 20 sec after startup
|
||||
* Add scheduled pause-all command thats stops all disk activity
|
||||
* Improved handling of accented characters (also in par2)
|
||||
* Unrelated empty folders are no longer removed from "incomplete" folder
|
||||
* Initial runs of RSS will no longer be downloaded by "download" button
|
||||
instead thay are marked and can be downloaded individually
|
||||
* TV Sort: Fixed double brackets () naming on items with the country in the name.
|
||||
* Disable password completion by browsers on Config pages.
|
||||
* Retry links in History were incorrrect
|
||||
* Solved lots of small bugs
|
||||
* Skin improvements
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha5 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Less bugs
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha4 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Less bugs
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha3 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Session/API key system ported from 0.4.11
|
||||
* Multi-language, including Dutch and French translations
|
||||
* Less bugs
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
* Fixed failing delete-bookmark-on-newzbin feature.
|
||||
* Wizard improvements
|
||||
* Plush improvements
|
||||
* par2 for OSX replaced
|
||||
* Added penalty timeout for unresponsive servers (when flagged as "optional").
|
||||
* Fixed some incompatibilities with Python 2.4 and 2.6
|
||||
* TV sorting improved
|
||||
* Support for :: or [::] as valid hostnames. :: listens on all ipv6 addresses.
|
||||
* Allow non-conforming RSS feeds (fixes nzbmatrix.com issue)
|
||||
-------------------------------------------------------------------------------
|
||||
0.5.0Alpha1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
Core Stuff:
|
||||
* Updated Cherrypy - Among other things, this means you can now use HTTPS for the
|
||||
web ui and have a prettier login window if you use a login/pass.
|
||||
We have also dropped the need for /sabnzbd/ in the urls you use to access sabnzbd.
|
||||
It'll still work with /sabnzbd/, but it will also work without it now.
|
||||
* New XML Parser - Results in lower memory usage when reading .nzb files, especially large ones.
|
||||
* File Quick-Check - We can now skip par2 verification altogether in some cases by performing
|
||||
a quick-check of file hashes before post-processing.
|
||||
* New Quick-Start Wizard - If you don't have any servers set, you'll get a neat little
|
||||
five-page wizard allowing you to change all the config settings you really need to worry about.
|
||||
Stuff like "How should SABnzbd be accessible? Remotely or locally?" and "What's your server address",
|
||||
in a step by step manner. Features a button on the server page to test the connection to the news server,
|
||||
to make sure you have entered your details correctly.
|
||||
* Revamped Config System - The configuration backend was overhauled in 0.5.
|
||||
Many of the config pages have been changed around to make more sense,
|
||||
you can now easily enable/disable servers, and in general all server interaction is much faster than before.
|
||||
* E-mail Templates - The e-mail system from 0.4.x has been updated to have a full template system,
|
||||
allowing you to customize e-mail alerts.
|
||||
* File Association - .nzb files are now associated with SABnzbd, so you can just double click them
|
||||
to load the file into your queue. Currently only Windows is fully supported, however
|
||||
you can launch SABnzbd with arguments containing a path, or multiple paths to local nzb/rar/zip files.
|
||||
* .TS Filejoining - File joining has been improved to allow support for joining multiple .TS files into one file.
|
||||
* Date Sorting - To compliment series sorting, sorting has now been added for downloads with dates in their names,
|
||||
allowing you to place files in daily, monthly, yearly folders with proper naming
|
||||
* General Sorting - Sorting for general downloads allows users to expand the series sorting into
|
||||
other types of downloads. Has support for years in titles allowing files to be placed in folders
|
||||
depending on the decade.
|
||||
The API:
|
||||
* Totally overhauled for 0.5. Basically, you now have full access to near everything about
|
||||
SABnzbd via POST and XML/JSON. See the full docs for more details. Why does this matter?
|
||||
It means if you know any programming language and understand how to parse XML/JSON and POST data to an URI,
|
||||
then you can write some application which can communicate with SABnzbd almost as easily as a template can.
|
||||
The Queue & History:
|
||||
* Per-Item Pause - Now, in addition to being able to pause the whole queue, you can also pause
|
||||
individual items in the queue. You can also force downloads to start while the whole queue is paused.
|
||||
* Priorities - The queue now has four priorities, Normal, High, Low and force.
|
||||
Think of this as an easy method to move things around your queue, or to insert things into
|
||||
specific areas of your queue. One use case is to set everything to "normal" by default,
|
||||
so it works like 0.4.x. However, you can then add a new post or RSS feed as high-priority to have it be
|
||||
inserted to the top of the queue, or add one as low-priority to have it inserted at the bottom of the queue
|
||||
and keep below normal downloads that are added. Forced items will go straight to the top of the queue,
|
||||
and will continue to download even if the queue is paused.
|
||||
* New History Backend - The history is now stored in a database, so we can handle larger histories better,
|
||||
and store more information about downloads.
|
||||
Skins:
|
||||
* General Template Changes - Templates have all been updated to support all the neat new features.
|
||||
So if you're one of those guys still married to Default, don't worry about missing out on all this new stuff.
|
||||
* Plush - Complete backend rewrite to work almost exclusively off the API [so it's MUCH faster],
|
||||
and a reorganized (and more accessible!) main menu.
|
||||
* SMPL - Has been reworked to be much faster and friendlier to use.
|
||||
The default page now shows the top 5 items from the queue and history.
|
||||
The queue and history are also now pages to stop loading a massive number of items.
|
||||
Bugfixes:
|
||||
* Sure!
|
||||
0.7.0Alpha2 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Fix disabled options in Config skin
|
||||
- Remove flags from the Wizard and Config skin
|
||||
- Replace real spaces in RSS-urls with %20
|
||||
- Prevent double entries in History's "Source" section
|
||||
- Prevent crash when OSDNotify doesn't work properly
|
||||
- Small improvents in Windows installer
|
||||
-------------------------------------------------------------------------------
|
||||
0.7.0Alpha1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Not tracked
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.15Final by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Flag post-processing as failed when files cannot be moved/copied to destination
|
||||
- Fixed another newzbin link
|
||||
-------------------------------------------------------------------------------
|
||||
0.6.15RC1 by The SABnzbd-Team
|
||||
-------------------------------------------------------------------------------
|
||||
- Change newzbin URL
|
||||
- Prevent setting watched-folder speed to 0 (while having no watched-folder)
|
||||
from triggering an inifinite loop.
|
||||
- Move "locale" construction from Plush skin to Python code.
|
||||
Some embedded Linux platforms show unstable behavior with the original construction.
|
||||
- Extend OSX menu with troubleshooting options
|
||||
- Add trailing slashes to internal Plush paths to support reverse proxies better.
|
||||
- Ignore whitespace around regular expressions in RSS filters.
|
||||
- Prevent crash on restoring URL-fetches when using --repair-all option
|
||||
- Fix "Repair" button on smpl Connection page. Current path fails when using a reverse proxy
|
||||
- Suppress "incompatible feed" error when doing a scheduled/automatic RSS read-out.
|
||||
- Add special setting to use "pickle" library instead of cPickle.
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
|
||||
(c) Copyright 2007-2011 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2012 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
|
||||
The SABnzbd-team is:
|
||||
|
||||
Current team:
|
||||
Active team:
|
||||
ShyPike <shypike@sabnzbd.org>
|
||||
inpheaux <inpheaux@sabnzbd.org>
|
||||
zoggy <zoggy@sabnzbd.org>
|
||||
Sleeping members
|
||||
sw1tch <switch@sabnzbd.org>
|
||||
pairofdimes <pairofdimes@sabnzbd.org>
|
||||
inpheaux <inpheaux@sabnzbd.org>
|
||||
rAf <rAf@sabnzbd.org>
|
||||
Honorary member (and original author)
|
||||
Gregor Kaufmann <tdian@users.sourceforge.net>
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
|
||||
32
INSTALL.txt
@@ -1,10 +1,10 @@
|
||||
SABnzbd 0.6.9
|
||||
SABnzbd 0.7.0
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
0) LICENSE
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
(c) Copyright 2007-2011 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2012 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
@@ -39,9 +39,14 @@ Start the SABnzbd.exe program.
|
||||
Within 5-10 seconds your web browser will start and show the user interface.
|
||||
Use the "Help" button in the web-interface to be directed to the Help Wiki.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
3) INSTALL pre-built OSX binaries
|
||||
-------------------------------------------------------------------------------
|
||||
Download teh DMG file, mount and drag the SABnzbd icon to Programs.
|
||||
Just like you do with so many apps.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
3) INSTALL with only sources
|
||||
4) INSTALL with only sources
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
You need to have Python installed and some modules.
|
||||
@@ -55,12 +60,10 @@ OSX Leopard/SnowLeopard
|
||||
OSX Lion Apple Python 2.7 (included in OSX)
|
||||
|
||||
Windows
|
||||
Python-2.5.latest http://www.activestate.com
|
||||
Python-2.6.latest
|
||||
Python-2.7.latest
|
||||
Python-2.7.latest http://www.activestate.com
|
||||
|
||||
Essential modules
|
||||
cheetah-2.0.1+ http://www.cheetahtemplate.org/
|
||||
cheetah-2.0.1+ http://www.cheetahtemplate.org/ (or use "pypm install cheetah")
|
||||
yenc module >= 0.3 http://sabnzbd.sourceforge.net/yenc-0.3.tar.gz
|
||||
http://sabnzbd.sourceforge.net/yenc-0.3-w32fixed.zip (Win32-only)
|
||||
par2cmdline >= 0.4 http://parchive.sourceforge.net/
|
||||
@@ -70,22 +73,25 @@ Optional modules
|
||||
unrar >= 3.90+ http://www.rarlab.com/rar_add.htm
|
||||
unzip >= 5.52 http://www.info-zip.org/
|
||||
gnu gettext http://www.gnu.org/software/gettext/
|
||||
gntp https://github.com/kfdm/gntp/ (or use "pypm install gntp")
|
||||
|
||||
Optional modules Windows
|
||||
pyopenssl >= 0.11 http://pypi.python.org/pypi/pyOpenSSL
|
||||
(Binaries, including the OpenSSL libraries)
|
||||
|
||||
Optional modules Unix/Linux/OSX
|
||||
pyopenssl >= 0.10 http://pypi.python.org/pypi/pyOpenSSL
|
||||
pyopenssl >= 0.11 http://pypi.python.org/pypi/pyOpenSSL
|
||||
openssl => v0.9.8g+ http://www.openssl.org/
|
||||
Make sure the OpenSSL libraries match with PyOpenSSL
|
||||
pynotify Should be part of GTK for Python support on Debian/Ubuntu
|
||||
If not, you cannot use the NotifyOSD feature.
|
||||
|
||||
Embedded modules (only use the included version)
|
||||
CherryPy-3.2 rev2138 with patches http://www.cherrypy.org
|
||||
|
||||
|
||||
Unpack the ZIP-file containing the SABnzbd sources to any folder of your liking.
|
||||
If fou want multiple languages, you need to compile the translations.
|
||||
If you want multiple languages, you need to compile the translations.
|
||||
Start this from a shell terminal (or command prompt):
|
||||
python tools/make_mo.py
|
||||
|
||||
@@ -96,7 +102,7 @@ Use the "Help" button in the web-interface to be directed to the Help Wiki.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
4) TROUBLESHOOTING
|
||||
5) TROUBLESHOOTING
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Your browser may start up with just an error page.
|
||||
@@ -114,7 +120,7 @@ This will show a black window where logging information will be shown. This
|
||||
may help you solve problems easier.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
5) MORE INFORMATION
|
||||
6) MORE INFORMATION
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Visit the WIKI site:
|
||||
@@ -122,9 +128,9 @@ Visit the WIKI site:
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
6) CREDITS
|
||||
7) CREDITS
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Serveral parts of SABnzbd were built by other people, illustrating the
|
||||
Several parts of SABnzbd were built by other people, illustrating the
|
||||
wonderful world of Free Open Source Software.
|
||||
See the licences folder of the main program and of the skin folders.
|
||||
|
||||
30
ISSUES.txt
@@ -2,8 +2,8 @@
|
||||
*** Known issues ***
|
||||
*******************************************
|
||||
|
||||
- To prevent unexpectedly large NZBs from eating your quotum you can set
|
||||
the option 'size_limit' in the INI file.
|
||||
- To prevent unexpectedly large NZBs from eating your download quota you can set
|
||||
the option 'size_limit' on the Config->Special page.
|
||||
Any NZB larger than this size will be set to paused and get a low priority.
|
||||
|
||||
- When par2 or unrar hang up, never just stop SABnzbd.
|
||||
@@ -27,18 +27,19 @@
|
||||
For Windows the default is 128 and for others 256.
|
||||
A quite safe value for Windows would be 64.
|
||||
SABnzbd will take care of overlapping names.
|
||||
See: http://wiki.sabnzbd.org/configure-special
|
||||
See: http://wiki.sabnzbd.org/configure-special-0-7
|
||||
|
||||
- Some Usenet servers have intermittent login (or other) problems.
|
||||
For these the server blocking method is not very favourable.
|
||||
There is an INI-only option that will limit blocks to 1 minute.
|
||||
no_penalties = 1
|
||||
See: http://wiki.sabnzbd.org/configure-special
|
||||
See: http://wiki.sabnzbd.org/configure-special-0-7
|
||||
|
||||
- Some third-party utilties try to probe SABnzbd API in such a way that you will
|
||||
often see warnings about unauthenticated access.
|
||||
If you are sure these probes are harmless, you can suppress the warnings by
|
||||
setting the option "api_warnings" to 0 in the file sabnzbd.ini
|
||||
setting the option "api_warnings" to 0.
|
||||
See: http://wiki.sabnzbd.org/configure-special-0-7
|
||||
|
||||
- On OSX you may encounter downloaded files with foreign characters.
|
||||
The par2 repair may fail when the files were created on a Windows system.
|
||||
@@ -48,6 +49,8 @@
|
||||
- On Linux when you download files they may have the wrong character encoding.
|
||||
You will see this only when downloaded files contain accented characters.
|
||||
You need to fix it yourself by running the convmv utility (availaible for most Linux platforms).
|
||||
Possible the file system override setting 'fsys_type' might be solve things:
|
||||
See: http://wiki.sabnzbd.org/configure-special-0-7
|
||||
|
||||
- The "Watched Folder" sometimes fails to delete the NZB files it has
|
||||
processed. This happens when other software still accesses these files.
|
||||
@@ -55,10 +58,6 @@
|
||||
We cannot solve this problem, because the Operating System (read Windows)
|
||||
prevents the removal.
|
||||
|
||||
- Jobs deleted from the queue will leave downloaded files behind
|
||||
in the "incomplete" folder.
|
||||
You will have to remove these files manually.
|
||||
|
||||
- Memory usage can sometimes have high peaks. This makes using SABnzbd on very low
|
||||
memory systems (eg a SAN device) a challenge.
|
||||
|
||||
@@ -73,3 +72,16 @@
|
||||
make sure that the drives are mounted.
|
||||
The operating system wil simply redirect your files to alternative locations.
|
||||
You may have trouble finding the files when mounting the drive later.
|
||||
On OSX, SABnzbd will not create new folders in /Volumes.
|
||||
The result will be a failed job that can be retried once the volume has been mounted.
|
||||
|
||||
- On some operating systems it looks like there is a problem with one of the standard Python libraries.
|
||||
It is possible that you get errors about saving admin files and even unexplained crashes.
|
||||
If so, you can enable the option for the alternative library.
|
||||
It has the same functionality, but is slower.
|
||||
We've had reports about this issue on non-mainstream Linux platforms.
|
||||
- OpenElec
|
||||
- Squeeze Linux
|
||||
There is a "special" option that will allow you to select an alternative library.
|
||||
use_pickle = 1
|
||||
See: http://wiki.sabnzbd.org/configure-special-0-7
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
(c) Copyright 2007-2011 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2012 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
|
||||
1031
NSIS_Installer.nsi
4
PKG-INFO
@@ -1,7 +1,7 @@
|
||||
Metadata-Version: 1.0
|
||||
Name: SABnzbd
|
||||
Version: 0.6.9RC2
|
||||
Summary: SABnzbd-0.6.9RC2
|
||||
Version: 0.7.0Aplha2
|
||||
Summary: SABnzbd-0.7.0Alpha2
|
||||
Home-page: http://sourceforge.net/projects/sabnzbdplus
|
||||
Author: The SABnzbd Team
|
||||
Author-email: team@sabnzbd.org
|
||||
|
||||
31
README.rtf
@@ -4,29 +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.9RC2\
|
||||
\f0\b\fs48 \cf0 SABnzbd 0.7.0Alpha2\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
|
||||
\b0\fs26 \cf0 \
|
||||
|
||||
\b What's new
|
||||
\b0 \
|
||||
RC2\
|
||||
- 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.\
|
||||
RC1\
|
||||
- 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.\
|
||||
\
|
||||
- OSX has now a Leopard/SnowLeopard DMG and a Lion-only DMG\
|
||||
You can see the difference in the DMG's background image\
|
||||
- Download quota management\
|
||||
- Windows: simple system tray menu\
|
||||
- Multi-platform Growl support\
|
||||
- NotifyOSD support for Linux distros that have it\
|
||||
- Option to set maximum number of retries for servers (prevents deadlock)\
|
||||
- Pre-download check to estimate completeness (reliability is limited)\
|
||||
- Prevent partial downloading of par2 files that are not needed yet\
|
||||
- Config->Special for settings previously only available in the sabnzbd.ini file\
|
||||
- For Usenet servers with multiple IP addresses, pick a random one per connection\
|
||||
- Add pseudo-priority "Stop" that will send the job immediately to the post-processing queue\
|
||||
- Allow jobs still waiting for post-processing to be deleted too\
|
||||
\
|
||||
|
||||
\b About
|
||||
@@ -38,6 +33,8 @@ built-in post-processing options that automatically verify, repair,\
|
||||
extract and clean up posts downloaded from Usenet.\
|
||||
SABnzbd also has a fully customizable user interface,\
|
||||
and offers a complete API for third-party applications to hook into.\
|
||||
\
|
||||
(c) Copyright 2007-2012 by "The SABnzbd-team" <team@sabnzbd.org>\
|
||||
\
|
||||
There is an extensive Wiki on the use of SABnzbd.\
|
||||
{\field{\*\fldinst{HYPERLINK "http://wiki.sabnzbd.org/"}}{\fldrslt http://wiki.sabnzbd.org/}}\
|
||||
|
||||
31
README.txt
@@ -1,23 +1,18 @@
|
||||
************************ SABnzbd 0.6.9RC2 ************************
|
||||
************************ SABnzbd 0.7.0Alpha2 ************************
|
||||
|
||||
What's new:
|
||||
RC2
|
||||
- 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.
|
||||
RC1
|
||||
- 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.
|
||||
|
||||
- OSX has now a Leopard/SnowLeopard DMG and a Lion-only DMG
|
||||
You can see the difference in the DMG's background image
|
||||
|
||||
- Download quota management
|
||||
- Windows: simple system tray menu
|
||||
- Multi-platform Growl support
|
||||
- NotifyOSD support for Linux distros that have it
|
||||
- Option to set maximum number of retries for servers (prevents deadlock)
|
||||
- Pre-download check to estimate completeness (reliability is limited)
|
||||
- Prevent partial downloading of par2 files that are not needed yet
|
||||
- Config->Special for settings previously only available in the sabnzbd.ini file
|
||||
- For Usenet servers with multiple IP addresses, pick a random one per connection
|
||||
- Add pseudo-priority "Stop" that will send the job immediately to the post-processing queue
|
||||
- Allow jobs still waiting for post-processing to be deleted too
|
||||
|
||||
About:
|
||||
SABnzbd is an open-source cross-platform binary newsreader.
|
||||
@@ -26,4 +21,4 @@ About:
|
||||
built-in post-processing options that automatically verify, repair,
|
||||
extract and clean up posts downloaded from Usenet.
|
||||
|
||||
(c) Copyright 2007-2011 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2012 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
|
||||
161
SABnzbd.py
@@ -78,7 +78,7 @@ import sabnzbd.config as config
|
||||
import sabnzbd.cfg
|
||||
import sabnzbd.downloader
|
||||
from sabnzbd.encoding import unicoder, latin1
|
||||
from sabnzbd.utils import osx
|
||||
import sabnzbd.growler as growler
|
||||
|
||||
from threading import Thread
|
||||
|
||||
@@ -231,7 +231,7 @@ def print_help():
|
||||
print " -t --templates <templ> Template directory [*]"
|
||||
print " -2 --template2 <templ> Secondary template dir [*]"
|
||||
print
|
||||
print " -l --logging <0..2> Set logging level (0= least, 2= most) [*]"
|
||||
print " -l --logging <0..2> Set logging level (-1=off, 0= least, 2= most) [*]"
|
||||
print " -w --weblogging <0..2> Set cherrypy logging (0= off, 1= on, 2= file-only) [*]"
|
||||
print
|
||||
print " -b --browser <0..1> Auto browser launch (0= off, 1= on) [*]"
|
||||
@@ -251,6 +251,7 @@ def print_help():
|
||||
print " with full data reconstruction"
|
||||
print " --https <port> Port to use for HTTPS server"
|
||||
print " --log-all Log all article handling (for developers)"
|
||||
print " --console Force console logging for OSX app"
|
||||
print " --new Run a new instance of SABnzbd"
|
||||
|
||||
def print_version():
|
||||
@@ -320,7 +321,8 @@ def Web_Template(key, defweb, wdir):
|
||||
wdir = ''
|
||||
if not wdir:
|
||||
wdir = defweb
|
||||
key.set(wdir)
|
||||
if key:
|
||||
key.set(wdir)
|
||||
if not wdir:
|
||||
# No default value defined, accept empty path
|
||||
return ''
|
||||
@@ -330,6 +332,10 @@ def Web_Template(key, defweb, wdir):
|
||||
logging.info("Web dir is %s", full_dir)
|
||||
|
||||
if not os.path.exists(full_main):
|
||||
# Temporarily fix that allows missing Config
|
||||
if defweb == DEF_STDCONFIG:
|
||||
return ''
|
||||
# end temp fix
|
||||
logging.warning(Ta('Cannot find web template: %s, trying standard template'), full_main)
|
||||
full_dir = real_path(sabnzbd.DIR_INTERFACES, DEF_STDINTF)
|
||||
full_main = real_path(full_dir, DEF_MAIN_TMPL)
|
||||
@@ -359,12 +365,14 @@ def fix_webname(name):
|
||||
xname = name.title()
|
||||
else:
|
||||
xname = ''
|
||||
if xname in ('Default',):
|
||||
if xname in ('Default', ):
|
||||
return 'Classic'
|
||||
elif xname in ('Classic', 'Plush', 'Mobile'):
|
||||
return xname
|
||||
elif xname in ('Smpl', 'Wizard'):
|
||||
return name.lower()
|
||||
elif xname in ('Config',):
|
||||
return 'Plush'
|
||||
else:
|
||||
return name
|
||||
|
||||
@@ -491,6 +499,31 @@ def print_modules():
|
||||
logging.info("pyOpenSSL... NOT found - try apt-get install python-pyopenssl (SSL is optional)")
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
def all_localhosts():
|
||||
""" Return all unique values of localhost in order of preference """
|
||||
ips = ['127.0.0.1']
|
||||
try:
|
||||
# Check whether IPv6 is available and enabled
|
||||
info = socket.getaddrinfo('::1', None)
|
||||
af, socktype, proto, canonname, sa = info[0]
|
||||
s = socket.socket(af, socktype, proto)
|
||||
s.close()
|
||||
except socket.error:
|
||||
return ips
|
||||
try:
|
||||
info = socket.getaddrinfo('localhost', None)
|
||||
except:
|
||||
# localhost does not resolve
|
||||
return ips
|
||||
ips = []
|
||||
for item in info:
|
||||
item = item[4][0]
|
||||
if item not in ips:
|
||||
ips.append(item)
|
||||
return ips
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
def get_webhost(cherryhost, cherryport, https_port):
|
||||
""" Determine the webhost address and port,
|
||||
@@ -604,7 +637,7 @@ def get_webhost(cherryhost, cherryport, https_port):
|
||||
# if the https port was specified, assume they want HTTPS enabling also
|
||||
sabnzbd.cfg.enable_https.set(True)
|
||||
|
||||
if cherryport == https_port:
|
||||
if cherryport == https_port and sabnzbd.cfg.enable_https():
|
||||
sabnzbd.cfg.enable_https.set(False)
|
||||
# Should have a translated message, but that's not available yet
|
||||
#logging.error(Ta('HTTP and HTTPS ports cannot be the same'))
|
||||
@@ -613,6 +646,18 @@ def get_webhost(cherryhost, cherryport, https_port):
|
||||
return cherryhost, cherryport, browserhost, https_port
|
||||
|
||||
|
||||
def attach_server(host, port, cert=None, key=None):
|
||||
""" Define and attach server, optionally HTTPS
|
||||
"""
|
||||
http_server = _cpwsgi_server.CPWSGIServer()
|
||||
http_server.bind_addr = (host, port)
|
||||
if cert and key:
|
||||
http_server.ssl_certificate = cert
|
||||
http_server.ssl_private_key = key
|
||||
adapter = _cpserver.ServerAdapter(cherrypy.engine, http_server, http_server.bind_addr)
|
||||
adapter.subscribe()
|
||||
|
||||
|
||||
def is_sabnzbd_running(url):
|
||||
""" Return True when there's already a SABnzbd instance running.
|
||||
"""
|
||||
@@ -773,7 +818,7 @@ def commandline_handler(frozen=True):
|
||||
'weblogging=', 'server=', 'templates',
|
||||
'template2', 'browser=', 'config-file=', 'force',
|
||||
'version', 'https=', 'autorestarted', 'repair', 'repair-all',
|
||||
'log-all', 'no-login', 'pid=', 'new', 'sessions',
|
||||
'log-all', 'no-login', 'pid=', 'new', 'sessions', 'console',
|
||||
# Below Win32 Service options
|
||||
'password=', 'username=', 'startup=', 'perfmonini=', 'perfmondll=',
|
||||
'interactive', 'wait=',
|
||||
@@ -847,6 +892,7 @@ def main():
|
||||
pid_path = None
|
||||
new_instance = False
|
||||
force_sessions = False
|
||||
osx_console = False
|
||||
|
||||
service, sab_opts, serv_opts, upload_nzbs = commandline_handler()
|
||||
|
||||
@@ -895,8 +941,8 @@ def main():
|
||||
try:
|
||||
logging_level = int(arg)
|
||||
except:
|
||||
logging_level = -1
|
||||
if logging_level < 0 or logging_level > 2:
|
||||
logging_level = -2
|
||||
if logging_level < -1 or logging_level > 2:
|
||||
print_help()
|
||||
exit_sab(1)
|
||||
elif opt in ('-v', '--version'):
|
||||
@@ -928,7 +974,11 @@ def main():
|
||||
elif opt in ('--new',):
|
||||
new_instance = True
|
||||
elif opt in ('--sessions',):
|
||||
re_argv.append(opt)
|
||||
force_sessions = True
|
||||
elif opt in ('--console',):
|
||||
re_argv.append(opt)
|
||||
osx_console = True
|
||||
|
||||
sabnzbd.MY_FULLNAME = os.path.normpath(os.path.abspath(sabnzbd.MY_FULLNAME))
|
||||
sabnzbd.MY_NAME = os.path.basename(sabnzbd.MY_FULLNAME)
|
||||
@@ -946,11 +996,11 @@ def main():
|
||||
consoleLogging = consoleLogging and not sabnzbd.DAEMON
|
||||
|
||||
# No console logging needed for OSX app
|
||||
noConsoleLoggingOSX = (sabnzbd.DIR_PROG.find('.app/Contents/Resources') > 0)
|
||||
noConsoleLoggingOSX = (not osx_console) and (sabnzbd.DIR_PROG.find('.app/Contents/Resources') > 0)
|
||||
if noConsoleLoggingOSX:
|
||||
consoleLogging = 1
|
||||
|
||||
LOGLEVELS = (logging.WARNING, logging.INFO, logging.DEBUG)
|
||||
LOGLEVELS = (logging.FATAL, logging.WARNING, logging.INFO, logging.DEBUG)
|
||||
|
||||
# Setup primary logging to prevent default console logging
|
||||
gui_log = guiHandler(MAX_WARNINGS)
|
||||
@@ -1135,7 +1185,7 @@ def main():
|
||||
rollover_log.addFilter(FilterCP3())
|
||||
sabnzbd.LOGHANDLER = rollover_log
|
||||
logger.addHandler(rollover_log)
|
||||
logger.setLevel(LOGLEVELS[logging_level])
|
||||
logger.setLevel(LOGLEVELS[logging_level+1])
|
||||
|
||||
except IOError:
|
||||
print "Error:"
|
||||
@@ -1163,7 +1213,7 @@ def main():
|
||||
if consoleLogging:
|
||||
console = logging.StreamHandler()
|
||||
console.addFilter(FilterCP3())
|
||||
console.setLevel(LOGLEVELS[logging_level])
|
||||
console.setLevel(LOGLEVELS[logging_level+1])
|
||||
console.setFormatter(logging.Formatter(format))
|
||||
logger.addHandler(console)
|
||||
if noConsoleLoggingOSX:
|
||||
@@ -1224,12 +1274,14 @@ def main():
|
||||
|
||||
web_dir = Web_Template(sabnzbd.cfg.web_dir, DEF_STDINTF, fix_webname(web_dir))
|
||||
web_dir2 = Web_Template(sabnzbd.cfg.web_dir2, '', fix_webname(web_dir2))
|
||||
web_dirc = Web_Template(None, DEF_STDCONFIG, '')
|
||||
|
||||
wizard_dir = os.path.join(sabnzbd.DIR_INTERFACES, 'wizard')
|
||||
#sabnzbd.lang.install_language(os.path.join(wizard_dir, DEF_INT_LANGUAGE), sabnzbd.cfg.language(), 'wizard')
|
||||
|
||||
sabnzbd.WEB_DIR = web_dir
|
||||
sabnzbd.WEB_DIR2 = web_dir2
|
||||
sabnzbd.WEB_DIRC = web_dirc
|
||||
sabnzbd.WIZARD_DIR = wizard_dir
|
||||
|
||||
sabnzbd.WEB_COLOR = CheckColor(sabnzbd.cfg.web_color(), web_dir)
|
||||
@@ -1243,6 +1295,10 @@ def main():
|
||||
# Save the INI file
|
||||
config.save_config(force=True)
|
||||
|
||||
if sabnzbd.WIN32 and sabnzbd.cfg.win_menu() and not sabnzbd.DAEMON:
|
||||
import sabnzbd.sabtray
|
||||
sabnzbd.WINTRAY = sabnzbd.sabtray.SABTrayThread()
|
||||
|
||||
print_modules()
|
||||
|
||||
cherrylogtoscreen = False
|
||||
@@ -1273,18 +1329,38 @@ def main():
|
||||
logging.warning(Ta('Disabled HTTPS because of missing CERT and KEY files'))
|
||||
enable_https = False
|
||||
|
||||
if enable_https:
|
||||
if https_port:
|
||||
# Prepare an extra server for the HTTP port
|
||||
http_server = _cpwsgi_server.CPWSGIServer()
|
||||
http_server.bind_addr = (cherryhost, cherryport)
|
||||
#secure_server.ssl_certificate = https_cert
|
||||
#secure_server.ssl_private_key = https_key
|
||||
adapter = _cpserver.ServerAdapter(cherrypy.engine, http_server, http_server.bind_addr)
|
||||
adapter.subscribe()
|
||||
cherryport = https_port
|
||||
cherrypy.config.update({'server.ssl_certificate' : https_cert,
|
||||
'server.ssl_private_key' : https_key })
|
||||
# Determine if this system has multiple definitions for 'localhost'
|
||||
hosts = all_localhosts()
|
||||
multilocal = len(hosts) > 1 and cherryhost in ('localhost', '0.0.0.0')
|
||||
|
||||
# For 0.0.0.0 CherryPy will always pick IPv4, so make sure the secondary localhost is IPv6
|
||||
if multilocal and cherryhost == '0.0.0.0' and hosts[1] == '127.0.0.1':
|
||||
hosts[1] = '::1'
|
||||
|
||||
# The Windows binary requires numeric localhost as primary address
|
||||
if multilocal and cherryhost == 'localhost' and hosts[1] == '127.0.0.1':
|
||||
cherryhost = '::1'
|
||||
|
||||
if enable_https:
|
||||
if https_port:
|
||||
# Extra HTTP port for primary localhost
|
||||
attach_server(cherryhost, cherryport)
|
||||
if multilocal:
|
||||
# Extra HTTP port for secondary localhost
|
||||
attach_server(hosts[1], cherryport)
|
||||
# Extra HTTPS port for secondary localhost
|
||||
attach_server(hosts[1], https_port, https_cert, https_key)
|
||||
cherryport = https_port
|
||||
elif multilocal:
|
||||
# Extra HTTPS port for secondary localhost
|
||||
attach_server(hosts[1], cherryport, https_cert, https_key)
|
||||
|
||||
cherrypy.config.update({'server.ssl_certificate' : https_cert,
|
||||
'server.ssl_private_key' : https_key })
|
||||
elif multilocal:
|
||||
# Extra HTTP port for secondary localhost
|
||||
attach_server(hosts[1], cherryport)
|
||||
|
||||
|
||||
if no_login:
|
||||
sabnzbd.cfg.username.set('')
|
||||
@@ -1307,17 +1383,21 @@ def main():
|
||||
'engine.reexec_retry' : 100,
|
||||
'tools.encode.on' : True,
|
||||
'tools.gzip.on' : True,
|
||||
'tools.gzip.mime_types' : ['text/html', 'text/plain', 'text/javascript', 'text/css', 'application/x-javascript'],
|
||||
'tools.sessions.on' : bool(sessions),
|
||||
'tools.sessions.storage_type' : 'file',
|
||||
'tools.sessions.storage_path' : sessions,
|
||||
'tools.sessions.timeout' : 60,
|
||||
'request.show_tracebacks': True,
|
||||
'checker.check_localhost' : bool(consoleLogging),
|
||||
'error_page.401': sabnzbd.panic.error_page_401
|
||||
'error_page.401': sabnzbd.panic.error_page_401,
|
||||
'error_page.404': sabnzbd.panic.error_page_404
|
||||
})
|
||||
|
||||
|
||||
static = {'tools.staticdir.on': True, 'tools.staticdir.dir': os.path.join(web_dir, 'static')}
|
||||
if web_dirc:
|
||||
staticcfg = {'tools.staticdir.on': True, 'tools.staticdir.dir': os.path.join(web_dirc, 'staticcfg')}
|
||||
wizard_static = {'tools.staticdir.on': True, 'tools.staticdir.dir': os.path.join(wizard_dir, 'static')}
|
||||
|
||||
appconfig = {'/sabnzbd/api' : {'tools.basic_auth.on' : False},
|
||||
@@ -1332,6 +1412,9 @@ def main():
|
||||
'/sabnzbd/wizard/static': wizard_static,
|
||||
'/wizard/static': wizard_static
|
||||
}
|
||||
if web_dirc:
|
||||
appconfig['/sabnzbd/staticcfg'] = staticcfg
|
||||
appconfig['/staticcfg'] = staticcfg
|
||||
|
||||
if web_dir2:
|
||||
static2 = {'tools.staticdir.on': True, 'tools.staticdir.dir': os.path.join(web_dir2, 'static')}
|
||||
@@ -1342,8 +1425,11 @@ def main():
|
||||
appconfig['/m/static'] = static2
|
||||
appconfig['/sabnzbd/m/wizard/static'] = wizard_static
|
||||
appconfig['/m/wizard/static'] = wizard_static
|
||||
if web_dirc:
|
||||
appconfig['/sabnzbd/m/staticcfg'] = staticcfg
|
||||
appconfig['/m/staticcfg'] = staticcfg
|
||||
|
||||
login_page = sabnzbd.interface.MainPage(web_dir, '/', web_dir2, '/m/', first=2)
|
||||
login_page = sabnzbd.interface.MainPage(web_dir, '/', web_dir2, '/m/', web_dirc, first=2)
|
||||
cherrypy.tree.mount(login_page, '/', config=appconfig)
|
||||
|
||||
# Set authentication for CherryPy
|
||||
@@ -1378,9 +1464,9 @@ def main():
|
||||
|
||||
if enable_https:
|
||||
browser_url = "https://%s:%s/sabnzbd" % (browserhost, cherryport)
|
||||
cherrypy.wsgiserver.REDIRECT_URL = browser_url
|
||||
else:
|
||||
browser_url = "http://%s:%s/sabnzbd" % (browserhost, cherryport)
|
||||
cherrypy.wsgiserver.REDIRECT_URL = browser_url
|
||||
|
||||
sabnzbd.BROWSER_URL = browser_url
|
||||
if not autorestarted:
|
||||
@@ -1388,12 +1474,12 @@ def main():
|
||||
if sabnzbd.FOUNDATION:
|
||||
import sabnzbd.osxmenu
|
||||
sabnzbd.osxmenu.notify("SAB_Launched", None)
|
||||
osx.sendGrowlMsg('SABnzbd %s' % (sabnzbd.__version__),"http://%s:%s/sabnzbd" % (browserhost, cherryport),osx.NOTIFICATION['startup'])
|
||||
growler.send_notification('SABnzbd %s' % (sabnzbd.__version__),
|
||||
"http://%s:%s/sabnzbd" % (browserhost, cherryport), 'startup')
|
||||
# Now's the time to check for a new version
|
||||
check_latest_version()
|
||||
autorestarted = False
|
||||
|
||||
|
||||
mail = None
|
||||
if sabnzbd.WIN32:
|
||||
if enable_https:
|
||||
@@ -1450,7 +1536,7 @@ def main():
|
||||
# Check for loglevel changes
|
||||
if LOG_FLAG:
|
||||
LOG_FLAG = False
|
||||
level = LOGLEVELS[sabnzbd.cfg.log_level()]
|
||||
level = LOGLEVELS[sabnzbd.cfg.log_level()+1]
|
||||
logger.setLevel(level)
|
||||
if consoleLogging:
|
||||
console.setLevel(level)
|
||||
@@ -1516,6 +1602,9 @@ def main():
|
||||
|
||||
config.save_config()
|
||||
|
||||
if sabnzbd.WINTRAY:
|
||||
sabnzbd.WINTRAY.terminate = True
|
||||
|
||||
if sabnzbd.WIN_SERVICE and mail:
|
||||
mail.send('stop')
|
||||
if sabnzbd.WIN32:
|
||||
@@ -1528,8 +1617,7 @@ def main():
|
||||
if getattr(sys, 'frozen', None) == 'macosx_app':
|
||||
AppHelper.stopEventLoop()
|
||||
else:
|
||||
if sabnzbd.DARWIN:
|
||||
osx.sendGrowlMsg('SABnzbd',T('SABnzbd shutdown finished'),osx.NOTIFICATION['startup'])
|
||||
growler.send_notification('SABnzbd',T('SABnzbd shutdown finished'), 'startup')
|
||||
os._exit(0)
|
||||
|
||||
|
||||
@@ -1652,7 +1740,14 @@ def HandleCommandLine(allow_service=True):
|
||||
#
|
||||
if __name__ == '__main__':
|
||||
|
||||
sabnzbd.CMDLINE = ', '.join(['"%s"' % latin1(p) for p in sys.argv])
|
||||
args = []
|
||||
for txt in sys.argv:
|
||||
if ' ' in txt:
|
||||
txt = '"%s"' % latin1(txt)
|
||||
else:
|
||||
txt = latin1(txt)
|
||||
args.append(txt)
|
||||
sabnzbd.CMDLINE = ' '.join(args)
|
||||
|
||||
if sabnzbd.WIN32:
|
||||
if not HandleCommandLine(allow_service=not hasattr(sys, "frozen")):
|
||||
|
||||
22
email/badfetch-en.tmpl
Normal file
@@ -0,0 +1,22 @@
|
||||
##
|
||||
## Bad URL Fetch Email template for SABnzbd
|
||||
## This a Cheetah template
|
||||
## Documentation: http://sabnzbd.wikidot.com/email-templates
|
||||
##
|
||||
## Newlines and whitespace are significant!
|
||||
##
|
||||
## These are the email headers
|
||||
To: $to
|
||||
From: $from
|
||||
Date: $date
|
||||
Subject: SABnzbd failed to fetch an NZB
|
||||
X-priority: 5
|
||||
X-MS-priority: 5
|
||||
## After this comes the body, the empty line is required!
|
||||
|
||||
Hi,
|
||||
|
||||
SABnzbd has failed to retrieve the NZB from $url.
|
||||
The error message was: $msg
|
||||
|
||||
Bye
|
||||
441
gntp/__init__.py
Normal file
@@ -0,0 +1,441 @@
|
||||
import re
|
||||
import hashlib
|
||||
import time
|
||||
import platform
|
||||
|
||||
__version__ = '0.4'
|
||||
|
||||
class BaseError(Exception):
|
||||
pass
|
||||
|
||||
class ParseError(BaseError):
|
||||
def gntp_error(self):
|
||||
error = GNTPError(errorcode=500,errordesc='Error parsing the message')
|
||||
return error.encode()
|
||||
|
||||
class AuthError(BaseError):
|
||||
def gntp_error(self):
|
||||
error = GNTPError(errorcode=400,errordesc='Error with authorization')
|
||||
return error.encode()
|
||||
|
||||
class UnsupportedError(BaseError):
|
||||
def gntp_error(self):
|
||||
error = GNTPError(errorcode=500,errordesc='Currently unsupported by gntp.py')
|
||||
return error.encode()
|
||||
|
||||
class _GNTPBase(object):
|
||||
info = {
|
||||
'version':'1.0',
|
||||
'messagetype':None,
|
||||
'encryptionAlgorithmID':None
|
||||
}
|
||||
_requiredHeaders = []
|
||||
headers = {}
|
||||
resources = {}
|
||||
def add_origin_info(self):
|
||||
self.add_header('Origin-Machine-Name',platform.node())
|
||||
self.add_header('Origin-Software-Name','gntp.py')
|
||||
self.add_header('Origin-Software-Version',__version__)
|
||||
self.add_header('Origin-Platform-Name',platform.system())
|
||||
self.add_header('Origin-Platform-Version',platform.platform())
|
||||
def __str__(self):
|
||||
return self.encode()
|
||||
def _parse_info(self,data):
|
||||
'''
|
||||
Parse the first line of a GNTP message to get security and other info values
|
||||
@param data: GNTP Message
|
||||
@return: GNTP Message information in a dictionary
|
||||
'''
|
||||
#GNTP/<version> <messagetype> <encryptionAlgorithmID>[:<ivValue>][ <keyHashAlgorithmID>:<keyHash>.<salt>]
|
||||
match = re.match('GNTP/(?P<version>\d+\.\d+) (?P<messagetype>REGISTER|NOTIFY|SUBSCRIBE|\-OK|\-ERROR)'+
|
||||
' (?P<encryptionAlgorithmID>[A-Z0-9]+(:(?P<ivValue>[A-F0-9]+))?) ?'+
|
||||
'((?P<keyHashAlgorithmID>[A-Z0-9]+):(?P<keyHash>[A-F0-9]+).(?P<salt>[A-F0-9]+))?\r\n', data,re.IGNORECASE)
|
||||
|
||||
if not match:
|
||||
raise ParseError('ERROR_PARSING_INFO_LINE')
|
||||
|
||||
info = match.groupdict()
|
||||
if info['encryptionAlgorithmID'] == 'NONE':
|
||||
info['encryptionAlgorithmID'] = None
|
||||
|
||||
return info
|
||||
def set_password(self,password,encryptAlgo='MD5'):
|
||||
'''
|
||||
Set a password for a GNTP Message
|
||||
@param password: Null to clear password
|
||||
@param encryptAlgo: Supports MD5,SHA1,SHA256,SHA512
|
||||
@todo: Support other hash functions
|
||||
'''
|
||||
hash = {
|
||||
'MD5': hashlib.md5,
|
||||
'SHA1': hashlib.sha1,
|
||||
'SHA256': hashlib.sha256,
|
||||
'SHA512': hashlib.sha512,
|
||||
}
|
||||
|
||||
self.password = password
|
||||
self.encryptAlgo = encryptAlgo.upper()
|
||||
if not password:
|
||||
self.info['encryptionAlgorithmID'] = None
|
||||
self.info['keyHashAlgorithm'] = None;
|
||||
return
|
||||
if not self.encryptAlgo in hash.keys():
|
||||
raise UnsupportedError('INVALID HASH "%s"'%self.encryptAlgo)
|
||||
|
||||
hashfunction = hash.get(self.encryptAlgo)
|
||||
|
||||
password = password.encode('utf8')
|
||||
seed = time.ctime()
|
||||
salt = hashfunction(seed).hexdigest()
|
||||
saltHash = hashfunction(seed).digest()
|
||||
keyBasis = password+saltHash
|
||||
key = hashfunction(keyBasis).digest()
|
||||
keyHash = hashfunction(key).hexdigest()
|
||||
|
||||
self.info['keyHashAlgorithmID'] = self.encryptAlgo
|
||||
self.info['keyHash'] = keyHash.upper()
|
||||
self.info['salt'] = salt.upper()
|
||||
def _decode_hex(self,value):
|
||||
'''
|
||||
Helper function to decode hex string to `proper` hex string
|
||||
@param value: Value to decode
|
||||
@return: Hex string
|
||||
'''
|
||||
result = ''
|
||||
for i in range(0,len(value),2):
|
||||
tmp = int(value[i:i+2],16)
|
||||
result += chr(tmp)
|
||||
return result
|
||||
def _decode_binary(self,rawIdentifier,identifier):
|
||||
rawIdentifier += '\r\n\r\n'
|
||||
dataLength = int(identifier['Length'])
|
||||
pointerStart = self.raw.find(rawIdentifier)+len(rawIdentifier)
|
||||
pointerEnd = pointerStart + dataLength
|
||||
data = self.raw[pointerStart:pointerEnd]
|
||||
if not len(data) == dataLength:
|
||||
raise ParseError('INVALID_DATA_LENGTH Expected: %s Recieved %s'%(dataLength,len(data)))
|
||||
return data
|
||||
def _validate_password(self,password):
|
||||
'''
|
||||
Validate GNTP Message against stored password
|
||||
'''
|
||||
self.password = password
|
||||
if password == None: raise Exception()
|
||||
keyHash = self.info.get('keyHash',None)
|
||||
if keyHash is None and self.password is None:
|
||||
return True
|
||||
if keyHash is None:
|
||||
raise AuthError('Invalid keyHash')
|
||||
if self.password is None:
|
||||
raise AuthError('Missing password')
|
||||
|
||||
password = self.password.encode('utf8')
|
||||
saltHash = self._decode_hex(self.info['salt'])
|
||||
|
||||
keyBasis = password+saltHash
|
||||
key = hashlib.md5(keyBasis).digest()
|
||||
keyHash = hashlib.md5(key).hexdigest()
|
||||
|
||||
if not keyHash.upper() == self.info['keyHash'].upper():
|
||||
raise AuthError('Invalid Hash')
|
||||
return True
|
||||
def validate(self):
|
||||
'''
|
||||
Verify required headers
|
||||
'''
|
||||
for header in self._requiredHeaders:
|
||||
if not self.headers.get(header,False):
|
||||
raise ParseError('Missing Notification Header: '+header)
|
||||
|
||||
def _format_info(self):
|
||||
'''
|
||||
Generate info line for GNTP Message
|
||||
@return: Info line string
|
||||
'''
|
||||
info = u'GNTP/%s %s'%(
|
||||
self.info.get('version'),
|
||||
self.info.get('messagetype'),
|
||||
)
|
||||
if self.info.get('encryptionAlgorithmID',None):
|
||||
info += ' %s:%s'%(
|
||||
self.info.get('encryptionAlgorithmID'),
|
||||
self.info.get('ivValue'),
|
||||
)
|
||||
else:
|
||||
info+=' NONE'
|
||||
|
||||
if self.info.get('keyHashAlgorithmID',None):
|
||||
info += ' %s:%s.%s'%(
|
||||
self.info.get('keyHashAlgorithmID'),
|
||||
self.info.get('keyHash'),
|
||||
self.info.get('salt')
|
||||
)
|
||||
|
||||
return info
|
||||
def _parse_dict(self,data):
|
||||
'''
|
||||
Helper function to parse blocks of GNTP headers into a dictionary
|
||||
@param data:
|
||||
@return: Dictionary of headers
|
||||
'''
|
||||
dict = {}
|
||||
for line in data.split('\r\n'):
|
||||
match = re.match('([\w-]+):(.+)', line)
|
||||
if not match: continue
|
||||
|
||||
key = match.group(1).strip()
|
||||
val = match.group(2).strip()
|
||||
dict[key] = val
|
||||
return dict
|
||||
def add_header(self,key,value):
|
||||
if isinstance(value, unicode):
|
||||
self.headers[key] = value
|
||||
else:
|
||||
self.headers[key] = unicode('%s'%value,'utf8','replace')
|
||||
def decode(self,data,password=None):
|
||||
'''
|
||||
Decode GNTP Message
|
||||
@param data:
|
||||
'''
|
||||
self.password = password
|
||||
self.raw = data
|
||||
parts = self.raw.split('\r\n\r\n')
|
||||
self.info = self._parse_info(data)
|
||||
self.headers = self._parse_dict(parts[0])
|
||||
def encode(self):
|
||||
'''
|
||||
Encode a GNTP Message
|
||||
@return: GNTP Message ready to be sent
|
||||
'''
|
||||
self.validate()
|
||||
EOL = u'\r\n'
|
||||
|
||||
message = self._format_info() + EOL
|
||||
#Headers
|
||||
for k,v in self.headers.iteritems():
|
||||
message += u'%s: %s%s'%(k,v,EOL)
|
||||
|
||||
message += EOL
|
||||
return message
|
||||
class GNTPRegister(_GNTPBase):
|
||||
"""Represents a GNTP Registration Command"""
|
||||
notifications = []
|
||||
_requiredHeaders = [
|
||||
'Application-Name',
|
||||
'Notifications-Count'
|
||||
]
|
||||
_requiredNotificationHeaders = ['Notification-Name']
|
||||
def __init__(self,data=None,password=None):
|
||||
'''
|
||||
@param data: (Optional) See decode()
|
||||
@param password: (Optional) Password to use while encoding/decoding messages
|
||||
'''
|
||||
self.info['messagetype'] = 'REGISTER'
|
||||
|
||||
if data:
|
||||
self.decode(data,password)
|
||||
else:
|
||||
self.set_password(password)
|
||||
self.add_header('Application-Name', 'pygntp')
|
||||
self.add_header('Notifications-Count', 0)
|
||||
self.add_origin_info()
|
||||
def validate(self):
|
||||
'''
|
||||
Validate required headers and validate notification headers
|
||||
'''
|
||||
for header in self._requiredHeaders:
|
||||
if not self.headers.get(header,False):
|
||||
raise ParseError('Missing Registration Header: '+header)
|
||||
for notice in self.notifications:
|
||||
for header in self._requiredNotificationHeaders:
|
||||
if not notice.get(header,False):
|
||||
raise ParseError('Missing Notification Header: '+header)
|
||||
def decode(self,data,password):
|
||||
'''
|
||||
Decode existing GNTP Registration message
|
||||
@param data: Message to decode.
|
||||
'''
|
||||
self.raw = data
|
||||
parts = self.raw.split('\r\n\r\n')
|
||||
self.info = self._parse_info(data)
|
||||
self._validate_password(password)
|
||||
self.headers = self._parse_dict(parts[0])
|
||||
|
||||
for i,part in enumerate(parts):
|
||||
if i==0: continue #Skip Header
|
||||
if part.strip()=='': continue
|
||||
notice = self._parse_dict(part)
|
||||
if notice.get('Notification-Name',False):
|
||||
self.notifications.append(notice)
|
||||
elif notice.get('Identifier',False):
|
||||
notice['Data'] = self._decode_binary(part,notice)
|
||||
#open('register.png','wblol').write(notice['Data'])
|
||||
self.resources[ notice.get('Identifier') ] = notice
|
||||
|
||||
def add_notification(self,name,enabled=True):
|
||||
'''
|
||||
Add new Notification to Registration message
|
||||
@param name: Notification Name
|
||||
@param enabled: Default Notification to Enabled
|
||||
'''
|
||||
notice = {}
|
||||
notice['Notification-Name'] = u'%s'%name
|
||||
notice['Notification-Enabled'] = u'%s'%enabled
|
||||
|
||||
self.notifications.append(notice)
|
||||
self.add_header('Notifications-Count', len(self.notifications))
|
||||
def encode(self):
|
||||
'''
|
||||
Encode a GNTP Registration Message
|
||||
@return: GNTP Registration Message ready to be sent
|
||||
'''
|
||||
self.validate()
|
||||
EOL = u'\r\n'
|
||||
|
||||
message = self._format_info() + EOL
|
||||
#Headers
|
||||
for k,v in self.headers.iteritems():
|
||||
message += u'%s: %s%s'%(k,v,EOL)
|
||||
|
||||
#Notifications
|
||||
if len(self.notifications)>0:
|
||||
for notice in self.notifications:
|
||||
message += EOL
|
||||
for k,v in notice.iteritems():
|
||||
message += u'%s: %s%s'%(k,v,EOL)
|
||||
|
||||
message += EOL
|
||||
return message
|
||||
|
||||
class GNTPNotice(_GNTPBase):
|
||||
"""Represents a GNTP Notification Command"""
|
||||
_requiredHeaders = [
|
||||
'Application-Name',
|
||||
'Notification-Name',
|
||||
'Notification-Title'
|
||||
]
|
||||
def __init__(self,data=None,app=None,name=None,title=None,password=None):
|
||||
'''
|
||||
|
||||
@param data: (Optional) See decode()
|
||||
@param app: (Optional) Set Application-Name
|
||||
@param name: (Optional) Set Notification-Name
|
||||
@param title: (Optional) Set Notification Title
|
||||
@param password: (Optional) Password to use while encoding/decoding messages
|
||||
'''
|
||||
self.info['messagetype'] = 'NOTIFY'
|
||||
|
||||
if data:
|
||||
self.decode(data,password)
|
||||
else:
|
||||
self.set_password(password)
|
||||
if app:
|
||||
self.add_header('Application-Name', app)
|
||||
if name:
|
||||
self.add_header('Notification-Name', name)
|
||||
if title:
|
||||
self.add_header('Notification-Title', title)
|
||||
self.add_origin_info()
|
||||
def decode(self,data,password):
|
||||
'''
|
||||
Decode existing GNTP Notification message
|
||||
@param data: Message to decode.
|
||||
'''
|
||||
self.raw = data
|
||||
parts = self.raw.split('\r\n\r\n')
|
||||
self.info = self._parse_info(data)
|
||||
self._validate_password(password)
|
||||
self.headers = self._parse_dict(parts[0])
|
||||
|
||||
for i,part in enumerate(parts):
|
||||
if i==0: continue #Skip Header
|
||||
if part.strip()=='': continue
|
||||
notice = self._parse_dict(part)
|
||||
if notice.get('Identifier',False):
|
||||
notice['Data'] = self._decode_binary(part,notice)
|
||||
#open('notice.png','wblol').write(notice['Data'])
|
||||
self.resources[ notice.get('Identifier') ] = notice
|
||||
def encode(self):
|
||||
'''
|
||||
Encode a GNTP Notification Message
|
||||
@return: GNTP Notification Message ready to be sent
|
||||
'''
|
||||
self.validate()
|
||||
EOL = u'\r\n'
|
||||
|
||||
message = self._format_info() + EOL
|
||||
#Headers
|
||||
for k,v in self.headers.iteritems():
|
||||
message += u'%s: %s%s'%(k,v,EOL)
|
||||
|
||||
message += EOL
|
||||
return message
|
||||
|
||||
class GNTPSubscribe(_GNTPBase):
|
||||
"""Represents a GNTP Subscribe Command"""
|
||||
def __init__(self,data=None,password=None):
|
||||
self.info['messagetype'] = 'SUBSCRIBE'
|
||||
self._requiredHeaders = [
|
||||
'Subscriber-ID',
|
||||
'Subscriber-Name',
|
||||
]
|
||||
if data:
|
||||
self.decode(data,password)
|
||||
else:
|
||||
self.set_password(password)
|
||||
self.add_origin_info()
|
||||
|
||||
class GNTPOK(_GNTPBase):
|
||||
"""Represents a GNTP OK Response"""
|
||||
_requiredHeaders = ['Response-Action']
|
||||
def __init__(self,data=None,action=None):
|
||||
'''
|
||||
@param data: (Optional) See _GNTPResponse.decode()
|
||||
@param action: (Optional) Set type of action the OK Response is for
|
||||
'''
|
||||
self.info['messagetype'] = '-OK'
|
||||
if data:
|
||||
self.decode(data)
|
||||
if action:
|
||||
self.add_header('Response-Action', action)
|
||||
self.add_origin_info()
|
||||
|
||||
class GNTPError(_GNTPBase):
|
||||
_requiredHeaders = ['Error-Code','Error-Description']
|
||||
def __init__(self,data=None,errorcode=None,errordesc=None):
|
||||
'''
|
||||
@param data: (Optional) See _GNTPResponse.decode()
|
||||
@param errorcode: (Optional) Error code
|
||||
@param errordesc: (Optional) Error Description
|
||||
'''
|
||||
self.info['messagetype'] = '-ERROR'
|
||||
if data:
|
||||
self.decode(data)
|
||||
if errorcode:
|
||||
self.add_header('Error-Code', errorcode)
|
||||
self.add_header('Error-Description', errordesc)
|
||||
self.add_origin_info()
|
||||
def error(self):
|
||||
return self.headers['Error-Code'],self.headers['Error-Description']
|
||||
|
||||
def parse_gntp(data,password=None):
|
||||
'''
|
||||
Attempt to parse a message as a GNTP message
|
||||
@param data: Message to be parsed
|
||||
@param password: Optional password to be used to verify the message
|
||||
'''
|
||||
match = re.match('GNTP/(?P<version>\d+\.\d+) (?P<messagetype>REGISTER|NOTIFY|SUBSCRIBE|\-OK|\-ERROR)',data,re.IGNORECASE)
|
||||
if not match:
|
||||
raise ParseError('INVALID_GNTP_INFO')
|
||||
info = match.groupdict()
|
||||
if info['messagetype'] == 'REGISTER':
|
||||
return GNTPRegister(data,password=password)
|
||||
elif info['messagetype'] == 'NOTIFY':
|
||||
return GNTPNotice(data,password=password)
|
||||
elif info['messagetype'] == 'SUBSCRIBE':
|
||||
return GNTPSubscribe(data,password=password)
|
||||
elif info['messagetype'] == '-OK':
|
||||
return GNTPOK(data)
|
||||
elif info['messagetype'] == '-ERROR':
|
||||
return GNTPError(data)
|
||||
raise ParseError('INVALID_GNTP_MESSAGE')
|
||||
172
gntp/notifier.py
Normal file
@@ -0,0 +1,172 @@
|
||||
"""
|
||||
The gntp.notifier module is provided as a simple way to send notifications
|
||||
using GNTP
|
||||
|
||||
.. note::
|
||||
This class is intended to mostly mirror the older Python bindings such
|
||||
that you should be able to replace instances of the old bindings with
|
||||
this class.
|
||||
`Original Python bindings <http://code.google.com/p/growl/source/browse/Bindings/python/Growl.py>`_
|
||||
|
||||
"""
|
||||
import gntp
|
||||
import socket
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class GrowlNotifier(object):
|
||||
"""Helper class to simplfy sending Growl messages
|
||||
|
||||
:param string applicationName: Sending application name
|
||||
:param list notification: List of valid notifications
|
||||
:param list defaultNotifications: List of notifications that should be enabled
|
||||
by default
|
||||
:param string applicationIcon: Icon URL
|
||||
:param string hostname: Remote host
|
||||
:param integer port: Remote port
|
||||
"""
|
||||
applicationName = 'Python GNTP'
|
||||
notifications = []
|
||||
defaultNotifications = []
|
||||
applicationIcon = None
|
||||
passwordHash = 'MD5'
|
||||
|
||||
#GNTP Specific
|
||||
password = None
|
||||
hostname = 'localhost'
|
||||
port = 23053
|
||||
|
||||
def __init__(self, applicationName=None, notifications=None, defaultNotifications=None, applicationIcon=None, hostname=None, password=None, port=None):
|
||||
if applicationName:
|
||||
self.applicationName = applicationName
|
||||
assert self.applicationName, 'An application name is required.'
|
||||
|
||||
if notifications:
|
||||
self.notifications = list(notifications)
|
||||
assert self.notifications, 'A sequence of one or more notification names is required.'
|
||||
|
||||
if defaultNotifications is not None:
|
||||
self.defaultNotifications = list(defaultNotifications)
|
||||
elif not self.defaultNotifications:
|
||||
self.defaultNotifications = list(self.notifications)
|
||||
|
||||
if applicationIcon is not None:
|
||||
self.applicationIcon = self._checkIcon(applicationIcon)
|
||||
elif self.applicationIcon is not None:
|
||||
self.applicationIcon = self._checkIcon(self.applicationIcon)
|
||||
|
||||
#GNTP Specific
|
||||
if password:
|
||||
self.password = password
|
||||
|
||||
if hostname:
|
||||
self.hostname = hostname
|
||||
assert self.hostname, 'Requires valid hostname'
|
||||
|
||||
if port:
|
||||
self.port = int(port)
|
||||
assert isinstance(self.port, int), 'Requires valid port'
|
||||
|
||||
def _checkIcon(self, data):
|
||||
'''
|
||||
Check the icon to see if it's valid
|
||||
@param data:
|
||||
@todo Consider checking for a valid URL
|
||||
'''
|
||||
return data
|
||||
|
||||
def register(self):
|
||||
"""Send GNTP Registration
|
||||
|
||||
.. warning::
|
||||
Before sending notifications to Growl, you need to have
|
||||
sent a registration message at least once
|
||||
"""
|
||||
logger.info('Sending registration to %s:%s', self.hostname, self.port)
|
||||
register = gntp.GNTPRegister()
|
||||
register.add_header('Application-Name', self.applicationName)
|
||||
for notification in self.notifications:
|
||||
enabled = notification in self.defaultNotifications
|
||||
register.add_notification(notification, enabled)
|
||||
if self.applicationIcon:
|
||||
register.add_header('Application-Icon', self.applicationIcon)
|
||||
if self.password:
|
||||
register.set_password(self.password, self.passwordHash)
|
||||
response = self._send('register', register.encode())
|
||||
if isinstance(response, gntp.GNTPOK):
|
||||
return True
|
||||
logger.error('Invalid response %s', response.error())
|
||||
return response.error()
|
||||
|
||||
def notify(self, noteType, title, description, icon=None, sticky=False, priority=None):
|
||||
"""Send a GNTP notifications
|
||||
|
||||
.. warning::
|
||||
Must have registered with growl beforehand or messages will be ignored
|
||||
|
||||
:param string noteType: One of the notification names registered earlier
|
||||
:param string title: Notification title (usually displayed on the notification)
|
||||
:param string description: The main content of the notification
|
||||
:param string icon: Icon URL path
|
||||
:param boolean sticky: Sticky notification
|
||||
:param integer priority: Message priority level from -2 to 2
|
||||
"""
|
||||
logger.info('Sending notification [%s] to %s:%s', noteType, self.hostname, self.port)
|
||||
assert noteType in self.notifications
|
||||
notice = gntp.GNTPNotice()
|
||||
notice.add_header('Application-Name', self.applicationName)
|
||||
notice.add_header('Notification-Name', noteType)
|
||||
notice.add_header('Notification-Title', title)
|
||||
if self.password:
|
||||
notice.set_password(self.password, self.passwordHash)
|
||||
if sticky:
|
||||
notice.add_header('Notification-Sticky', sticky)
|
||||
if priority:
|
||||
notice.add_header('Notification-Priority', priority)
|
||||
if icon:
|
||||
notice.add_header('Notification-Icon', self._checkIcon(icon))
|
||||
if description:
|
||||
notice.add_header('Notification-Text', description)
|
||||
response = self._send('notify', notice.encode())
|
||||
if isinstance(response, gntp.GNTPOK):
|
||||
return True
|
||||
logger.error('Invalid response %s', response.error())
|
||||
return response.error()
|
||||
|
||||
def subscribe(self, id, name, port):
|
||||
"""Send a Subscribe request to a remote machine"""
|
||||
sub = gntp.GNTPSubscribe()
|
||||
sub.add_header('Subscriber-ID', id)
|
||||
sub.add_header('Subscriber-Name', name)
|
||||
sub.add_header('Subscriber-Port', port)
|
||||
if self.password:
|
||||
sub.set_password(self.password, self.passwordHash)
|
||||
response = self._send('subscribe', sub.encode())
|
||||
if isinstance(response, gntp.GNTPOK):
|
||||
return True
|
||||
logger.error('Invalid response %s', response.error())
|
||||
return response.error()
|
||||
|
||||
def _send(self, type, data):
|
||||
"""Send the GNTP Packet"""
|
||||
#logger.debug('To : %s:%s <%s>\n%s', self.hostname, self.port, type, data)
|
||||
#Less verbose please
|
||||
logger.debug('To : %s:%s <%s>', self.hostname, self.port, type)
|
||||
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((self.hostname, self.port))
|
||||
s.send(data.encode('utf8', 'replace'))
|
||||
try:
|
||||
s.settimeout(10)
|
||||
except:
|
||||
pass
|
||||
response = gntp.parse_gntp(s.recv(1024))
|
||||
s.close()
|
||||
|
||||
#logger.debug('From : %s:%s <%s>\n%s', self.hostname, self.port, response.__class__, response)
|
||||
#Less verbose please
|
||||
logger.debug('From : %s:%s <%s>', self.hostname, self.port, response.__class__)
|
||||
|
||||
return response
|
||||
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 281 KiB |
BIN
icons/sabnzbd16.ico
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
icons/sabnzbd16green.ico
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
icons/sabnzbd16paused.ico
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath=".."#-->
|
||||
<!--#set global $helpsubject="Configure"#-->
|
||||
<!--#set global $helpsubject="Configure-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu=""#-->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="configure-categories"#-->
|
||||
<!--#set global $helpsubject="configure-categories-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="categories"#-->
|
||||
@@ -72,6 +72,7 @@ $T('explain-relFolder') $defdir<br/>
|
||||
<option value="1" <!--#if $slot.priority == 1 then 'selected' else ''#-->>$T('pr-high')</option>
|
||||
<option value="0" <!--#if $slot.priority == 0 then 'selected' else ''#-->>$T('pr-normal')</option>
|
||||
<option value="-1" <!--#if $slot.priority == -1 then 'selected' else ''#-->>$T('pr-low')</option>
|
||||
<option value="-2" <!--#if $slot.priority == -2 then 'selected' else ''#-->>$T('pr-paused')</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+Directories+V2"#-->
|
||||
<!--#set global $helpsubject="Configure+Folders-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="directories"#-->
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+General+V2"#-->
|
||||
<!--#set global $helpsubject="Configure+General-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="general"#-->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+Index+Sites"#-->
|
||||
<!--#set global $helpsubject="Configure+Indexers-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="newzbin"#-->
|
||||
@@ -49,7 +49,7 @@ $T('explain-bookmark_rate')<br>
|
||||
<fieldset class="EntryFieldSet">
|
||||
<legend>$T('processedBM')</legend>
|
||||
<!--#for $msgid in $bookmarks_list#-->
|
||||
<a href="https://www.newzbin.com/browse/post/$msgid/" target="_blank">$msgid</a>
|
||||
<a href="https://$newzbin_url/browse/post/$msgid/" target="_blank">$msgid</a>
|
||||
<!--#end for#-->
|
||||
</fieldset>
|
||||
<!--#end if#-->
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+Email"#-->
|
||||
<!--#set global $helpsubject="Configure+Notifications-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl" #-->
|
||||
|
||||
<!--#set global $submenu="email"#-->
|
||||
@@ -52,11 +52,39 @@ $T('explain-email_account')<br>
|
||||
<strong>$T('opt-email_pwd'):</strong><br>
|
||||
$T('explain-email_pwd')<br>
|
||||
<input type="password" size="35" name="email_pwd" value="$email_pwd">
|
||||
<input type="hidden" name="session" value="$session">
|
||||
</fieldset>
|
||||
|
||||
<!--#if $have_growl or $have_ntfosd#-->
|
||||
<fieldset class="EntryFieldSet">
|
||||
<legend>$T('growlSettings')</legend>
|
||||
<!--#if $have_ntfosd#-->
|
||||
<label><input type="checkbox" name="ntfosd_enable" value="1" <!--#if $ntfosd_enable != "0" then "checked=1" else ""#--> /> <strong>$T('opt-ntfosd_enable'):</strong></label><br>
|
||||
$T('explain-ntfosd_enable')
|
||||
<br/>
|
||||
<br/>
|
||||
<!--#end if#-->
|
||||
<!--#if $have_growl#-->
|
||||
<label><input type="checkbox" name="growl_enable" value="1" <!--#if $growl_enable != "0" then "checked=1" else ""#--> /> <strong>$T('opt-growl_enable'):</strong></label><br>
|
||||
$T('explain-growl_enable')
|
||||
<br/>
|
||||
<br/>
|
||||
<strong>$T('opt-growl_server'):</strong><br>
|
||||
$T('explain-growl_server')<br>
|
||||
<input type="text" size="35" name="growl_server" value="$growl_server">
|
||||
<br>
|
||||
<br>
|
||||
<strong>$T('opt-growl_password'):</strong><br>
|
||||
$T('explain-growl_password')<br>
|
||||
<input type="password" size="35" name="growl_password" value="$growl_password">
|
||||
</fieldset>
|
||||
<!--#end if#-->
|
||||
<!--#end if#-->
|
||||
|
||||
</div>
|
||||
<input type="hidden" name="session" value="$session">
|
||||
<p><input type="submit" value="$T('button-saveChanges')">
|
||||
<input type="button" onclick="if (confirm('$T('askTestEmail').replace("'","`") ')) { this.form.action='testmail?session=$session&'; this.form.submit(); return false;}" value="$T('link-testEmail')"/>
|
||||
<input type="button" onclick="this.form.action='testnotification?session=$session&'; this.form.submit(); return false;"value="$T('testNotify')"/>
|
||||
</p>
|
||||
</form>
|
||||
<!--#if $lastmail#-->
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+RSS+V2"#-->
|
||||
<!--#set global $helpsubject="Configure+RSS-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="rss"#-->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+Scheduling+V2"#-->
|
||||
<!--#set global $helpsubject="Configure+Scheduling-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="scheduling"#-->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+Servers+V2"#-->
|
||||
<!--#set global $helpsubject="Configure+Servers-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="servers"#-->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+Sorting"#-->
|
||||
<!--#set global $helpsubject="Configure+Sorting-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="sorting"#-->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--#set global $topmenu="config"#-->
|
||||
<!--#set global $statpath="../.."#-->
|
||||
<!--#set global $helpsubject="Configure+Switches+V3"#-->
|
||||
<!--#set global $helpsubject="Configure+Switches-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<!--#set global $submenu="switches"#-->
|
||||
@@ -14,6 +14,9 @@
|
||||
<label><input type="checkbox" name="quick_check" value="1" <!--#if $quick_check > 0 then "checked=1" else ""#--> /> <strong>$T('opt-quick_check')</strong></label><br/>
|
||||
$T('explain-quick_check')<br>
|
||||
<br/>
|
||||
<label><input type="checkbox" name="pre_check" value="1" <!--#if $pre_check > 0 then "checked=1" else ""#--> /> <strong>$T('opt-pre_check')</strong></label><br/>
|
||||
$T('explain-pre_check')<br>
|
||||
<br/>
|
||||
<label><input type="checkbox" name="enable_unrar" value="1" <!--#if $enable_unrar > 0 then "checked=1" else ""#--> /> <strong>$T('opt-enable_unrar')</strong></label><br>
|
||||
$T('explain-enable_unrar')<br>
|
||||
<br>
|
||||
@@ -97,6 +100,13 @@
|
||||
</fieldset>
|
||||
<fieldset class="EntryFieldSet">
|
||||
<legend>$T('otherSwitches')</legend>
|
||||
<label><strong>$T('opt-max_art_tries')</strong></label><br>
|
||||
$T('explain-max_art_tries')<br>
|
||||
<input type="text" size=5" name="max_art_tries" value="$max_art_tries" />
|
||||
<br><br>
|
||||
<label><input type="checkbox" name="max_opt_only" value="1" <!--#if $max_opt_only > 0 then "checked=1" else ""#--> /> <strong>$T('opt-max_opt_only')</strong></label><br>
|
||||
$T('explain-max_opt_only')<br>
|
||||
<br>
|
||||
<label><input type="checkbox" name="auto_disconnect" value="1" <!--#if $auto_disconnect > 0 then "checked=1" else ""#--> /> <strong>$T('opt-auto_disconnect')</strong></label><br>
|
||||
$T('explain-auto_disconnect')<br>
|
||||
<br>
|
||||
@@ -146,6 +156,32 @@
|
||||
</select>
|
||||
<br/>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="EntryFieldSet">
|
||||
<strong>$T('opt-quota_size'):</strong><br/>
|
||||
$T('explain-quota_size')<br/>
|
||||
<input type="text" name="quota_size" value="$quota_size"/>
|
||||
<br>
|
||||
<br>
|
||||
<strong>$T('opt-quota_period'):</strong><br>
|
||||
$T('explain-quota_period')<br>
|
||||
<select name="ssl_type">
|
||||
<option value="m" <!--#if $quota_period == 'm' then 'selected' else ''#--> >$T('month')</option>
|
||||
<option value="w" <!--#if $quota_period == 'w' then 'selected' else ''#--> >$T('week')</option>
|
||||
<option value="d" <!--#if $quota_period == 'd' then 'selected' else ''#--> >$T('day')</option>
|
||||
<option value="x" <!--#if $quota_period == 'x' then 'selected' else ''#--> >$T('manual')</option>
|
||||
</select>
|
||||
<br/><br/>
|
||||
<strong>$T('opt-quota_day'):</strong><br/>
|
||||
$T('explain-quota_day')<br/>
|
||||
<input type="text" name="quota_day" value="$quota_day"/>
|
||||
<br>
|
||||
<br>
|
||||
<legend>$T('swtag-quota')</legend>
|
||||
<label><input type="checkbox" name="quota_resume" value="1" <!--#if $quota_resume > 0 then "checked=1" else ""#--> /> <strong>$T('opt-quota_resume')</strong></label><br>
|
||||
$T('explain-quota_resume')<br>
|
||||
<br/>
|
||||
</fieldset>
|
||||
</div>
|
||||
<p><input type="submit" value="$T('button-saveChanges')"></p>
|
||||
</form>
|
||||
|
||||
@@ -9,14 +9,17 @@
|
||||
<br>
|
||||
<!--#if int($cache_max)#-->
|
||||
<!--#set $msg=$T('ft-buffer@2')%($cache_art, $cache_size)#-->
|
||||
$msg<br>
|
||||
$msg
|
||||
<!--#end if#-->
|
||||
<!--#if $have_quota#-->
|
||||
| <strong>$T('quota-left'):</strong> $left_quota ⁄ $quota</strong>
|
||||
<!--#end if#-->
|
||||
<!--#if $new_release#-->
|
||||
<!--#set $msg=$T('ft-newRelease@1')%($new_release)#-->
|
||||
<b>$msg <a href="$new_rel_url/" target="_blank">SF.net</a></b><br>
|
||||
<!--#end if#-->
|
||||
<!--#if $have_warnings != "0"#-->
|
||||
<strong><a href="$statpath/connections/">$T('ft-warning')($have_warnings)!</a></strong>
|
||||
<strong><a href="$statpath/status/">$T('ft-warning')($have_warnings)!</a></strong>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<!--#set $mbleftrnd = str(int(float($mbleft)))#-->
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
<a href="$cpath/general/">$T('cmenu-general')</a> |
|
||||
<!--#end if#-->
|
||||
|
||||
<!--#if $submenu=="directories"#-->
|
||||
<!--#if $submenu=="folders"#-->
|
||||
<a class="current" href="./">$T('cmenu-folders')</a> |
|
||||
<!--#else#-->
|
||||
<a href="$cpath/directories/">$T('cmenu-folders')</a> |
|
||||
<a href="$cpath/folders/">$T('cmenu-folders')</a> |
|
||||
<!--#end if#-->
|
||||
|
||||
<!--#if $submenu=="switches"#-->
|
||||
@@ -41,16 +41,16 @@
|
||||
<a href="$cpath/rss/">$T('cmenu-rss')</a> |
|
||||
<!--#end if#-->
|
||||
|
||||
<!--#if $submenu=="email"#-->
|
||||
<a class="current" href="./">$T('cmenu-email')</a> |
|
||||
<!--#if $submenu=="notify"#-->
|
||||
<a class="current" href="./">$T('cmenu-notif')</a> |
|
||||
<!--#else#-->
|
||||
<a href="$cpath/email/">$T('cmenu-email')</a> |
|
||||
<a href="$cpath/notify/">$T('cmenu-notif')</a> |
|
||||
<!--#end if#-->
|
||||
|
||||
<!--#if $submenu=="newzbin"#-->
|
||||
<!--#if $submenu=="indexers"#-->
|
||||
<a class="current" href="./">$T('cmenu-newzbin')</a> |
|
||||
<!--#else#-->
|
||||
<a href="$cpath/newzbin/">$T('cmenu-newzbin')</a> |
|
||||
<a href="$cpath/indexers/">$T('cmenu-newzbin')</a> |
|
||||
<!--#end if#-->
|
||||
|
||||
<!--#if $submenu=="categories"#-->
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
<!--#if $topmenu=='connections'#-->
|
||||
<a class="current" href="$mypath/">$T('menu-cons')</a> |
|
||||
<!--#else#-->
|
||||
<a href="$statpath/connections/">$T('menu-cons')</a> |
|
||||
<a href="$statpath/status/">$T('menu-cons')</a> |
|
||||
<!--#end if#-->
|
||||
|
||||
<!--[if IE]>
|
||||
|
||||
@@ -103,6 +103,7 @@ $T('onQueueFinish'):
|
||||
<option value="set_priority?session=$session&nzo_id=$slot.nzo_id&priority=1" <!--#if $slot.priority == "High" then "selected" else ""#-->>$T('pr-high')</option>
|
||||
<option value="set_priority?session=$session&nzo_id=$slot.nzo_id&priority=0" <!--#if $slot.priority == "Normal" then "selected" else ""#-->>$T('pr-normal')</option>
|
||||
<option value="set_priority?session=$session&nzo_id=$slot.nzo_id&priority=-1" <!--#if $slot.priority == "Low" then "selected" else ""#-->>$T('pr-low')</option>
|
||||
<option value="set_priority?session=$session&nzo_id=$slot.nzo_id&priority=-4" <!--#if $slot.priority == "Stop" then "selected" else ""#-->>$T('pr-stop')</option>
|
||||
</select></form>
|
||||
<!--#end if#-->
|
||||
</td>
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
<!--#set global $have_refresh=5#-->
|
||||
<!--#set global $topmenu="connections"#-->
|
||||
<!--#set global $statpath=".."#-->
|
||||
<!--#set global $helpsubject="GUI+Connections"#-->
|
||||
<!--#set global $helpsubject="GUI+Status-0-7"#-->
|
||||
<!--#include $webdir + "/inc_top.tmpl"#-->
|
||||
|
||||
<span class="SubMenu">
|
||||
<!--#set $msg=$T('askTestEmail')#-->
|
||||
<!--#if $have_quota#-->
|
||||
<a href="./reset_quota?session=$session">$T('link-resetQuota')</a> |
|
||||
<!--#end if#-->
|
||||
<a href="./disconnect?session=$session">$T('link-forceDisc')</a> |
|
||||
<a href="./showlog?session=$session">$T('link-showLog')</a>
|
||||
$T('logging'):
|
||||
1
interfaces/Config
Submodule
@@ -4,7 +4,7 @@
|
||||
<!-- start Nzo footer -->
|
||||
#else#
|
||||
<!-- start other footer -->
|
||||
#if $pane!="Connections" and $pane !="RSS"#</div>#end if#
|
||||
#if $pane!="Status" and $pane !="RSS"#</div>#end if#
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#if $pane=="Connections" or $pane=="Config"#
|
||||
#if $pane=="Status" or $pane=="Config"#
|
||||
#set global $path = '../'#
|
||||
#else if $pane=="Main"#
|
||||
#set global $path = ''#
|
||||
@@ -83,16 +83,16 @@
|
||||
</ul>
|
||||
<ul class="menu" id="navigation_menu_left">
|
||||
<li#if $pane=="Main"# class="active first"#else# class="first"#end if#><a href="${path}"><span class="icon_nav_download">$T('Plush-downloads').capitalize()</span></a></li>
|
||||
<li#if $pane=="Connections"# class="active"#end if#><a href="${path}connections"><span class="icon_nav_connections">$T('menu-cons').capitalize()</span></a></li>
|
||||
<li#if $pane=="RSS"# class="active"#end if#><a href="${path}config/rss"><span class="icon_nav_rss">$T('rss').upper()</span></a></li>
|
||||
<li#if $pane!="RSS" and $pane!="Nzo" and ($pane=="Config" or $path=='../../')# class="active last"#else# class="last"#end if#><a href="${path}config"><span class="icon_nav_config">$T('menu-config').capitalize()</span></a></li>
|
||||
<li#if $pane=="Status"# class="active"#end if#><a href="${path}status/"><span class="icon_nav_connections">$T('menu-cons').capitalize()</span></a></li>
|
||||
<li#if $pane=="RSS"# class="active"#end if#><a href="${path}config/rss/"><span class="icon_nav_rss">$T('rss').upper()</span></a></li>
|
||||
<li#if $pane!="RSS" and $pane!="Nzo" and ($pane=="Config" or $path=='../../')# class="active last"#else# class="last"#end if#><a href="${path}config/"><span class="icon_nav_config">$T('menu-config').capitalize()</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="nav_text_right">
|
||||
#if $loadavg#$T('ft-sysload'): <span id="loadavg">$loadavg</span>#end if#
|
||||
</div>
|
||||
<div id="nav_text_left">
|
||||
<span id="warning_box"><b><a href="${path}connections/#tabs-warnings" id="last_warning" title="#echo $last_warning.replace("\n"," ").replace('"',"'") #"><span id="have_warnings">$have_warnings</span> $T('warnings')</a></b></span>
|
||||
<span id="warning_box"><b><a href="${path}status/#tabs-warnings" id="last_warning" title="#echo $last_warning.replace("\n"," ").replace('"',"'") #"><span id="have_warnings">$have_warnings</span> $T('warnings')</a></b></span>
|
||||
#if $pane=="Main"#
|
||||
#if $new_release#⋅ <a href="$new_rel_url" id="new_release" target="_blank">$T('Plush-updateAvailable').replace(' ',' ')</a>#end if#
|
||||
#if $warning#⋅ <a id="warning_message">$warning.replace(' ',' ')</a>#end if#
|
||||
@@ -105,33 +105,35 @@
|
||||
|
||||
#if $pane=="Main"#
|
||||
#else if $pane=="Nzo"#
|
||||
#else if $pane=="Connections" or $pane =="RSS"#
|
||||
#else if $pane=="Status" or $pane =="RSS"#
|
||||
<div id="config_container" class="config_margin_status lang-$active_lang">
|
||||
<div id="config_content">
|
||||
#else#
|
||||
#if $pane=="Connections"#
|
||||
#if $pane=="Status"#
|
||||
#else if $pane=="RSS"#
|
||||
#else#
|
||||
<div class="config_nav">
|
||||
<ul>
|
||||
<li><a class="#if $pane=="General"#nav_active#end if#" id="config_nav_general" href="${path}config/general">
|
||||
<li><a class="#if $pane=="General"#nav_active#end if#" id="config_nav_general" href="${path}config/general/">
|
||||
<div class="config_sprite_container sprite_config_nav_general">$T('cmenu-general')</div></a></li>
|
||||
<li><a class="#if $pane=="Folders"#nav_active#end if#" id="config_nav_directories" href="${path}config/directories">
|
||||
<li><a class="#if $pane=="Folders"#nav_active#end if#" id="config_nav_directories" href="${path}config/folders/">
|
||||
<div class="config_sprite_container sprite_config_nav_folders">$T('cmenu-folders')</div></a></li>
|
||||
<li><a class="#if $pane=="Switches"#nav_active#end if#" id="config_nav_switches" href="${path}config/switches">
|
||||
<li><a class="#if $pane=="Switches"#nav_active#end if#" id="config_nav_switches" href="${path}config/switches/">
|
||||
<div class="config_sprite_container sprite_config_nav_switches">$T('cmenu-switches')</div></a></li>
|
||||
<li><a class="#if $pane=="Servers"#nav_active#end if#" id="config_nav_server" href="${path}config/server">
|
||||
<li><a class="#if $pane=="Servers"#nav_active#end if#" id="config_nav_server" href="${path}config/server/">
|
||||
<div class="config_sprite_container sprite_config_nav_servers">$T('cmenu-servers')</div></a></li>
|
||||
<li><a class="#if $pane=="Scheduling"#nav_active#end if#" id="config_nav_scheduling" href="${path}config/scheduling">
|
||||
<li><a class="#if $pane=="Scheduling"#nav_active#end if#" id="config_nav_scheduling" href="${path}config/scheduling/">
|
||||
<div class="config_sprite_container sprite_config_nav_scheduling">$T('Plush-cmenu-scheduling')</div></a></li>
|
||||
<li><a class="#if $pane=="Email"#nav_active#end if#" id="config_nav_email" href="${path}config/email">
|
||||
<div class="config_sprite_container sprite_config_nav_email">$T('cmenu-email')</div></a></li>
|
||||
<li><a class="#if $pane=="Index Sites"#nav_active#end if#" id="config_nav_index_sites" href="${path}config/newzbin">
|
||||
<li><a class="#if $pane=="Email"#nav_active#end if#" id="config_nav_email" href="${path}config/notify/">
|
||||
<div class="config_sprite_container sprite_config_nav_email">$T('cmenu-notif')</div></a></li>
|
||||
<li><a class="#if $pane=="Index Sites"#nav_active#end if#" id="config_nav_index_sites" href="${path}config/indexers/">
|
||||
<div class="config_sprite_container sprite_config_nav_indexsites">$T('cmenu-newzbin')</div></a></li>
|
||||
<li><a class="#if $pane=="Categories"#nav_active#end if#" id="config_nav_categories" href="${path}config/categories">
|
||||
<li><a class="#if $pane=="Categories"#nav_active#end if#" id="config_nav_categories" href="${path}config/categories/">
|
||||
<div class="config_sprite_container sprite_config_nav_categories">$T('cmenu-cat')</div></a></li>
|
||||
<li><a class="#if $pane=="Sorting"#nav_active#end if#" id="config_nav_sorting" href="${path}config/sorting">
|
||||
<li><a class="#if $pane=="Sorting"#nav_active#end if#" id="config_nav_sorting" href="${path}config/sorting/">
|
||||
<div class="config_sprite_container sprite_config_nav_sorting">$T('cmenu-sorting')</div></a></li>
|
||||
<li><a class="#if $pane=="Special"#nav_active#end if#" id="config_nav_special" href="${path}config/special/">
|
||||
<div class="config_sprite_container sprite_config_nav_special">$T('cmenu-special')</div></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
#end if#
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<div id="plush_options_modal">
|
||||
|
||||
<p><a href="connections/disconnect?session=$session" class="juiButton">$T('link-forceDisc')</a></p>
|
||||
<p><a href="status/disconnect?session=$session" class="juiButton">$T('link-forceDisc')</a></p>
|
||||
<p><a href="config/restart?session=$session" class="juiButton" id="sabnzbd_restart" rel="#echo $T('explain-Restart').replace("<br />","\n")#">$T('sch-restart')</a>
|
||||
<a href="shutdown?session=$session" class="juiButton" id="sabnzbd_shutdown" rel="$T('shutdownOK?')">$T('sch-shutdown')</a></p>
|
||||
<br/>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Config"#-->
|
||||
<!--#set global $help_uri="Configure"#-->
|
||||
<!--#set global $help_uri="Configure-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<div id="config-components">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Categories"#-->
|
||||
<!--#set global $help_uri="configure-categories"#-->
|
||||
<!--#set global $help_uri="configure-categories-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<div style="padding:10px; overflow:auto;">
|
||||
@@ -55,6 +55,7 @@
|
||||
<option value="1" <!--#if $slot.priority == 1 then 'selected' else ''#-->>$T('pr-high')</option>
|
||||
<option value="0" <!--#if $slot.priority == 0 then 'selected' else ''#-->>$T('pr-normal')</option>
|
||||
<option value="-1" <!--#if $slot.priority == -1 then 'selected' else ''#-->>$T('pr-low')</option>
|
||||
<option value="-2" <!--#if $slot.priority == -2 then 'selected' else ''#-->>$T('pr-paused')</option>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Folders"#-->
|
||||
<!--#set global $help_uri="Configure+Directories+V2"#-->
|
||||
<!--#set global $help_uri="Configure+Folders-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<form action="saveDirectories" method="post" name="fullform" id="fullform">
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="General"#-->
|
||||
<!--#set global $help_uri="Configure+General+V2"#-->
|
||||
<!--#set global $help_uri="Configure+General-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<form action="saveGeneral" method="post" name="fullform" id="fullform" autocomplete="off">
|
||||
@@ -112,6 +112,7 @@
|
||||
<span class="component-title">$T('opt-apikey')</span>
|
||||
<input type="text" id="apikey" value="$session" class="apikey">
|
||||
<input type="button" class="juiButton" value="$T('button-apikey')" id="generate_new_apikey" rel="$T('Plush-confirm')">
|
||||
<input type="button" class="juiButton show_qrcode" value="$T('qr-code')" title="$T('explain-qr-code')" href="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=$session" >
|
||||
</label>
|
||||
<label class="nocheck clearfix">
|
||||
<span class="component-title"> </span>
|
||||
@@ -123,6 +124,7 @@
|
||||
<span class="component-title">$T('opt-nzbkey')</span>
|
||||
<input type="text" id="nzbkey" value="$nzb_key" class="apikey">
|
||||
<input type="button" class="juiButton" value="$T('button-apikey')" id="generate_new_nzbkey" rel="$T('Plush-confirm')">
|
||||
<input type="button" class="juiButton show_qrcode" value="$T('qr-code')" title="$T('explain-qr-code')" href="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=$nzb_key" >
|
||||
</label>
|
||||
<label class="nocheck clearfix">
|
||||
<span class="component-title"> </span>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Index Sites"#-->
|
||||
<!--#set global $help_uri="Configure+Index+Sites"#-->
|
||||
<!--#set global $help_uri="Configure+Indexers-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<form action="saveNewzbin" method="post" name="fullform" id="fullform" autocomplete="off">
|
||||
@@ -121,7 +121,7 @@
|
||||
</div>
|
||||
<fieldset class="component-group-list">
|
||||
<!--#for $msgid in $bookmarks_list#-->
|
||||
<a href="https://www.newzbin.com/browse/post/$msgid/" target="_blank">$msgid</a><br/>
|
||||
<a href="https://$newzbin_url/browse/post/$msgid/" target="_blank">$msgid</a><br/>
|
||||
<!--#end for#-->
|
||||
</fieldset>
|
||||
</div><!-- /component-group4 -->
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Email"#-->
|
||||
<!--#set global $help_uri="Configure+Email"#-->
|
||||
<!--#set global $help_uri="Configure+Notifications-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<script>
|
||||
@@ -111,6 +111,54 @@
|
||||
</fieldset>
|
||||
</div><!-- /component-group2 -->
|
||||
|
||||
<!--#if $have_growl or $have_ntfosd#-->
|
||||
<div id="core-component-group3" class="component-group clearfix">
|
||||
<div class="component-group-desc">
|
||||
<h3>$T('growlSettings')</h3>
|
||||
</div>
|
||||
<fieldset class="component-group-list">
|
||||
<!--#if $have_ntfosd#-->
|
||||
<div class="field-pair">
|
||||
<input type="checkbox" name="ntfosd_enable" id="ntfosd_enable" value="1" <!--#if $ntfosd_enable != "0" then "checked=1" else ""#--> />
|
||||
<label class="clearfix" for="ntfosd_enable">
|
||||
<span class="component-title">$T('opt-ntfosd_enable')</span>
|
||||
<span class="component-desc">$T('explain-ntfosd_enable')</span>
|
||||
</label>
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
<!--#if $have_growl#-->
|
||||
<div class="field-pair">
|
||||
<input type="checkbox" name="growl_enable" id="growl_enable" value="1" <!--#if $growl_enable != "0" then "checked=1" else ""#--> />
|
||||
<label class="clearfix" for="growl_enable">
|
||||
<span class="component-title">$T('opt-growl_enable')</span>
|
||||
<span class="component-desc">$T('explain-growl_enable')</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="nocheck clearfix" for="growl_server">
|
||||
<span class="component-title">$T('opt-growl_server')</span>
|
||||
<input type="text" name="growl_server" id="growl_server" value="$growl_server"/>
|
||||
</label>
|
||||
<label class="nocheck clearfix">
|
||||
<span class="component-title"> </span>
|
||||
<span class="component-desc">$T('explain-growl_server')</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="nocheck clearfix" for="growl_password">
|
||||
<span class="component-title">$T('opt-growl_password')</span>
|
||||
<input type="password" size="35" name="growl_password" id="growl_password" value="$growl_password"/>
|
||||
</label>
|
||||
<label class="nocheck clearfix">
|
||||
<span class="component-title"> </span>
|
||||
<span class="component-desc">$T('explain-growl_password')</span>
|
||||
</label>
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
</fieldset>
|
||||
</div><!-- /component-group3 -->
|
||||
<!--#end if#-->
|
||||
|
||||
<div class="component-group-last clearfix">
|
||||
<div class="component-group-desc">
|
||||
<h3> </h3>
|
||||
@@ -120,6 +168,8 @@
|
||||
<a id="save"><span class="config_sprite_container sprite_config_save"> </span> $T('button-saveChanges')</a>
|
||||
<a id="test_email" href="testmail?session=$session" rel="$T('askTestEmail')">
|
||||
<span class="config_sprite_container sprite_config_email_test"> </span> $T('link-testEmail')</a>
|
||||
<a id="test_notification" href="testnotification?session=$session">
|
||||
<span class="config_sprite_container sprite_config_email_test"> </span> $T('testNotify')</a>
|
||||
</div>
|
||||
<!--#if $lastmail#-->
|
||||
$T('emailResult') = <b>$lastmail</b>
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="RSS"#-->
|
||||
<!--#set global $help_uri="Configure+RSS+V2"#-->
|
||||
<!--#set global $help_uri="Configure+RSS-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@ $T('explain-RSS')
|
||||
<th>$T('rss-filter')</th>
|
||||
<!--#if $rss[$feed]['pick_cat']#--><th>$T('category')</th><!--#end if#-->
|
||||
<th>$T('priority')</th>
|
||||
<th>Mode</th>
|
||||
<th>$T('mode')</th>
|
||||
<!--#if $rss[$feed]['pick_script']#--><th>$T('script')</th><!--#end if#-->
|
||||
<th>$T('Plush-rss-actions')</th>
|
||||
</tr>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Scheduling"#-->
|
||||
<!--#set global $help_uri="Configure+Scheduling+V2"#-->
|
||||
<!--#set global $help_uri="Configure+Scheduling-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<%
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Servers"#-->
|
||||
<!--#set global $help_uri="Configure+Servers+V2"#-->
|
||||
<!--#set global $help_uri="Configure+Servers-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<div id="config-components">
|
||||
@@ -118,6 +118,8 @@
|
||||
<span> </span>
|
||||
<br/><br/>
|
||||
<input type="button" class="juiButton delServer" style="padding:4px;" value="$T('button-delServer')" rel="$T('Plush-confirm') "/>
|
||||
<br/><br/>
|
||||
<input type="button" class="juiButton clrServer" style="padding:4px;" value="$T('button-clrServer')" rel="$T('Plush-confirm') "/>
|
||||
</p>
|
||||
|
||||
<!--#if 'amounts' in $servers[$server]#-->
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Sorting"#-->
|
||||
<!--#set global $help_uri="Configure+Sorting"#-->
|
||||
<!--#set global $help_uri="Configure+Sorting-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<script type="text/javascript">
|
||||
@@ -244,16 +244,29 @@ function showDiv(id)
|
||||
</tr></thead>
|
||||
<tr>
|
||||
<td align="right"><strong>$T('show-name'):</strong></td>
|
||||
<td>%sn</td>
|
||||
<td>%sN</td>
|
||||
<td>$T('show-sp-name')</td>
|
||||
</tr><tr>
|
||||
<td></td>
|
||||
<td>%s.n</td>
|
||||
<td>%s.N</td>
|
||||
<td>$T('show-dot-name')</td>
|
||||
</tr><tr>
|
||||
<td></td>
|
||||
<td>%s_n</td>
|
||||
<td>%s_N</td>
|
||||
<td>$T('show-us-name')</td>
|
||||
</tr><tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>%sn</td>
|
||||
<td>$T('show-sp-name') ($T('case-adjusted'))</td>
|
||||
</tr><tr>
|
||||
<td></td>
|
||||
<td>%s.n</td>
|
||||
<td>$T('show-dot-name') ($T('case-adjusted'))</td>
|
||||
</tr><tr>
|
||||
<td></td>
|
||||
<td>%s_n</td>
|
||||
<td>$T('show-us-name') ($T('case-adjusted'))</td>
|
||||
</tr><tr>
|
||||
<td align="right"><strong>$T('show-seasonNum'):</strong></td>
|
||||
<td>%s</td>
|
||||
|
||||
66
interfaces/Plush/templates/config_special.tmpl
Normal file
@@ -0,0 +1,66 @@
|
||||
<!--#set global $pane="Specials"#-->
|
||||
<!--#set global $help_uri="Configure+Special-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<form action="saveSpecial" method="post" name="fullform" id="fullform">
|
||||
<input type="hidden" name="session" id="session" value="$session">
|
||||
|
||||
<div id="config-components">
|
||||
|
||||
<p><br>
|
||||
$T('explain-special')
|
||||
</p>
|
||||
|
||||
<div id="core-component-group1" class="component-group clearfix">
|
||||
<div class="component-group-desc">
|
||||
<h3>$T('sptag-boolean')</h3>
|
||||
</div>
|
||||
<fieldset class="component-group-list">
|
||||
|
||||
<!--#for $option in $switches#-->
|
||||
<div class="field-pair">
|
||||
<input type="checkbox" name="$option[0]" id="$option[0]" value="1" <!--#if $option[1] > 0 then "checked=1" else ""#--> />
|
||||
<label class="clearfix" for="$option[0]">
|
||||
<span class="component-title">$option[0] (<!--#if $option[2] then $T('on') else $T('off')#-->)</span>
|
||||
</label>
|
||||
</div>
|
||||
<!--#end for#-->
|
||||
|
||||
</fieldset>
|
||||
</div><!-- /component-group1 -->
|
||||
|
||||
<div id="core-component-group2" class="component-group clearfix">
|
||||
<div class="component-group-desc">
|
||||
<h3>$T('sptag-entries')</h3>
|
||||
</div>
|
||||
<fieldset class="component-group-list">
|
||||
|
||||
<!--#for $option in $entries#-->
|
||||
<div class="field-pair">
|
||||
<label class="nocheck clearfix" for="$option[0]">
|
||||
<span class="component-title">$option[0] ($option[2])</span>
|
||||
<input type="text" name="$option[0]" id="$option[0]" value="$option[1]"/>
|
||||
</label>
|
||||
</div>
|
||||
<!--#end for#-->
|
||||
|
||||
</fieldset>
|
||||
</div><!-- /component-group1 -->
|
||||
|
||||
|
||||
<div class="component-group-last clearfix">
|
||||
<div class="component-group-desc">
|
||||
<h3> </h3>
|
||||
</div>
|
||||
<fieldset class="component-group-list">
|
||||
<div class="left_links">
|
||||
<a id="save"><span class="config_sprite_container sprite_config_save"> </span> $T('button-saveChanges')</a>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div><!-- /component-group -->
|
||||
|
||||
</div><!-- /config-components -->
|
||||
|
||||
</form>
|
||||
|
||||
<!--#include $webdir + "/_inc_footer.tmpl"#-->
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Switches"#-->
|
||||
<!--#set global $help_uri="Configure+Switches+V3"#-->
|
||||
<!--#set global $help_uri="Configure+Switches-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<form action="saveSwitches" method="post" name="fullform" id="fullform">
|
||||
@@ -35,7 +35,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
</div><!-- /component-group1 -->
|
||||
|
||||
<div id="core-component-group2" class="component-group clearfix">
|
||||
@@ -43,6 +43,23 @@
|
||||
<h3>$T('swtag-server')</h3>
|
||||
</div>
|
||||
<fieldset class="component-group-list">
|
||||
<div class="field-pair">
|
||||
<label class="nocheck clearfix" for="max_art_tries">
|
||||
<span class="component-title">$T('opt-max_art_tries')</span>
|
||||
<input type="text" size="10" name="max_art_tries" id="max_art_tries" value="$max_art_tries" />
|
||||
</label>
|
||||
<label class="nocheck clearfix">
|
||||
<span class="component-title"> </span>
|
||||
<span class="component-desc">$T('explain-max_art_tries')</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field-pair alt">
|
||||
<input type="checkbox" name="max_opt_only" id="max_opt_only" value="1" <!--#if $max_opt_only > 0 then "checked=1" else ""#--> />
|
||||
<label class="clearfix" for="max_opt_only">
|
||||
<span class="component-title">$T('opt-max_opt_only')</span>
|
||||
<span class="component-desc">$T('explain-max_opt_only')</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<input type="checkbox" name="auto_disconnect" id="auto_disconnect" value="1" <!--#if $auto_disconnect > 0 then "checked=1" else ""#--> />
|
||||
<label class="clearfix" for="auto_disconnect">
|
||||
@@ -79,6 +96,13 @@
|
||||
<h3>$T('swtag-queue')</h3>
|
||||
</div>
|
||||
<fieldset class="component-group-list">
|
||||
<div class="field-pair alt">
|
||||
<input type="checkbox" name="pre_check" id="pre_check" value="1" <!--#if $pre_check > 0 then "checked=1" else ""#--> />
|
||||
<label class="clearfix" for="pre_check">
|
||||
<span class="component-title">$T('opt-pre_check')</span>
|
||||
<span class="component-desc">$T('explain-pre_check')</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="nocheck clearfix" for="no_dupes">
|
||||
<span class="component-title">$T('opt-no_dupes')</span>
|
||||
@@ -311,6 +335,56 @@
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div><!-- /component-group6 -->
|
||||
<div id="core-component-group6" class="component-group clearfix">
|
||||
<div class="component-group-desc">
|
||||
<h3>$T('swtag-quota')</h3>
|
||||
</div>
|
||||
<fieldset class="component-group-list">
|
||||
<div class="field-pair">
|
||||
<label class="nocheck clearfix" for="quota_size">
|
||||
<span class="component-title">$T('opt-quota_size')</span>
|
||||
<input type="text" name="quota_size" id="quota_size" value="$quota_size"/>
|
||||
</label>
|
||||
<label class="nocheck clearfix">
|
||||
<span class="component-title"> </span>
|
||||
<span class="component-desc">$T('explain-quota_size')</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field-pair alt">
|
||||
<label class="nocheck clearfix" for="quota_period">
|
||||
<span class="component-title">$T('opt-quota_period')</span>
|
||||
<select name="quota_period" id="quota_period">
|
||||
<option value="m" <!--#if $quota_period == "m" then 'selected' else ''#--> >$T('month')</option>
|
||||
<option value="w" <!--#if $quota_period == "w" then 'selected' else ''#--> >$T('week')</option>
|
||||
<option value="d" <!--#if $quota_period == "d" then 'selected' else ''#--> >$T('day')</option>
|
||||
<option value="x" <!--#if $quota_period == "x" then 'selected' else ''#--> >$T('manual')</option>
|
||||
</select>
|
||||
</label>
|
||||
<label class="nocheck clearfix">
|
||||
<span class="component-title"> </span>
|
||||
<span class="component-desc">$T('explain-quota_period')</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="nocheck clearfix" for="quota_day">
|
||||
<span class="component-title">$T('opt-quota_day')</span>
|
||||
<input type="text" name="quota_day" id="quota_day" value="$quota_day"/>
|
||||
</label>
|
||||
<label class="nocheck clearfix">
|
||||
<span class="component-title"> </span>
|
||||
<span class="component-desc">$T('explain-quota_day')</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="field-pair alt">
|
||||
<input type="checkbox" name="quota_resume" id="quota_resume" value="1" <!--#if $quota_resume > 0 then "checked=1" else ""#--> />
|
||||
<label class="clearfix" for="quota_resume">
|
||||
<span class="component-title">$T('opt-quota_resume')</span>
|
||||
<span class="component-desc">$T('explain-quota_resume')</span>
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div><!-- /component-group5 -->
|
||||
|
||||
<div class="component-group-last clearfix">
|
||||
|
||||
@@ -61,18 +61,14 @@
|
||||
</td>
|
||||
<td>
|
||||
<!--#if $line.report #-->
|
||||
<a href="https://www.newzbin.com/browse/post/$line.report/" target="_blank">
|
||||
<div class="icon_history_verbose main_sprite_container sprite_hv_report pointer" title='$T('Plush-openSourceURL')<br><br>https://www.newzbin.com/browse/post/$line.report'> </div>
|
||||
<a href="https://$newzbin_url/browse/post/$line.report/" target="_blank">
|
||||
<div class="icon_history_verbose main_sprite_container sprite_hv_report pointer" title='$T('Plush-openSourceURL')<br><br>https://$newzbin_url/browse/post/$line.report'> </div>
|
||||
</a>
|
||||
<!--#else if $varExists('newzbinDetails')#-->
|
||||
<div class="icon_history_verbose main_sprite_container sprite_hv_report hvFaded"> </div>
|
||||
<!--#end if#-->
|
||||
<!--#if $line.url_info #-->
|
||||
<a href="$line.url_info" target="_blank">
|
||||
<div class="icon_history_verbose main_sprite_container sprite_hv_star pointer" title="$T('Plush-openInfoURL')<br><br>$line.url_info"> </div>
|
||||
</a>
|
||||
<!--#else if $varExists('newzbinDetails')#-->
|
||||
<div class="icon_history_verbose main_sprite_container sprite_hv_star hvFaded"> </div>
|
||||
<!--#end if#-->
|
||||
<!--#if $line.size or $line.category or $line.path or $line.storage#-->
|
||||
<div class="icon_history_verbose main_sprite_container sprite_hv_stats" title='<!--#if $line.size#-->$T('size'): $line.size<!--#end if#--><!--#if $line.category#--><br>$T('category'): $line.category<!--#end if#-->'> </div>
|
||||
@@ -90,7 +86,9 @@
|
||||
<!--#end for#-->
|
||||
<!--#end if#-->
|
||||
<!--#else#-->
|
||||
<div class="icon_history_verbose main_sprite_container sprite_hv_$stage.name.lower()" title='<!--#for $action in $stage.actions#--><!--#echo $action.replace("'","’") #--><br><!--#end for#-->'> </div>
|
||||
<!--#if $stage.name != "Source"#-->
|
||||
<div class="icon_history_verbose main_sprite_container sprite_hv_$stage.name.lower()" title='<!--#for $action in $stage.actions#--><!--#echo $action.replace("'","’") #--><br><!--#end for#-->'> </div>
|
||||
<!--#end if#-->
|
||||
<!--#end if#-->
|
||||
<!--#end for#-->
|
||||
<!--#if $line.retry#-->
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<li class="main_sprite_container sprite_q_queue">
|
||||
<a class="sf-with-ul">$T('menu-queue')</a>
|
||||
<ul>
|
||||
<!--#if $have_quota#--><li><a id="reset_quota_now" class="pointer">$T('link-resetQuota')</a></li><!--#end if#-->
|
||||
<!--#if $varExists('newzbinDetails')#--><li><a id="get_bookmarks_now" class="pointer">$T('link-getBookmarks')</a></li><!--#end if#-->
|
||||
<!--#if $have_rss_defined#--><li><a id="get_rss_now" class="pointer">$T('button-rssNow')</a></li><!--#end if#-->
|
||||
<!--#if $have_watched_dir#--><li><a id="get_watched_now" class="pointer">$T('sch-scan_folder')</a></li><!--#end if#-->
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
<% import locale %>
|
||||
<% locale.setlocale(locale.LC_ALL, "") %>
|
||||
|
||||
<script type="text/javascript">
|
||||
if (typeof( jQuery ) == 'undefined')
|
||||
window.location = "../"; // redirect to main on direct template hit
|
||||
@@ -15,6 +12,9 @@
|
||||
|
||||
// set lower-right queue stats
|
||||
var stats = '';
|
||||
<!--#if $have_quota#-->
|
||||
stats += '<strong>$left_quota ⁄ $quota</strong> $T('quota-left') ';
|
||||
<!--#end if#-->
|
||||
<!--#if $noofslots > 0#-->
|
||||
stats += '<strong>$mbleft ⁄ $mb $T('MB')</strong> $T('Plush-remaining')';
|
||||
<!--#end if#-->
|
||||
@@ -62,14 +62,14 @@
|
||||
<td>
|
||||
<div class="main_sprite_container sprite_progressbar_bg">
|
||||
<div class="main_sprite_container sprite_progress_done" style="background-position: -<!--#if $slot.mb == "0.00" then "120" else int(120 - 120.0 / 100.0 * int(100 - float($slot.mbleft) / float($slot.mb) * 100))#-->px -401px">
|
||||
<div class="totalDownload"><!--#echo locale.format('%d', int(float($slot.mb)), True)#--> <small>$T('MB')</small></div>
|
||||
<div class="currentDownload"><!--#if $slot.mb!=$slot.mbleft#--><!--#echo locale.format('%d', int(float($slot.mb)-float($slot.mbleft)), True)#--> <small>$T('MB') $T('AofB')</small><!--#end if#--></div>
|
||||
<div class="totalDownload">$slot.mb_fmt <small>$T('MB')</small></div>
|
||||
<div class="currentDownload"><!--#if $slot.mb!=$slot.mbleft#-->$slot.mbdone_fmt <small>$T('MB') $T('AofB')</small><!--#end if#--></div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td class="eta nowrap">
|
||||
<!--#if not $paused and $slot.status != "Paused"#-->
|
||||
<!--#if not $paused and $slot.status not in ("Paused", "Checking")#-->
|
||||
<span title="$slot.eta">$slot.timeleft $T('Plush-left')</span>
|
||||
<!--#else#-->
|
||||
$T('post-'+$slot.status)
|
||||
@@ -89,6 +89,7 @@
|
||||
<option value="1" <!--#if $slot.priority == "High" then "selected" else ""#-->>$T('pr-high')</option>
|
||||
<option value="0" <!--#if $slot.priority == "Normal" then "selected" else ""#-->>$T('pr-normal')</option>
|
||||
<option value="-1" <!--#if $slot.priority == "Low" then "selected" else ""#-->>$T('pr-low')</option>
|
||||
<option value="-4" <!--#if $slot.priority == "Stop" then "selected" else ""#-->>$T('pr-stop')</option>
|
||||
</optgroup></select>
|
||||
<select class="change_opts"><optgroup label="$T('pp')">
|
||||
<option value="0" <!--#if $slot.unpackopts == "0" then "selected " else ""#-->>$T('pp-none')</option>
|
||||
|
||||
@@ -25,6 +25,7 @@ jQuery(document).ready(function($){
|
||||
$("#help").colorbox({ inline:true, href:"#help_modal", title:$("#help").text(),
|
||||
innerWidth:"375px", innerHeight:"350px", initialWidth:"375px", initialHeight:"350px", speed:0, opacity:0.7
|
||||
});
|
||||
$(".show_qrcode").colorbox({ photo:true, innerHeight:"300px", innerWidth:"300px", speed:0, opacity: 0.7, scrolling:false });
|
||||
|
||||
// jqueryui tabs/buttons
|
||||
$('.juiButton').button();
|
||||
@@ -121,7 +122,7 @@ jQuery(document).ready(function($){
|
||||
break;
|
||||
|
||||
|
||||
case 'Connections':
|
||||
case 'Status':
|
||||
$('#logging_level').change(function(event){
|
||||
window.location = './change_loglevel?loglevel='+$(event.target).val()+'&session='+apikey;
|
||||
});
|
||||
@@ -178,6 +179,11 @@ jQuery(document).ready(function($){
|
||||
$(event.target).parents('form:first').attr('action','delServer').submit();
|
||||
return false;
|
||||
});
|
||||
$('form .clrServer').click(function(event){ // clear server
|
||||
if(confirm($(event.target).attr('rel')))
|
||||
$(event.target).parents('form:first').attr('action','clrServer').submit();
|
||||
return false;
|
||||
});
|
||||
break;
|
||||
|
||||
case 'Categories':
|
||||
|
||||
@@ -116,6 +116,20 @@ jQuery(function($){
|
||||
function(){ $(this).removeClass('sprite_q_queuesfHover'); }
|
||||
);
|
||||
|
||||
// fix for touch devices -- toggle visibility
|
||||
$('.sprite_q_menu_pausefor').bind('touchend', function(e) {
|
||||
e.preventDefault();
|
||||
if( $(this).hasClass('sprite_q_menu_pauseforsfHover') ) {
|
||||
$(this).find("ul").toggle();
|
||||
}
|
||||
});
|
||||
$('.sprite_q_queue').bind('touchend', function(e) {
|
||||
e.preventDefault();
|
||||
if( $(this).hasClass('sprite_q_queuesfHover') ) {
|
||||
$(this).find("ul").toggle();
|
||||
}
|
||||
});
|
||||
|
||||
// modals
|
||||
$("#help").colorbox({ inline:true, href:"#help_modal", title:$("#help").text(),
|
||||
innerWidth:"375px", innerHeight:"350px", initialWidth:"375px", initialHeight:"350px", speed:0, opacity:0.7
|
||||
@@ -271,6 +285,16 @@ jQuery(function($){
|
||||
});
|
||||
});
|
||||
|
||||
// Reset Quota
|
||||
$('#reset_quota_now').click(function() {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "tapi",
|
||||
data: {mode:'reset_quota', apikey: $.plush.apikey},
|
||||
success: $.plush.RefreshQueue
|
||||
});
|
||||
});
|
||||
|
||||
// Get RSS
|
||||
$('#get_rss_now').click(function() {
|
||||
$.ajax({
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Connections"#-->
|
||||
<!--#set global $help_uri="GUI+Connections"#-->
|
||||
<!--#set global $pane="Status"#-->
|
||||
<!--#set global $help_uri="GUI+Status-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<div class="tabs">
|
||||
@@ -1,4 +1,4 @@
|
||||
<a href="${helpuri}configure-categories" id="help" target="_blank">$T('menu-help')</a>
|
||||
<a href="${helpuri}configure-categories-0-7" id="help" target="_blank">$T('menu-help')</a>
|
||||
<h3>$T('configCat')</h3>
|
||||
<br/>
|
||||
$T('explain-configCat')<br/>
|
||||
@@ -61,7 +61,8 @@ $T('explain-relFolder') $defdir<br/>
|
||||
<option value="2" <!--#if $slot.priority == 2 then "selected" else ""#-->>$T('pr-force')</option>
|
||||
<option value="1" <!--#if $slot.priority == 1 then "selected" else ""#-->>$T('pr-high')</option>
|
||||
<option value="0" <!--#if $slot.priority == 0 then "selected" else ""#-->>$T('pr-normal')</option>
|
||||
<option value="-1" <!--#if $slot.priority == -1 then "selected" else ""#-->>$T('pr-low')</option>>
|
||||
<option value="-1" <!--#if $slot.priority == -1 then "selected" else ""#-->>$T('pr-low')</option>
|
||||
<option value="-2" <!--#if $slot.priority == -2 then "selected" else ""#-->>$T('pr-paused')</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
<a href="${helpuri}Configure+Directories+V2" id="help" target="_blank">$T('menu-help')</a>
|
||||
<a href="${helpuri}Configure+Folders-0-7" id="help" target="_blank">$T('menu-help')</a>
|
||||
<h3>$T('folderConfig')</h3>
|
||||
<!--action="config/directories/saveDirectories" method="post"-->
|
||||
<!--action="config/folders/saveDirectories" method="post"-->
|
||||
<form id="configFolders" class="cmxform" action="">
|
||||
<div class="EntryBlock">
|
||||
<fieldset class="EntryFieldSet">
|
||||
@@ -85,7 +85,7 @@ $T('systemFolders')<br />
|
||||
|
||||
|
||||
</div><br class="clear" />
|
||||
<input type="button" size="40" value="$T('button-saveChanges')" onclick="javascript:submitconfig('config/directories/saveDirectories', this, 'configFolders')">
|
||||
<input type="button" size="40" value="$T('button-saveChanges')" onclick="javascript:submitconfig('config/folders/saveDirectories', this, 'configFolders')">
|
||||
</form>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
<a href="${helpuri}Configure+General+V2" id="help" target="_blank">$T('menu-help')</a><h3>$T('generalConfig')</h3>
|
||||
<a href="${helpuri}Configure+General-0-7" id="help" target="_blank">$T('menu-help')</a><h3>$T('generalConfig')</h3>
|
||||
<form class="cmxform" id="configGeneral" autocomplete="off">
|
||||
|
||||
<fieldset class="EntryFieldSet">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<a href="${helpuri}Configure+Index+Sites" id="help" target="_blank">$T('menu-help')</a><h3>Newzbin</h3>
|
||||
<a href="${helpuri}Configure+Indexers-0-7" id="help" target="_blank">$T('menu-help')</a><h3>Newzbin</h3>
|
||||
<form id="configNewzbin" class="cmxform" autocomplete="off">
|
||||
|
||||
$T('explain-newzbin')<br/>
|
||||
@@ -44,9 +44,9 @@ $T('explain-newzbin')<br/>
|
||||
|
||||
<a class="config" onClick="getBookmarks();">$T('link-getBookmarks')</a>
|
||||
<!--#if $bookmarks_list#-->
|
||||
<a class="config" onClick="lr('config/newzbin/hideBookmarks');">$T('link-HideBM')</a>
|
||||
<a class="config" onClick="lr('config/indexers/hideBookmarks');">$T('link-HideBM')</a>
|
||||
<!--#else#-->
|
||||
<a class="config" onClick="lr('config/newzbin/showBookmarks');">$T('link-ShowBM')</a>
|
||||
<a class="config" onClick="lr('config/indexers/showBookmarks');">$T('link-ShowBM')</a>
|
||||
<!--#end if#-->
|
||||
|
||||
<!--#if $bookmarks_list#-->
|
||||
@@ -54,7 +54,7 @@ $T('explain-newzbin')<br/>
|
||||
<legend>$T('processedBM')</legend>
|
||||
<hr />
|
||||
<!--#for $msgid in $bookmarks_list#-->
|
||||
<a href="https://www.newzbin.com/browse/post/$msgid/" target="_blank">$msgid</a>
|
||||
<a href="https://$newzbin_url/browse/post/$msgid/" target="_blank">$msgid</a>
|
||||
<!--#end for#-->
|
||||
<br class="clear" />
|
||||
</fieldset>
|
||||
@@ -93,6 +93,6 @@ $T('explain-nzbmatrix')<br/>
|
||||
</fieldset>
|
||||
|
||||
<p>
|
||||
<input type="button" size="40" value="$T('button-saveChanges')" onclick="javascript:submitconfig('config/newzbin/saveNewzbin', this, 'configNewzbin')">
|
||||
<input type="button" size="40" value="$T('button-saveChanges')" onclick="javascript:submitconfig('config/indexers/saveNewzbin', this, 'configNewzbin')">
|
||||
</p>
|
||||
</form>
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
<a href="${helpuri}Configure+Email" id="help" target="_blank">$T('menu-help')</a><h3>$T('configEmail')</h3>
|
||||
<a href="${helpuri}Configure+Notifications-0-7" id="help" target="_blank">$T('menu-help')</a><h3>$T('configEmail')</h3>
|
||||
<form id="configEmail" class="cmxform" autocomplete="off">
|
||||
<div class="EntryBlock">
|
||||
<fieldset class="EntryFieldSet">
|
||||
@@ -67,13 +67,44 @@
|
||||
<br class="clear" />
|
||||
|
||||
</fieldset>
|
||||
|
||||
<!--#if $have_growl or $have_ntfosd#-->
|
||||
<fieldset class="EntryFieldSet">
|
||||
<legend>$T('growlSettings')</legend>
|
||||
<hr />
|
||||
<!--#if $have_ntfosd#-->
|
||||
<label><span class="label">$T('opt-ntfosd_enable'):</span>
|
||||
<input class="radio" type="checkbox" name="ntfosd_enable" value="1" <!--#if $ntfosd_enable != "0" then "checked=1" else ""#--> />
|
||||
<span class="tips">$T('explain-ntfosd_enable')</span></label>
|
||||
<br class="clear" />
|
||||
<!--#end if#-->
|
||||
<!--#if $have_growl#-->
|
||||
<label><span class="label">$T('opt-growl_enable'):</span>
|
||||
<input class="radio" type="checkbox" name="growl_enable" value="1" <!--#if $growl_enable != "0" then "checked=1" else ""#--> />
|
||||
<span class="tips">$T('explain-growl_enable')</span></label>
|
||||
<br class="clear" />
|
||||
|
||||
<label class="label">$T('opt-growl_server'):</label>
|
||||
<input type="text" size="35" name="growl_server" value="$growl_server">
|
||||
<span class="tips">$T('explain-growl_server')</span>
|
||||
<br class="clear" />
|
||||
|
||||
<label class="label">$T('opt-growl_password'):</label>
|
||||
<input type="password" size="35" name="growl_password" value="$growl_password">
|
||||
<span class="tips">$T('explain-growl_password')</span>
|
||||
<br class="clear" />
|
||||
<!--#end if#-->
|
||||
|
||||
</fieldset>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<input type="button" size="40" value="$T('button-saveChanges')" onclick="javascript:submitconfig('config/email/saveEmail', this, 'configEmail')">
|
||||
<input type="button" size="40" value="$T('button-saveChanges')" onclick="javascript:submitconfig('config/notify/saveEmail', this, 'configEmail')">
|
||||
</p>
|
||||
<br class="clear" />
|
||||
<a class="config" onClick="testemail();">Test E-Mail</a>
|
||||
<a class="config" onClick="testemail();">$T('link-testEmail')</a>
|
||||
<a class="config" onClick="testnotification();">$T('testNotify')</a>
|
||||
<!--#if $lastmail#-->
|
||||
$T('emailResult') = <b>$lastmail</b>
|
||||
<!--#end if#-->
|
||||
@@ -2,7 +2,7 @@
|
||||
<script type="text/javascript">
|
||||
MochiKit.DOM.addLoadEvent(location = "../../#config-rss");
|
||||
</script>
|
||||
<a href="${helpuri}Configure+RSS+V2" id="help" target="_blank">$T('menu-help')</a>
|
||||
<a href="${helpuri}Configure+RSS-0-7" id="help" target="_blank">$T('menu-help')</a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<a href="${helpuri}Configure+Scheduling+V2" id="help" target="_blank">$T('menu-help')</a>
|
||||
<a href="${helpuri}Configure+Scheduling-0-7" id="help" target="_blank">$T('menu-help')</a>
|
||||
<h3>$T('configSchedule')</h3>
|
||||
<div class="EntryBlock">
|
||||
<form class="cmxform" id="schedule">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
<a href="${helpuri}Configure+Servers+V2" id="help" target="_blank">$T('menu-help')</a>
|
||||
<a href="${helpuri}Configure+Servers-0-7" id="help" target="_blank">$T('menu-help')</a>
|
||||
<h3>$T('configServer')</h3>
|
||||
<div class="EntryBlock">
|
||||
<!--#set $slist = $servers.keys()#-->
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
<a href="${helpuri}Configure+Sorting" id="help" target="_blank">$T('menu-help')</a><h3>$T('configSort')</h3>
|
||||
<a href="${helpuri}Configure+Sorting-0-7" id="help" target="_blank">$T('menu-help')</a><h3>$T('configSort')</h3>
|
||||
<!--action="config/directories/saveDirectories" method="post"-->
|
||||
<form id="configSorting" class="cmxform" action="">
|
||||
<div class="EntryBlock">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
<a href="${helpuri}Configure+Switches+V3" id="help" target="_blank">$T('menu-help')</a>
|
||||
<a href="${helpuri}Configure+Switches-0-7" id="help" target="_blank">$T('menu-help')</a>
|
||||
<h3>$T('switchesConfig')</h3>
|
||||
<div class="EntryBlock">
|
||||
<form id="configSwitches" class="cmxform">
|
||||
@@ -11,6 +11,11 @@
|
||||
<span class="tips">$T('explain-quick_check')</span>
|
||||
<br class="clear" />
|
||||
|
||||
<label><span class="label">$T('opt-pre_check'):</span>
|
||||
<input class="radio" type="checkbox" name="pre_check" value="1" <!--#if $pre_check > 0 then 'checked="1"' else ""#--> /></label>
|
||||
<span class="tips">$T('explain-pre_check')</span>
|
||||
<br class="clear" />
|
||||
|
||||
<label><span class="label">$T('opt-enable_unrar'):</span>
|
||||
<input class="radio" type="checkbox" name="enable_unrar" value="1" <!--#if $enable_unrar == 1 then 'checked="1"' else ""#--> />
|
||||
<span class="tips">$T('explain-enable_unrar')</span></label>
|
||||
@@ -123,6 +128,16 @@
|
||||
<hr />
|
||||
|
||||
|
||||
<label><span class="label">$T('opt-max_art_tries'):</span>
|
||||
<input type="text" size="5" name="max_art_tries" value="$max_art_tries" />
|
||||
<span class="tips">$T('explain-max_art_tries')</span></label>
|
||||
<br class="clear" />
|
||||
|
||||
<label><span class="label">$T('opt-max_opt_only'):</span>
|
||||
<input class="radio" type="checkbox" name="max_opt_only" value="1" <!--#if $max_opt_only > 0 then 'checked="1"' else ""#--> />
|
||||
<span class="tips">$T('explain-max_opt_only')</span></label>
|
||||
<br class="clear" />
|
||||
|
||||
<label><span class="label">$T('opt-auto_disconnect'):</span>
|
||||
<input class="radio" type="checkbox" name="auto_disconnect" value="1" <!--#if $auto_disconnect > 0 then 'checked="1"' else ""#--> />
|
||||
<span class="tips">$T('explain-auto_disconnect')</span></label>
|
||||
@@ -193,6 +208,38 @@
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="EntryFieldSet">
|
||||
<legend>$T('swtag-quota')</legend>
|
||||
<hr />
|
||||
|
||||
<span class="label">$T('opt-quota_size'):</span>
|
||||
<input type="text" name="quota_size" value="$quota_size"/>
|
||||
<span class="tips">$T('explain-quota_size')</span></label>
|
||||
<br class="clear" />
|
||||
|
||||
<span class="label">$T('opt-quota_period'):</span>
|
||||
<select name="quota_period" id="quota_period" class="select">
|
||||
<option value="m" <!--#if $quota_period == "m" then 'selected' else ''#--> >$T('month')</option>
|
||||
<option value="w" <!--#if $quota_period == "w" then 'selected' else ''#--> >$T('week')</option>
|
||||
<option value="d" <!--#if $quota_period == "d" then 'selected' else ''#--> >$T('day')</option>
|
||||
<option value="x" <!--#if $quota_period == "x" then 'selected' else ''#--> >$T('manual')</option>
|
||||
</select>
|
||||
<span class="tips">$T('explain-quota_period')</span>
|
||||
<br class="clear" />
|
||||
|
||||
|
||||
<span class="label">$T('opt-quota_day'):</span>
|
||||
<input type="text" name="quota_day" value="$quota_day"/>
|
||||
<span class="tips">$T('explain-quota_day')</span></label>
|
||||
<br class="clear" />
|
||||
|
||||
<label><span class="label">$T('opt-quota_resume'):</span>
|
||||
<input class="radio" type="checkbox" name="quota_resume" value="1" <!--#if $quota_resume > 0 then 'checked="1"' else ""#--> />
|
||||
<span class="tips">$T('explain-quota_resume')</span></label>
|
||||
<br class="clear" />
|
||||
|
||||
</fieldset>
|
||||
|
||||
|
||||
<p>
|
||||
<input type="button" size="40" value="$T('button-saveChanges')" onclick="javascript:submitconfig('config/switches/saveSwitches', this, 'configSwitches')">
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<td>$line.name<!--#if $line.action_line#--> - <span class="action_message">$line.action_line</span><!--#else if $line.fail_message#--> - <span class="fail_message">$line.fail_message</span><!--#end if#--></td>
|
||||
<td>
|
||||
<!--#if $line.report#-->
|
||||
<a href="https://www.newzbin.com/browse/post/$line.report"><img class="imglink" src="static/images/newzbin.png" /></a>
|
||||
<a href="https://$newzbin_url/browse/post/$line.report"><img class="imglink" src="static/images/newzbin.png" /></a>
|
||||
<!--#end if#-->
|
||||
<!--#if $line.url_info#-->
|
||||
<a href="$line.url_info"><img class="imglink" src="static/images/browser.png" /></a>
|
||||
@@ -99,6 +99,9 @@ t = time.strftime(time_format("%H:%M:%S on %A %d %B %Y"), completed)
|
||||
<!--#end if#-->
|
||||
</table>
|
||||
<div class="centerLinks">
|
||||
<!--#if $have_quota#-->
|
||||
$T('quota-left'): <strong>$left_quota ⁄ $quota</strong> |
|
||||
<!--#end if#-->
|
||||
$T('smpl-size'): <span class="bold">$total_size</span> | $T('thisMonth'): <span class="bold">$month_size</span> | $T('thisWeek'): <span class="bold">$week_size</span> | $T('today'): <span class="bold">$day_size</span>
|
||||
</div>
|
||||
<br />
|
||||
|
||||
@@ -424,7 +424,7 @@ function loadtitle() {
|
||||
case 'queue':
|
||||
lr('queue/','limit=15',1);
|
||||
break;
|
||||
case 'connections':
|
||||
case 'status':
|
||||
lr(url,'',1)
|
||||
default:
|
||||
lr(url)
|
||||
@@ -732,7 +732,7 @@ function lrb(url, extra, refresh)
|
||||
|
||||
function testemail()
|
||||
{
|
||||
d = doSimpleXMLHttpRequest('config/email/testmail?session='+session);
|
||||
d = doSimpleXMLHttpRequest('config/notify/testmail?session='+session);
|
||||
d.addCallback(function (d)
|
||||
{
|
||||
alert("$T('smpl-emailsent')");
|
||||
@@ -740,9 +740,19 @@ function lrb(url, extra, refresh)
|
||||
d.addErrback(handleServerError);
|
||||
}
|
||||
|
||||
function testnotification()
|
||||
{
|
||||
d = doSimpleXMLHttpRequest('config/notify/testnotification?session='+session);
|
||||
d.addCallback(function (d)
|
||||
{
|
||||
alert("$T('smpl-notesent')");
|
||||
});
|
||||
d.addErrback(handleServerError);
|
||||
}
|
||||
|
||||
function unblock_server(host, port)
|
||||
{
|
||||
d = doSimpleXMLHttpRequest('connections/unblock_server?server='+host+':'+port+'&session='+session);
|
||||
d = doSimpleXMLHttpRequest('status/unblock_server?server='+host+':'+port+'&session='+session);
|
||||
}
|
||||
|
||||
function getBookmarks()
|
||||
@@ -750,6 +760,11 @@ function lrb(url, extra, refresh)
|
||||
d = doSimpleXMLHttpRequest('tapi?mode=newzbin&name=get_bookmarks&session='+session);
|
||||
}
|
||||
|
||||
function resetQuota()
|
||||
{
|
||||
d = doSimpleXMLHttpRequest('tapi?mode=reset_quota&session='+session);
|
||||
}
|
||||
|
||||
function changequeueoptions(page)
|
||||
{
|
||||
d = doSimpleXMLHttpRequest('queue/'+page);
|
||||
@@ -1096,48 +1111,56 @@ function loadingJSON(){
|
||||
<br />
|
||||
<div class="centerLinks header-margin light-grey"><a onclick="javascript:toggle('addNew','',{duration:0.2})">[$T('smpl-toggleadd')]</a></div>
|
||||
</div>
|
||||
<!--#if $uniconfig#-->
|
||||
<!--#set prefix="."#-->
|
||||
<!--#else#-->
|
||||
<!--#set prefix="#"#-->
|
||||
<!--#end if#-->
|
||||
<div id="Content">
|
||||
<div id="Left">
|
||||
<ul id="menu">
|
||||
<li><a class="current" href="./">$T('menu-home')</a></li>
|
||||
<li><a href="#/queue/" onClick="lr('queue/', 'limit=15', 1, 0);">$T('menu-queue')</a></li>
|
||||
<li><a href="#/history/" onClick="lr('history/','limit=15', 1, 0);">$T('menu-history')</a></li>
|
||||
<li><a href="#/dv1/" onClick="lr('queue/','', 1, 1);lrb('history/','limit=15',1);">$T('smpl-dualView1')</a></li>
|
||||
<li><a href="#/dv2/" onClick="lr('queue/','', 1, 2);lrb('history/','limit=15',1);">$T('smpl-dualView2')</a></li>
|
||||
<li><a href="#/config/" onClick="toggle('hiddenNav','blind',{duration:0.2})">$T('menu-config')</a></li>
|
||||
<li><a href="#/queue/" onclick="lr('queue/', 'limit=15', 1, 0);">$T('menu-queue')</a></li>
|
||||
<li><a href="#/history/" onclick="lr('history/','limit=15', 1, 0);">$T('menu-history')</a></li>
|
||||
<li><a href="#/dv1/" onclick="lr('queue/','', 1, 1);lrb('history/','limit=15',1);">$T('smpl-dualView1')</a></li>
|
||||
<li><a href="#/dv2/" onclick="lr('queue/','', 1, 2);lrb('history/','limit=15',1);">$T('smpl-dualView2')</a></li>
|
||||
<li><a href="$prefix/config/" class="bold">$T('menu-config')</a> <a onclick="toggle('hiddenNav','blind',{duration:0.2})"><img src="static/images/bullet_arrow_down.png" border=0 /></a></li>
|
||||
<ul id="hiddenNav" class="secondul">
|
||||
<li><a class="config" href="#/config/general/" onClick="lr('config/general/','', 0, 0);">$T('cmenu-general')</a></li>
|
||||
<li><a class="config" href="#/config/directories/" onClick="lr('config/directories/','', 0, 0);">$T('cmenu-folders')</a> </li>
|
||||
<li><a class="config" href="#/config/switches/" onClick="lr('config/switches/','', 0, 0);">$T('cmenu-switches')</a> </li>
|
||||
<li><a class="config" href="#/config/server" onClick="lr('config/server/','', 0, 0);">$T('cmenu-servers')</a> </li>
|
||||
<li><a class="config" href="#/config/scheduling/" onClick="lr('config/scheduling/','', 0, 0);">$T('cmenu-scheduling')</a> </li>
|
||||
<li><a class="config" href="#/config/rss/" onClick="lr('config/rss/','', 0, 0);">$T('cmenu-rss')</a> </li>
|
||||
<li><a class="config" href="#/config/email/" onClick="lr('config/email/','', 0, 0);">$T('cmenu-email')</a></li>
|
||||
<li><a class="config" href="#/config/newzbin/" onClick="lr('config/newzbin/', '', 0, 0);">$T('cmenu-newzbin')</a></li>
|
||||
<li><a class="config" href="#/config/categories/" onClick="lr('config/categories/', '', 0, 0);">$T('cmenu-cat')</a></li>
|
||||
<li><a class="config" href="#/config/sorting/" onClick="lr('config/sorting/', '', 0, 0);">$T('cmenu-sorting')</a></li>
|
||||
<li><a class="config" href="$prefix/config/general/" onclick="lr('config/general/','', 0, 0);">$T('cmenu-general')</a></li>
|
||||
<li><a class="config" href="$prefix/config/folders/" onclick="lr('config/folders/','', 0, 0);">$T('cmenu-folders')</a> </li>
|
||||
<li><a class="config" href="$prefix/config/switches/" onclick="lr('config/switches/','', 0, 0);">$T('cmenu-switches')</a> </li>
|
||||
<li><a class="config" href="$prefix/config/server" onclick="lr('config/server/','', 0, 0);">$T('cmenu-servers')</a> </li>
|
||||
<li><a class="config" href="$prefix/config/scheduling/" onclick="lr('config/scheduling/','', 0, 0);">$T('cmenu-scheduling')</a> </li>
|
||||
<li><a class="config" href="$prefix/config/rss/" onclick="lr('config/rss/','', 0, 0);">$T('cmenu-rss')</a> </li>
|
||||
<li><a class="config" href="$prefix/config/notify/" onclick="lr('config/notify/','', 0, 0);">$T('cmenu-notif')</a></li>
|
||||
<li><a class="config" href="$prefix/config/indexers/" onclick="lr('config/indexers/', '', 0, 0);">$T('cmenu-newzbin')</a></li>
|
||||
<li><a class="config" href="$prefix/config/categories/" onclick="lr('config/categories/', '', 0, 0);">$T('cmenu-cat')</a></li>
|
||||
<li><a class="config" href="$prefix/config/sorting/" onclick="lr('config/sorting/', '', 0, 0);">$T('cmenu-sorting')</a></li>
|
||||
</ul>
|
||||
<li><a href="#/connections/" onClick="lr('connections/','', 1, 0);">$T('menu-cons')</a></li>
|
||||
<li><a href="#/connections/" onClick="lr('connections/','', 1, 0);">$T('smpl-warnings')(<span id="have_warnings">$have_warnings</span>)</a></li>
|
||||
<li><a href="#/status/" onclick="lr('status/','', 1, 0);">$T('menu-cons')</a></li>
|
||||
<li><a href="#/status/" onclick="lr('status/','', 1, 0);">$T('smpl-warnings')(<span id="have_warnings">$have_warnings</span>)</a></li>
|
||||
<br />
|
||||
<li><a class="bold" id="status2" onClick="toggle_paused()">$statusstr2</a> <a onClick="toggle('hiddenTimedPause','blind',{duration:0.2})"><img src="static/images/bullet_arrow_down.png" border=0 /></a></li>
|
||||
<li><a class="bold" id="status2" onclick="toggle_paused()">$statusstr2</a> <a onclick="toggle('hiddenTimedPause','blind',{duration:0.2})"><img src="static/images/bullet_arrow_down.png" border=0 /></a></li>
|
||||
<ul id="hiddenTimedPause" class="secondul">
|
||||
<li><a class="config" onClick="javascript:timedPause(5)">5 $T("minutes")</a></li>
|
||||
<li><a class="config" onClick="javascript:timedPause(15)">15 $T("minutes")</a></li>
|
||||
<li><a class="config" onClick="javascript:timedPause(30)">30 $T("minutes")</a></li>
|
||||
<li><a class="config" onClick="javascript:timedPause(60)">1 $T("hours")</a></li>
|
||||
<li><a class="config" onClick="javascript:timedPause(120)">2 $T("hours")</a></li>
|
||||
<li><a class="config" onClick="javascript:timedPause(180)">3 $T("hours")</a></li>
|
||||
<li><a class="config" onClick="javascript:timedPause(300)">5 $T("hours")</a></li>
|
||||
<li><a class="config" onClick="javascript:timedPause()">$T("smpl-custom")</a></li>
|
||||
<li><a class="config" onclick="javascript:timedPause(5)">5 $T("minutes")</a></li>
|
||||
<li><a class="config" onclick="javascript:timedPause(15)">15 $T("minutes")</a></li>
|
||||
<li><a class="config" onclick="javascript:timedPause(30)">30 $T("minutes")</a></li>
|
||||
<li><a class="config" onclick="javascript:timedPause(60)">1 $T("hours")</a></li>
|
||||
<li><a class="config" onclick="javascript:timedPause(120)">2 $T("hours")</a></li>
|
||||
<li><a class="config" onclick="javascript:timedPause(180)">3 $T("hours")</a></li>
|
||||
<li><a class="config" onclick="javascript:timedPause(300)">5 $T("hours")</a></li>
|
||||
<li><a class="config" onclick="javascript:timedPause()">$T("smpl-custom")</a></li>
|
||||
|
||||
</ul>
|
||||
<!--#if $varExists('newzbinDetails')#-->
|
||||
<li><a onClick="getBookmarks()">$T('smpl-getbookmarks')</a></li>
|
||||
<li><a onclick="getBookmarks()">$T('smpl-getbookmarks')</a></li>
|
||||
<!--#end if#-->
|
||||
<!--#if $have_quota#-->
|
||||
<li><a onclick="resetQuota()">$T('link-resetQuota')</a></li>
|
||||
<!--#end if#-->
|
||||
<br />
|
||||
<li><a style="text-decoration:underline;cursor:pointer;" onClick="if(confirm('$T('smpl-restartOK?')')){restart()}">$T('button-restart')</a></li>
|
||||
<li><a style="text-decoration:underline;cursor:pointer;" onClick="if(confirm('$T('shutdownOK?')')){shutdown()}">$T('link-shutdown')</a></li>
|
||||
<li><a style="text-decoration:underline;cursor:pointer;" onclick="if(confirm('$T('smpl-restartOK?')')){restart()}">$T('button-restart')</a></li>
|
||||
<li><a style="text-decoration:underline;cursor:pointer;" onclick="if(confirm('$T('shutdownOK?')')){shutdown()}">$T('link-shutdown')</a></li>
|
||||
<br/>
|
||||
<li><a href="$helpuri" target="_blank">$T('menu-wiki')</a></li>
|
||||
<li><a href="http://forums.sabnzbd.org" target="_blank">$T('menu-forums')</a></li>
|
||||
@@ -1260,7 +1283,7 @@ function loadingJSON(){
|
||||
<option value="300" >5 $T("minutes")</option>
|
||||
<option value="0" >$T("none")</option>
|
||||
</select>
|
||||
<br />SABnzbd $T('version'): $version | smpl $T('version'): 1.3</a></p>
|
||||
<br />SABnzbd $T('version'): $version | smpl skin</a></p>
|
||||
<!--#if $warning#-->
|
||||
<h2>$T('ft-warning')</h2>
|
||||
<b>$warning</b><br />
|
||||
|
||||
@@ -91,6 +91,7 @@ $T('smpl-timeleft'): <strong>$timeleft</strong> $T('eta'): <strong>$eta</strong>
|
||||
<option value="1" <!--#if $slot.priority == "High" then "selected" else ""#-->>$T('pr-high')</option>
|
||||
<option value="0" <!--#if $slot.priority == "Normal" then "selected" else ""#-->>$T('pr-normal')</option>
|
||||
<option value="-1" <!--#if $slot.priority == "Low" then "selected" else ""#-->>$T('pr-low')</option>
|
||||
<option value="-4" <!--#if $slot.priority == "Stop" then "selected" else ""#-->>$T('pr-stop')</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
<!--#end if#-->
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<script type="text/javascript">
|
||||
window.onload = function() {
|
||||
location = "../#/connections"
|
||||
location = "../#/status"
|
||||
};
|
||||
</script>
|
||||
<h3>$T('connections')</h3>
|
||||
<a class="config" onClick="lr('connections/disconnect', '', '-1', this.parentNode.id);">$T('link-forceDisc')</a> |
|
||||
<a class="config" onClick="lr('status/disconnect', '', '-1', this.parentNode.id);">$T('link-forceDisc')</a> |
|
||||
<a class="config" onClick="testemail();">$T('link-testEmail')</a> |
|
||||
<a class="config" href="connections/showlog?session=$session">$T('link-showLog')</a>
|
||||
<a class="config" href="status/showlog?session=$session">$T('link-showLog')</a>
|
||||
$T('logging'):
|
||||
<select onChange="javascript:lr('connections/change_loglevel','loglevel='+this.options[this.selectedIndex].value)">
|
||||
<select onChange="javascript:lr('status/change_loglevel','loglevel='+this.options[this.selectedIndex].value)">
|
||||
<option value="0" <!--#if $loglevel == "0" then "selected" else ""#-->>$T('log-errWarn')</option>
|
||||
<option value="1" <!--#if $loglevel == "1" then "selected" else ""#-->>$T('log-info')</option>
|
||||
<option value="2" <!--#if $loglevel == "2" then "selected" else ""#-->>$T('log-debug')</option>
|
||||
@@ -19,7 +19,7 @@ $T('logging'):
|
||||
<li>
|
||||
$server[0]: $server[2] <!--#if int($server[4])#--><img src="static/images/nuvola/kgpg.png" /><!--#end if#-->
|
||||
<!--#if not $server[5]#-->
|
||||
<a class="config" href="./connections/unblock_server?server=$server[0]&session=$session">
|
||||
<a class="config" href="./status/unblock_server?server=$server[0]&session=$session">
|
||||
($T('server-blocked'))</a>
|
||||
$server[6]
|
||||
<!--#end if#-->
|
||||
@@ -38,7 +38,7 @@ $T('logging'):
|
||||
$lastmail
|
||||
<!--#end if#-->
|
||||
<!--#if $warnings#-->
|
||||
<h2>$T('lastWarnings') (<a class="config" onClick="lr('connections/clearwarnings','', '-1', this.parentNode.id);">$T('clearWarnings')</a>)</h2>
|
||||
<h2>$T('lastWarnings') (<a class="config" onClick="lr('status/clearwarnings','', '-1', this.parentNode.id);">$T('clearWarnings')</a>)</h2>
|
||||
<!--#for $warn in $warnings#-->
|
||||
$warn<br/>
|
||||
<!--#end for#-->
|
||||
@@ -64,7 +64,7 @@ $T('explain-orphans')<br/>
|
||||
<form action="delete" method="get">
|
||||
<input type="hidden" value="$folder" name="name">
|
||||
<input type="hidden" value="$session" name="session">
|
||||
<input type="submit" onclick="this.form.action='connections/delete?session=$session'; this.form.submit(); return false;" value="$T('button-delCat')"/>
|
||||
<input type="submit" onclick="this.form.action='status/delete?session=$session'; this.form.submit(); return false;" value="$T('button-delCat')"/>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
@@ -72,7 +72,7 @@ $T('explain-orphans')<br/>
|
||||
<form action="add" method="get">
|
||||
<input type="hidden" value="$folder" name="name">
|
||||
<input type="hidden" value="$session" name="session">
|
||||
<input type="submit" onclick="this.form.action='connections/add?session=$session'; this.form.submit(); return false;" value="$T('button-add')"/>
|
||||
<input type="submit" onclick="this.form.action='status/add?session=$session'; this.form.submit(); return false;" value="$T('button-add')"/>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
@@ -86,6 +86,6 @@ $T('explain-orphans')<br/>
|
||||
<!--#end if#-->
|
||||
$T('explain-Repair')<br/>
|
||||
<form action="saveGeneral" method="post">
|
||||
<input type="submit" onclick="this.form.action='../config/repair?session=$session'; this.form.submit(); return false;" value="$T('button-repair')"/>
|
||||
<input type="submit" onclick="this.form.action='config/repair?session=$session'; this.form.submit(); return false;" value="$T('button-repair')"/>
|
||||
</form>
|
||||
|
||||
@@ -15,7 +15,6 @@ Please choose your prefered language<br /><br />
|
||||
<!--#for $l, $language in $languages#-->
|
||||
<div class="language">
|
||||
<label class="skin-select">
|
||||
<img src="static/images/flags/${l}.png" border="0" />
|
||||
<br />$language<br /><input type="radio" name="lang" id="$l" value="$l" <!--#if $lang == $l then 'checked=true' else ''#-->>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
@@ -13,7 +13,7 @@ $(document).ready(function() {
|
||||
$("#serverTest").click(function(){
|
||||
$('#serverResponse').html(txtChecking);
|
||||
$.getJSON(
|
||||
"/tapi?mode=config&name=test_server&output=json",
|
||||
"../tapi?mode=config&name=test_server&output=json",
|
||||
$("form").serialize(),
|
||||
function(result) {
|
||||
if (result.value.result){
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<form action="./four" method="post" autocomplete="off">
|
||||
<p>$T('wizard-index-explain')</p>
|
||||
<div id="serverDetails">
|
||||
<h3><a href="http://newzbin.com" target="_blank">Newzbin.com</a> ($T('wizard-optional'))</h3>
|
||||
<h3><a href="http://$newzbin_url" target="_blank">Newzbin2.es</a> ($T('wizard-optional'))</h3>
|
||||
<label class="label">$T('srv-username'):</label><input type="text" size="20" value="$newzbin_user" name="newzbin_user">
|
||||
<br class="clear" />
|
||||
<label class="label">$T('srv-password'):</label><input type="password" size="20" value="$newzbin_pass" name="newzbin_pass">
|
||||
|
||||
@@ -1,21 +1,16 @@
|
||||
The module feedparser.py-4.1 is (c) Mark Pilgrim
|
||||
The module feedparser.py-5.1 is (c) Mark Pilgrim and Kurt McKee
|
||||
|
||||
We use only the feedparser itself, all additional material
|
||||
was removed.
|
||||
We use only the feedparser itself, all additional material was removed.
|
||||
|
||||
Home of the feedparser module:
|
||||
http://www.feedparser.org
|
||||
https://code.google.com/p/feedparser
|
||||
|
||||
It is covered by the following license.
|
||||
|
||||
|
||||
Universal Feed Parser (feedparser.py), its testing harness (feedparsertest.py),
|
||||
and its unit tests (everything in the tests/ directory) are released under the
|
||||
following license:
|
||||
|
||||
----- begin license block -----
|
||||
|
||||
Copyright (c) 2002-2005, Mark Pilgrim
|
||||
Copyright (c) 2010-2011 Kurt McKee <contactme@kurtmckee.org>
|
||||
Copyright (c) 2002-2008 Mark Pilgrim
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
@@ -37,6 +32,6 @@ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
POSSIBILITY OF SUCH DAMAGE."""
|
||||
|
||||
----- end license block -----
|
||||
|
||||
29
licenses/License-gntp.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
The module gntp is (C) Paul Traylor
|
||||
|
||||
Home of the module:
|
||||
https://github.com/kfdm/gntp/
|
||||
|
||||
It is covered by the following license.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
Copyright (c) 2011 Paul Traylor
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
-------------------------------------------------------------------------
|
||||
8
licenses/License-systrayicon.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
On http://www.brunningonline.net/simon/blog/archives/001835.html,
|
||||
the author licensed SysTrayIcon.py under a variant of the WTFPL:
|
||||
|
||||
> Any road up, help yourself. Consider SysTrayIcon.py to be under an
|
||||
> "Aleister Crowley" style license - "Do what thou wilt shall be the
|
||||
> only law".
|
||||
>
|
||||
> Err, but don't sue me if it doesn't work. ;-)
|
||||
BIN
osx/image/sabnzbd.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 67 KiB |
BIN
osx/unrar/unrar
49
package.py
@@ -34,6 +34,9 @@ except ImportError:
|
||||
try:
|
||||
import py2app
|
||||
from setuptools import setup
|
||||
OSX_LION = [int(n) for n in platform.mac_ver()[0].split('.')] >= [10, 7, 0]
|
||||
OSX_SL = not OSX_LION and [int(n) for n in platform.mac_ver()[0].split('.')] >= [10, 6, 0]
|
||||
OSX_LEOPARD = not (OSX_LION or OSX_SL)
|
||||
except ImportError:
|
||||
py2app = None
|
||||
|
||||
@@ -162,7 +165,7 @@ def CreateTar(folder, fname, release):
|
||||
for root, dirs, files in os.walk(folder):
|
||||
for _file in files:
|
||||
uroot = root.replace('\\','/')
|
||||
if (uroot.find('/win') < 0) and (uroot.find('licenses/Python') < 0):
|
||||
if (uroot.find('/win') < 0) and (uroot.find('licenses/Python') < 0) and not _file.endswith('.git'):
|
||||
path = os.path.join(root, _file)
|
||||
fpath = path.replace('srcdist\\', release+'/').replace('\\', '/')
|
||||
tarinfo = tar.gettarinfo(path, fpath)
|
||||
@@ -313,6 +316,7 @@ fileIns = prod + '-win32-setup.exe'
|
||||
fileBin = prod + '-win32-bin.zip'
|
||||
fileSrc = prod + '-src.tar.gz'
|
||||
fileDmg = prod + '-osx.dmg'
|
||||
fileDmgLp = prod + '-osx-leopard.dmg'
|
||||
fileOSr = prod + '-osx-src.tar.gz'
|
||||
fileImg = prod + '.sparseimage'
|
||||
|
||||
@@ -330,8 +334,6 @@ data_files = [
|
||||
'CHANGELOG.txt',
|
||||
'COPYRIGHT.txt',
|
||||
'ISSUES.txt',
|
||||
'nzb.ico',
|
||||
'sabnzbd.ico',
|
||||
'Sample-PostProc.cmd',
|
||||
'Sample-PostProc.sh',
|
||||
'PKG-INFO',
|
||||
@@ -343,9 +345,11 @@ data_files = [
|
||||
'interfaces/Plush/',
|
||||
'interfaces/Mobile/',
|
||||
'interfaces/wizard/',
|
||||
'interfaces/Config/',
|
||||
'win/par2/',
|
||||
'win/unzip/',
|
||||
'win/unrar/'
|
||||
'win/unrar/',
|
||||
'icons/'
|
||||
]
|
||||
|
||||
options = dict(
|
||||
@@ -374,24 +378,27 @@ if target == 'app':
|
||||
|
||||
#Create sparseimage from template
|
||||
os.system("unzip osx/image/template.sparseimage.zip")
|
||||
os.rename('template.sparseimage', fileImg)
|
||||
os.rename('sabnzbd-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')
|
||||
if OSX_LION:
|
||||
# Lion and higher: generates SnowLeopard/Lion DMG
|
||||
f = open('osx/image/sabnzbd.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
|
||||
# Snow Leopard and lower: generates Leopard DMG
|
||||
fileDmg = fileDmgLp
|
||||
f = open('osx/image/sabnzbd_leopard.png', 'rb')
|
||||
png = f.read()
|
||||
f.close()
|
||||
f = open('/Volumes/SABnzbd/sabnzbd.png', 'wb')
|
||||
f.write(png)
|
||||
f.close()
|
||||
|
||||
# Rename the volume
|
||||
fp = open('mount.log', 'r')
|
||||
@@ -448,9 +455,10 @@ 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("cp icons/sabnzbd.ico dist/SABnzbd.app/Contents/Resources >/dev/null")
|
||||
os.system("find dist/SABnzbd.app -name .git | xargs rm -rf")
|
||||
|
||||
#copy builded app to mounted sparseimage
|
||||
#copy app to mounted sparseimage
|
||||
os.system("cp -r dist/SABnzbd.app /Volumes/%s/>/dev/null" % volume)
|
||||
|
||||
print 'Create src %s' % fileOSr
|
||||
@@ -461,6 +469,9 @@ if target == 'app':
|
||||
# Copy README.txt
|
||||
os.system("cp README.rtf /Volumes/%s/" % volume)
|
||||
|
||||
# Remove site.py to prevent re-compilation (otherwise the OSX Firewall may complain)
|
||||
os.remove('/Volumes/%s/SABnzbd.app/Contents/Resources/site.py' % volume)
|
||||
|
||||
#Unmount sparseimage
|
||||
os.system("hdiutil eject /Volumes/%s/>/dev/null" % volume)
|
||||
|
||||
@@ -495,7 +506,7 @@ elif target in ('binary', 'installer'):
|
||||
options['description'] = 'SABnzbd ' + str(my_version)
|
||||
|
||||
sys.argv[1] = 'py2exe'
|
||||
program = [ {'script' : 'SABnzbd.py', 'icon_resources' : [(0, "sabnzbd.ico")] } ]
|
||||
program = [ {'script' : 'SABnzbd.py', 'icon_resources' : [(0, "icons/sabnzbd.ico")] } ]
|
||||
options['options'] = {"py2exe":
|
||||
{
|
||||
"bundle_files": 3,
|
||||
@@ -567,6 +578,10 @@ elif target in ('binary', 'installer'):
|
||||
DeleteFiles(r'dist\lib\MSWSOCK.DLL')
|
||||
DeleteFiles(r'dist\lib\POWRPROF.DLL')
|
||||
|
||||
############################
|
||||
# Remove .git residue
|
||||
DeleteFiles(r'dist\interfaces\Config\.git')
|
||||
|
||||
############################
|
||||
# Copy MS runtime files or Curl
|
||||
if sys.version > (2, 5):
|
||||
@@ -589,7 +604,7 @@ elif target in ('binary', 'installer'):
|
||||
|
||||
|
||||
DeleteFiles(fileBin)
|
||||
write_dll_message('dist/IMPORTANT_MESSAGE.txt')
|
||||
#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)
|
||||
@@ -618,7 +633,7 @@ else:
|
||||
os.mkdir(root)
|
||||
|
||||
# Set data files
|
||||
data_files.extend(['po/', 'cherrypy/'])
|
||||
data_files.extend(['po/', 'cherrypy/', 'gntp/'])
|
||||
options['data_files'] = PairList(data_files)
|
||||
options['data_files'].append(('tools', ['tools/make_mo.py', 'tools/msgfmt.py']))
|
||||
|
||||
|
||||
@@ -5,14 +5,13 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.6.x\n"
|
||||
"Project-Id-Version: SABnzbd-0.7.x\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: shypike@sabnzbd.org\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ASCII\n"
|
||||
"Content-Transfer-Encoding: 7bit\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
@@ -87,3 +86,29 @@ msgid ""
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
|
||||
|
||||
215
po/email/da.po
@@ -1,22 +1,21 @@
|
||||
#
|
||||
# SABnzbd Translation Template file
|
||||
# Copyright (C) 2010 by the SABnzbd Team
|
||||
# team@sabnzbd.org
|
||||
# Danish translation for sabnzbd
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the sabnzbd package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
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-15 19:31+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-03-09 19:01+0000\n"
|
||||
"PO-Revision-Date: 2012-03-14 04:51+0000\n"
|
||||
"Last-Translator: Rene <Unknown>\n"
|
||||
"Language-Team: Danish <da@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-01-16 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build 12177)\n"
|
||||
"Language: da\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-15 05:11+0000\n"
|
||||
"X-Generator: Launchpad (build 14933)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
@@ -164,146 +163,50 @@ msgstr ""
|
||||
"\n"
|
||||
"Farvel\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#~ msgstr ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd har tilføjet $antal jobs til køen\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hej,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd har tilføjet $antal job(s) til køen.\n"
|
||||
#~ "De er fra RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Farvel\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "job $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd has downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd has failed to download \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Finished at $end_time\n"
|
||||
#~ "Downloaded $size\n"
|
||||
#~ "\n"
|
||||
#~ "Results of the job:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Stage $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Output from user script \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Enjoy!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Sorry!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ msgstr ""
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "job $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hej,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd har downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd har ikke downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Færdig kl. $end_time\n"
|
||||
#~ "Downloaded $size\n"
|
||||
#~ "\n"
|
||||
#~ "Resultat af job:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Stage $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Output from user script \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Enjoy!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Sorry!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
|
||||
196
po/email/de.po
@@ -1,22 +1,21 @@
|
||||
#
|
||||
# SABnzbd Translation Template file
|
||||
# Copyright (C) 2010 by the SABnzbd Team
|
||||
# team@sabnzbd.org
|
||||
# German translation for sabnzbd
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the sabnzbd package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
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-22 10:43+0000\n"
|
||||
"Last-Translator: Severin Heiniger <severinheiniger@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-03-09 19:01+0000\n"
|
||||
"PO-Revision-Date: 2011-06-26 10:50+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-01-23 05:11+0000\n"
|
||||
"X-Generator: Launchpad (build 12177)\n"
|
||||
"Language: de\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-11 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14914)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
@@ -165,149 +164,28 @@ msgstr ""
|
||||
" $job <!--#slurp#-->\n"
|
||||
"<!--#end for#-->\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "job $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd has downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd has failed to download \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Finished at $end_time\n"
|
||||
#~ "Downloaded $size\n"
|
||||
#~ "\n"
|
||||
#~ "Results of the job:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Stage $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Output from user script \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Enjoy!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Sorry!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ msgstr ""
|
||||
#~ "#encoding UTF-8\n"
|
||||
#~ "## Translation by Severin Heiniger\n"
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd <!--#if $status then \"hat\" else \"konnte\" #--> Auftrag "
|
||||
#~ "$name <!--#if $status then \"erfolgreich ausgeführt\" else \"nicht "
|
||||
#~ "ausführen\" #-->\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd hat \"$name\" <!--#if $msgid==\"\" then \"\" else \"(Newzbin #\" + "
|
||||
#~ "$msgid + \")\"#--> heruntergeladen\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd konnte \"$name\" <!--#if $msgid==\"\" then \"\" else \"(Newzbin #\" "
|
||||
#~ "+ $msgid + \")\"#--> nicht herunterladen\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Fertiggestellt: $end_time\n"
|
||||
#~ "Heruntergeladen: $size\n"
|
||||
#~ "\n"
|
||||
#~ "Ergebnis des Auftrages:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Stufe $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Ausgabe des Benutzerskripts \"$script\" (beendet mit Code $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Viel Spass!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Entschuldigung!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#~ msgstr ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
|
||||
216
po/email/fr.po
@@ -1,22 +1,21 @@
|
||||
#
|
||||
# SABnzbd Translation Template file
|
||||
# Copyright (C) 2010 by the SABnzbd Team
|
||||
# team@sabnzbd.org
|
||||
# French translation for sabnzbd
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the sabnzbd package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
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-08-01 19:14+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-03-09 19:01+0000\n"
|
||||
"PO-Revision-Date: 2012-03-18 07:02+0000\n"
|
||||
"Last-Translator: Fox Ace <Unknown>\n"
|
||||
"Language-Team: French <fr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-08-02 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 13552)\n"
|
||||
"Language: fr\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-19 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 14969)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
@@ -165,147 +164,50 @@ msgstr ""
|
||||
"\n"
|
||||
"Au Revoir\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "job $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd has downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd has failed to download \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Finished at $end_time\n"
|
||||
#~ "Downloaded $size\n"
|
||||
#~ "\n"
|
||||
#~ "Results of the job:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Stage $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Output from user script \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Enjoy!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Sorry!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ msgstr ""
|
||||
#~ "#encoding UTF-8\n"
|
||||
#~ "##\n"
|
||||
#~ "## Template Email pour SABnzbd\n"
|
||||
#~ "## Ceci est un template Cheetah\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Les retours à la ligne et les espaces sont importants !\n"
|
||||
#~ "##\n"
|
||||
#~ "## Entêtes de l'email\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd <!--#if $status#-->Succès<!--#else#-->Echec<!--#end if#--> "
|
||||
#~ "du téléchargement $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## Le contenu du message, la ligne vide est obligatoire !\n"
|
||||
#~ "\n"
|
||||
#~ "Bonjour,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd a téléchargé avec succès \"$name\" <!--#if $msgid==\"\" then \"\" "
|
||||
#~ "else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd a téléchargé sans succès \"$name\" <!--#if $msgid==\"\" then \"\" "
|
||||
#~ "else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Terminé à $end_time\n"
|
||||
#~ "Téléchargé $size\n"
|
||||
#~ "\n"
|
||||
#~ "Résultat du téléchargement :\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Etape $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Sortie du script utilisateur \"$script\" (Code Retour = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "A bientôt !\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Désolé !\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#~ msgstr ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
|
||||
195
po/email/nb.po
@@ -1,22 +1,21 @@
|
||||
#
|
||||
# SABnzbd Translation Template file
|
||||
# Copyright (C) 2010 by the SABnzbd Team
|
||||
# team@sabnzbd.org
|
||||
# Norwegian Bokmal translation for sabnzbd
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the sabnzbd package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
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-15 19:35+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-03-09 19:01+0000\n"
|
||||
"PO-Revision-Date: 2011-06-26 10:50+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-01-16 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build 12177)\n"
|
||||
"Language: no\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-11 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14914)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
@@ -166,148 +165,28 @@ msgstr ""
|
||||
"\n"
|
||||
"Hade\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "job $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd has downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd has failed to download \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Finished at $end_time\n"
|
||||
#~ "Downloaded $size\n"
|
||||
#~ "\n"
|
||||
#~ "Results of the job:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Stage $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Output from user script \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Enjoy!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Sorry!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ msgstr ""
|
||||
#~ "#encoding UTF-8\n"
|
||||
#~ "## Translation by ProtX\n"
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd har <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "jobb $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hei,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd har lastet ned \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd mislyktes med å laste ned \"$name\" <!--#if $msgid==\"\" then \"\" "
|
||||
#~ "else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Ferdig $end_time\n"
|
||||
#~ "Nedlastet $size\n"
|
||||
#~ "\n"
|
||||
#~ "Resultat av jobben:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Steg $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Utskrift fra brukerskript \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Gratulerer!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Synd!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#~ msgstr ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd har lagt $amount jobber til køen\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## Etter dette kommer meldingen, den tomme linjen er nødvendig!\n"
|
||||
#~ "\n"
|
||||
#~ "Hei,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd har lagt $amount jobb(er) til køen.\n"
|
||||
#~ "Disse er fra RSS feeden \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Hade\n"
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
|
||||
211
po/email/nl.po
@@ -1,22 +1,21 @@
|
||||
#
|
||||
# SABnzbd Translation Template file
|
||||
# Copyright (C) 2010 by the SABnzbd Team
|
||||
# team@sabnzbd.org
|
||||
# Dutch translation for sabnzbd
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the sabnzbd package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
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-15 19:30+0000\n"
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-03-09 19:01+0000\n"
|
||||
"PO-Revision-Date: 2012-03-09 19:11+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-01-16 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build 12177)\n"
|
||||
"Language: nl\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-11 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14914)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
@@ -162,144 +161,50 @@ msgstr ""
|
||||
" $job <!--#slurp#-->\n"
|
||||
"<!--#end for#-->\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "job $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd has downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd has failed to download \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Finished at $end_time\n"
|
||||
#~ "Downloaded $size\n"
|
||||
#~ "\n"
|
||||
#~ "Results of the job:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Stage $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Output from user script \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Enjoy!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Sorry!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ msgstr ""
|
||||
#~ "##\n"
|
||||
#~ "## Standaard Email sjabloon voor SABnzbd\n"
|
||||
#~ "## Dit is een Cheetah sjabloon\n"
|
||||
#~ "## Documentatie: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Lege regels en witruimte zijn belangrijk!\n"
|
||||
#~ "##\n"
|
||||
#~ "## Dit zijn de email koppen\n"
|
||||
#~ "To: $to\n"
|
||||
#~ "From: $from\n"
|
||||
#~ "Date: $date\n"
|
||||
#~ "Subject: SABnzbd: opdracht $name is <!--#if $status then \"klaar\" else "
|
||||
#~ "\"mislukt\" #-->\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## Hier onder volgt de hoofdtekst, de lege regel is noodzakelijk!\n"
|
||||
#~ "\n"
|
||||
#~ "Hallo,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd heeft \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin #\" + "
|
||||
#~ "$msgid + \")\"#--> gedownload\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd is niet geslaagd in het downloaden van \"$name\" <!--#if "
|
||||
#~ "$msgid==\"\" then \"\" else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Klaar om $end_time\n"
|
||||
#~ "Hoeveelheid gedownload $size\n"
|
||||
#~ "\n"
|
||||
#~ "Resultaat van de opdracht:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Fase $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ "$result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Bericht van het script \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Veel plezier!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Sorry!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#~ msgstr ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "To: $to\n"
|
||||
#~ "From: $from\n"
|
||||
#~ "Date: $date\n"
|
||||
#~ "Subject: SABnzbd heeft $amount opdrachten aan de wachtrij toegevoegd\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hallo,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd heeft $amount opdrachten aan de wachtrij toegevoegd.\n"
|
||||
#~ "Ze komen van de RSS bron \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ "$job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: Ophalen van NZB door SABnzbd is mislukt\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## Hierna komt het bericht, de lege regel is noodzakelijk!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"Het is SABnzbd niet gelukt om een NZB bestand op te halen van $url.\n"
|
||||
"De foutmelding was $msg\n"
|
||||
"\n"
|
||||
"Sorry\n"
|
||||
|
||||
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-15 19:19+0000\n"
|
||||
"PO-Revision-Date: 2011-05-11 20:22+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"POT-Creation-Date: 2012-03-09 19:01+0000\n"
|
||||
"PO-Revision-Date: 2011-06-26 10:50+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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-05-12 05:09+0000\n"
|
||||
"X-Generator: Launchpad (build 12959)\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-11 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14914)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
@@ -65,32 +65,32 @@ msgid ""
|
||||
"<!--#end if#-->\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## sablon Email Original pentru SABnzbd\n"
|
||||
"## Acesta este un sablon Cheetah\n"
|
||||
"## Documentatie: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"## Șablon Email Original pentru SABnzbd\n"
|
||||
"## Acesta este un Șablon Cheetah\n"
|
||||
"## Documentație: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"##Rândurile noi si caracterele spatiu sunt importante!\n"
|
||||
"##Rândurile noi și caracterele spațiu 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 reusit\" #--"
|
||||
"Subject: SABnzbd <!--#if $status then \"a terminat\" else \"nu a reuşit\" #--"
|
||||
"> sarcina $name\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## Dupã acesta urmeazã continutul, este necesar o linie goalã!\n"
|
||||
"## După acesta urmează conţinutul, 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 reusit sã descarce \"$name\" <!--#if $msgid==\"\" then \"\" "
|
||||
"SABnzbd nu a reuşit 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"
|
||||
"Bucurati-vã!\n"
|
||||
"Bucuraţi-vă!\n"
|
||||
"<!--#else#-->\n"
|
||||
"Ne pare rau!\n"
|
||||
"<!--#end if#-->\n"
|
||||
@@ -138,27 +138,53 @@ msgid ""
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
"## Sablon Email RSS pentru SABnzbd\n"
|
||||
"## Acesta este un sablon Cheetah \n"
|
||||
"## Documentatie: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"## Şablon Email RSS pentru SABnzbd\n"
|
||||
"## Acesta este un şablon Cheetah \n"
|
||||
"## Documentaţie: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Rândurile noi si caracterele spatiu sunt importante!\n"
|
||||
"## Rândurile noi și caracterele spațiu 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ã continutul, este necesar o linie goalã!\n"
|
||||
"## După acesta urmează conţinutul, 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"
|
||||
"<!--#end for#-->\n"
|
||||
"\n"
|
||||
"La revedere !\n"
|
||||
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
|
||||
195
po/email/sv.po
@@ -1,22 +1,21 @@
|
||||
#
|
||||
# SABnzbd Translation Template file
|
||||
# Copyright (C) 2010 by the SABnzbd Team
|
||||
# team@sabnzbd.org
|
||||
# Swedish translation for sabnzbd
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the sabnzbd package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
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-15 19:36+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-03-09 19:01+0000\n"
|
||||
"PO-Revision-Date: 2011-06-26 10:50+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Swedish <sv@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-01-16 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build 12177)\n"
|
||||
"Language: sv\n"
|
||||
"X-Launchpad-Export-Date: 2012-03-11 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 14914)\n"
|
||||
|
||||
#: email/email.tmpl:1
|
||||
msgid ""
|
||||
@@ -141,148 +140,28 @@ msgid ""
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "job $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd has downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd has failed to download \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Finished at $end_time\n"
|
||||
#~ "Downloaded $size\n"
|
||||
#~ "\n"
|
||||
#~ "Results of the job:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Stage $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Output from user script \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Enjoy!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Sorry!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ msgstr ""
|
||||
#~ "#encoding UTF-8\n"
|
||||
#~ "## Translation by \"Kristoffer (Malmis) Malmström\" <malmis@malmis.com>\n"
|
||||
#~ "##\n"
|
||||
#~ "## Default Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd har <!--#if $status then \"completed\" else \"failed\" #--> "
|
||||
#~ "jobb $name\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hej,\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "SABnzbd har laddat ner \"$name\" <!--#if $msgid==\"\" then \"\" else "
|
||||
#~ "\"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "SABnzbd misslyckades att ladda ner \"$name\" <!--#if $msgid==\"\" then \"\" "
|
||||
#~ "else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "Slutade $end_time\n"
|
||||
#~ "Nedladdat $size\n"
|
||||
#~ "\n"
|
||||
#~ "Resulttat av jobbet:\n"
|
||||
#~ "<!--#for $stage in $stages #-->\n"
|
||||
#~ "Steg $stage <!--#slurp#-->\n"
|
||||
#~ "<!--#for $result in $stages[$stage]#-->\n"
|
||||
#~ " $result <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "<!--#if $script!=\"\" #-->\n"
|
||||
#~ "Utmatning från användarskript \"$script\" (Exit code = $script_ret):\n"
|
||||
#~ "$script_output\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
#~ "<!--#if $status #-->\n"
|
||||
#~ "Lycka till!\n"
|
||||
#~ "<!--#else#-->\n"
|
||||
#~ "Tyvärr!\n"
|
||||
#~ "<!--#end if#-->\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#~ msgstr ""
|
||||
#~ "##\n"
|
||||
#~ "## RSS Email template for SABnzbd\n"
|
||||
#~ "## This a Cheetah template\n"
|
||||
#~ "## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
#~ "##\n"
|
||||
#~ "## Newlines and whitespace are significant!\n"
|
||||
#~ "##\n"
|
||||
#~ "## These are the email headers\n"
|
||||
#~ "to: $to\n"
|
||||
#~ "from: $from\n"
|
||||
#~ "date: $date\n"
|
||||
#~ "subject: SABnzbd has added $amount jobs to the queue\n"
|
||||
#~ "X-priority: 5\n"
|
||||
#~ "X-MS-priority: 5\n"
|
||||
#~ "## After this comes the body, the empty line is required!\n"
|
||||
#~ "\n"
|
||||
#~ "Hi,\n"
|
||||
#~ "\n"
|
||||
#~ "SABnzbd has added $amount job(s) to the queue.\n"
|
||||
#~ "They are from RSS feed \"$feed\".\n"
|
||||
#~ "<!--#for $job in $jobs#-->\n"
|
||||
#~ " $job <!--#slurp#-->\n"
|
||||
#~ "<!--#end for#-->\n"
|
||||
#~ "\n"
|
||||
#~ "Bye\n"
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
"##\n"
|
||||
"## Bad URL Fetch Email template for SABnzbd\n"
|
||||
"## This a Cheetah template\n"
|
||||
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
|
||||
"##\n"
|
||||
"## Newlines and whitespace are significant!\n"
|
||||
"##\n"
|
||||
"## These are the email headers\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd failed to fetch an NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## After this comes the body, the empty line is required!\n"
|
||||
"\n"
|
||||
"Hi,\n"
|
||||
"\n"
|
||||
"SABnzbd has failed to retrieve the NZB from $url.\n"
|
||||
"The error message was: $msg\n"
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
|
||||