Parse Scene and P2P release names into structured metadata and compare release quality automatically. Built with a rule/regex engine.
Live Demo: https://dmachard.github.io/releascenify/docs/
Release names follow a strict grammar inherited from the Scene and P2P groups. Once decoded, you can predict the quality, source, language, and release group just from the filename. This library is an alternative to PTN (Parse Torrent Name).
pip install releascenifyfrom releascenify import parse_filename
from releascenify.comparator import get_quality_score, is_better_release
filename = "Gladiator.II.2024.MULTi.2160p.WEB-DL.DV.HDR.H265-GROUP"
parsed = parse_filename(filename)
print(parsed)
# {
# "title": "Gladiator II",
# "year": 2024,
# "resolution": "2160P",
# "quality": "WEB-DL",
# "v_quality": "HDR DV",
# "codec": "H265",
# "languages": ["MULTI"]
# ...
# }
# Calculate quality score
score = get_quality_score(parsed)
print(f"Quality Score: {score}")
# Compare two releases
rel_a = parse_filename("Gladiator.II.2024.1080p.BluRay.x264-GROUP")
rel_b = parse_filename("Gladiator.II.2024.2160p.WEB-DL.x265-GROUP")
if is_better_release(rel_b, rel_a):
print("Release B is better than Release A")For details on how files are rated, scoring weights, and priority factors, see SCORING.md.
Here are the metadata fields extracted by releascenify and how their values are normalized:
To make release metadata processing and quality comparison consistent, the parser normalizes various representations of codecs:
H265: Normalized from inputs containingH265,x265,HEVC(including variants with dots or hyphens likeH.265orH-265).H264: Normalized from inputs containingH264,x264,AVC(including variants with dots or hyphens likeH.264orH-264).VC-1: Normalized from inputs containingVC1orVC-1.
To keep resolution metadata consistent, they are normalized to standard keys:
2160P: Normalized from inputs containing2160p,2160P,4K, orUHD.1080P: Normalized from inputs containing1080por1080P.720P: Normalized from inputs containing720por720P.4KLIGHT: Extracted from inputs containing4KLIGHT.
The source tags are normalized to standard quality keys:
WEB-DL: Normalized from inputs containingWEB-DL,WEBDL, orWEB.WEBRIP: Extracted from inputs containingWEBRiporWEBRIP.BLURAY: Extracted fromBLURAY,BDRIP, orBRRIP.REMUX/DVDRIP/HDTV/WEBLIGHT
To keep audio metadata consistent, standard audio codecs are normalized as follows:
EAC3: Normalized from inputs containingEAC3,E-AC3,DDP,DDP2.0,DDP5.1,DDP7.1, etc. (Dolby Digital Plus).DTS-HD MA: Normalized from inputs containingDTS-HD MA,DTSHDMA,DTS-HD.MA,DTS-HD-MA,DTS-HD_MA, etc. (DTS-HD Master Audio).DTS-HD: Normalized from inputs containingDTS-HD,DTS.HD,DTS_HD,DTS HD,DTSHD, etc. when the Master Audio suffix is not present.- Other standard codecs extracted:
TRUEHD/DTS/AC3/AAC/FLAC/MP3. - Note: If
ATMOSis present, it is appended to the base codec (e.g.,EAC3 ATMOS,TRUEHD ATMOS,DTS-HD MA ATMOS). If only Atmos is present, it will beATMOS.
- Standard channel counts:
7.1/5.1/2.1/2.0/1.0(mono).
HDR/HDR10/HDR10+/DV(Dolby Vision) /HLG/SDR/10BIT/12BIT
- Lists of extracted language tags:
VFF(TrueFrench) /FRENCH/VF/VF2/VFI/VFQ/VOSTFR/FASTSUB/EN/VO/MULTI
- Stream/broadcast platform names normalized:
Netflix(fromNF)Amazon Prime(fromAMZN,AMAZON STUDIOS,AMAZON PRIME)Disney+(fromDSNP,DSNY,DISNEY PLUS)Apple TV+(fromATV,APPLE TV PLUS)HBO Max/HBO(fromHMAX,HBO MAX,HBO)Hulu(fromHULU)Paramount+(fromPARAMOUNT PLUS)
- Extracted modifiers:
REPACK/PROPER/FINAL/INTERNAL/CUSTOM.
To set up the development environment, create a virtual environment and install the package in editable mode with development dependencies:
virtualenv .venv
source .venv/bin/activateRun the test suite using pytest:
pytest tests/ -vYou need to run a local web server from the repository root:
# Start a local HTTP server
python3 -m http.server 8000Then navigate to: http://localhost:8000/ (which redirects to /docs/) or directly to http://localhost:8000/docs/.
