Compare commits

...

70 Commits
2.3.7 ... 2.3.9

Author SHA1 Message Date
Safihre
8f21533e76 Set version to 2.3.9 2019-05-24 11:39:14 +02:00
Safihre
89996482a1 Merge branch '2.3.x' 2019-05-24 09:33:12 +02:00
Safihre
03c10dce91 Update text files for 2.3.9 2019-05-24 09:32:34 +02:00
Safihre
bd5331be05 Merge branch 'develop' into 2.3.x 2019-05-24 09:12:02 +02:00
Safihre
a50a65ee7c Remove unneeded get_bps
Removes overhead, gets called a lot
2019-05-23 10:54:03 +02:00
Safihre
8665af91f2 Remove unneeded lock
Get's called a lot, adds overhead due to lock.
2019-05-23 10:54:03 +02:00
Safihre
8641f86631 Remove print statement that slipped in with commit
Again.. Sigh.
2019-05-19 13:45:00 +02:00
Safihre
46e1645289 Correct typo in release notes 2019-05-18 10:56:39 +02:00
SABnzbd Automation
45de8c7206 Automatic translation update 2019-05-18 08:01:28 +00:00
Safihre
4ce3965747 Update text files for 2.3.9RC2 2019-05-18 09:56:05 +02:00
Safihre
9d4af19db3 Merge branch 'develop' into 2.3.x 2019-05-18 09:45:20 +02:00
Safihre
55f811289d Prevent false-positive removing of samples
Closes #1284, #1063, #157
2019-05-17 15:14:18 +02:00
Safihre
fbb637e5e3 Duplicate Detection doesn't look at History filenames
Closes #1288
2019-05-17 15:14:18 +02:00
Safihre
f628dda4e7 Propgation delay could show even if it was not configured 2019-05-12 09:23:35 +02:00
Safihre
48e034f4be Update text files for 2.3.9RC1 2019-05-07 13:50:20 +02:00
Safihre
f8959baa2f Revert "Notify develop-users that we will switch to Python 3"
This reverts commit fb238af7de.
2019-05-07 13:35:13 +02:00
Safihre
8ed5997eae Merge branch 'develop' into 2.3.x 2019-05-07 13:10:10 +02:00
Safihre
129d3eaf07 Handle "Unexpected end of archive" from UnRar
Closes #1282
2019-05-07 11:01:16 +02:00
Safihre
350db4afc0 Unpacking could hang forever on unicode downloads 2019-05-07 09:47:58 +02:00
Safihre
0a8ffd233e Use Python 2.7 for TravisCI tests 2019-05-07 09:29:34 +02:00
Safihre
a74b500e96 Update MultiPar to v1.3.0.5 and UnRar to 5.71 2019-05-07 09:21:48 +02:00
Safihre
1298e7ccce Non existing categories should result in Default being returned 2019-05-07 09:12:14 +02:00
Safihre
e1c61c41ca Display of Bytes/second speeds was incorrect
Not really relevant, but still
2019-05-07 09:11:25 +02:00
Safihre
3da76e15d2 Pause longer before registering single click
Closes #1210
2019-05-07 09:02:25 +02:00
Safihre
b116c24b84 Only log pre-check once 2019-05-07 09:01:07 +02:00
Safihre
a43810ec46 Rename Server Load-balancing
See #1249
2019-05-07 09:00:52 +02:00
Safihre
d4954b52ec Remove over-active unrar-stop detection
Too many false-positives.
2019-05-07 08:58:53 +02:00
Safihre
b0332e141c Remove error.log if it is too big 2019-04-21 10:52:40 +02:00
Safihre
80a181816e Only delete completed jobs from history when using max number of jobs
See https://forums.sabnzbd.org/viewtopic.php?f=3&t=24144&p=118606#p118605
2019-04-20 21:43:10 +02:00
Safihre
0dec3b7ec3 Remove bad print statement of par2 files
Closes #1269
2019-04-19 09:00:04 +02:00
Safihre
2c92a7621c Test Download could fail if clicked on icon instead of button
Closes #1263
2019-04-02 08:26:53 +02:00
Safihre
e05beb71e6 Only get series info when adding to the database 2019-03-20 14:29:06 +01:00
Safihre
6d82c7e542 Series Duplicate detection did not work as result of Direct Unpack
The Post-Processing time would be 0 seconds, so it would never store duplicate-check information. Oops.
2019-03-20 12:57:44 +01:00
Safihre
fb238af7de Notify develop-users that we will switch to Python 3 2019-03-18 18:45:05 +01:00
Safihre
6b9e3cd9d8 Merge branch '2.3.x' into develop 2019-03-18 18:44:09 +01:00
Safihre
daf9f50ac8 Set version to 2.3.8 2019-03-18 11:10:56 +01:00
Safihre
6b11013c1a Merge branch '2.3.x' 2019-03-18 11:09:35 +01:00
Safihre
0dd1f647d8 Update text files for 2.3.8 2019-03-18 09:23:24 +01:00
Safihre
6999872ec3 Update text files for 2.3.8 RC 1 2019-03-13 09:03:02 +01:00
Safihre
83ccc0a765 Merge branch 'develop' into 2.3.x 2019-03-13 08:19:58 +01:00
Safihre
bf4b06f620 Update MultiPar to v1.3.0.4 2019-03-12 08:31:32 +01:00
Safihre
8f290a11ce Update 7zip to 19.00 2019-03-12 08:31:04 +01:00
Safihre
72fda0117f Update WinRAR to 5.70
#1238
2019-02-26 17:40:10 +01:00
Safihre
d1cfa51a46 Always use correct supported file types
Closes #1227
It's also clear without the "Formats"
2019-02-26 17:27:33 +01:00
Safihre
d6a5f4c0dc Include SSL-ciphers when testing a Server
Closes #1231
2019-02-14 08:32:15 +01:00
Safihre
124701c118 Fix README typo 2019-02-14 08:16:45 +01:00
Safihre
d1adc8abc1 Update text files for 2.3.8 Beta 1 2019-02-11 08:07:45 +01:00
Safihre
0c2cfd6225 Revert "Notify develop-users that we will switch to Python 3"
This reverts commit 6ed9dcfc95.
2019-02-11 07:46:36 +01:00
Safihre
f280363df5 Merge branch 'develop' into 2.3.x 2019-02-11 07:46:21 +01:00
Safihre
6ed9dcfc95 Notify develop-users that we will switch to Python 3 2019-02-09 10:09:47 +01:00
Safihre
4008bd004f Update 7zip to 18.06 2019-02-08 09:59:25 +01:00
Safihre
cbbdccca81 Link supported file types in template
Closes #1227
2019-02-05 13:34:22 +01:00
SABnzbd Automation
0168d8870c Automatic translation update 2019-02-04 11:56:02 +00:00
Safihre
d6269099aa Sorting would fail on root-folders
It would try to make "C:Folder" instead of "C:\Folder"
2019-02-04 09:29:23 +01:00
Safihre
5548bd9c7e Filenames would not be sanitized with "Make Windows compatible" 2019-01-27 11:20:25 +01:00
Safihre
5c8483f393 Update LGTM config a bit more 2019-01-25 08:57:45 +01:00
Safihre
b9a344992b Remove Email Templates Folder from Notifications page
This way we can hide it
2019-01-22 13:37:38 +01:00
Safihre
a85a988b22 Lower connections in CI-test to prevent failures
Travis rotates between 10 IP's every few ms.. Madness. https://twitter.com/travisci/status/1085214062152159232
Because of that we can't use more than 2 connections, otherwise the newsservers get very cranky.
2019-01-22 08:48:56 +01:00
Safihre
d9808a7550 Wake up downloader when updating server-details
Through CI I found that updates to servers (including deleting servers) were processed with a delay because the downloader could be sleeping.
2019-01-22 08:44:34 +01:00
Safihre
92894e9301 Update LGTM based on feedback
See #1221
2019-01-22 07:45:00 +01:00
Safihre
e59a28b617 Add LGTM code-analysis 2019-01-20 18:02:10 +01:00
Safihre
27429a1415 Update TravisCI/AppVeyor newsserver information 2019-01-12 10:55:47 +01:00
Safihre
8f9e1b2eb7 Set snapcraft grade to stable so it can be published
This snapcraft stuff is just a developer's nightmare. They pretend it is easy, but for developers that introduced way to much customization and weird features..
2019-01-12 10:48:10 +01:00
Safihre
663330e251 Merge branch 'master' into 2.3.x 2019-01-12 09:31:44 +01:00
Safihre
92410fc1ef Merge branch 'master' into 2.3.x 2018-12-20 22:53:42 +01:00
Safihre
8ab3ebd5f6 Merge branch 'master' into 2.3.x 2018-11-21 15:53:21 +01:00
Safihre
0d8d5daff6 Merge branch 'master' into 2.3.x 2018-05-24 22:27:03 +02:00
Safihre
309f8e0044 Merge branch 'master' into 2.3.x 2018-04-22 19:20:50 +02:00
Safihre
902f67ef02 Merge remote-tracking branch 'origin/master' into 2.3.x 2018-03-13 16:29:46 +01:00
Safihre
5c54b873bf Merge branch 'master' into 2.3.x 2017-10-27 10:13:20 +02:00
58 changed files with 408 additions and 476 deletions

10
.lgtm.yml Normal file
View File

@@ -0,0 +1,10 @@
path_classifiers:
oldinterfaces:
- interfaces/smpl
- interfaces/Plush
library:
- cherrypy
- gntp
- six
- "*knockout*"
- "**/*min*"

View File

