GuessIt
GuessIt is a python library that extracts as much information as possible from a video filename.
It has a very powerful matcher that allows to guess properties from a video using its filename only. This matcher works with both movies and tv shows episodes.
For example, GuessIt can do the following:
$ guessit "Treme.1x03.Right.Place,.Wrong.Time.HDTV.XviD-NoTV.avi"
For: Treme.1x03.Right.Place,.Wrong.Time.HDTV.XviD-NoTV.avi
GuessIt found: {
"title": "Treme",
"season": 1,
"episode": 3,
"episode_title": "Right Place, Wrong Time",
"source": "HDTV",
"video_codec": "Xvid",
"release_group": "NoTV",
"container": "avi",
"mimetype": "video/x-msvideo",
"type": "episode"
}
As a library, guessit() returns an ordered MatchesDict of the detected properties:
>>> from guessit import guessit
>>> guessit('The.Matrix.1999.1080p.BluRay.x264-GROUP.mkv')
MatchesDict({'title': 'The Matrix', 'year': 1999, 'screen_size': '1080p', 'source': 'Blu-ray', 'video_codec': 'H.264', 'release_group': 'GROUP', 'container': 'mkv', 'mimetype': 'video/matroska', 'type': 'movie'})
>>> guessit('[Anime-Group] Attack on Titan - 25 [1080p][HEVC].mkv')
MatchesDict({'release_group': 'Anime-Group', 'title': 'Attack on Titan', 'episode': 25, 'screen_size': '1080p', 'video_codec': 'H.265', 'video_profile': 'High Efficiency Video Coding', 'container': 'mkv', 'mimetype': 'video/matroska', 'type': 'episode'})
>>> guessit('Shameless.US.S05E10.720p.HDTV.x264-KILLERS.mkv')
MatchesDict({'title': 'Shameless', 'country': <Country [US]>, 'season': 5, 'episode': 10, 'screen_size': '720p', 'source': 'HDTV', 'video_codec': 'H.264', 'release_group': 'KILLERS', 'container': 'mkv', 'mimetype': 'video/matroska', 'type': 'episode'})See the API & options reference for the full API.
Full documentation is available at guessit-io.github.io/guessit.
Looking for a JavaScript implementation? guessit-js is a third-party TypeScript/WASM port (maintained by OpenSubtitles) that runs in Node, browsers and WASM with no Python required. It is not affiliated with this project.
This project is hosted on GitHub. Feel free to open an issue if you think you have found a bug or something is missing in guessit.
GuessIt relies on Rebulk project for pattern and rules registration.
GuessIt is licensed under the LGPLv3 license.