mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2026-01-05 22:20:21 -05:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ece02cc4fa | ||
|
|
876ad60ddf | ||
|
|
862da354ac | ||
|
|
8fd477b979 | ||
|
|
2d7005655c | ||
|
|
7322f8348a | ||
|
|
e3e3a12e73 | ||
|
|
77cdd057a4 |
4
PKG-INFO
4
PKG-INFO
@@ -1,7 +1,7 @@
|
||||
Metadata-Version: 1.0
|
||||
Name: SABnzbd
|
||||
Version: 3.3.0
|
||||
Summary: SABnzbd-3.3.0
|
||||
Version: 3.3.1RC1
|
||||
Summary: SABnzbd-3.3.1RC1
|
||||
Home-page: https://sabnzbd.org
|
||||
Author: The SABnzbd Team
|
||||
Author-email: team@sabnzbd.org
|
||||
|
||||
10
README.mkd
10
README.mkd
@@ -1,6 +1,14 @@
|
||||
Release Notes - SABnzbd 3.3.0
|
||||
Release Notes - SABnzbd 3.3.1 Release Candidate 1
|
||||
=========================================================
|
||||
|
||||
## Changes and bugfixes since 3.3.0
|
||||
- Include wiki URL in `External internet access denied` message.
|
||||
https://sabnzbd.org/access-denied
|
||||
- Open the desired tab directly by URL in Glitter tabbed-mode.
|
||||
- Some filenames could be missed when parsing the NZB file.
|
||||
- API-call `history` would not filter active post-processing by `nzo_ids`.
|
||||
- Clean invalid data from download statistics.
|
||||
|
||||
## Changes since 3.2.1
|
||||
- The `External internet access` will automatically detect local network
|
||||
and no longer requires local network ranges to be defined. Custom ranges
|
||||
|
||||
@@ -461,6 +461,23 @@ if __name__ == "__main__":
|
||||
print("Uploading %s to release %s" % (file_to_check, gh_release.title))
|
||||
gh_release.upload_asset(file_to_check)
|
||||
|
||||
# Check if we now have all files
|
||||
gh_new_assets = gh_release.get_assets()
|
||||
if gh_new_assets.totalCount:
|
||||
all_assets = [gh_asset.name for gh_asset in gh_new_assets]
|
||||
|
||||
# Check if we have all files, using set-comparison
|
||||
if set(files_to_check) == set(all_assets):
|
||||
print("All assets present, releasing %s" % RELEASE_VERSION)
|
||||
# Publish release
|
||||
gh_release.update_release(
|
||||
tag_name=RELEASE_VERSION,
|
||||
name=RELEASE_TITLE,
|
||||
message=readme_data,
|
||||
draft=False,
|
||||
prerelease=prerelease,
|
||||
)
|
||||
|
||||
# Update the website
|
||||
gh_repo_web = gh_obj.get_repo("sabnzbd/sabnzbd.github.io")
|
||||
# Check if the branch already exists, only create one if it doesn't
|
||||
|
||||
@@ -1014,6 +1014,11 @@ function ViewModel() {
|
||||
$('body').toggleClass('container-tabbed')
|
||||
})
|
||||
|
||||
// Change hash for page-reload
|
||||
$('.history-queue-swicher .nav-tabs a').on('shown.bs.tab', function (e) {
|
||||
window.location.hash = e.target.hash;
|
||||
})
|
||||
|
||||
/**
|
||||
SABnzb options
|
||||
**/
|
||||
@@ -1087,6 +1092,11 @@ function ViewModel() {
|
||||
// Tabbed layout?
|
||||
if(localStorageGetItem('displayTabbed') === 'true') {
|
||||
$('body').addClass('container-tabbed')
|
||||
|
||||
var tab_from_hash = location.hash.replace(/^#/, '');
|
||||
if (tab_from_hash) {
|
||||
$('.history-queue-swicher .nav-tabs a[href="#' + tab_from_hash + '"]').tab('show');
|
||||
}
|
||||
}
|
||||
|
||||
// Get the speed-limit, refresh rate and server names
|
||||
|
||||
@@ -1646,7 +1646,7 @@ def build_history(
|
||||
# Filter out any items that don't match the search term or category
|
||||
if postproc_queue:
|
||||
# It would be more efficient to iterate only once, but we accept the penalty for code clarity
|
||||
if isinstance(search, list):
|
||||
if isinstance(categories, list):
|
||||
postproc_queue = [nzo for nzo in postproc_queue if nzo.cat in categories]
|
||||
|
||||
if isinstance(search, str):
|
||||
|
||||
@@ -224,6 +224,12 @@ class BPSMeter:
|
||||
if len(data) > 12:
|
||||
self.article_stats_tried, self.article_stats_failed = data[12:14]
|
||||
|
||||
# Clean the data, it could have invalid values in older versions
|
||||
for server in self.timeline_total:
|
||||
for data_data in self.timeline_total[server]:
|
||||
if not isinstance(self.timeline_total[server][data_data], int):
|
||||
self.timeline_total[server][data_data] = 0
|
||||
|
||||
# Trigger quota actions
|
||||
if abs(quota - self.quota) > 0.5:
|
||||
self.change_quota()
|
||||
|
||||
@@ -86,7 +86,7 @@ from sabnzbd.api import (
|
||||
##############################################################################
|
||||
# Security functions
|
||||
##############################################################################
|
||||
_MSG_ACCESS_DENIED = "Access denied"
|
||||
_MSG_ACCESS_DENIED = "External internet access denied - https://sabnzbd.org/access-denied"
|
||||
_MSG_ACCESS_DENIED_CONFIG_LOCK = "Access denied - Configuration locked"
|
||||
_MSG_ACCESS_DENIED_HOSTNAME = "Access denied - Hostname verification failed: https://sabnzbd.org/hostname-check"
|
||||
_MSG_MISSING_AUTH = "Missing authentication"
|
||||
|
||||
@@ -92,7 +92,7 @@ from sabnzbd.deobfuscate_filenames import is_probably_obfuscated
|
||||
# In the subject, we expect the filename within double quotes
|
||||
RE_SUBJECT_FILENAME_QUOTES = re.compile(r'"([^"]*)"')
|
||||
# Otherwise something that looks like a filename
|
||||
RE_SUBJECT_BASIC_FILENAME = re.compile(r"([\w\-+()'\s.,]+\.[A-Za-z0-9]{2,4})")
|
||||
RE_SUBJECT_BASIC_FILENAME = re.compile(r"([\w\-+()'\s.,]+\.[A-Za-z0-9]{2,4})[^A-Za-z0-9]")
|
||||
RE_RAR = re.compile(r"(\.rar|\.r\d\d|\.s\d\d|\.t\d\d|\.u\d\d|\.v\d\d)$", re.I)
|
||||
RE_PROPER = re.compile(r"(^|[\. _-])(PROPER|REAL|REPACK)([\. _-]|$)")
|
||||
|
||||
|
||||
@@ -122,17 +122,26 @@ class TestNZBStuffHelpers:
|
||||
"REQ Author Child's The Book-Thanks much - Child, Lee - Author - The Book.epub",
|
||||
),
|
||||
('63258-0[001/101] - "63258-2.0" yEnc (1/250) (1/250)', "63258-2.0"),
|
||||
# If specified between ", the extension is allowed to be too long
|
||||
('63258-0[001/101] - "63258-2.0toolong" yEnc (1/250) (1/250)', "63258-2.0toolong"),
|
||||
(
|
||||
"Singer - A Album (2005) - [04/25] - 02 Sweetest Somebody (I Know).flac",
|
||||
"- 02 Sweetest Somebody (I Know).flac",
|
||||
"Singer - A Album (2005) - [04/25] - 02 Sweetest Somebody (I Know).flac",
|
||||
),
|
||||
("<>random!>", "<>random!>"),
|
||||
("nZb]-[Supertje-_S03E11-12_", "nZb]-[Supertje-_S03E11-12_"),
|
||||
("Bla [Now it's done.exe]", "Now it's done.exe"),
|
||||
# If specified between [], the extension should be a valid one
|
||||
("Bla [Now it's done.123nonsense]", "Bla [Now it's done.123nonsense]"),
|
||||
(
|
||||
'[PRiVATE]-[WtFnZb]-[Video_(2001)_AC5.1_-RELEASE_[TAoE].mkv]-[1/23] - "" yEnc 1234567890 (1/23456)',
|
||||
'[PRiVATE]-[WtFnZb]-[Video_(2001)_AC5.1_-RELEASE_[TAoE].mkv]-[1/23] - "" yEnc 1234567890 (1/23456)',
|
||||
),
|
||||
(
|
||||
"[PRiVATE]-[WtFnZb]-[219]-[1/serie.name.s01e01.1080p.web.h264-group.mkv] - "
|
||||
" yEnc (1/[PRiVATE] \\c2b510b594\\::686ea969999193.155368eba4965e56a8cd263382e012.f2712fdc::/97bd201cf931/) 1 (1/0)",
|
||||
"serie.name.s01e01.1080p.web.h264-group.mkv",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_name_extractor(self, subject, filename):
|
||||
|
||||
Reference in New Issue
Block a user