@@ -3,16 +3,17 @@ matrix:
include:
- os: linux
language: python
python: 2.7
env:
- secure: X5MY2HAtCxBI84IySY/XroFsFy2RIVhfsX+P1y3WXfvwBHYKCgrPV6BgwCg93ttkPmMS/IslP5Vp4F1OGqC9AZdxtxfHKpIPlIVxIHj6Lf6xwynmbGDQXjy73K13gjznK2mkGA0jcsp4Q5POS4ZKVkd6aOXnc8l8xS08+ztAvfxCC3tsMj2oMLEPP92j6zqb/1x2aX5+gVyVzrKgQQVKIk6R6jTxhIiOMPzj4+VMLXK8NEZqjV6RPwUjSoKHqJiV5URyf6/+2Ojmem3ilnpktn7xIJ/ZO1UNnZCrElOGZtmbryZFMctJvEAIQCOSdzsq/MACk0gocnOL3JQfDF5sYPOjJmc6sZI9PL78oFhwKaLkWEx565u8kdkLTMvv4A02HAmPzV1rKE1CTlEhsy0djU8mueCr9Ep1WyLJdY/igbyhR+dOd8fVo9Y1tY2o+ZisCsO5+PRfzhypK9xukqmWDJSXIWSuExUU/becXJ4IaTmlYJ+ArhKvkL90GmckH/zt9ZPIgr9Lq0OFva9uVHX+sbbsQZZ48lAmgiiiX335dONj8MxO8cDKsUT9FWQ8PzeJ8g8PErv5pmVVVODoOdKZg2Oo4jUsZG2yV8uUt9j87I2DPou4WiJ7wcTzQCPdzlaA5hdixPMyVUF/yCL+eKdJQFaKy3eaKwCxnAVp3WA2WdA=
- secure: gzvbgg+rdM/TfPOlXGE/JOW8VEfIJxwUnzt2bH07nj/PbREXQXrImC1SreMtwQX+gvd7bjIBZU/sgNSgRYcWKaSim4uNtAbinkcKQeP+V844ZY2Fabq/xpLluSP61vJLQ+hOLbnvilxmuI0E1Divahxo5qZJlwzCdk5u2txJRT/2LKGDT1lpGgIyDj9u0/ViAcpaAyfFR2Zd6ydHKbx+eFBE21LkyH/+GJmRiO0+qLIuCa2knmOJYjwBxRcPiAEDpbrRUbYDiNyzPqEVxJfCbsGYlo/QN/SnV6kTqM1WoFzvi4d1pDxDGRFLQj+KigihF6uY4eLC1e6yVQrDy0tyWKt6E+1tc8fH5dRS7AYtWMzURn/7Ebd72AiNIYaeAL8ZPqI7vw3ovFTqBS0h8Mg2uUZ503ytUvfwKyU9MgIkzXwmGuE37MCd0bRJ/blPS2DT+IMbrbEP90K5VrDrN/AGiYHR1TZ9GKUZd6xHibulEh2nNFMMQEga8nE2CWaJ3uJrCN7ud+4OJ0zCZFF7JiJTbOGApHg/aGWD/bYfg9sIh7up4PcxVs6RFxbf+M1aB8GO2A9aEZFow+djYVxiqf6esmzrnlsTfz16f8Txmez3BRftjVULre03a3Rt7WRxwYLveNlJos1nMw3G0CnruCe+wJbHEK4tEiqIXqB8UemT4zw=
- secure: f5QGjZESH4khjLOO1Ntgtiol4ZvwcqHLIV1sdK162dVkNT6UKOTRQflj2UmRXzwiRzWtVX/Ri0zT0j+SUJy2+aqJY/gxvisdTIWzRQ3w/CJPGgCizSkTQEWJ2V/n7DUAJ4xerme36zYi21S3d8VEWVDzU/duLu3yhlN5x0wMCY+dDPSDTFubmptGeCmyxqBqGVd7gD3PaiK7fDBB/eAXbW3QxLLQfxLHmPsx8vzPhDTQiLFtY43jfnVGEBdUbxSMXbq2NRB5eXH3bBkW8u/5y9uoyuF45CQn8f3UB6F84L+/n9M2ryCGeSJOFuZqSUHXvRF2acON40jx3t4PVocEzYguPwewoiFxfFHjRWmiI4WljiN30taK0pgstmzLTedozK+NdZ0M8vD7MCyK0yegPQolzFRngWW5Y8NY1XwlBT9W2lqGmrFge+dB86wOArMcRlY62PTOJ9Zqspbe/6mBT4Tq4O2OsXxGX/x60W/NJynva9WAz2SLEi5Pjs6r1a3tyXssw4/8KVhWl92WfpOnWrZrnZlsxOTmcS2OhLB0FQikTv9T/i3CZNcCI4PELkExeIwh4JW1MY0iGeLDHcAUKryJGrRZj1x32Nt1uUPTPBi8l8EzNyNOUvbHYTdpBr5r2JW1orvT55OhvKauc3wB7ogj673iYsqx5jeazHhgJMs=
- secure: iMXx74c2eUhDPJrukvAFxCFNWYDk8JB2alQ89Hc3T1ckXfDS37vgUplTze1aGo+AefUkDSFmTreFk9hVJvd4SQTHz4wS+qp7HQJFWECjR16jZwobIbukNPNU1JamozZoOa2igoVIJ8/tVIdIpfcsGfzj9WogwUlpChWHIiI8SM/Fc0WK+M9rDPKBpgjEN2yom73jbC2ETxuQ/HMdMNnNS9S1vS7MY+2W69+xi5Kl9hP0HUBIG/JtVXu1a4SO5NgqL5aW4cgKtgg0IjpedBRMcC0rpyEz+lDtl2jXYR+mXQEO8uNZOwzV7SLrq/ROGwW+DMtfiiySKxmuYoL/JOm4kcLyEup51dgnTQc1RdEcaYfk0twDry67prnQ/sXAQphzjl0StrTpLfzWUsCvgXRp7+XWhX9ElHN4KelOcAc7YeTSXoPY6bENk8LSy1woJ2HbH5TkSvtVJ6xrmssV3bEMp7aGx7qv1D/uvyAEMulB79WwdLyoDxmG9eIgXfp3nICko4p9kisrzK0hVCGDRCHSYgTnDBGTMJU/SlRRNUepmXHXQUrqWyTWvy2HTMUTjuYBaaNcUqZvyHyyaDq0MNBotwDCmes5o8fZu456lB/B26LwUu7cOSbCw19ePlGBNnbjA9NmNoQGOo66era3NEVJLYv+H91PAPQyWpzOt0X53Gk=
- secure: Cryq31K8wxt+q212/q7IHlLf4flH4riaiHssxR0/VfGACtMp3jOAVZ5RAOvX03LPYp+BuX2KAHFXDHeGHGzYmESkpzPCToZ3GpaOwP3ymc3RNeU6bd98yEQyQtM/wtY4uxPUWdwz5Uw5kkeynxw3y/QFsYceipB3u3oCvfB9n8SqWShjWpBFyFhSKS/SJjUqgNcAaA0pTP8l/crquZNhkug/J8Nlc/nC0H6ZSJKGu8UhkhZ0VSEY8dofZZkGG6YCIIEAqGasQqkra6x/D0uECfQnnDrTqekvklUG31/zy+awQXl+0NjLTIKyl2rHp5AUpSTlbPO2mDYdbWEWcRYmNsEEiGfvy3R9kGGbNijB5b57jvgsJapH8DkGRWseISdCBWqLH7C/OafNuMGzQ4s3UCN1aazqqN/IAJplVjSWiKA76Nbh385x88E8RaH7Gnvx1ZK88Lgf7Bz8Ar/O1dMviyP8WbM/vQQkVMdOk89y5O6G8ZwHFoj/v8w383irWMN2iU0Mf7GKW91ughpKrrKbXCmkT1bR9+tNYpKWU1O+1jgnGk65149GNC0K+9exWt0TK3pNSUa7b2nVzxeAqdCJjCoKBi2pLiRxYVI50V80M2p5Xw+5iiSiOhTLzFLT3YRi2VBjjBFa8BHJHBS9Pua4DaFc1w06XNej6K8rRV5We0s=
- secure: O/8jVULQmqOLHkvIW21IsVuL7/B+3MhgRFaT4wltxk/x7TarEsQyahXdStsQ+I53mMRbSfsArdCHXwgIm13wROXfcEdt7iM0f2tGWUsm32q73RrjBsKzb8SRTKZNkL1dOjpgkdEHejZdVckKlg0GlpJTTowOdfi+SYinj4Hj52vrV9waHk296njKw98W5Y35lEtSH3DcAU2NHrDi7YqQvjiBzj9MviG1qpJZJ1RMxKrTXXCqjlYcxr8FwO2kGpMnkTFIDywi4OspLQ1InEGhM9MdrY9tqGVzW631nX1uRV8aNhl+bLhtRs0i3QtOisWMWO5z5SQN6pOqUWx3nnwLPJzuoL+wGMDC2tdVRmH1+cuYCwq97curNq4hv9FBs7P/RS4e22WAoW0jtLWnx/5voVes1EsQE5iW/iG0z4ih3MIk3dHN6h8HcNr83DRxOW8JKmA79IbtcVFReZJ2AXQhx6VmvdUaIi3IKpW79K89ZzEuoEEO5Eyti2LLz9rti0iVknHejGYKWDCABflGaKjnj62tpUsAB9EsPPuwBegoKRd2bVy3kJ+RWGcMc4QfzsEq39z2ftQ8XJ800ZuuQvl7nsk86Dso+Hgr/T+5xU2wU6vFbwoDCWsxdnK2LXNpf3ci5PBZFhG9zLMRk+yFyAfh8OdQr19lxclay0X6na1K8i0=
- os: osx
env:
- HOMEBREW_NO_AUTO_UPDATE=1
- secure: RI/WxBI5kTP5v0qZ6im5BwqPurzzwKIl8GSbM2dFSEiWYEbKwHTDJ3KDDsXqS8YMNaropNVgzsdpCGXYUWRNTraKVa9GZEGNJ+fQuBWK9wkJ0MDTYfL/QFSN1CDXXlg7k26VXu6PgvEFA5kyDfSpxrxXJC6yXOUeJqmebkU2fiQo7/5Vpb1WAwpYlBP6zL5lYt2lpJ85fhYEjuAeuP/9zdVIlgCB7rDCgUX7tCKKXgwbKXfcff7lOCneB00/RCmRuNp3/tohGlgrSXh4ivHx4XEQgRoiVdeR3RCKZa5tBIXANefuJ2VopBrAbSRmVBexQP1818IU/XLlwtEEpC1vulpkx+5JolWksCrx4uJkKdlH0KA4k1m88L0Q1Rmmnp9LgRgeEl5xqt5s6RR6lS63ChQYkVFgWandwlrWu7Uenne4401KbG58PzDXEGlsKhUXnYBX+SU6gwejImCMb3vszKRAge5QAQlkiruCu31W9tWpY9ezHYrbv9ckOqdFXf9qsPEnU352v/8qHFe7jT/+7RSYdUzuo/d2aQqPKfkb7sy1VLEznmbGmv1BH4rGNpxd5inlcFKsR099Hx7PWgY8MHZcnEP3PJ2kBseFzVP3WKXHDTcv8yR0w6EgQyMzSHl9Ah3WJJ7TXZQ82gcqF8LcmuKcqXcwTkffG3ww7Vzuq4M=
- secure: uXHKYgQAwnfhWKi7RKAEumMMZZTJBb878KpodRfs1fz0NffdPo5+Ak1ricNzOJ8wti8/lXycDS+YmnFs64lGUxL+zvbQlFv7QuKfN0uHfPlo6zux9Ha9pg1rSUI4zqZ9kmbtwc0I2mdy1VeWwHvnbQDXUIt6a+tTwYZL3MGdP6kNvtSXaYhbEoHExjqeHUtVhUTafvWGtwE7uN+sdvhwXQ0dWlz6HGub8qYjkKCmF9VG+OyLKjFHjLVDMQ7Jnng2l1ZOgHSh5g5m6r++NEwSzZ8wFVULdzv5eEcR9U+mHmonFKOA/ICcZGd8MhEuvz9BupfgDWFqSTb5JGxzlZ28YdtjcAudzrWQMSpP2R0ks2Ttxz9Kpgw1L75HMvj0smazHs7IEEiXf2Yr03bzeHg7CGXNqOYyEOxxrPaJekCjMlX/YGqT/iv/8pZPfew7k/iVJlvCam76WNXABjJncHJeMsCgkItYZAoRZJDc+7z8J4g4ys1Rk0V/difjjwc/pSeKbt6wDA/9cmZ7r4Cs1Yh9Pl/mw6kzWGGpejO7lmsayQN3Pw99QMcZByUHx5BR+ZtIfF7Sl+F0uDQJ0MntJcteF7z1Dam2jHlkLckb85j6YWup5ItLAj5Hz7V2YUwqFmQhfOWEAjxagNSNnB8we4YBWS4KDTBEVDm6ITTfddlYvCw=
- secure: HKaT52NUQh18kllFQTjpKC64KlDkWEz0XnIEKJffumctrJjCvoFZFNC7ip3j7Bi3yp2IeD2SMsdxrrT6YFKxx5FfSdPqpQnsY34bzdEFZQomNJg4n/tmBc350PoVQ0PvLQiVoCCfVbdS/b4makNK7A+d9KED+SEsQMAqKp2mSnGhATB9MwFaZL5S4nGnEkqW5+eeAQxJ8JRawwumOOx/xhPOoEMIfHMpyTwFI1yUh1nJhZ9k1nxHzPlM78goyIuf0MjeZfSZ2fIlNZGVruYM28i9hpO4bzPFhk51uryWv8DQZiZlpCkHl6Po7rVVf5pNqm+l9SD/t0DnhS2rJHdeFSI2lM/uZtdOxaY5fTTj83LbCGhFtuZnZRwoQ73tpda8J7Z1E5Ni9bi7vOiZQ4pEIPt4LLu0X607sPWMkqrmgalKQQS13b5oliyMpkIguvmj9822BpaNVqamIrfn0z38+0Gog8iuGlMAQnRO9tGDO4kbVLcZQTRWpSwIC3niTPjPgLq/N92XQ9xmccrFT7efwemgF65FNM5ltv8+9AmI+hsuyXfqeHaAV9wmxRAAhaqvRgnSLYa3u1CPn5fF2CDvPvPcyCEIWnyxc7dYHDpzAQDcyuSejtbnL8gpkDqEHpy23hTjgZnZD7Pk7PQ7ayA8zBumTMGZ+/GAn5Wmgce+w0M=
- secure: iMXx74c2eUhDPJrukvAFxCFNWYDk8JB2alQ89Hc3T1ckXfDS37vgUplTze1aGo+AefUkDSFmTreFk9hVJvd4SQTHz4wS+qp7HQJFWECjR16jZwobIbukNPNU1JamozZoOa2igoVIJ8/tVIdIpfcsGfzj9WogwUlpChWHIiI8SM/Fc0WK+M9rDPKBpgjEN2yom73jbC2ETxuQ/HMdMNnNS9S1vS7MY+2W69+xi5Kl9hP0HUBIG/JtVXu1a4SO5NgqL5aW4cgKtgg0IjpedBRMcC0rpyEz+lDtl2jXYR+mXQEO8uNZOwzV7SLrq/ROGwW+DMtfiiySKxmuYoL/JOm4kcLyEup51dgnTQc1RdEcaYfk0twDry67prnQ/sXAQphzjl0StrTpLfzWUsCvgXRp7+XWhX9ElHN4KelOcAc7YeTSXoPY6bENk8LSy1woJ2HbH5TkSvtVJ6xrmssV3bEMp7aGx7qv1D/uvyAEMulB79WwdLyoDxmG9eIgXfp3nICko4p9kisrzK0hVCGDRCHSYgTnDBGTMJU/SlRRNUepmXHXQUrqWyTWvy2HTMUTjuYBaaNcUqZvyHyyaDq0MNBotwDCmes5o8fZu456lB/B26LwUu7cOSbCw19ePlGBNnbjA9NmNoQGOo66era3NEVJLYv+H91PAPQyWpzOt0X53Gk=
- secure: Yc9lY76AEXwG1uf+pg1xyTDo3gg8zsIqJ6K/WwJr7zStLGU6J5Qf/iW7jFzGxTbq0Kc6/dgb4VInYwlcyhjsRE3DI5LDqKiP2dZATP07crwZnzwrhxDPdYA+s1sI9YDJN90aZZm48DbUPFR7DPZjkDqyRJMRCFstZ/fJ//kSDVJvMjEOPEixzT6k5sRW2j9sctzEzqCHhroKaz5/m1sSBWa+pJx7C4A76NQFrMZEmlnWf0qKoUERaGn4hv5I3/38KQa0wy1q43obMoltmaFrbyIV4tx9M60kSGfaQdVVgwYgxPsINZeESJk+N4JCQSUKr0biAcKamPfgIbfEN4FbCGiFzHf5w/eIyUG0yUg42NtzzMVVS4I0s/aaPGKrjDrJNZ9bj8/oQjWDHtlRx7nrREdPI2Ch/MF8e8t03tDm5unhLIa6Fk1Ic9UbgwjtUqDvAne5+kwhsh8WpyU+VnttP/LyKTi2eqtADF6kPuxKM9DbTFE/IvCE2DXDFc6OOzAWoqhnbBgPrX0L5OlQLWoL13oi+yJMnBsF4Rd3rhqpNJ2sJTukeHT9z5yhkBEXHe9PatT0hiXZ7AxHsgX292k9Ti4se3pPxETkbR3r8iOklItMu1PViQsvfRyOFu+XloqMaPO31z48LmcPOps+/DYkbRyaTqBMdmPPRJghZ9lzvno=
- secure: RsFCZq/1Q6/++mgCZB6WsnIcbBsBwHFn6nfwC+vAomxbPtHevdiC930eIn8jKDza6Vmd4LoaMklvNOBEK1QpphbZXhKZIecakZOb+KyHVanSbQwErZCuVQdEo2p8cHJfuEh3guxmkE2OjAiBnSsgHlLmGiLAUF5GW5NPDLASPXIxXbBKOIKv7sTWj6tYYfVdUs1pQVz3Z+MkhRoS2uhVBOvQ14axtAtil1WmhgEJzuHAvjW29b1Q6l2goIuqoglqwKSna437CCt6mMFt6IVQqi36/lwXw0cYCLyJq3PURGDce6FdeQlwW0YfOXwT9k6BH+HcNuYmCSAbuL5hqC994avYbpemsBKKGfBK0Q8xZe0lQpS+R1C+iF3XXnPLU8B5TtALiBcFVRd3s291mxigxYqjkXbkgwVNAgkXKze+MhvrEQgoQwwhU3SbnmrZN8U6wW58MDYzjDxPaZdE5tUI+ROkfWeMRqtQrGNSJX6AwjkCrurW1/n0DXMlsUFnq4WGWF9nk8aHVzD8Y0cetQ+tLj3HxuxNqmAquewn+Z7pL41YTHlSTZ9+nHhI0GLQem6ANWL/4xJO8nBeOUETv1nULgbMyNOVaS9yBA7b2omE+Zuf8CMRCr9ID+Eeqtx1cUSMkWRymTdZvyPFPLjQ9KASTc7aCM7Cfc0aBceOoOOxMRw=
addons:
chrome: stable

