Compare commits

...

139 Commits

Author SHA1 Message Date
Safihre 2be374b841 Update text files for 3.3.1 4 years ago
puzzledsab 906e1eda89 Keep password order 4 years ago
Safihre ece02cc4fa Automatically publish release when all files are present 4 years ago
Safihre 876ad60ddf Update text files for 3.3.1RC1 4 years ago
Safihre 862da354ac Add direct opening of tabs by URL to Glitter tab-layout 4 years ago
Safihre 8fd477b979 Include wiki URL in Internal internet access denied message 4 years ago
Safihre 2d7005655c Clean timeline_total of BPSMeter 4 years ago
Safihre 7322f8348a Filtering active post-proc queue by category was broken 4 years ago
Safihre e3e3a12e73 Correct example in test_name_extractor 4 years ago
Safihre 77cdd057a4 Filenames should end after the extension 4 years ago
Safihre e8206fbdd9 Set version to 3.3.0 4 years ago
Jiri van Bergen 589f15a77b Merge branch '3.3.x' 4 years ago
Safihre 7bb443678a Build release when creating the tag 4 years ago
Safihre 6390415101 Update text files for 3.3.0 4 years ago
Sander 4abf192e11 deobfuscate: bugfix for collections if extension in CAPITALS (#1904) 4 years ago
Safihre 1fed37f9da Notify users that Plush will be removed in 3.4.0 4 years ago
Safihre a9d86a7447 Set version to 3.2.1 4 years ago
Safihre 2abe4c3cef Merge branch '3.2.x' 4 years ago
Safihre 0542c25003 Update text files for 3.2.1 4 years ago
puzzledsab 1b8ee4e290 Show server expiration date in server summary (#1841) 4 years ago
Safihre 51128cba55 Do not notify warning/errors from same source twice 4 years ago
Safihre 3612432581 Do not discard data for CrcError's 4 years ago
Safihre deca000a1b Revert some improvements to the encrypted RAR-detection 4 years ago
Safihre 39cccb5653 Update text files for 3.2.1RC2 4 years ago
Safihre f6838dc985 Improvements to the encrypted RAR-detection 4 years ago
Safihre 8cd4d92395 Make get_all_passwords return only unique passwords 4 years ago
Safihre 3bf9906f45 Update text files for 3.2.1RC1 4 years ago
Safihre 9f7daf96ef Update URL for Python 3 information 4 years ago
Sander 67de4df155 deobfuscate: no globber, but use given filelist (#1830) 4 years ago
Safihre bc51a4bd1c Remove old compatibility code from BPSMeter that causes crash on startup 4 years ago
Sander bb54616018 deobfuscate: rename accompanying (smaller) files with same basename, and no renaming of collections with same extension (#1826) 4 years ago
Safihre 6bcff5e014 More space for the RSS table 4 years ago
puzzledsab 8970a03a9a Use binary mode to make write test more accurate on Windows (#1815) 4 years ago
Safihre 3ad717ca35 Single indexer categories would be saved with "," between each letter 4 years ago
jcfp b14f72c67a fix config auto_sort setting, broken by #1666 (#1813) 4 years ago
Safihre 45d036804f Show name of item to be deleted from queue/history in confirm dialog 4 years ago
Safihre 8f606db233 Add traceback when failing to read the password file 4 years ago
Safihre 3766ba5402 pre-create subdir if needed (POSIX, par2) (#1802) 4 years ago
jxyzn e851813cef Sanitize names possibly derived from X-DNZB-EpisodeName (#1806) 4 years ago
thezoggy 4d49ad9141
3.2.x cleanup (#1808) 4 years ago
Safihre 16618b3af2 Set version to 3.2.0 4 years ago
Safihre 0e5c0f664f Merge branch '3.2.x' 4 years ago
Safihre 7be9281431 Update text files for 3.2.0 4 years ago
Safihre ee0327fac1 Update macOS build Python to 3.9.2 4 years ago
Safihre 9930de3e7f Log all nzo_info when adding NZB's 4 years ago
Sander e8503e89c6 handle gracefully if no malloc_trim() available (#1800) 4 years ago
puzzledsab 1d9ed419eb Remove some redundant ifs (#1791) 4 years ago
Safihre 0207652e3e Update text files for 3.2.0RC2 4 years ago
Safihre 0f1e99c5cb Update translatable texts 4 years ago
puzzledsab f134bc7efb Right-to-Left support for Glitter and Config (#1776) 4 years ago
puzzledsab dcd7c7180e Do full server check when there are busy_threads (#1786) 4 years ago
jcfp fbbfcd075b fix bonjour with localhost, retire LOCALHOSTS constant (#1782) 4 years ago
Safihre f42d2e4140 Rename Glitter Default to Light and make Auto the new Default 4 years ago
Sam Edwards 88882cebbc Support for auto night mode switching in Glitter (#1783) 4 years ago
Safihre 17a979675c Do not re-release from GA when the release tag is pushed 4 years ago
Safihre 4642850c79 Set macOS Python installer target to "/" 4 years ago
Safihre e8d6eebb04 Set version to 3.1.1 5 years ago
Safihre 864c5160c0 Merge branch '3.1.x' 5 years ago
Safihre 99b5a00c12 Update text files for 3.1.1 5 years ago
Safihre 85ee1f07d7 Do not crash if we cannot format the error message 5 years ago
exizak42 e58b4394e0 Separate email message lines are with CRLF (#1671) 5 years ago
Safihre 1e91a57bf1 It was not possible to set directory-settings to empty values 5 years ago
Safihre 39cee52a7e Update text files for 3.1.1RC1 5 years ago
Safihre 72068f939d Improve handling of binary restarts (macOS / Windows) 5 years ago
Safihre 096d0d3cad Deobfuscate-during-download did not work 5 years ago
Safihre 2472ab0121 Python 3.5 does not know ssl.PROTOCOL_TLS_SERVER 5 years ago
Safihre 00421717b8 Queue Repair would fail if Rating is enabled 5 years ago
Safihre ae96d93f94 Set version to 3.1.0 5 years ago
Safihre 8522c40c8f Merge branch '3.1.x' 5 years ago
Safihre 23f86e95f1 Update text files for 3.1.0 5 years ago
Safihre eed2045189 After pre-check the job was not restored to the original spot 5 years ago
Safihre 217785bf0f Applying Filters to a feed would result in crash 5 years ago
Safihre 6aef50dc5d Update text files for 3.1.0RC3 5 years ago
Safihre 16b6e3caa7 Notify users of Deobfuscate.py that it is now part of SABnzbd 5 years ago
Safihre 3de4c99a8a Only set the "Waiting" status when the job hits post-processing 5 years ago
Safihre 980aa19a75 Only run Windows Service code when executed from the executables 5 years ago
Safihre fb4b57e056 Update text files for 3.1.0RC2 5 years ago
Safihre 03638365ea Set execute bit on Deobfuscate.py 5 years ago
Safihre 157cb1c83d Handle failing RSS-feeds for feedparser 6.0.0+ 5 years ago
Safihre e51f11c2b1 Do not crash if attributes file is not present 5 years ago
Safihre 1ad0961dd8 Existing files were not parsed when re-adding a job 5 years ago
Safihre 46ff7dd4e2 Do not crash if we can't save attributes, the job might be gone 5 years ago
Safihre 8b067df914 Correctly parse failed_only for Plush 5 years ago
Safihre ef43b13272 Assume RarFile parses the correct filepaths for the RAR-volumes 5 years ago
Safihre e8e9974224 work_name would not be sanatized when adding NZB's 5 years ago
Safihre feebbb9f04 Merge branch '3.0.x' 5 years ago
Safihre bc4f06dd1d Limit feedparser<6.0.0 for 3.0.x 5 years ago
Safihre 971e4fc909 Merge branch '3.0.x' 5 years ago
Safihre 51cc765949 Update text files for 3.0.2 5 years ago
Safihre 19c6a4fffa Propagation delay label was shown even if no delay was activated 5 years ago
Safihre 105ac32d2f Reading RSS feed with no categories set could result in crash 5 years ago
Safihre 57550675d2 Removed logging in macOS sabApp that resulted in double logging 5 years ago
Safihre e674abc5c0 Update text files for 3.0.2RC2 5 years ago
Safihre f965c96f51 Change the macOS power assertion to NoIdleSleep 5 years ago
Safihre c76b8ed9e0 End-of-queue-script did not run on Windows due to long-path 5 years ago
Safihre 4fbd0d8a7b Check if `name` is a string before switching to `nzbfile` in `addfile` 5 years ago
Safihre 2186c0fff6 Update text files for 3.0.2 RC 1 5 years ago
Safihre 1adca9a9c1 Do not crash if certifi certificates are not available 5 years ago
Safihre 9408353f2b Priority was not parsed correctly if supplied as string 5 years ago
Safihre 84f4d453d2 Permissions would be set even if user didn't set any 5 years ago
Safihre d10209f2a1 Extend tests of create_all_dirs to cover apply_umask=False 5 years ago
Safihre 3ae149c72f Split the make_mo.py command for NSIS 5 years ago
Safihre 47385acc3b Make sure we force the final_name to string on legacy get_attrib_file 5 years ago
Safihre 814eeaa900 Redesigned the saving of attributes 5 years ago
Safihre 5f2ea13aad NzbFile comparison could crash when comparing finished_files 5 years ago
Safihre 41ca217931 Merge branch '3.0.x' 5 years ago
Safihre b57d36e8dd Set version information to 3.0.1 5 years ago
Safihre 9a4be70734 List Cheetah minimal version in requirements.txt 5 years ago
Safihre a8443595a6 Generalize use of certifi module 5 years ago
Safihre fd0a70ac58 Update text files for 3.0.1 5 years ago
Safihre 8a8685c968 Permissions should only be applied if requested 5 years ago
Safihre 9e6cb8da8e Temporarily set cheroot version due to it breaking our tests 5 years ago
Safihre 054ec54d51 Basic authentication option was broken 5 years ago
Safihre 272ce773cb Update text files for 3.0.1RC1 5 years ago
Safihre 050b925f7b Permissions were not set correctly when creating directories (#1568) 5 years ago
Safihre 0087940898 Merge branch '3.0.x' into master 5 years ago
Safihre e323c014f9 Set version information to 3.0.0 5 years ago
Safihre cc465c7554 Update text files for 3.0.0 5 years ago
Safihre 14cb37564f Update translate-link in SABnzbd 5 years ago
Safihre 094db56c3b Default-text for Automatically sort queue 5 years ago
Safihre aabb709b8b Update text files for 3.0.0 RC 2 5 years ago
Safihre 0833dd2db9 Update translatable texts in 3.0.x branch 5 years ago
Safihre cd3f912be4 RAR-renamer should be run on badly named RAR-files 5 years ago
Safihre 665c516db6 Only really run pre-script when it is set 5 years ago
Safihre b670da9fa0 Always use Default-priority when creating NZB-objects 5 years ago
Safihre 80bee9bffe Search-icon would be shown on top of drop-downs 5 years ago
Safihre d85a70e8ad Always report API paused status as a boolean 5 years ago
Safihre 8f21533e76 Set version to 2.3.9 6 years ago
Safihre 89996482a1 Merge branch '2.3.x' 6 years ago
Safihre 03c10dce91 Update text files for 2.3.9 6 years ago
Safihre bd5331be05 Merge branch 'develop' into 2.3.x 6 years ago
Safihre 46e1645289 Correct typo in release notes 6 years ago
Safihre 4ce3965747 Update text files for 2.3.9RC2 6 years ago
Safihre 9d4af19db3 Merge branch 'develop' into 2.3.x 6 years ago
Safihre 48e034f4be Update text files for 2.3.9RC1 6 years ago
Safihre f8959baa2f Revert "Notify develop-users that we will switch to Python 3" 6 years ago
Safihre 8ed5997eae Merge branch 'develop' into 2.3.x 6 years ago
Safihre daf9f50ac8 Set version to 2.3.8 6 years ago
Safihre 6b11013c1a Merge branch '2.3.x' 6 years ago
  1. 4
      .github/workflows/build_release.yml
  2. 4
      PKG-INFO
  3. 21
      README.mkd
  4. 23
      builder/package.py
  5. 10
      interfaces/Glitter/templates/static/javascripts/glitter.main.js
  6. 2
      interfaces/Plush/templates/_inc_header.tmpl
  7. 2
      sabnzbd/api.py
  8. 6
      sabnzbd/bpsmeter.py
  9. 4
      sabnzbd/deobfuscate_filenames.py
  10. 2
      sabnzbd/interface.py
  11. 7
      sabnzbd/misc.py
  12. 2
      sabnzbd/nzbstuff.py
  13. 4
      sabnzbd/version.py
  14. 11
      tests/test_nzbstuff.py

4
.github/workflows/build_release.yml

@ -59,7 +59,7 @@ jobs:
path: "*-win32-bin.zip"
name: Windows Windows standalone binary (32bit and legacy)
- name: Prepare official release
if: env.AUTOMATION_GITHUB_TOKEN && !startsWith(github.ref, 'refs/tags/')
if: env.AUTOMATION_GITHUB_TOKEN && startsWith(github.ref, 'refs/tags/')
run: python builder/package.py release
build_macos:
@ -110,5 +110,5 @@ jobs:
path: "*-osx.dmg"
name: macOS binary (not notarized)
- name: Prepare official release
if: env.AUTOMATION_GITHUB_TOKEN && !startsWith(github.ref, 'refs/tags/')
if: env.AUTOMATION_GITHUB_TOKEN && startsWith(github.ref, 'refs/tags/')
run: python3 builder/package.py release

4
PKG-INFO

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

21
README.mkd

@ -1,12 +1,14 @@
Release Notes - SABnzbd 3.3.0 Release Candidate 2
Release Notes - SABnzbd 3.3.1
=========================================================
## Changes and bugfixes since 3.3.0 Release Candidate 1
- Failure to start on some platforms.
- Stability improvement to encrypted RAR-detection.
- Allow missing extensions in `Unwanted extensions` detection.
- Removed Special setting `max_art_opt`.
- Prevent jobs getting stuck at 99% due to unreliable servers.
## 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`.
- Passwords for encrypted jobs were tried in a random order.
- Clean invalid data from download statistics.
## Changes since 3.2.1
- The `External internet access` will automatically detect local network
@ -25,6 +27,10 @@ Release Notes - SABnzbd 3.3.0 Release Candidate 2
- Confirm rename if Direct Unpack is active for the job.
- Obfuscated-RAR detection will always be performed.
- All requests will be logged, not just API calls.
- Stability improvement to encrypted RAR-detection.
- Allow missing extensions in `Unwanted extensions` detection.
- Removed Special setting `max_art_opt`.
- Add notification that Plush will be removed in 3.4.0.
- Windows/macOS: Update UnRar to 6.0.1.
- Windows: Update Multipar to 1.3.1.7 (adds faster verification).
@ -32,6 +38,7 @@ Release Notes - SABnzbd 3.3.0 Release Candidate 2
- Prevent failed post-processing if job name ends in multiple dots or spaces.
- Failing articles could result in jobs being stuck at 99%.
- Jobs could be stuck in the queue or duplicate if they had missing articles.
- Prevent jobs getting stuck at 99% due to unreliable servers.
- CRC/yEnc errors would be counted twice as bad articles.
- Some NZB files would incorrectly be marked as empty.
- API-call `history` would not filter active post-processing by `nzo_ids`.

23
builder/package.py

@ -148,7 +148,7 @@ if __name__ == "__main__":
patch_version_file(RELEASE_VERSION)
# To draft a release or not to draft a release?
RELEASE_THIS = "draft release" in run_git_command(["log", "-1", "--pretty=format:%b"])
RELEASE_THIS = "refs/tags/" in os.environ.get("GITHUB_REF", "")
# Rename release notes file
safe_remove("README.txt")
@ -339,7 +339,7 @@ if __name__ == "__main__":
print("Approved! Stapling the result to the app")
run_external_command(["xcrun", "stapler", "staple", "dist/SABnzbd.app"])
elif notarization_user and notarization_pass:
print("Notarization skipped, add 'draft release' to the commit message trigger notarization!")
print("Notarization skipped, tag commit to trigger notarization!")
else:
print("Notarization skipped, NOTARIZATION_USER or NOTARIZATION_PASS missing.")
else:
@ -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
@ -542,7 +559,7 @@ if __name__ == "__main__":
head=RELEASE_VERSION,
)
else:
print("To push release to GitHub, add 'draft release' to the commit message.")
print("To push release to GitHub, first tag the commit.")
print("Or missing the AUTOMATION_GITHUB_TOKEN, cannot push to GitHub without it.")
# Reset!

10
interfaces/Glitter/templates/static/javascripts/glitter.main.js

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

2
interfaces/Plush/templates/_inc_header.tmpl

@ -103,7 +103,7 @@
<span id="warning_box"><b><a href="${path}status/#tabs-warnings" id="last_warning"><span id="have_warnings">$have_warnings</span> $T('warnings')</a></b></span>
#if $pane=="Main"#
#if $new_release#&sdot; <a href="$new_rel_url" id="new_release" target="_blank">$T('Plush-updateAvailable').replace(' ','&nbsp;')</a>#end if#
This skin is no longer actively maintained! <a href="${path}config/general/#web_dir"><strong>We recommend using the Glitter skin.</strong></a>
<a href="${path}config/general/#web_dir"><strong style="color: red">This skin will be removed in SABnzbd 3.4.0! <br>We recommend using the Glitter skin.</strong></a>
#end if#
</div>
</div>

2
sabnzbd/api.py

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

6
sabnzbd/bpsmeter.py

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

4
sabnzbd/deobfuscate_filenames.py

@ -163,7 +163,7 @@ def deobfuscate_list(filelist, usefulname):
if os.path.getsize(file) < MIN_FILE_SIZE:
# too small to care
continue
_, ext = os.path.splitext(file)
ext = get_ext(file)
if ext in extcounter:
extcounter[ext] += 1
else:
@ -208,5 +208,7 @@ def deobfuscate_list(filelist, usefulname):
logging.info("Deobfuscate renaming %s to %s", otherfile, new_name)
# Rename and make sure the new filename is unique
renamer(otherfile, new_name)
else:
logging.debug("%s excluded from deobfuscation based on size, extension or non-obfuscation", filename)
else:
logging.info("No qualifying files found to deobfuscate")

2
sabnzbd/interface.py

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

7
sabnzbd/misc.py

@ -779,7 +779,12 @@ def get_all_passwords(nzo):
# If we're not sure about encryption, start with empty password
# and make sure we have at least the empty password
passwords.insert(0, "")
return set(passwords)
unique_passwords = []
for password in passwords:
if password not in unique_passwords:
unique_passwords.append(password)
return unique_passwords
def find_on_path(targets):

2
sabnzbd/nzbstuff.py

@ -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)([\. _-]|$)")

4
sabnzbd/version.py

@ -5,5 +5,5 @@
# You MUST use double quotes (so " and not ')
__version__ = "3.3.0-develop"
__baseline__ = "unknown"
__version__ = "3.3.0"
__baseline__ = "7bb443678ac5c8394ead4ecdf76e7b57f4f4bd7a"

11
tests/test_nzbstuff.py

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

Loading…
Cancel
Save