Skip to main content

NeuRelease

A fast neural parser for torrent and release names.

build platforms license demo

NeuRelease is a fast, high-performance, multilingual neural parser for torrent and release names. It reads a name, extracts its fields - title, season and episode, year, quality, codecs, languages, release group and more - and classifies what the name is: a film, a series, music, a game, software, a book, and whether it is anime. Every value comes with a confidence score and the span it was read from.

It combines a character-level CNN with a Transformer encoder, running as int8 inference with runtime-dispatched SIMD kernels. No ML runtime, no model download: the wheel carries the compiled library and the weights, about 5 MB, and Parser() needs no paths.

Pattern-based parsers recognise known markers and guess the rest by position, so anything ambiguous - a number that may be a year or an episode, a word that may be a language or part of the title - is settled the same way every time, right or wrong. NeuRelease decides from context. It is trained on hundreds of thousands of real, labelled release names from a large torrent index - mostly English, with German, Spanish, French, Italian, Russian, Chinese and Japanese names as well.

pip install neurelease

Use

from neurelease import Parser

parser = Parser()
r = parser.parse("Ted.Lasso.S03E03.4-5-1.1080p.ATVP.WEB-DL.DDP5.1.H.264-NTb")

r.title                                # 'Ted Lasso'
r.season, r.episode, r.episode_title   # 3, 3, '4-5-1'
r.streaming_service, r.release_group   # 'ATVP', ('NTb',)
r.source == "WEB-DL"                   # True: enums equal their labels
r.year                                 # None: the name does not say
r.title.confidence, r.episode_title.confidence  # 1.00, 0.80: every value knows how sure the model was
r.to_dict()                            # {'title': 'Ted Lasso', 'season': 3, 'episode': 3, ...}

names = ["Blade.Runner.2049.2017.2160p.UHD.BluRay.x265-TERMiNAL.mkv",
         "Stray_v1.5-Razor1911",
         "El Joven Sheldon - Temporada 6 [HDTV 720p][Cap.604][AC3 5.1 Castellano][www.pctnew.org]",
         "【高清剧集网 www.BTHDTV.com】邻家哥哥给我爱[第05-06集][简繁英字幕].Brother.Next.Door.2024.S01E05-06.1080p.WEB-DL.H264.AAC-BTHDTV",
         "葬送のフリーレン 第28話 「また会ったときに恥ずかしいからね」 (1080p).mkv"]
releases = parser.parse_batch(names)   # one result per name, in order

SHOW = ("title", "alternative_title", "season", "episode", "absolute_episode", "episode_title", "year", "content")
for r in releases:
    d = r.to_dict()
    print({k: d[k] for k in SHOW if d.get(k) is not None})
# {'title': 'Blade Runner 2049', 'year': 2017, 'content': 'movie'}
# {'title': 'Stray', 'content': 'game'}
# {'title': 'El Joven Sheldon', 'season': 6, 'episode': 4, 'content': 'series'}
# {'title': 'Brother Next Door', 'alternative_title': '邻家哥哥给我爱', 'season': 1, 'episode': [5, 6], 'year': 2024, 'content': 'series'}
# {'title': '葬送のフリーレン', 'absolute_episode': 28, 'episode_title': 'また会ったときに恥ずかしいからね', 'content': 'series', 'anime': True}

parse_batch runs many names at once on several threads and returns them in input order. Titles and evidence keep the original script - Latin, Han, Kana, Cyrillic. Every field a result can carry is documented in docs/RESULT.md.

Compared with GuessIt

Measured on the same machine on 2026-09-11 with the shipped model (version 3), on 3,344 video validation names:

Metric, video only (3,344 names, 2026-09-11) NeuRelease GuessIt 4.4.0
macro shared-field F1 97.57% 86.45%
exact on every applicable shared field 89.44% 51.44%
single name, one thread, via Python 2,446 us/name 8,213 us/name
batch, 4 workers, via Python 833 us/name no batch API
GuessIt's 22 documented limitation cases solved 19/22 0/22
GuessIt's own published regression corpus 683/859 804/859

About 3.4× faster on one thread in this measurement, and roughly ten times in batch.

GuessIt's regression corpus is its own test suite: fixture strings such as FooBar.307.PDTV-FlexGet and filesystem paths, written to exercise its rules, with every input assumed to be a video. NeuRelease parses a single release name as found in real traffic and classifies it before assuming anything, so on this corpus it scores 683 to 804 - and on real names the ranking reverses. The 22 limitation cases are GuessIt's own documented failures, not a representative sample.

Method, exact model identity, scoring snapshot and reproduction: docs/GUESSIT_COMPARISON.md.

Wheels

Python 3.10 or newer. The wheels are tagged py3-none-<platform>, one per platform rather than one per interpreter, because the library is loaded through ctypes and speaks the stable C ABI.

Platform Wheel
Linux x86-64 manylinux_2_28
macOS, Apple Silicon macosx_11_0_arm64
Windows x86-64 win_amd64

Anywhere else, build from source: the C++ library, the C ABI and the build instructions are in the repository.

License

MIT. PCRE2 is statically linked into the bundled library, and its notice travels in the wheel as THIRD_PARTY_NOTICES.md.

Release files for neurelease 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for neurelease 0.1.1
File Interpreter ABI Platform
neurelease-0.1.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
neurelease-0.1.1-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
neurelease-0.1.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 14.8 MB

Release files / neurelease-0.1.1-py3-none-win_amd64.whl

Download URL neurelease-0.1.1-py3-none-win_amd64.whl
Size 5.4 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
44c6b6f2a96bb8edc1f7b6fdaa4820d5a8b00fb76a6da2956c0bba80be50a2ea
BLAKE2b-256 checksum
How to use checksums
ec1ce16ebc343f426548effbe5feb7e5564b93d9913a4ec8464beee8e6b73d1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / neurelease-0.1.1-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL neurelease-0.1.1-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 4.8 MB
Tags Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e4ae0505d6b2cbbd1033e53ba7a9280daf94bcbd98a611fe3bca060f19b9e41c
BLAKE2b-256 checksum
How to use checksums
bcac7e5d35f3b71f4951683c2249019df8f2f773b310fa8b2c0c4f6a4cc83fb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / neurelease-0.1.1-py3-none-macosx_11_0_arm64.whl

Download URL neurelease-0.1.1-py3-none-macosx_11_0_arm64.whl
Size 4.6 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
29ec20037d2c08eff303d4ef5004ae2626d7bca8e7e285f92ed170a1bd351912
BLAKE2b-256 checksum
How to use checksums
e128b527f0325055e5952a7e17658f655d710a6de8240789a05192a67d6a8938
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.0

3 release files

This release

0.1.1 This release

3 release files

0.1.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page