View File

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

View File

@@ -1,4 +1,4 @@
SABnzbd 2.3.7
SABnzbd 2.3.9
-------------------------------------------------------------------------------
0) LICENSE

View File

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

View File

@@ -1,18 +1,21 @@
Release Notes - SABnzbd 2.3.7
Release Notes - SABnzbd 2.3.9
=========================================================
## Improvements and bug fixes since 2.3.6
- Hopeless jobs will be failed faster, based on the first article of
each file. If 80% of these first articles is missing, the job is aborted.
- Option "fast_fail" added to disable the new behavior.
- Added option to quickly add a verified test download
- Readout of some RSS feeds could result in a crash
- Direct Unpack could get stuck processing
- Show Details on Servers page could break graph display
- Windows: Update MultiPar to 1.3.0.3
Still looking for help with SABnzbd (Python 3) development!
https://www.reddit.com/r/usenet/comments/918nxv/
## Improvements and bug fixes since 2.3.8
- Duplicate job detection would not compare job names
- Propagation delay could show even if it was not configured
- Ignore Samples deleted all files of jobs containing the words Sample/Proof
- Warning "Unable to stop the unrar process" was shown too often
- Direct Unpack could hang forever on Unicode downloads
- Test Download could fail if clicked on the icon instead of the button
- Series Duplicate detection did not always work with Direct Unpack enabled
- Adding a job with non-existing category was not set to Default (*) category
- Only delete completed jobs from history when using History Retention option
- Renamed Server Load-balancing to Server IP address selection
- Linux: remove sabnzbd.error.log file at start-up if it grew too large
- Windows: double-click delay increased to avoid accidental pausing
- Windows: update MultiPar to v1.3.0.5
- Windows and macOS: update UnRar to 5.71
## Upgrading from 2.2.x and older
- Finish queue
@@ -26,7 +29,7 @@ https://www.reddit.com/r/usenet/comments/918nxv/
URL's that did not finish fetching before the upgrade will be lost.
- The organization of the download queue is different from 0.7.x releases.
This version will not see the 0.7.x queue, but you can restore the jobs
by going to Status page and using Queue Repair.
by going to the Status and Interface Settings window and using Queue Repair.
## Known problems and solutions
- Read the file "ISSUES.txt"

View File

@@ -89,7 +89,7 @@ import sabnzbd.newsunpack
from sabnzbd.misc import real_path, \
check_latest_version, exit_sab, get_from_url, \
split_host, get_ext, create_https_certificates, \
windows_variant, ip_extract, set_serv_parms, get_serv_parms, globber_full
windows_variant, ip_extract, set_serv_parms, get_serv_parms, globber_full, remove_file
from sabnzbd.panic import panic_tmpl, panic_port, panic_host, \
panic_sqlite, panic, launch_a_browser
import sabnzbd.scheduler as scheduler
@@ -1126,8 +1126,14 @@ def main():
try:
x = sys.stderr.fileno
x = sys.stdout.fileno
ol_path = os.path.join(logdir, DEF_LOG_ERRFILE)
out_log = file(ol_path, 'a+', 0)
# Get log file path and remove the log file if it got too large
log_path = os.path.join(logdir, DEF_LOG_ERRFILE)
if os.path.exists(log_path) and os.path.getsize(log_path) > sabnzbd.cfg.log_size.get_int():
remove_file(log_path)
# Redirect stderr/stdout
out_log = file(log_path, 'a+', 0)
sys.stderr.flush()
sys.stdout.flush()
os.dup2(out_log.fileno(), sys.stderr.fileno())

View File

@@ -1,10 +1,10 @@
environment:
SAB_NEWSSERVER_HOST:
secure: UNnTfVHDugC9amTucdTRyxe8RZfVBLYfI1EOTaDUjNM=
secure: 6SvOPWr5ypJeoumXJAZh90DLpk4C/5UAvzwyX7OOUr4=
SAB_NEWSSERVER_USER:
secure: npe0D4TiEzXMUVMCH3+SHA==
secure: Ty3ZG8T5vnacqIFPj5j5hg==
SAB_NEWSSERVER_PASSWORD:
secure: 28COv3RG+KAnBLxIrR1EDw==
secure: bO3XHtWTleVF9AqRV/V/nA==
install:
- pip install --upgrade -r tests/requirements.txt

View File

@@ -61,11 +61,6 @@
<input type="checkbox" name="email_rss" id="email_rss" value="1" <!--#if int($email_rss) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-email_rss')</span>
</div>
<div class="field-pair">
<label class="config" for="email_dir">$T('opt-email_dir')</label>
<input type="text" name="email_dir" id="email_dir" value="$email_dir" data-initialdir="$my_home" />
<span class="desc">$T('explain-email_dir')</span>
</div>
<div class="field-pair">
<label class="config" for="email_server">$T('opt-email_server')</label>
<input type="text" name="email_server" id="email_server" value="$email_server" />
@@ -404,9 +399,6 @@
<script type="text/javascript">
\$(document).ready(function(){
// Autocomplete and filebrowser
\$('#email_dir').typeahead().fileBrowser();
// Expand on enable
\$('.col2 input[name$="enable"]').change(function() {
if(this.checked) {

View File

@@ -1,3 +1,5 @@
<!--#from sabnzbd.constants import VALID_ARCHIVES, VALID_NZB_FILES#-->
<!--#set $file_exts = ', '.join(VALID_NZB_FILES + VALID_ARCHIVES)#-->
<!-- Notifcation box -->
<div class="main-notification-box" style="display: none">
<div class="main-notification-box-uploading">
@@ -433,7 +435,7 @@
<form data-bind="submit: addNZBFromURL" class="col-sm-6">
<fieldset>
<legend class="row-wrap-text">$T('Glitter-addFromURL')</legend>
<div class="input-group" data-tooltip="true" data-placement="bottom" title="$T('Glitter-nzbFormats')">
<div class="input-group" data-tooltip="true" data-placement="bottom" title="$file_exts">
<input type="text" name="nzbURL" class="form-control" placeholder="$T('enterURL')" />
<span class="input-group-btn">
<input type="submit" name="Add" value="$T('add')" class="btn btn-default" />
@@ -444,10 +446,10 @@
<form data-bind="submit: addNZBFromFileForm" class="col-sm-6">
<fieldset>
<legend class="row-wrap-text">$T('Glitter-addFromFile')</legend>
<div class="input-group" data-tooltip="true" data-placement="bottom" title="$T('Glitter-nzbFormats')">
<div class="input-group" data-tooltip="true" data-placement="bottom" title="$file_exts">
<label class="btn btn-default btn-file">
<span class="glyphicon glyphicon-file"></span> <em>$T('Glitter-chooseFile')&hellip;</em>
<input type="file" multiple name="nzbFile" class="form-control" accept=".nzb,.rar,.zip,.gz,.bz2" data-bind="event : { change: updateBrowseLabel }" />
<input type="file" multiple name="nzbFile" class="form-control" accept="$file_exts" data-bind="event : { change: updateBrowseLabel }" />
</label>
<span class="input-group-btn">
@@ -569,10 +571,10 @@
<input type="hidden" name="retry_job_id" />
<fieldset>
<legend>$T('opt-extra-NZB')</legend>
<div class="input-group input-group-addfile" data-tooltip="true" data-placement="bottom" title="$T('Glitter-nzbFormats')">
<div class="input-group input-group-addfile" data-tooltip="true" data-placement="bottom" title="$file_exts">
<label class="btn btn-default btn-file">
<span class="glyphicon glyphicon-file"></span> <em>$T('Glitter-chooseFile')&hellip;</em>
<input type="file" name="nzbFile" class="form-control" accept=".nzb,.rar,.zip,.gz,.bz2" data-bind="event : { change: updateBrowseLabel }" />
<input type="file" name="nzbFile" class="form-control" accept="$file_exts" data-bind="event : { change: updateBrowseLabel }" />
</label>
</div>
</fieldset>

View File

@@ -35,6 +35,6 @@
<!--#else if float($mbleft) < 0.1#-->
SABnzbd
<!--#else#-->
<!--#if float($kbpersec) > 1023 #-->$speed<!--#else#--><!--#echo "%.0f" % float($kbpersec)#--> K<!--#end if#-->B/s - $sizeleft $T('Glitter-left') - SABnzbd
${speed}B/s - $sizeleft $T('Glitter-left') - SABnzbd
<!--#end if#-->
|||<!--#echo "%.0f" % float($kbpersec)#-->

View File

@@ -96,7 +96,7 @@ function ViewModel() {
// Dynamic speed text function
self.speedText = ko.pureComputed(function() {
return self.speed() + ' ' + (self.speedMetrics[self.speedMetric()] ? self.speedMetrics[self.speedMetric()] : "KB/s");
return self.speed() + ' ' + (self.speedMetrics[self.speedMetric()] ? self.speedMetrics[self.speedMetric()] : "B/s");
});
// Dynamic icon
@@ -852,6 +852,12 @@ function ViewModel() {
// Download a test-NZB
self.testDownload = function(data, event) {
var nzbSize = $(event.target).data('size')
// Maybe it was a click on the icon?
if(nzbSize == undefined) {
nzbSize = $(event.target.parentElement).data('size')
}
// Build request
var theCall = {
mode: "addurl",

View File

Binary file not shown.

View File

@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2018-12-24 11:01+0000\n"
"PO-Revision-Date: 2017-08-01 16:45+0000\n"
"Last-Translator: ION IL <Unknown>\n"
"PO-Revision-Date: 2019-01-21 15:26+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Hebrew <he@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2018-12-25 04:47+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-01-22 04:49+0000\n"
"X-Generator: Launchpad (build 18856)\n"
#: email/email.tmpl:1
msgid ""
@@ -91,9 +91,9 @@ msgstr ""
"הורדו $size\n"
"\n"
":תוצאות העבודה\n"
"<!--#for $stage ב $stages #-->\n"
"<!--#for $stage in $stages #-->\n"
"שלב $stage <!--#slurp#-->\n"
"<!--#for $result ב $stages[$stage]#-->\n"
"<!--#for $result in $stages[$stage]#-->\n"
" $result <!--#slurp#-->\n"
"<!--#end for#-->\n"
"<!--#end for#-->\n"

View File

@@ -5,14 +5,14 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-2.4.0-develop\n"
"Project-Id-Version: SABnzbd-2.3.8\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"
"POT-Creation-Date: 2019-01-04 12:49+W. Europe Standard Time\n"
"POT-Creation-Date: 2019-05-07 09:00+W. Europe Daylight Time\n"
"Generated-By: pygettext.py 1.5\n"
@@ -412,10 +412,6 @@ msgstr ""
msgid "Unpacked %s files/folders in %s"
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3275,19 +3271,19 @@ msgid "Comma separated list"
msgstr ""
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
@@ -4154,10 +4150,6 @@ msgstr ""
msgid "Optionally specify a filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr ""
#: sabnzbd/skintext.py
msgid "Submit"
msgstr ""

View File

@@ -6,15 +6,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"PO-Revision-Date: 2018-11-28 04:21+0000\n"
"Last-Translator: scootergrisen <scootergrisen@gmail.com>\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2019-01-26 09:26+0000\n"
"Last-Translator: B.E. <Unknown>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:41+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:48+0000\n"
"X-Generator: Launchpad (build 18958)\n"
"Language: da\n"
#: SABnzbd.py [Error message]
@@ -441,10 +441,6 @@ msgstr "Færdig"
msgid "Unpacked %s files/folders in %s"
msgstr "Udpakket %s filer/mapper i %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -889,11 +885,11 @@ msgstr "FEJL: CRC mislykkedes i \"%s\""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, file too large for filesystem (FAT?)"
msgstr ""
msgstr "Udpakningen fejlede, da filen er for stor til filsystemet (FAT?)"
#: sabnzbd/newsunpack.py [Error message]
msgid "ERROR: File too large for filesystem (%s)"
msgstr ""
msgstr "FEJL: Fil for stor til filsystem (%s)"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, write error or disk is full?"
@@ -994,6 +990,8 @@ msgstr "[%s] Bekræftelse i %s, kræver reparation"
msgid ""
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
msgstr ""
"Invalide par2 filer eller invalide PAR2 parametre, kan ikke bekræfte eller "
"reparere"
#: sabnzbd/newsunpack.py
msgid "Fetching %s blocks..."
@@ -1029,7 +1027,7 @@ msgstr "Bekræfter"
#: sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
msgstr "Tjekker ekstra filer"
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
msgid "Checking"
@@ -1837,11 +1835,11 @@ msgstr "Deaktivere kvota styring"
#: sabnzbd/skintext.py [Config->Scheduler]
msgid "Pause jobs with category"
msgstr ""
msgstr "Pause jobs med kategori"
#: sabnzbd/skintext.py [Config->Scheduler]
msgid "Resume jobs with category"
msgstr ""
msgstr "Genoptag jobs med kategori"
#: sabnzbd/skintext.py [Prowl priority] # sabnzbd/skintext.py [Three way switch for duplicates]
msgid "Off"
@@ -2539,7 +2537,7 @@ msgstr "Gentagelse test"
#: sabnzbd/skintext.py
msgid "Test download"
msgstr ""
msgstr "Test overførsel"
#: sabnzbd/skintext.py
msgid ""
@@ -2825,19 +2823,19 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Keep all jobs"
msgstr ""
msgstr "Behold alle jobs"
#: sabnzbd/skintext.py
msgid "Keep maximum number of completed jobs"
msgstr ""
msgstr "Behold maximal antal af gennemførte jobs"
#: sabnzbd/skintext.py
msgid "Keep completed jobs maximum number of days"
msgstr ""
msgstr "Behold gennemførte jobs maximal antal af dage"
#: sabnzbd/skintext.py
msgid "Do not keep any completed jobs"
msgstr ""
msgstr "Behold ikke gennemførte jobs"
#: sabnzbd/skintext.py
msgid "Jobs"
@@ -3179,7 +3177,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Allow proper releases"
msgstr ""
msgstr "Tillad reelle udgivelser"
#: sabnzbd/skintext.py
msgid ""
@@ -3197,7 +3195,7 @@ msgstr "Mislykkes job (flyt til historik)"
#: sabnzbd/skintext.py [Four way switch for duplicates]
msgid "Tag job"
msgstr ""
msgstr "Marker job"
#: sabnzbd/skintext.py [Three way switch for encrypted posts]
msgid "Abort"
@@ -3251,7 +3249,7 @@ msgstr "Nogle servere levere en alternativ NZB når et download mislykkes."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
msgstr "Brug mærker fra indexer"
#: sabnzbd/skintext.py
msgid ""
@@ -3293,7 +3291,7 @@ msgstr "IONice parametre"
#: sabnzbd/skintext.py
msgid "External process priority"
msgstr ""
msgstr "Ekstern proces prioritet"
#: sabnzbd/skintext.py
msgid "Disconnect on Empty Queue"
@@ -3539,20 +3537,20 @@ msgid "Comma separated list"
msgstr "Kommasepareret liste"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Server belastningsjustering"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Forhindre belastningsjustering"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Tillad belastningsjustering"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Giver mulighed for belastningsjustering med optimering for IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4099,7 +4097,7 @@ msgstr "S01E05 Episodemappe"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
msgstr "Job Navn som Filnavn"
#: sabnzbd/skintext.py
msgid "Title"
@@ -4171,7 +4169,7 @@ msgstr "Originalfilnavn"
#: sabnzbd/skintext.py
msgid "Original Job Name"
msgstr ""
msgstr "Oprindelig Job Navn"
#: sabnzbd/skintext.py
msgid "Lower Case"
@@ -4449,10 +4447,6 @@ msgstr "Upload NZB"
msgid "Optionally specify a filename"
msgstr "Angiv et valgfrit filnavn"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formater: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Tilføj"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-05-31 06:22+0000\n"
"Last-Translator: scope <Unknown>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:41+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -457,10 +457,6 @@ msgstr "Fertiggestellt"
msgid "Unpacked %s files/folders in %s"
msgstr "%s Datei(en)/Ordner entpackt in %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr "Direkt entpacken wurde automatisch aktiviert"
@@ -3646,20 +3642,20 @@ msgid "Comma separated list"
msgstr "Durch Komma getrennte Liste"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Server Lastverteilung"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Lastverteilung verhindern"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Lastverteilung zulassen"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Lastverteilung mit IPv6-Optimierung zulassen"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4562,10 +4558,6 @@ msgstr "NZB hochladen"
msgid "Optionally specify a filename"
msgstr "Wahlweise einen Dateinamen angeben:"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formate: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Senden"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -439,10 +439,6 @@ msgstr "Completado"
msgid "Unpacked %s files/folders in %s"
msgstr "Descompresos %s archivos/directorios en %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3558,20 +3554,20 @@ msgid "Comma separated list"
msgstr "Lista separada por comas"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Balanceo de carga del servidor"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Evitar el balanceo de carga"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Permitir balanceo de carga"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Permitir balanceo de carga con optimización para IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4467,10 +4463,6 @@ msgstr "Subir NZB"
msgid "Optionally specify a filename"
msgstr "Opcionalmente especificar un nombre de fichero"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formatos: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Enviar"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:19+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Finnish <fi@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:41+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -438,10 +438,6 @@ msgstr "Valmistunut"
msgid "Unpacked %s files/folders in %s"
msgstr "Purettiin %s tiedostoa/kansiota kohteeseen %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3547,20 +3543,20 @@ msgid "Comma separated list"
msgstr "Pilkulla erotettu lista"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Palvelimen kuormantasaus"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Estä kuormantasaus"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Salli kuormantasaus"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Salli kuormantasaus IPv6 optimoinnille"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4459,10 +4455,6 @@ msgstr "Lähetä NZB"
msgid "Optionally specify a filename"
msgstr "Vaihtoehtoisesti anna tiedostonimi"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Tiedostomuodot: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Lähetä"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"PO-Revision-Date: 2019-01-05 12:50+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2019-05-14 00:00+0000\n"
"Last-Translator: Fred <88com88@gmail.com>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-06 04:48+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-15 04:49+0000\n"
"X-Generator: Launchpad (build 18962)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -459,10 +459,6 @@ msgstr "Terminé"
msgid "Unpacked %s files/folders in %s"
msgstr "%s fichier(s)/dossier(s) extrait(s) en %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr "Impossible d'arrêter le processus unrar."
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr "La Décompression Directe a été activée automatiquement."
@@ -3654,20 +3650,20 @@ msgid "Comma separated list"
msgstr "Liste séparée par des virgules"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Equilibrage de charge du serveur"
msgid "Server IP address selection"
msgstr "Sélection de l'adresse IP du serveur"
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Empêcher l'équilibrage de charge"
msgid "First IP address"
msgstr "Première adresse IP"
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Autoriser l'équilibrage de charge"
msgid "Randomly selected IP address"
msgstr "Adresse IP sélectionnée au hasard"
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Autoriser l'équilibrage de charge avec l'optimisation pour IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr "Adresse IP la plus rapide, IPv6 de préférence"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4576,10 +4572,6 @@ msgstr "Uploader le NZB"
msgid "Optionally specify a filename"
msgstr "Vous pouvez également indiquer un nom de fichier"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formats : .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Soumettre"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"PO-Revision-Date: 2019-01-05 10:03+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2019-05-07 23:12+0000\n"
"Last-Translator: ION IL <Unknown>\n"
"Language-Team: Hebrew <he@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-06 04:48+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -432,10 +432,6 @@ msgstr "הושלם"
msgid "Unpacked %s files/folders in %s"
msgstr "פורקו %s קבצים/תיקיות תוך %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr "לא היה ניתן לעצור את תהליך החילוץ"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ".פריקה ישירה אופשרה באופן אוטומטי"
@@ -1129,7 +1125,7 @@ msgstr "התגלה קובץ פגום ,%s שגיאה בטעינת"
#: sabnzbd/nzbqueue.py [Error message]
msgid "Failed to restart NZB after pre-check (%s)"
msgstr "(%s) לאחר קדם-בדיקה NZB נכשל בהפעלה מחדש של"
msgstr "(%s) לאחר קדם־בדיקה NZB נכשל בהפעלה מחדש של"
#: sabnzbd/nzbqueue.py
msgid "NZB added to queue"
@@ -1161,7 +1157,7 @@ msgstr "%s ריק NZB קובץ"
#: sabnzbd/nzbstuff.py
msgid "Pre-queue script marked job as failed"
msgstr "תסריט קדם-תור סומן כנכשל"
msgstr "תסריט קדם־תור סומן כנכשל"
#: sabnzbd/nzbstuff.py [Warning message]
msgid "Ignoring duplicate NZB \"%s\""
@@ -3255,7 +3251,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Pre-queue user script"
msgstr "תסריט משתמש של קדם-תור"
msgstr "תסריט משתמש של קדם־תור"
#: sabnzbd/skintext.py
msgid "Used before an NZB enters the queue."
@@ -3518,20 +3514,20 @@ msgid "Comma separated list"
msgstr "רשימה מופרדת בפסיקים"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "איזון-עומס של שרת"
msgid "Server IP address selection"
msgstr "של שרת IP בחירת כתובת"
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "מנע איזון-עומס"
msgid "First IP address"
msgstr "ראשונה IP כתובת"
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "התר איזון-עומס"
msgid "Randomly selected IP address"
msgstr "נבחרת באופן אקראי IP כתובת"
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "IPv6 התר איזון-עומס עם ייעול עבור"
msgid "Quickest IP address, preferring IPv6"
msgstr "IPv6 הזריזה ביותר, העדפה אל IP כתובת"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4024,7 +4020,7 @@ msgstr "החל מסננים"
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "קדם-קביעות"
msgstr "קדם־קביעות"
#: sabnzbd/skintext.py
msgid "Example"
@@ -4425,10 +4421,6 @@ msgstr "NZB העלה"
msgid "Optionally specify a filename"
msgstr "ציין באופן רשותי שם קובץ"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr ".nzb, .rar, .zip, .gz, .bz2 :תסדירים"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "הגש"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:41+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -434,10 +434,6 @@ msgstr "Ferdig"
msgid "Unpacked %s files/folders in %s"
msgstr "Utpakket %s filer/mapper på %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3512,20 +3508,20 @@ msgid "Comma separated list"
msgstr "Kommaseparert liste"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Serverlastbalansering"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Forhindre lastbalansering"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Tillat lastbalansering"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Tillat lastbalansering med optimalisering for IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4418,10 +4414,6 @@ msgstr "Last opp NZB"
msgid "Optionally specify a filename"
msgstr "Valgfritt spesifiser filnavn"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formater: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Send"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"PO-Revision-Date: 2019-01-10 08:23+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2019-05-15 19:07+0000\n"
"Last-Translator: Dennis Versteegen <Unknown>\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: 2019-01-11 05:42+0000\n"
"X-Generator: Launchpad (build 18855)\n"
"X-Launchpad-Export-Date: 2019-05-16 05:47+0000\n"
"X-Generator: Launchpad (build 18962)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -452,10 +452,6 @@ msgstr "Voltooid"
msgid "Unpacked %s files/folders in %s"
msgstr "%s bestanden/mappen uitgepakt in %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr "Het was niet mogelijk het unrar process te stoppen."
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr "Direct Uitpakken is automatisch ingeschakeld."
@@ -3601,20 +3597,20 @@ msgid "Comma separated list"
msgstr "Door komma's gescheiden lijst"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Balanceren van server belasting"
msgid "Server IP address selection"
msgstr "Server IP adres selectie"
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Schakel balancering uit"
msgid "First IP address"
msgstr "Eerste IP adres"
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Schakel balancering in"
msgid "Randomly selected IP address"
msgstr "willekeurig geselecteerd IP adres"
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Schakel balancering met optimalisatie voor IPv6 in"
msgid "Quickest IP address, preferring IPv6"
msgstr "Snelste IP adres, voorkeur voor IPv6"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4520,10 +4516,6 @@ msgstr "NZB uploaden"
msgid "Optionally specify a filename"
msgstr "Geef eventueel een andere naam"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formaten: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Verstuur"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -434,10 +434,6 @@ msgstr "Ukończone"
msgid "Unpacked %s files/folders in %s"
msgstr "Rozpakowano %s plików/katalogów w %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3529,20 +3525,20 @@ msgid "Comma separated list"
msgstr "Lista wartości oddzielonych przecinkami"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Równoważenie obciążenia serwerów"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Zapobiegaj równoważeniu obciążenia"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Zezwól na równoważenie obciążenia"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Zezwól na równoważenie obciążenia, preferując IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4435,10 +4431,6 @@ msgstr "Wczytaj NZB"
msgid "Optionally specify a filename"
msgstr "Opcjonalnie podaj nazwę pliku"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formaty: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Wyślij"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:16+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:50+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -436,10 +436,6 @@ msgstr "Concluído"
msgid "Unpacked %s files/folders in %s"
msgstr "Descompactados %s arquivos/pastas em %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3527,20 +3523,20 @@ msgid "Comma separated list"
msgstr "Lista separada por vírgulas"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Balanceamento de carga do servidor"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Prevenir balanceamento de carga"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Permitir balanceamento de carga"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Permitir balanceamento de carga com optimização para IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4434,10 +4430,6 @@ msgstr "Enviar NZB"
msgid "Optionally specify a filename"
msgstr "Opcionalmente, especifique um nome de arquivo"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formatos: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Enviar"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\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: 2019-01-05 05:42+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -438,10 +438,6 @@ msgstr "Finalizat"
msgid "Unpacked %s files/folders in %s"
msgstr "Dezarhivat %s fişierele/dosarele în %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3529,20 +3525,20 @@ msgid "Comma separated list"
msgstr "Listă separată prin virgulă"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Server de load-balancing"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Previne load-balancing"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Permite load-balancing"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Permite load-balancing cu o optimizare pentru IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4434,10 +4430,6 @@ msgstr "Încarcă NZB"
msgid "Optionally specify a filename"
msgstr "Opţional specifică un nume de fişier"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formate: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Trimite"

View File

@@ -2,15 +2,15 @@ msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-0.7.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
"Last-Translator: Pavel Maryanov <Unknown>\n"
"Language-Team: Russian <gmu@mx.ru>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
"Generated-By: pygettext.py 1.5\n"
#: SABnzbd.py [Error message]
@@ -427,10 +427,6 @@ msgstr "Завершено"
msgid "Unpacked %s files/folders in %s"
msgstr "Распаковка %s файлов или папок в %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3504,19 +3500,19 @@ msgid "Comma separated list"
msgstr ""
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
@@ -4415,10 +4411,6 @@ msgstr ""
msgid "Optionally specify a filename"
msgstr "Имя файла (необязательно)"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr ""
#: sabnzbd/skintext.py
msgid "Submit"
msgstr ""

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: ОZZII <ozzii.translate@gmail.com>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:18+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Serbian <sr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -431,10 +431,6 @@ msgstr "Завршено"
msgid "Unpacked %s files/folders in %s"
msgstr "Издвојено %s датотека/фасцикла у %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3498,20 +3494,20 @@ msgid "Comma separated list"
msgstr "Lista razdvojena zarezom"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Balansiranje opterećenja servera"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Onemogući balansiranje opterećenja"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Omogući balansiranje opterećenja"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Omogući balansiranje opterećenja sa optimizacijom za IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4402,10 +4398,6 @@ msgstr "Pošalji NZB"
msgid "Optionally specify a filename"
msgstr "Опционо специфирати име"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Formati: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Пошаљи"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2018-02-14 14:19+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\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: 2019-01-05 05:42+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:49+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -432,10 +432,6 @@ msgstr "Färdig"
msgid "Unpacked %s files/folders in %s"
msgstr "Uppackad %s filer/mappar i %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3512,20 +3508,20 @@ msgid "Comma separated list"
msgstr "Kommaseparerad lista"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "Serverbelastad-balansering"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "Undvik belastningsbalansering"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "Tillåt belastningsbalansering"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "Tillåt bellastningsbalansering med optimering för IPv6"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4416,10 +4412,6 @@ msgstr "Ladda upp NZB"
msgid "Optionally specify a filename"
msgstr "Alternativt ange ett filnamn"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "Format: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "Skicka"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2019-01-04 12:42+0000\n"
"POT-Creation-Date: 2019-05-07 12:00+0000\n"
"PO-Revision-Date: 2017-06-22 07:06+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2019-01-05 05:42+0000\n"
"X-Generator: Launchpad (build 18847)\n"
"X-Launchpad-Export-Date: 2019-05-08 05:50+0000\n"
"X-Generator: Launchpad (build 18958)\n"
#: SABnzbd.py [Error message]
msgid "Failed to start web-interface"
@@ -426,10 +426,6 @@ msgstr "完成"
msgid "Unpacked %s files/folders in %s"
msgstr "已解压 %s 个文件/文件夹,耗时 %s"
#: sabnzbd/directunpacker.py [Warning message]
msgid "Unable to stop the unrar process."
msgstr ""
#: sabnzbd/directunpacker.py [Warning message]
msgid "Direct Unpack was automatically enabled."
msgstr ""
@@ -3441,20 +3437,20 @@ msgid "Comma separated list"
msgstr "逗号分隔的列表"
#: sabnzbd/skintext.py
msgid "Server load-balancing"
msgstr "服务器负载均衡"
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "Prevent load-balancing"
msgstr "避免负载均衡"
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing"
msgstr "允许负载均衡"
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Allow load-balancing with optimization for IPv6"
msgstr "允许负载均衡,并对 IPv6 优化"
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
@@ -4342,10 +4338,6 @@ msgstr "上传 NZB"
msgid "Optionally specify a filename"
msgstr "可以选择指定文件名"
#: sabnzbd/skintext.py
msgid "Formats: .nzb, .rar, .zip, .gz, .bz2"
msgstr "格式: .nzb, .rar, .zip, .gz, .bz2"
#: sabnzbd/skintext.py
msgid "Submit"
msgstr "提交"

View File

@@ -1406,7 +1406,7 @@ def fast_queue():
""" Return paused, bytes_left, bpsnow, time_left """
bytes_left = NzbQueue.do.remaining()
paused = Downloader.do.paused
bpsnow = BPSMeter.do.get_bps()
bpsnow = BPSMeter.do.bps
time_left = calc_timeleft(bytes_left, bpsnow)
return paused, bytes_left, bpsnow, time_left
@@ -1468,9 +1468,9 @@ def rss_qstatus():
item = Item()
item.title = 'Total ETA: %s - Queued: %.2f MB - Speed: %.2f kB/s' % \
(
calc_timeleft(qnfo.bytes_left, BPSMeter.do.get_bps()),
calc_timeleft(qnfo.bytes_left, BPSMeter.do.bps),
qnfo.bytes_left / MEBI,
BPSMeter.do.get_bps() / KIBI
BPSMeter.do.bps / KIBI
)
rss.addItem(item)
@@ -1501,7 +1501,7 @@ def rss_qstatus():
status_line.append('<dt>Remain/Total: %.2f/%.2f MB</dt>' % (bytesleft, bytes))
# ETA
sum_bytesleft += pnfo.bytes_left
status_line.append("<dt>ETA: %s </dt>" % calc_timeleft(sum_bytesleft, BPSMeter.do.get_bps()))
status_line.append("<dt>ETA: %s </dt>" % calc_timeleft(sum_bytesleft, BPSMeter.do.bps))
status_line.append("<dt>Age: %s</dt>" % calc_age(pnfo.avg_date))
status_line.append("</tr>")
item.description = ''.join(status_line)
@@ -1695,7 +1695,7 @@ def build_queue_header(search=None, start=0, limit=0, output=None):
header = build_header(output=output)
bytespersec = BPSMeter.do.get_bps()
bytespersec = BPSMeter.do.bps
qnfo = NzbQueue.do.queue_info(search=search, start=start, limit=limit)
bytesleft = qnfo.bytes_left

View File

@@ -320,9 +320,6 @@ class BPSMeter(object):
del self.timeline_total[server]
self.save()
def get_bps(self):
return self.bps
def get_bps_list(self):
refresh_rate = int(cfg.refresh_rate()) if cfg.refresh_rate() else 1
self.add_empty_time()

View File

@@ -36,7 +36,7 @@ import threading
import sabnzbd
import sabnzbd.cfg
from sabnzbd.constants import DB_HISTORY_NAME, STAGES
from sabnzbd.constants import DB_HISTORY_NAME, STAGES, Status
from sabnzbd.encoding import unicoder
from sabnzbd.bpsmeter import this_week, this_month
from sabnzbd.decorators import synchronized
@@ -259,11 +259,11 @@ class HistoryDB(object):
to_keep = int_conv(sabnzbd.cfg.history_retention())
if to_keep > 0:
logging.info('Removing all but last %s completed jobs from history', to_keep)
return self.execute("""DELETE FROM history WHERE id NOT IN ( SELECT id FROM history WHERE status = 'Completed' ORDER BY completed DESC LIMIT ? )""", (to_keep,), save=True)
return self.execute("""DELETE FROM history WHERE status = ? AND id NOT IN ( SELECT id FROM history WHERE status = ? ORDER BY completed DESC LIMIT ? )""", (Status.COMPLETED, Status.COMPLETED, to_keep), save=True)
def add_history_db(self, nzo, storage, path, postproc_time, script_output, script_line):
""" Add a new job entry to the database """
t = build_history_info(nzo, storage, path, postproc_time, script_output, script_line)
t = build_history_info(nzo, storage, path, postproc_time, script_output, script_line, series_info=True)
self.execute("""INSERT INTO history (completed, name, nzb_name, category, pp, script, report,
url, status, nzo_id, storage, path, script_log, script_line, download_time, postproc_time, stage_log,
@@ -319,7 +319,6 @@ class HistoryDB(object):
def have_episode(self, series, season, episode):
""" Check whether History contains this series episode """
total = 0
series = series.lower().replace('.', ' ').replace('_', ' ').replace(' ', ' ')
if series and season and episode:
pattern = '%s/%s/%s' % (series, season, episode)
res = self.execute("select count(*) from History WHERE series = ? AND STATUS != 'Failed'", (pattern,))
@@ -330,10 +329,11 @@ class HistoryDB(object):
pass
return total > 0
def have_md5sum(self, md5sum):
""" Check whether this md5sum already in History """
def have_name_or_md5sum(self, name, md5sum):
""" Check whether this name or md5sum is already in History """
total = 0
res = self.execute("select count(*) from History WHERE md5sum = ? AND STATUS != 'Failed'", (md5sum,))
# Do the check case-insensitive
res = self.execute("SELECT count(*) FROM History WHERE ( LOWER(name) = LOWER(?) OR md5sum = ? ) AND STATUS != 'Failed'", (name, md5sum))
if res:
try:
total = self.c.fetchone().get('count(*)')
@@ -438,7 +438,7 @@ def dict_factory(cursor, row):
_PP_LOOKUP = {0: '', 1: 'R', 2: 'U', 3: 'D'}
def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_output='', script_line=''):
def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_output='', script_line='', series_info=False):
""" Collects all the information needed for the database """
if not downpath:
@@ -491,7 +491,7 @@ def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_out
# Analyze series info only when job is finished
series = u''
if postproc_time:
if series_info:
seriesname, season, episode, dummy = sabnzbd.newsunpack.analyse_show(nzo.final_name)
if seriesname and season and episode:
series = u'%s/%s/%s' % (seriesname.lower(), season, episode)

View File

@@ -175,7 +175,8 @@ class Decoder(Thread):
if nzo.precheck:
if found and not killed:
# Pre-check, proper article found, just register
logging.debug('Server %s has article %s', article.fetcher, art_id)
if sabnzbd.LOG_ALL:
logging.debug('Server %s has article %s', article.fetcher, art_id)
register = True
elif not killed and not found:
logme = T('Badly formed yEnc article in %s') % art_id

View File

@@ -51,7 +51,6 @@ from subprocess import Popen
# Otherwise we could stop while the thread was still starting
START_STOP_LOCK = threading.RLock()
MAX_ACTIVE_UNPACKERS = 10
ACTIVE_UNPACKERS = []
RAR_NR = re.compile(r'(.*?)(\.part(\d*).rar|\.r(\d*))$', re.IGNORECASE)
@@ -77,6 +76,8 @@ class DirectUnpacker(threading.Thread):
self.success_sets = {}
self.next_sets = []
self.duplicate_lines = 0
nzo.direct_unpacker = self
def stop(self):
@@ -176,10 +177,10 @@ class DirectUnpacker(threading.Thread):
break
# Error? Let PP-handle it
if linebuf.endswith(('ERROR: ', 'Cannot create', 'in the encrypted file', 'CRC failed',
'checksum failed', 'You need to start extraction from a previous volume',
'password is incorrect', 'Write error', 'checksum error',
'start extraction from a previous volume')):
if linebuf.endswith(('ERROR: ', 'Cannot create', 'in the encrypted file', 'CRC failed', 'checksum failed',
'You need to start extraction from a previous volume', 'password is incorrect',
'Write error', 'checksum error', 'start extraction from a previous volume'
'Unexpected end of archive')):
logging.info('Error in DirectUnpack of %s: %s', self.cur_setname, linebuf.strip())
self.abort()
@@ -271,13 +272,16 @@ class DirectUnpacker(threading.Thread):
logging.info('DirectUnpacked volume %s for %s', self.cur_volume, self.cur_setname)
# If lines did not change and we don't have the next volume, this download is missing files!
# In rare occasions we can get stuck forever with repeating lines
if last_volume_linebuf == linebuf:
if not self.have_next_volume():
if not self.have_next_volume() or self.duplicate_lines > 10:
logging.info('DirectUnpack failed due to missing files %s', self.cur_setname)
self.abort()
else:
logging.debug('Duplicate output line detected: "%s"', last_volume_linebuf)
self.duplicate_lines += 1
else:
self.duplicate_lines = 0
last_volume_linebuf = linebuf
# Show the log
@@ -398,20 +402,12 @@ class DirectUnpacker(threading.Thread):
pass
# Now force kill and give it a bit of time
self.active_instance.kill()
time.sleep(0.2)
# Have to collect the return-code to avoid zombie
# But it will block forever if the process is in special state.
# That should never happen, but it can happen on broken unrar's
if self.active_instance.poll():
self.active_instance.communicate()
else:
# It is still running?!? This should never happen
# Wait a little bit longer just to be sure..
time.sleep(2.0)
if not self.active_instance.poll():
logging.warning(T('Unable to stop the unrar process.'))
try:
self.active_instance.kill()
time.sleep(0.2)
except AttributeError:
# Already killed by the Quit command
pass
# Wake up the thread
with self.next_file_lock:

View File

@@ -600,17 +600,17 @@ class Downloader(Thread):
else:
if self.bandwidth_limit:
bps = BPSMeter.do.get_bps()
bps = BPSMeter.do.bps
bps += bytes
limit = self.bandwidth_limit
if bps > limit:
while BPSMeter.do.get_bps() > limit:
while BPSMeter.do.bps > limit:
time.sleep(0.05)
BPSMeter.do.update()
BPSMeter.do.update(server.id, bytes)
if nzo:
nzo.update_download_stats(BPSMeter.do.get_bps(), server.id, bytes)
nzo.update_download_stats(BPSMeter.do.bps, server.id, bytes)
if not done and nw.status_code != '222':
if not nw.connected or nw.status_code == '480':
@@ -903,7 +903,10 @@ class Downloader(Thread):
self.init_server(server.id, server.id)
def update_server(self, oldserver, newserver):
""" Update the server and make sure we trigger
the update in the loop to do housekeeping """
self.init_server(oldserver, newserver)
self.wakeup()
@NzbQueueLocker
def wakeup(self):

View File

@@ -2591,7 +2591,7 @@ def GetRssLog(feed):
LIST_EMAIL = (
'email_endjob', 'email_cats', 'email_full',
'email_server', 'email_to', 'email_from',
'email_account', 'email_pwd', 'email_dir', 'email_rss'
'email_account', 'email_pwd', 'email_rss'
)
LIST_GROWL = ('growl_enable', 'growl_cats', 'growl_server', 'growl_password',
'growl_prio_startup', 'growl_prio_download', 'growl_prio_pp', 'growl_prio_complete', 'growl_prio_failed',

View File

@@ -158,6 +158,7 @@ def cat_to_opts(cat, pp=None, script=None, priority=None):
try:
my_cat = config.get_categories()[cat]
except KeyError:
cat = '*'
my_cat = def_cat
if pp is None:
@@ -280,13 +281,10 @@ def has_win_device(p):
return False
if sabnzbd.WIN32:
# the colon should be here too, but we'll handle that separately
CH_ILLEGAL = '\/<>?*|"\t'
CH_LEGAL = '++{}!@#`+'
else:
CH_ILLEGAL = '/'
CH_LEGAL = '+'
CH_ILLEGAL = '/'
CH_LEGAL = '+'
CH_ILLEGAL_WIN = '\/<>?*|"\t:'
CH_LEGAL_WIN = '++{}!@#`+;'
def sanitize_filename(name):
@@ -295,9 +293,15 @@ def sanitize_filename(name):
"""
if not name:
return name
illegal = CH_ILLEGAL
legal = CH_LEGAL
if sabnzbd.WIN32 or cfg.sanitize_safe():
# Remove all bad Windows chars too
illegal += CH_ILLEGAL_WIN
legal += CH_LEGAL_WIN
if ':' in name:
if sabnzbd.WIN32:
# Compensate for the odd way par2 on Windows substitutes a colon character
@@ -306,9 +310,6 @@ def sanitize_filename(name):
# Compensate for the foolish way par2 on OSX handles a colon character
name = name[name.rfind(':') + 1:]
if sabnzbd.WIN32 or cfg.sanitize_safe():
name = replace_win_devices(name)
lst = []
for ch in name.strip():
if ch in illegal:
@@ -316,6 +317,9 @@ def sanitize_filename(name):
lst.append(ch)
name = ''.join(lst)
if sabnzbd.WIN32 or cfg.sanitize_safe():
name = replace_win_devices(name)
if not name:
name = 'unknown'
@@ -345,10 +349,10 @@ def sanitize_foldername(name, limit=True):
illegal = FL_ILLEGAL
legal = FL_LEGAL
if cfg.sanitize_safe():
if sabnzbd.WIN32 or cfg.sanitize_safe():
# Remove all bad Windows chars too
illegal += r'\/<>?*|":'
legal += r'++{}!@#`;'
illegal += CH_ILLEGAL_WIN
legal += CH_LEGAL_WIN
repl = cfg.replace_illegal()
lst = []

View File

@@ -33,7 +33,7 @@ from sabnzbd.encoding import TRANS, unicoder, platform_encode, deunicode
import sabnzbd.utils.rarfile as rarfile
from sabnzbd.misc import format_time_string, find_on_path, make_script_path, int_conv, \
real_path, globber, globber_full, get_all_passwords, renamer, clip_path, calc_age, \
long_path, remove_file, recursive_listdir, is_rarfile
long_path, remove_file, recursive_listdir, is_rarfile, get_filename
from sabnzbd.sorting import SeriesSorter
import sabnzbd.cfg as cfg
from sabnzbd.constants import Status
@@ -759,7 +759,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
# unrar 3.x: "Encrypted file: CRC failed in oLKQfrcNVivzdzSG22a2xo7t001.part1.rar (password incorrect ?)"
# unrar 4.x: "CRC failed in the encrypted file oLKQfrcNVivzdzSG22a2xo7t001.part1.rar. Corrupt file or wrong password."
# unrar 5.x: "Checksum error in the encrypted file oLKQfrcNVivzdzSG22a2xo7t001.part1.rar. Corrupt file or wrong password."
# unrar 5.01 : "The specified password is incorrect."
# unrar 5.01: "The specified password is incorrect."
m = re.search(r'encrypted file (.+)\. Corrupt file', line)
if not m:
# unrar 3.x syntax
@@ -767,7 +767,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
if m:
filename = TRANS(m.group(1)).strip()
else:
filename = os.path.split(rarfile_path)[1]
filename = get_filename(rarfile_path)
nzo.fail_msg = T('Unpacking failed, archive requires a password')
msg = (u'[%s][%s] ' + T('Unpacking failed, archive requires a password')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg))
@@ -779,20 +779,20 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
if m:
filename = TRANS(m.group(1)).strip()
else:
filename = '???'
filename = get_filename(rarfile_path)
nzo.fail_msg = T('Unusable RAR file')
msg = ('[%s][%s] ' + T('Unusable RAR file')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg))
fail = 3
elif 'checksum error' in line:
# Corrupt archive
elif 'checksum error' in line or 'Unexpected end of archive' in line:
# Corrupt archive or passworded, we can't know
# packed data checksum error in volume FILE
m = re.search(r'error in volume (.+)', line)
if m:
filename = TRANS(m.group(1)).strip()
else:
filename = '???'
filename = get_filename(rarfile_path)
nzo.fail_msg = T('Corrupt RAR file')
msg = ('[%s][%s] ' + T('Corrupt RAR file')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg))

View File

@@ -722,11 +722,13 @@ class NzbQueue(object):
""" Get next article for jobs in the queue
Not locked for performance, since it only reads the queue
"""
# Pre-calculate propagation delay
propagtion_delay = float(cfg.propagation_delay() * 60)
for nzo in self.__nzo_list:
# Not when queue paused and not a forced item
if nzo.status not in (Status.PAUSED, Status.GRABBING) or nzo.priority == TOP_PRIORITY:
# Check if past propagation delay, or forced
if not cfg.propagation_delay() or nzo.priority == TOP_PRIORITY or (nzo.avg_stamp + float(cfg.propagation_delay() * 60)) < time.time():
if not propagtion_delay or nzo.priority == TOP_PRIORITY or (nzo.avg_stamp + propagtion_delay) < time.time():
if not nzo.server_in_try_list(server):
article = nzo.get_article(server, servers)
if article:

View File

@@ -933,7 +933,6 @@ class NzbObject(TryList):
# Raise error, so it's not added
raise TypeError
@synchronized(NZO_LOCK)
def update_download_stats(self, bps, serverid, bytes):
if bps:
self.avg_bps_total += bps / 1024
@@ -1331,8 +1330,9 @@ class NzbObject(TryList):
dif = int(self.url_wait - time.time() + 0.5)
if dif > 0:
prefix += T('WAIT %s sec') % dif + ' / ' # : Queue indicator for waiting URL fetch
if (self.avg_stamp + float(cfg.propagation_delay() * 60)) > time.time() and self.priority != TOP_PRIORITY:
wait_time = int((self.avg_stamp + float(cfg.propagation_delay() * 60) - time.time()) / 60 + 0.5)
propagtion_delay = float(cfg.propagation_delay() * 60)
if propagtion_delay and (self.avg_stamp + propagtion_delay) > time.time() and self.priority != TOP_PRIORITY:
wait_time = int((self.avg_stamp + propagtion_delay - time.time()) / 60 + 0.5)
prefix += T('PROPAGATING %s min') % wait_time + ' / ' # : Queue indicator while waiting for propagation of post
return '%s%s' % (prefix, self.final_name)
@@ -1881,7 +1881,7 @@ class NzbObject(TryList):
# dupe check off nzb contents
if no_dupes:
res = history_db.have_md5sum(self.md5sum)
res = history_db.have_name_or_md5sum(self.final_name, self.md5sum)
logging.debug('Dupe checking NZB in history: filename=%s, md5sum=%s, result=%s', self.filename, self.md5sum, res)
if not res and cfg.backup_for_duplicates():
res = sabnzbd.backup_exists(self.filename)

View File

@@ -349,7 +349,6 @@ class SABnzbdDelegate(NSObject):
pnfo_list = qnfo.list
bytesleftprogess = 0
bpsnow = BPSMeter.do.get_bps()
self.info = ""
self.menu_queue = NSMenu.alloc().init()
@@ -366,7 +365,7 @@ class SABnzbdDelegate(NSObject):
bytesleftprogess += pnfo.bytes_left
bytes = pnfo.bytes / MEBI
nzo_id = pnfo.nzo_id
timeleft = self.calc_timeleft_(bytesleftprogess, bpsnow)
timeleft = self.calc_timeleft_(bytesleftprogess, BPSMeter.do.bps)
job = "%s\t(%d/%d MB) %s" % (filename, bytesleft, bytes, timeleft)
menu_queue_item = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(job, '', '')

View File

@@ -131,7 +131,6 @@ def parse_par2_file_packet(f, header):
nothing = None, None, None
if header != PAR_PKT_ID:
print header
return nothing
# Length must be multiple of 4 and at least 20

View File

@@ -910,17 +910,28 @@ def get_last_line(txt):
def remove_samples(path):
""" Remove all files that match the sample pattern """
""" Remove all files that match the sample pattern
Skip deleting if it matches all files or there is only 1 file
"""
files_to_delete = []
nr_files = 0
for root, _dirs, files in os.walk(path):
for file_ in files:
if RE_SAMPLE.search(file_):
path = os.path.join(root, file_)
try:
logging.info("Removing unwanted sample file %s", path)
remove_file(path)
except:
logging.error(T('Removing %s failed'), clip_path(path))
logging.info("Traceback: ", exc_info=True)
for file_to_match in files:
nr_files += 1
if RE_SAMPLE.search(file_to_match):
files_to_delete.append(os.path.join(root, file_to_match))
# Make sure we skip false-positives
if 1 < len(files_to_delete) < nr_files:
for path in files_to_delete:
try:
logging.info("Removing unwanted sample file %s", path)
remove_file(path)
except:
logging.error(T('Removing %s failed'), clip_path(path))
logging.info("Traceback: ", exc_info=True)
else:
logging.info("Skipping sample-removal, false-positive")
def rename_and_collapse_folder(oldpath, newpath, files):

View File

@@ -542,10 +542,10 @@ SKIN_TEXT = {
'opt-rating_filter_downvoted' : TT('More thumbs down than up'),
'opt-rating_filter_keywords' : TT('Title keywords'),
'explain-rating_filter_keywords' : TT('Comma separated list'),
'opt-load_balancing' : TT('Server load-balancing'),
'no-load-balancing' : TT('Prevent load-balancing'),
'load-balancing' : TT('Allow load-balancing'),
'load-balancing-happy-eyeballs' : TT('Allow load-balancing with optimization for IPv6'),
'opt-load_balancing' : TT('Server IP address selection'),
'no-load-balancing' : TT('First IP address'),
'load-balancing' : TT('Randomly selected IP address'),
'load-balancing-happy-eyeballs' : TT('Quickest IP address, preferring IPv6'),
'explain-load_balancing' : TT('Useful if a newsserver has more than one IPv4/IPv6 address'),
# Config->Server
@@ -829,7 +829,6 @@ SKIN_TEXT = {
'Glitter-addFromFile' : TT('Upload NZB'),
'Glitter-chooseFile' : TT('Browse'),
'Glitter-addnzbFilename' : TT('Optionally specify a filename'),
'Glitter-nzbFormats' : TT('Formats: .nzb, .rar, .zip, .gz, .bz2'),
'Glitter-submit' : TT('Submit'),
'Glitter-openInfoURL' : TT('Open Informational URL'),
'Glitter-sendThanks' : TT('Submitted. Thank you!'),

View File

@@ -377,7 +377,12 @@ class SeriesSorter(object):
else:
head = path
return os.path.normpath(head)
if head:
return os.path.normpath(head)
else:
# The normpath function translates "" to "."
# which results in wrong path.join later on
return head
def rename(self, files, current_path):
""" Rename for Series """
@@ -626,7 +631,12 @@ class MovieSorter(object):
else:
head = path
return os.path.normpath(head)
if head:
return os.path.normpath(head)
else:
# The normpath function translates "" to "."
# which results in wrong path.join later on
return head
def rename(self, _files, current_path):
""" Rename for Generic files """
@@ -848,7 +858,12 @@ class DateSorter(object):
else:
head = path
return os.path.normpath(head)
if head:
return os.path.normpath(head)
else:
# The normpath function translates "" to "."
# which results in wrong path.join later on
return head
def rename(self, files, current_path):
""" Renaming Date file """

View File

@@ -32,28 +32,33 @@ from sabnzbd.misc import int_conv
def test_nntp_server_dict(kwargs):
# Grab the host/port/user/pass/connections/ssl
host = kwargs.get('host', '').strip()
if not host:
return False, T('The hostname is not set.')
username = kwargs.get('username', '').strip()
password = kwargs.get('password', '').strip()
server = kwargs.get('server', '').strip()
connections = int_conv(kwargs.get('connections', 0))
if not connections:
return False, T('There are no connections set. Please set at least one connection.')
ssl = int_conv(kwargs.get('ssl', 0))
ssl_verify = int_conv(kwargs.get('ssl_verify', 1))
ssl_ciphers = kwargs.get('ssl_ciphers')
port = int_conv(kwargs.get('port', 0))
if not connections:
return False, T('There are no connections set. Please set at least one connection.')
if not port:
if ssl:
port = 563
else:
port = 119
return test_nntp_server(host, port, server, username=username,
password=password, ssl=ssl, ssl_verify=ssl_verify)
return test_nntp_server(host, port, server, username=username, password=password,
ssl=ssl, ssl_verify=ssl_verify, ssl_ciphers=ssl_ciphers)
def test_nntp_server(host, port, server=None, username=None, password=None, ssl=None, ssl_verify=1):
def test_nntp_server(host, port, server=None, username=None, password=None, ssl=None, ssl_verify=1, ssl_ciphers=None):
""" Will connect (blocking) to the nttp server and report back any errors """
timeout = 4.0
if '*' in password and not password.strip('*'):
@@ -74,7 +79,7 @@ def test_nntp_server(host, port, server=None, username=None, password=None, ssl=
if not got_pass:
return False, T('Password masked in ******, please re-enter')
try:
s = Server(-1, '', host, port, timeout, 0, 0, ssl, ssl_verify, None, False, username, password)
s = Server(-1, '', host, port, timeout, 0, 0, ssl, ssl_verify, ssl_ciphers, False, username, password)
except:
return False, T('Invalid server details')

View File

@@ -190,7 +190,7 @@ class SysTrayIconThread(Thread):
# Wrapper of win32api, timeout is in ms
# We need to wait at least untill what user has defined as double click
self.stop_click_timer()
self.click_timer = timer.set_timer(win32gui.GetDoubleClickTime(), self.click)
self.click_timer = timer.set_timer(win32gui.GetDoubleClickTime() * 2, self.click)
return True
def show_menu(self):

View File

@@ -4,5 +4,5 @@
# You MUST use double quotes (so " and not ')
__version__ = "2.3.7"
__baseline__ = "7a8df5ee916455f17a2c5841f87a7641bb123859"
__version__ = "2.3.9"
__baseline__ = "03c10dce91e13918bc2e6f8ca9c309196b90be11"

View File

@@ -3,7 +3,7 @@ version: git
summary: SABnzbd
description: The automated Usenet download tool
confinement: strict
grade: devel
grade: stable
icon: interfaces/Config/templates/staticcfg/images/logo-small.svg
version-script: |
grep -oP '(?<=^Version: ).*' PKG-INFO

View File

@@ -121,6 +121,12 @@ class SABnzbdDownloadFlow(SABnzbdBaseTest):
if not ssl_imp.get_attribute('checked'):
ssl_imp.click()
# Lower number of connections to prevent testing errors
self.driver.find_element_by_partial_link_text("Advanced Settings").click()
pass_inp = self.driver.find_element_by_name("connections")
pass_inp.clear()
pass_inp.send_keys(2)
# Test server-check
self.driver.find_element_by_id("serverTest").click()
self.wait_for_ajax()

View File

Binary file not shown.

View File

@@ -3,7 +3,7 @@
License for use and distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Copyright (C) 1999-2018 Igor Pavlov.
Copyright (C) 1999-2019 Igor Pavlov.
7-Zip Extra files are under the GNU LGPL license.

View File

@@ -25,7 +25,7 @@ Be careful to use those special features.
[ System requirement ]
MultiPar requires a PC with Windows XP or later (Windows Vista, 7, 8, etc).
MultiPar requires a PC with Windows XP or later (Windows Vista, 7, 8, 10, etc).
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -71,10 +71,11 @@ Don't send current PAR3 files to others, who may not have the same version.
[ How to install or uninstall with installer package ]
Double click setup file ( MultiPar126_setup.exe or something like this name ),
Double click setup file ( MultiPar129_setup.exe or something like this name ),
and follow the installer dialog.
At version up, if you want to use previous setting, overwrite install is possible.
You may need to re-start OS after over write install or uninstall rarely.
Before overwrite install, you should un-check "Integrate MultiPar into Shell".
You may need to re-start OS after overwrite install or uninstall rarely.
To install under "Program Files" directory on Windows Vista/7/8,
you must start the installer with administrative privileges by selecting
"Run as administrator" on right-click menu.
@@ -99,7 +100,7 @@ In either case, user made icons and association are available for the user only.
[ How to install with archive version ]
Unpack compressed file ( MultiPar126.zip or something like this name ) in a folder.
Unpack compressed file ( MultiPar129.zip or something like this name ) in a folder.
MultiPar.exe is the interface of MultiPar.
You can create short-cut icon or send-to link at Option window later.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.