Skip to main content

GuessIt - a library for guessing information from video filenames.

Project description


Latest Version LGPLv3 License Build Status Codecov semantic-release

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"

More information is available at


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.


v3.8.0 (2023-12-14)


  • chore: migrate setup.cfg to pyproject.toml (ee9bcbc)

  • chore: remove win_private_assemblies from pyinstaller spec (5404433)

  • chore(lint): Silence pylint

This fixes the following error:

************* Module guessit.rules.match_processors
guessit/rules/ R1710: Either all return statements in a function should return an expression, or none of them should. (inconsistent-return-statements)
``` ([`6a7bb9f`](

### Ci

* ci: use twine to upload packages on pypi ([`edf2916`](

* ci: add version bump in release task ([`ce62ca9`](

* ci: avoid mutating repository on semantic-release version command ([`e8273ca`](

* ci: add GH_TOKEN environment variables to semantic-release version commands ([`6d7cee7`](

* ci: remove verbose flag from semantic release commands ([`485d79e`](

* ci: add wheel to dev dependencies for bdist_wheel command to work ([`a49278d`](

* ci: fix semantic-release commands verbose flag ([`0cfb12f`](

* ci: upgrade checkout action ([`c39ebef`](

### Feature

* feat(other): detect "Dolby Vision" from "DV" ([`6e08770`](

* feat(streaming_service): add Paramount+ to Streaming Services ([`60920e3`](

* feat(streaming_service): add "amzn-cbr" ([`9207379`](

* feat: add python 3.12 and pypy 3.10 support ([`401bcc5`](

### Fix

* fix(deprecated): pathlib.Path.__enter__() is deprecated

pathlib.Path.__enter__() is deprecated and scheduled for removal
in Python 3.13; Path objects as a context manager is a no-op

References: ([`aa85b2e`](

* fix(deprecated): importlib.resources.read_text() is deprecated ([`cd36bad`](

### Style

* style: fix pylint false positive ([`f62ec8c`](

### Unknown

* Merge pull request #750 from milkers69/develop

feat(Streaming Service): Add Paramount+ ([`bd66746`](

* Merge pull request #755 from plotski/feat-dv

feat(other): Detect "Dolby Vision" from "DV" ([`342aec4`](

* Merge pull request #759 from plotski/deprecated/read_text

fix(deprecated): importlib.resources.read_text() is deprecated ([`0f40bbf`](

* Merge pull request #761 from plotski/deprecated/Path.__enter__

pathlib.Path.__enter__() is deprecated ([`ac846dc`](

* Merge pull request #758 from plotski/streaming-service/AMZN-CBR

feat(streaming_service): add "AMZN-CBR" ([`a619e8b`](

* Merge pull request #762 from guessit-io/python-3.12-support

feat: add python 3.12 and pypy 3.10 support ([`e947d1b`](

* Merge pull request #760 from plotski/lint/match_processors.strip

chore(lint): Silence pylint ([`3113f3e`](

## v3.7.1 (2023-02-20)

### Fix

* fix(episode): ignore absolute_episode guess when SxxExx match is available in filepart

Close #712 ([`4aa5012`](

* fix(title): fix title guessing for `Show Name/Season XX/episode.mkv` directories pattern

Note that it will grab Show Name as `title` property only if the `Season XX` directory match a season pattern exactly and fully.

Close #721 ([`e717928`](

### Refactor

* refactor(title): refactor rule to make pylint pass ([`d931c05`](

### Test

* test(episode): add 4400 test ([`1aa10b7`](

## v3.7.0 (2023-02-18)

### Documentation

* docs(contributing): update branch name ([`4af631d`](

### Feature

* feat(week): add week property ([`8309bf1`](

### Fix

* fix(episode): fix invalid episode range when a weak episode is present before the match

Close #719 ([`ff0a327`](

* fix(expected): build output from input string for expected_title/expected_group ([`90cc215`](

* fix(release_group): properly extract group name from format "Title (MediaInfo Individual) [Group]" ([`25bd367`](

### Test

* test: remove non-standard mimetype video/x-matroska assertions

Close #724 ([`9e4178c`](

### Unknown

* Merge pull request #740 from jonbenta/support-individual-crediting-groups

Properly extract group name from format `Title (MediaInfo Individual) [Group]`. ([`439ca59`](

* Merge branch 'master' into develop ([`9a1d33c`](

## v3.6.0 (2023-02-18)

### Chore

* chore(stack): upgrade stack ([`c6b41de`](

### Feature

* feat(audio_codec): detect "DTS:X" (closes #728) ([`2bdd8f5`](

### Fix

* fix(edition): improve remastered/restored detection ([`c3611b9`](

* fix(container): add m2ts to container extensions

fix #730 ([`05cca80`](

### Unknown

* Merge pull request #736 from plotski/detect-dtsx

feature(audio_codec): detect "DTS:X" (closes #728) ([`58e4fd2`](

* Merge pull request #734 from kannibalox/fix/

docs: scrub references to ([`b694a8b`](

* Merge pull request #735 from plotski/master

fix(edition): improve remastered/restored detection ([`fd9fa4a`](

* Scrub references to

Fixes #727 ([`ad5e442`](

## v3.5.0 (2022-11-01)

### Chore

* chore(pylint): fix pylint issues on current version ([`9f60c9c`](

### Feature

* feat(dependencies): drop Python 3.6 support ([`47f5718`](

### Fix

* fix(audio_codec): detect "E-AC-3" and "AC-3" ([`72dc12e`](

* fix(typo): fix common typo ([`42a80f0`](

## v3.4.3 (2021-11-20)

### Fix

* fix(setuptools): drop usage of test_requires and setup_requires (#720)

Close #720 ([`324b38c`](

## v3.4.2 (2021-11-08)

### Fix

* fix(dependencies): use babelfish>=0.6.0 (#711)

Close #711 ([`d2c1b01`](

### Refactor

* refactor(website): use files instead of open_text of importlib.resources (#716)

Close #716 ([`9ce7706`](

## v3.4.1 (2021-11-05)

### Fix

* fix(other): detect "Open Matte" with non-space separator ([`b52a9d9`](

* fix(packaging): use stdlib importlib.resources in py 3.7+

importlib.resources is available as a stdlib module since Python 3.7.
Use that if it's available, and fall back to the external
importlib_resources back for Python < 3.7. ([`1e7b000`](

## v3.4.0 (2021-11-04)

### Chore

* chore(oops): don't use format strings ([`cab06ff`](

### Ci

* ci: upgrade setuptools on python 3.5 and enable pylint on python 3.9 ([`4c06b0c`](

* ci(coverage): use Codecov and pytest-cov ([`f743298`](

* ci: enhance job names ([`a2f48e2`](

* ci(coveralls): add --service=github flag ([`c7d7dcb`](

* ci(coveralls): add GITHUB_TOKEN environment variable ([`c5a6e07`](

### Documentation

* docs: add new properties ([`f1d8f61`](

### Feature

* feat(other): add restored support and match 4k-* patterns ([`99c30eb`](

* feat(other): add 2in1 support ([`0cf07f4`](

* feat(python): add python 3.10 support, drop python 3.5 support ([`a8ea88d`](

* feat(audio_channels): add support for "1.0" audio channels ([`f22e33d`](

* feat(streaming_service): add more streaming services


Alternate APTV tag.





Channel 4:
Alternate ALL4 tag.


Discovery Plus:


Facebook Watch:


Fox Premium:







National Audiovisual Institute:

National Film Board:

Alternative NICKAPP tag


Oprah Winfrey Network:



Rakuten TV:

The Roku Channel:


Science Channel:



UFC Fight Pass: ([`40ce483`](

* feat(other): add ONA/OAD support ([`0823e37`](

* feat(other): add Repack and ReRip followed by a digit support (#653)

The digit following those tags now as the base value for `proper_count` property.

Close #653 ([`997c5c2`](

### Fix

* fix(source): avoid Shots to be guessed as Showtime and TS

Close #709
Close #710 ([`de85403`](

* fix(screen_size): add 540i ([`1a7db40`](

* fix(language): fix `language` and `subtitle_languages` in some situations (#696) ([`f19cfda`](

* fix(packaging): use importlib-resources instead of pkgutil ([`a679a6c`](

* fix(other): fix Open Matte when written as is (#689)

Close #689 ([`ddf8e77`](

* fix(frame_rate): enhance `frame_rate` when ending with `.000` or space separated (#693) ([`dba9cef`](

* fix(packaging): use importlib-resources instead of pkg_resources ([`6ef222e`](

* fix(edition): better support for "Criterion" ([`85ac52a`](

* fix(advanced-config): fix removal of custom rebulk rules (#692)

Close #692 ([`c2bc1ea`](

* fix(streaming_service): make SBS ambiguous

SBS is used ambiguously for both:
- Special Broadcasting Service (Australia)
- SBS Broadcasting Group (previously Scandinavian Broadcasting Systems)

White.Wall.S01E01.720p.SBS.WEB-DL.AAC2.0.H.264-GBone.mkv (Scandanavia)
Gourmet.Farmer.S05E01.720p.SBS.WEB-DL.AAC2.0.H.264-SOIL.mkv (AU) ([`777d2b5`](

* fix(streaming_service): keep pattern to avoid rebuilding rules

This causes the `advanced_config` and `self.advanced_config` to differ
without any changes to the default config in ``. ([`62f0c0e`](

* fix(proper_count): fix proper_count raw output to include all matches (#626)

Close #626 ([`1faea7e`](

* fix(website): fix website when it contains a digit (#659)

Close #659 ([`9e39b7e`](

### Refactor

* refactor(source): refactor `source` patterns to configuration ([`066a9dd`](

* refactor(pylint): fix pylint issue ([`6e75104`](

* refactor(other): refactor `other` patterns to configuration ([`18b355d`](

* refactor(film): move `film` patterns to configuration ([`ab770ef`](

* refactor(edition): move `edition` patterns to configuration ([`814a78e`](

* refactor(bonus): set bonus property name to rebulk defaults ([`e673a64`](

* refactor(cd): move `cd` patterns to configuration ([`2be8217`](

* refactor(bonus): move `bonus` patterns to configuration ([`60c1354`](

* refactor(bit_rate): move `bit_rate` patterns to configuration ([`f8c3bb6`](

* refactor(audio_codec): move `audio_codec` patterns to configuration ([`4ddc5f5`](

* refactor(audio_profile): move `audio_profile` patterns to configuration ([`30592b7`](

* refactor(audio_channels): move more patterns to configuration ([`d7d6732`](

* refactor(config): move loading of patterns from config to a function ([`80b97a4`](

## v3.3.1 (2021-02-06)

### Build

* build(ci): add windows and macos binary support ([`4b1fa77`](

* build(pyinstaller): add linux binary support ([`d0df79f`](

### Ci

* ci: configure git before bumping version ([`79014e0`](

### Documentation

* docs: lighten README and update doc index page ([`8e4ba6f`](

### Fix

* fix(options): fix custom options.json groups starting/ending (#671) ([`40f43b1`](

## v3.3.0 (2021-02-03)

### Chore

* chore(docs): update docs with new `streaming_service` values ([`53f822a`](

### Ci

* ci(release): use robotology/gh-action-nightly-merge@v1.3.2 ([`7d2b4bd`](

* ci(mkdocs): use github-pages-deploy-action to deploy docs ([`9ceb019`](

### Documentation

* docs(readme): avoid mixed-content in github pages ([`2e1f29c`](

### Feature

* feat: add `--output-input-string` option (#665) ([`bac6143`](

* feat(streaming_service): Add `Showtime`, `HBO` and `AppleTV` (#661) ([`dc55eaa`](

* feat(other): add `Hybrid` support (#669)

Close #669

Co-authored-by: plotski <> ([`522af53`](

### Fix

* fix(options): avoid appending `None` values to list when merging options (#658) ([`42978c9`](

* fix(streaming_service): add iT keyword support for iTunes (#669) ([`51e0021`](

* fix(streaming_service): fix regex patterns declared with `re:` prefix ([`e02323f`](

### Test

* test: make main test less verbose (#665)

Co-authored-by: Carey Metcalfe <> ([`04881fb`](

* test(streaming_service): fix tests for `streaming_service` ([`c635022`](

* test: enhance test entry result display ([`5136625`](

* test: pick both `.yml` and `.yaml` files for tests ([`3c46016`](

## v3.2.0 (2020-12-23)

### Chore

* chore(semantic-release): change release commit message for commitlint concistency ([`dc5f8ed`](

### Ci

* ci(commitlint): add commitlint to github actions ([`fe06966`](

* ci: drop TravisCI and ReadTheDocs, replaced by Github Actions and mkdocs ([`384545e`](

### Feature

* feat: add python 3.9 support, drop python 2.7 support ([`2c8b25e`](

### Fix

* fix(regex): use rebulk 3+ to have regex module disabled by default

Regex module is now disabled by default in rebulk 3+.

It can be enabled with REBULK_REGEX_ENABLED=1 in your environment. ([`28658b2`](

### Unknown

* Back to development: 3.1.2 ([`6e4ead1`](

* Preparing release 3.1.1 ([`dc8e90d`](

* Update classifiers with supported python version ([`6189bac`](

* Update history ([`b0ceada`](

* Drop python 3.4 support and fix pylint issues ([`59cf946`](

* Use SafeLoader for yaml.load()

Close #642 ([`67058b3`](

* Avoid relying on matroska mimetype in tests

This mimetype is not defined in python module internals, so tests may fail
in system where this mimetype is not defined in `/etc/mime.types` file.

Close #616 ([`ceb826c`](

* Back to development: 3.1.1 ([`bf85928`](

* Preparing release 3.1.0 ([`de53a35`](

* Update history ([`b90835b`](

* Use better version constraints for rebulk ([`bbf27cb`](

* Add `Variable Frame Rate` value to `other`

This replace invalid interpretation of `VFR` tag (French language). ([`250ce16`](

* Remove `v` from `subtitle_language` prefix in options.json

This also adds `vfr` as a synonym for French `language`, and
makes `Vita` keyword guessed as `PS Vita` only if match has neighbors.

Close #613 ([`553a015`](

* Fix title guessing with 3 fileparts containing language ([`2ea5f62`](

* Never exclude a website if it's in a group

Close #597 ([`c907a2c`](

* Find holes for episode_title with same behavior as main title

Close #603 ([`c64868e`](

* Fix source validation when more than one pattern match

Close #608 ([`b1ec23c`](

* Avoid trigger of useless rules consequences ([`ad5220e`](

* Validates streaming_service with higher priority

Close #602 ([`0e41d2a`](

* Use configured episode words in RemoveWeak rule ([`4886863`](

* Fix possible crash in weak episode removal

Close #598 ([`d056323`](

* Bring bak SxxExx tag in chain patterns ([`8511abd`](

* Disable pylint with python 3.8 ([`5644b9c`](

* Migrate to rebulk 2.0.0

This also enhance some rules in season/episodes handling ([`a43966a`](

* Merge pull request #614 from sharkykh/patch-1

Add missing `six` dependency ([`bc65e99`](

* Add missing `six` dependency ([`809e175`](

* Generate test cases dynamically from yml files ([`ca60ce6`](

* Add python 3.8 support ([`950ca79`](

* Back to development: 3.0.5 ([`1dc0a20`](

* Preparing release 3.0.4 ([`b1651ff`](

* Fix pyroma issues ([`15907c6`](

* Update history ([`758e487`](

* Use official python alpine for docker image ([`ce8a3ea`](

* Add more streaming sites (#595)

Add more streaming sites

This also adds 30/1.001 Framerate and sorts some options ([`fd8af5f`](

* #593: Added Extras detection as other property ([`74dbb0c`](

* Added suggested_expected method to the API to support apps that uses guessit as a library ([`5fbf3a8`](

* Fixes #358. Added 'This is Us' to the default expected_title configuration ([`217e7e4`](

* #590: 'Fixes Show Name/Season SS/Ep. EE - Title' pattern ([`4174267`](

* Fixes #591. Keeping separators for single characters ([`cdea674`](

* #408: Fixes REAL and PROPER tags scenarios ([`53e8e86`](

* Minor indentation fix ([`240ca61`](

* #588: Fixes wrong 3D detection ([`a6f234f`](

* #574: Improve language detection ([`44f7d60`](

* #587: Enhanced source detection to avoid wrong match of the word web ([`6a28a3a`](

* Fixes wrong lambda detected by pylint ([`a016b27`](

* #585: improve title detection when between brackets ([`0e1dc09`](

* #584: Added DC Universe to streaming_service. Making streaming_service configurable ([`9d422cc`](

* #551: Fixes wrong bonus detection ([`4c10925`](

* Updating documentation and history ([`05a0c96`](

* #547: Added 540p to screen_size ([`a164b6a`](

* Fixing pylint issues in python 2.7 ([`a8741fe`](

* Added regression tests for #583 ([`c0ffdc3`](

* Ignoring pylint issues that conflicts with python 2.7 and 3.4+ ([`e74cc1b`](

* #578: Add back common words that conflicts with existing allowed_languages. Added test scenarios for all previous common words. ([`4e874bc`](

* #556: Fixed 6.0 audio_channel detection. Make audio_channel detection configurable ([`315ae4d`](

* Back to development: 3.0.4 ([`5c2cfee`](

* Preparing release 3.0.3 ([`4deefbd`](

* Update history ([`bcc2985`](

* Add {season}e{episode} pattern

Close #579 ([`4811655`](

* Fix pylint errors ([`42f9791`](

* Move some patterns from Proper to Fix

Close #538 ([`319f698`](

* Add MP2 audio_codec value

Close #539 ([`22a70aa`](

* Fix missing property when episode_details keyword in title

Close #555 ([`add43a0`](

* Remove serie(s) from season marker and fix wrong season/year in episode mode

Close #561 ([`12dc120`](

* Fix parent folder ending with a digit detected as title

Close #565 ([`c5d938d`](

* Fix false release_group matches with --expected-title option

Close #564 ([`01591ae`](

* Fix configuration docs ([`b05aa64`](

* Back to development: 3.0.3 ([`b20d44e`](

* Preparing release 3.0.2 ([`946724d`](

* Fix regression when passing options as string to python module ([`80cae9b`](

* Add advanced property to Rebulk Match object

Close #282 ([`8fb54ee`](

* Add authors file

Close #567 ([`8d24c99`](

* Update usage in README ([`169cc80`](

* Fix python2 regression introduced in previous commit ([`2c67c1d`](

* Enhance configuration files and ensure consistent behavior CLI/module

This make loading of user default configuration file, configuration files, and custom configuration files easier to reason about.

This also allow overriding advanced_configuration at runtime through options dict.

Rebulk rules are now lazily rebuilt when advanced_configuration is changed since previous call.

Close #553 ([`74195f7`](

* Back to development: 3.0.2 ([`b00fea6`](

* Preparing release 3.0.1 ([`71c06a1`](

* Update changelog ([`7da07d8`](

* Fix issue with dotted titles

Close #546 ([`5abfbb0`](

* Fix issue with ES audio_profile breaking titles

Close #566 ([`43849f0`](

* Add more video_profile to avoid confusion with some release_group

Close #569 ([`2121da8`](

* Add support for mk3d container

Close #568 ([`c64c54d`](

* Fix possible crash for some release names

Close #573
Close #570 ([`c6701f9`](

* Remove Bonus and Extras from episode_details

Close #558 ([`ab1da59`](

* Merge pull request #576 from labrys/patch-1

Close resource after usage ([`fb0e55e`](

* Add python 3.7 support and fix pylint issues ([`85e0ab4`](

* Close resource after usage

This closes the resource 'tlds-alpha-by-domain.txt' after usage.
Fixes #575 ([`b1d3f6f`](

* Back to development: 3.0.1 ([`a54e8ac`](

* Preparing release 3.0.0 ([`ee409f4`](

* Update history ([`86c894a`](

* Rename "Analogue HDTV" to "Analog HDTV" ([`c5f788c`](

* Fix crash when using pathlib.Path object on python 3.4 & 3.5 ([`5ff3cc0`](

* Allow advanced guessit configuration

# Conflicts:
#	guessit/ ([`8db121b`](

* Add pypy3 to tox and TravisCI tests ([`29311bc`](

* Merge branch 'pulls/543' into develop ([`5c64714`](

* Adds support for path-like objects (e.g. pathlib.Path in python >=3.4) ([`6beca82`](

* Add .pytest_cache directory to .gitignore ([`8ae6b1b`](

* Fix spelling mistake in docs ([`04cc163`](

* Fixed rebase issue ([`e49d6f5`](

* Updating docs about advanced configuration ([`e357afb`](

* Fixes #505: don't blacklist languages inside a language group ([`f507608`](

* Reducing common_words to bare minimum ([`c527b83`](

* Fix last scenario from #342 ([`4d6c1e6`](

* Updating history ([`8581eae`](

* Adding language and subtitle affixes to advanced configuration ([`1f891c6`](

* Rename to advance configuration. Add common words to advanced configuration. Make sure that adv configuration is always loaded even if no-embedded-config is specified. ([`5480640`](

* Externalize guessit advanced configuration. Resolves #342 and #277 ([`f135c2e`](

* Merge pull request #536 from guessit-io/feature/additional-other-detections

Detect sample, proof, obfuscated and repost ([`994bdba`](

* Fixes #433 and #516: Detecting sample, proof, obfuscated and repost as other properties ([`9f90bc3`](

* Merge pull request #534 from guessit-io/feature/screen-size-see-conflict

Improving screen_size and SEE conflict resolution ([`07f4e23`](

* Fixes #533: Improving screen_size and SEE conflict resolution ([`52bef12`](

* Merge pull request #529 from guessit-io/feature/docker-locale

Docker locale configuration ([`3afb850`](

* Fixes #520: Docker locale configuration ([`9956426`](

* Update history and docs: frame_rate property added ([`c902963`](

* Merge pull request #528 from guessit-io/feature/frame_rate

Detect frame rate as frame_rate property ([`32b336a`](

* Detect frame rate as frame_rate property. Fixes #480 ([`e0f497d`](

* Fix yaml representation for Quantity objects + minor fix in bit_rate detection ([`bae97df`](

* Fixes #254: Incorrect detection with adult content ([`c9ef77f`](

* Keep order in yaml output ([`dc5398d`](

* Fixes for #519: Added 1440p screen_size, improved bit_rate detection and subtitle_language detection ([`1cc9b20`](

* Merge pull request #527 from guessit-io/feature/fix-episode-conflict-audio-channels

Fix episode not detected due to conflict with audio_channels ([`15f4368`](

* Fix #521: Episode not detected due to conflict with audio_channels ([`f52d525`](

* Merge pull request #526 from guessit-io/feature/fix-season-range-fileparts

Fix season range in multiple fileparts ([`d93c522`](

* Fixes #522: Season range in multiple fileparts ([`1487548`](

* Merge pull request #525 from guessit-io/feature/fix-line-detection

Fix Line detection ([`4140137`](

* Fixes #524: Line detection ([`0377fd0`](

* Merge pull request #513 from guessit-io/feature/enable-disable-properties

Proposal for enabling/disabling properties ([`819033f`](

* Update HISTORY.rst ([`919e839`](

* Updating documentation ([`9fabc29`](

* Merge pull request #517 from guessit-io/feature/fix-pylint-inconsistent-return-statements

Handle new pylint rule: inconsistent-return-statements ([`5e83529`](

* Adding tests for include/exclude option with required fixes ([`2ce6443`](

* Change is_enabled to is_disabled ([`0506a97`](

* Fixing failing tests ([`a70d5c9`](

* Proposal for #231 enabling/disabling properties ([`7987e29`](

* Also handle too-many-locals ([`53f6762`](

* Handle new pylint rule: inconsistent-return-statements ([`120809a`](

* Merge pull request #515 from guessit-io/feature/remove-mimetype-from-yaml-files

Removing mimetype from yaml files to prevent failing tests ([`eefa208`](

* Fixes #498: Removing mimetype from yaml files to prevent failing tests in different environments ([`56eb296`](

* Merge pull request #514 from guessit-io/feature/fix-maximum-recursion-depth-navigablestring

Fix maximum recursion depth exceeded ([`66f447f`](

* Fixes #247: Deep clone doesn't work with NavigableString from beautifulsoup4. Making sure guessit input is either binary or str. ([`e500169`](

* Merge pull request #512 from guessit-io/feature/enhance-language-country-detection

Further enhancement in countries/language detection ([`2e4ff8c`](

* Fixes #500 and partially fixes #505: Adding AU to default countries and dropping pt and au from blacklisted words since they're not needed anymore. ([`91a3bf9`](

* Merge pull request #511 from guessit-io/feature/ascii-error

Ascii error fix and dash separated release group detection fix ([`3ac61f1`](

* Fixes #492 and fixes dash separated release group detection ([`5b19fd8`](

* Merge pull request #510 from guessit-io/feature/fix-movie-with-season-word

Disable season pattern when type is movie ([`0129424`](

* Fix for #465: Disable season pattern when type is movie ([`6ce2ca6`](

* Removing duplicated values from streaming_services ([`7e8c12c`](

* Organizing streaming_services. Updating docs and history. ([`f577483`](

* Merge pull request #483 from fernandog/feature/stream_service_more

Add missing stream services ([`6dccecd`](

* Fix streaming_service validator rule ([`8db9ddc`](

* Merge remote-tracking branch 'origin/develop' into feature/stream_service_more

# Conflicts:
#	guessit/rules/properties/
#	guessit/test/episodes.yml ([`23da643`](

* Merge pull request #491 from guessit-io/feature/auto-episode-prefer-number

Automatically use --episode-prefer-number / absolute_episode ([`2a14375`](

* Merge pull request #487 from guessit-io/feature/dm-source

Detect Digital Master source ([`8d1bf08`](

* Fix merging issue + failing test ([`7b2e678`](

* Fix lambda expressions. Fix tag list shouldn't be modified to not affect subsequent calls. ([`827bdce`](

* Fix for #423: automatically use --episode-prefer-number. Added absolute_episode ([`e718802`](

* Fix for #384: Detect Digital Master source ([`16fd9ee`](

* Merge pull request #486 from guessit-io/feature/additional-audio-video-codecs

Additional audio and video codecs ([`774454b`](

* Fixing failing tests ([`66f4d19`](

* Merge pull request #485 from guessit-io/feature/disc-detection

Detect disc numbers ([`7bd17b9`](

* Fix failing test ([`f6f64a8`](

* Fix for #482: VP9 video codec. Plus additional common audio and video codecs. ([`1281d8c`](

* Fix for #401: Detect disc numbers ([`413d8f6`](

* Merge pull request #484 from guessit-io/feature/size-output

Enhance size output value / Detect bit rate ([`8598a54`](

* Adding bit rate detection. Fixes #251 and #477 ([`5505f74`](

* Using class Size instead of Quantity. ([`ed6db27`](

* Fix for #481: Enhance  output value ([`0bda2a7`](

* Merge pull request #476 from guessit-io/feature/default-allowed-languages-countries

Add default and configurable list of allowed languages and countries ([`d8f1c89`](

* Fixing failing test ([`0570dfe`](

* Add more test scenarios for #259 ([`02df006`](

* Add test scenario for #489 ([`44aa38b`](

* Improved release group detection to also fix #196 ([`035b4b9`](

* Country and languages can be disabled when allowed list is empty ([`4edadb3`](

* Added languages from #462: flemish and swiss german ([`0734d93`](

* Avoid language and country detection is allowed list is empty. Simplifying language converter ([`fa61e7b`](

* Fix and scenarios for #259 ([`e4a15d2`](

* Fix and scenarios for #258 ([`bc5559c`](

* Updating HISTORY.rst ([`3132fbc`](

* Fix for #458: Remove conflicting matches in release group ([`63a1779`](

* Fix for #296: Add default and configurable list of allowed languages and countries. ([`5df9ca3`](

* Merge pull request #479 from guessit-io/feature/aspect-ratio

Add aspect_ratio and validate screen_sizes ([`a4209c9`](

* Travis still not supporting py37 ([`4e8fab6`](

* Updating travis with supported python versions ([`f3b2d8b`](

* Updating supported python versions: dropped py33 and added py37 ([`4f7c468`](

* Fixing broken build due to pytest-capturelog. Its fork pytest-catchlog was merged into pytest core. ([`12a6328`](

* Merge pull request #488 from guessit-io/feature/prefer-rightmost-filepart

File and folder name: fine tuning marker comparator ([`9b07137`](

* Add Amazon keyword for Amazon Prime streaming service

Close #495 ([`6a74e05`](

* Added additional test scenario ([`5198832`](

* Fine tuning marker comparator: Prefer the rightmost filepart when same matches count. ([`a8bbc5e`](

* Merge pull request #490 from guessit-io/fix-travis-pypy

Attemp to fix failing pypy env after travis image upgrade ([`21b8358`](

* Attemp to fix failing pypy env after travis image upgrage ([`cc666b1`](

* Some more ([`c25bf0b`](

* Not detecting YHOO ([`0ed89bb`](

* Disable disable=too-many-statements ([`094003c`](

* Move some stream services tests to streaming_services.yaml + add more ([`1890705`](

* This shouldn't match 'streaming_services' property ([`6f9f4b2`](

* Add missing stream services ([`68a568c`](

* Merge pull request #478 from fernandog/feature/stream_service_it

Detect iT as iTunes stream service ([`ded8697`](

* Updating docs and changelog ([`78ac41f`](

* Fix for #276: Added aspect_ratio and validation for standard resolutions ([`cb3892b`](

* Remove duplicate ([`8d2cfaa`](

* Detect iT as iTunes ([`6fe4c4b`](

* Merge pull request #475 from guessit-io/feature/additional-audio-detection

Enhance audio detection ([`b73d30e`](

* Fix duplicated values in HISTORY.rst ([`102708e`](

* Merge pull request #474 from guessit-io/feature/edition-and-other-additions

Add IMAX and Upscaled detections ([`08bdc0e`](

* #471: Detect Opus audio codec ([`9447b9a`](

* #471: Detect Dolby Digital EX ([`c19e854`](

* #471: Detect DTS-ES ([`b18588e`](

* #471: Detect DTS-HD HRA ([`bf38978`](

* Adding Fan edition ([`6d63341`](

* Adding Ultimate edition ([`b1bd480`](

* #470: Added Upscaled as other property ([`1a613e1`](

* #470: Added new edition: IMAX ([`5041233`](

* Merge pull request #473 from guessit-io/feature/media-profile

HDR / SDR and color space detection ([`c8d3fac`](

* Merge pull request #472 from guessit-io/feature/uhd-bluray

Detect Ultra HD Bluray ([`35788b6`](

* Fix for #468: Added SDR, HDR10, Dolby Vision, 12-bit and BT.2020 detection ([`684c7c5`](

* #469: Detect Ultra HD Bluray ([`8fd004b`](

* Merge pull request #464 from guessit-io/feature/properties-values

Proposal for property values ([`2013f34`](

* Merge pull request #452 from guessit-io/feature/source

Proposal for #365: Deprecate 'format' in favor of 'source' property ([`bba7a2b`](

* Update documentation ([`3451188`](

* Move 8bit/10bit from 'video_profile' to 'color_depth' ([`834e2fe`](

* Refactored 'audio_codec' values ([`7bbbf76`](

* Fix wrong documentation about 'audio_codec: FLAC' ([`039191f`](

* Refactored 'video_codec' values ([`80cd9e1`](

* Refactored 'audio_profile' values. Added 'audio_codec: DTS-HD' ([`b9d6626`](

* Refactored 'video_profile' values ([`a2893bb`](

* Detecting interlaced resolutions. Changed '4K' to '2160p'. Added '4320p'. ([`cf8d4a3`](

* Refactored 'other' values as discussed in #459 ([`c3ce9b4`](

* Moved 'other: FINAL' to 'episode_details: Final' ([`0b2bb1b`](

* Changed 'episode_details: Omake' to 'episode_details: Extras' ([`f71d7c2`](

* Moved 'Ova' and 'Oav' from 'episode_details' to 'other' ([`fbdb17f`](

* Moved CC and DDC from 'other' to 'edition' ([`62d8d60`](

* Dropped 'Edition' suffix from 'edition' values ([`50f8f44`](

* Merge remote-tracking branch 'origin/develop' into feature/source ([`fdcc531`](

* Merge pull request #461 from guessit-io/feature/priority-validate-neighbor

'other' is detected with no neighbors ([`183f190`](

* Fix for #460: 'other' is detected with no neighbors ([`9e5fc60`](

* Adding migration instructions from 2.x to 3.x ([`4d6767d`](

* Updating docs ([`929c9c7`](

* Rename WEB to Web ([`38d7371`](

* Merge remote-tracking branch 'origin/develop' into feature/source ([`a6965b0`](

* Back to development: 3.0.0 ([`ac2de2d`](

* Preparing release 2.1.4 ([`b2ef20c`](

* Update history ([`93f58cd`](

* Fix failing test ([`2d02306`](

* Removing 'format' property. Renaming BluRay to Blu-ray ([`68548c9`](

* Add HD Camera/Telecine/Telesync. Rename PPV to Pay-per-view. Fix wrong HDRip detection. WEBCap is a synonym to WEBRip ([`03d88a9`](

* Fix for #365: Deprecate 'format' property in favor of 'source' ([`2bfac49`](

* Renamed 'format' python module to 'source' ([`83187b0`](

* Fix new options docs ([`53db177`](

* Merge pull request #455 from guessit-io/feature/rebulk-0.9

Make returned dict structure consistent between CLI and API ([`432f2c8`](

* Make returned dict structure consistent between CLI and API

This adds --enforce-list and --single-value options to CLI (enforce_list and single_value to API).

Close #274
Close #453 ([`dca90cb`](

* Merge pull request #451 from guessit-io/feature/edition

Move edition values from 'other' to 'edition' property ([`6b25b03`](

* Rename DolbyDigital to AC3

# Conflicts:
#	docs/properties.rst ([`9362a45`](

* Fix missing coma

Close #454 ([`0270507`](

* Back to development: 3.0.0 ([`39923b9`](

* Preparing release 2.1.3 ([`e61659f`](

* Fix for #421: Move edition values from 'other' to 'edition' property ([`f7c992d`](

* Merge pull request #450 from guessit-io/feature/python-3.6

Adding python 3.6 support ([`44ce700`](

* Updating history with python 3.6 support ([`d720086`](

* Adding python 3.6 support ([`d664d23`](

* Merge pull request #449 from guessit-io/feature/other-fullhd

Detecting FullHD ([`3bbb5f9`](

* Updating history ([`38aab7d`](

* Fix for #432: Detecting FullHD ([`1d331b8`](

* Merge pull request #448 from guessit-io/feature/update-properties-docs

Updating properties documentation ([`bcd18d7`](

* Updating properties.rst with missing values. Fixing rst format issues. Ordering properties values ([`6c73063`](

* Fix for #330: Rename DolbyDigital to AC3 ([`075538e`](

* Merge pull request #446 from guessit-io/feature/enhance-weak-movie-removal-logic

Fix `episode` type detection when series name contains `year` followed by SEE pattern ([`d96859d`](

* Add test scenario for #428 ([`eba607d`](

* Fix for #235 and #428: Do not remove 'weak-movie' after 'year' ([`72bd07f`](

* Merge pull request #445 from guessit-io/feature/eac3-audio-codec

EAC3 as audio_codec ([`d1c4841`](

* Adding EAC3 to audio_codec documentation ([`ae9a5a1`](

* Fixes #438 and ##431: EAC3 as audio_codec ([`416aa0e`](

* Merge pull request #444 from guessit-io/feature/enhance-container-detection

Enhance container detection ([`67164cf`](

* Updating changelog ([`fa24901`](

* Fixes #422: container values should be lowercase (as per documentation) ([`d1e8b06`](

* Updating container docs ([`3e25396`](

* Fix for #346: detect nzb as container ([`831fa87`](

* Merge pull request #443 from guessit-io/feature/enhance-episode-title-detection

'year' and 'part' shouldn't be detected when in 'episode_title' location ([`8d56c9f`](

* Updating changelog ([`d93705a`](

* Fixes #331, #435 and #440: 'year' and 'part' shouldn't be detected when in 'episode_title' location ([`09e9246`](

* Merge pull request #442 from guessit-io/feature/fix-unknown-lang-detection

Fix for #441: Unknown shouldn't be detected as language ([`268167b`](

* Dropping python 2.6 support ([`f630d85`](

* Fix for #441: Unknown shouldn't be detected as language ([`066de49`](

* Merge pull request #437 from guessit-io/feature/fix-disable-weak-episode-if-movie

Disable weak episode if type is movie ([`b4ed4b5`](

* Fixes #429: Disable weak episode if type is movie ([`ac0a66f`](

* Merge pull request #436 from guessit-io/feature/fix-wrong-audio-detection

Invalid audio detection ([`ad775aa`](

* Ignoring pylint false positives ([`6d6842d`](

* Fixing pylint issues ([`3d61863`](

* Fixes #434: Invalid audio detection ([`cc706e2`](

* Back to development: 2.1.3 ([`dc1f017`](

* Preparing release 2.1.2 ([`4c5114a`](

* Update manifest with configuration files ([`084875e`](

* Update changelog ([`9c5cc3c`](

* Merge pull request #420 from guessit-io/feature/reserved-words

Detecting tags/reserved words ([`db8e3fc`](

* Detecting WEST.FEED and EAST.FEED ([`70900a4`](

* Enhancing Special Edition detection ([`a2fb629`](

* Detecting OAR ([`01b6ad5`](

* Detecting LIMITED ([`d980f97`](

* Fix STV detection - Straight to Video ([`fe7bed0`](

* Adding UNCUT test scenario ([`24dc237`](

* Detecting UNCENSORED ([`01cf05d`](

* Detecting Theatrical Edition ([`e8c2b8f`](

* Detecting SAMPLEFIX ([`39a0459`](

* Detecting READNFO ([`d678e4a`](

* Detecting PROOFFIX ([`1cc067f`](

* Detecting Open Matte ([`3892b73`](

* Detecting NFOFIX ([`9cf2655`](

* Detecting INTERNAL ([`f716835`](

* Updating FINAL documentation ([`8bf5c4e`](

* Detecting FESTIVAL ([`660c99f`](

* Adding DUB test scenario ([`788d4b4`](

* Detecting Documentary ([`2426998`](

* Detecting DIRFIX ([`5a484d2`](

* Enhancing Director's cut detection ([`caa6b76`](

* Detecting COLORIZED ([`239383f`](

* Detecting CONVERT ([`7721986`](

* Detecting season in dutch ([`2c1df3a`](

* Detecting ALTERNATIVE CUT ([`a89c98e`](

* Merge pull request #419 from guessit-io/feature/detection-improvements

Detection improvements: format, video_profile, audio_channels, streaming_service, UltraHD ([`dc05118`](

* Minor performance improvement ([`715c0f6`](

* Proper audio_channels detection and validation ([`c4184af`](

* Fixing audio_channels detection ([`f2a460f`](

* Fix indentation issue ([`098179b`](

* Updating docs ([`047279f`](

* Fixing lint issues ([`3f72b09`](

* Enhancing streaming_service detection/other without separators. Added several test scenarios ([`ee0ee54`](

* Enhancing video_profile detection ([`cc113db`](

* Enhancing audio_channels detection ([`d1ef82c`](

* UHD 'other' detection ([`5c2a797`](

* UHDTV format detection ([`ac054b4`](

* Merge pull request #418 from guessit-io/feature/screen-size-conflicts

Remove season/episode matches which conflicts with screen_size ([`6c8159f`](

* Enhancing screen_size conflict detection ([`ae6e906`](

* Enhancing TV format detection and dubbed detection ([`32d98cf`](

* Minor enhancement in video_profile detection ([`49c9b8e`](

* Fix for #308: Remove season/episode matches which conflicts with screen_size ([`e39c4d2`](

* Merge pull request #416 from guessit-io/feature/remove-invalid-season-episode-matches

Discarding invalid season/episode matches ([`9b2e0a4`](

* Fix for #415, #383, #352: Discarding invalid season/episode matches ([`8a62d4c`](

* Merge pull request #412 from guessit-io/feature/enhance-language-support

Fix for #321: Enhancing language support ([`89a01b0`](

* Fix for #321: Enhancing language support ([`ab60717`](

* Merge pull request #414 from guessit-io/feature/title-episode_details-conflict

episode_details should be removed when conflicting with title ([`d317553`](

* Fix for #413: episode_details should be removed when conflicting with title ([`2aa362f`](

* Merge pull request #404 from guessit-io/feature/fix-ofwords-regex

Fix for detached episode/season count regex ([`e94af2b`](

* Merge branch 'develop' into feature/fix-ofwords-regex ([`3d1e767`](

* Merge pull request #407 from guessit-io/feature/hardcoded-subs

Detect hardcoded subtitles ([`d0f1183`](

* Merge branch 'develop' into feature/hardcoded-subs ([`55b3948`](

* Merge pull request #403 from guessit-io/feature/website-prefixes

Handling website prefixes ([`a6bbd83`](

* Merge branch 'develop' into feature/website-prefixes ([`bfaad93`](

* Merge pull request #402 from guessit-io/feature/enhance-filepart-2-episode-title

Enhances Filepart2EpisodeTitle logic to properly guess episode_title ([`8b5df70`](

* Merge branch 'develop' into feature/enhance-filepart-2-episode-title ([`0e36413`](

* Merge pull request #405 from guessit-io/feature/prefer-sxxexx

SxxExx pattern should be preferred over weak matches ([`6a850b3`](

* Don't parse options from process arguments when using guessit API ([`3fd27df`](

* Pylint fixes ([`d0c845b`](

* Detect hardcoded subtitles. Fix for #318 ([`36abccf`](

* Regression tests for #394 and #399 ([`ad068a4`](

* Pylint fixes ([`3101a07`](

* Regression tests for #398 ([`604f24a`](

* Fixes #396: SxxExx pattern should be preferred over weak matches ([`30afedf`](

* Fixes #400: Minor issue in regex ([`df57a9e`](

* Fixes #392: Handling website prefixes ([`2505640`](

* Fixes #393: Enhances Filepart2EpisodeTitle logic to properly guess episode_title ([`8caa3cf`](

* Merge branch 'patch-1' into develop ([`1a9cf06`](

* Add additional Streaming Services ([`62c8194`](

* Fix testing issue on python 2 when input string is not unicode but some values are ([`b8520f1`](

* Merge pull request #382 from guessit-io/feature/default-configuration

Add default configuration ([`d51cf8a`](

* Add default configuration with OSS 117 ([`1bcbc7a`](

* Merge pull request #386 from guessit-io/feature/enhance-clean-groupname

Do not strip out parts of release groups ([`7dc9be4`](

* Merge pull request #387 from guessit-io/feature/handle-empty-groups

Handling empty groups ([`2cdc836`](

* Closes #385: Handle empty groups ([`9569538`](

* Closes #297: Do not strip out parts of release groups. ([`b11108a`](

* Update usage in README ([`acfbf08`](

* Merge pull request #380 from guessit-io/feature/configuration-file

Add configuration file feature ([`7a42a25`](

* Add configuration file feature

Close #374 ([`1f7b1f0`](

* Merge branch 'feature/expected' into develop

# Conflicts:
#	guessit/test/episodes.yml ([`4262ade`](

* Merge pull request #379 from guessit-io/feature/fix-377

Fix for #377 ([`9b53cdb`](

* Ensure expected_title and expected_group is surrounded with separators ([`7634f7f`](

* Use search input as value for expected properties ([`2c7c631`](

* Fix episode and year conflict ([`5f47363`](

* Disable RemoveWeakIfMovie rule when context type=episode

Close #377 ([`491a732`](

* Enhance expected_title and expected_group

Close #376 ([`b720697`](

* Merge pull request #375 from guessit-io/feature/mux

Implement mux detection ([`527c0ab`](

* Updating docs ([`060897c`](

* Relative imports should be used ([`f18f00b`](

* Detect AVC as h264 video codec ([`73d48d0`](

* Mux detection. Closes #307 ([`cacda62`](

* Added ReEncoded to other

# Conflicts:
#	guessit/test/episodes.yml ([`20c4cec`](

* Merge pull request #372 from guessit-io/feature/size

Added size property ([`6c8746c`](

* Add missing docstring ([`f82706e`](

* Fixing imports in ([`8021531`](

* Updating properties docs ([`3fe136e`](

* Adding size detection. Closes #299 ([`f7db0eb`](

* Updating properties docs ([`644c8b8`](

* Implementing Re-Encoded guessing. Closes #300 ([`6fe63d2`](

* Docker images are now available in guessit organization ([`a8a80cc`](

* Back to development: 2.1.2 ([`fcd1747`](

* Preparing release 2.1.1 ([`039f0f5`](

* Update changelog ([`1df4099`](

* Merge pull request #370 from guessit-io/feature/strip-separators-processor

Strip separators from matches ([`74b64d3`](

* Strip separators from matches

This is useful in advanced mode for raw values like title, episode_title and release_group to have separators stripped off. ([`605526e`](

* Detect DDP (Dolby Digital Plus) as DolbyDigital ([`d434514`](

* Enhance guessit performance by using rebulk 0.8.2 ([`6dc8ece`](

* Remove twine dependency constraint ([`1fcbe88`](

* Upgrade to rebulk 0.8.1 to support python 2.6 ([`92bf41d`](

* Fix for #357: Episode is not detected in a less relevant filepart

# Conflicts:
#	guessit/test/episodes.yml ([`017649e`](

* Keep more specific season/episode

# Conflicts:
#	guessit/test/episodes.yml ([`5e50449`](

* Fix episode range starting from 1 prefixed by episodes word ([`b6b3a00`](

* Detecting date followed by screen_size

# Conflicts:
#	guessit/test/episodes.yml ([`742f6fa`](

* Fix pylint issue ([`cb4a31e`](

* Upgrade to rebulk 0.8.0 and use chain_breaker to avoid generating too long ranges

Close #353 ([`243f8f8`](

* Guess full name streaming services ([`efd37f7`](

* Add streaming_service property to docs ([`d326689`](

* Merge pull request #361 from ratoaq2/feature/add-streaming-service

Adding streaming_service property ([`e84459a`](

* Upgrade to rebulk 0.7.7 to fix chain patterns in certain scenarios

Close #359 ([`cbda121`](

* Fix for #357 ([`ae7d133`](

* Fixes #360: Keep more specific season/episode ([`7ff4aca`](

* Merge pull request #364 from ratoaq2/feature/detect-more-formats

More formats to be detected ([`d1dce4d`](

* Merge pull request #363 from ratoaq2/feature/improve-video-profile-detection

Improving video_profile detection ([`878d857`](

* Fixes #315: More formats to be detected ([`30ef63b`](

* Fixes #350: improving video_profile detection ([`3c2269d`](

* Fix #351: detecting date followed by screen_size ([`56dc4f3`](

* Adding streaming_service property ([`4744552`](

* Remove unused import ([`35e1ac6`](

* Fix website validation

Close #345 ([`54bed86`](

* Prefer release group over second title inside filepart

Close #343 ([`e760fe2`](

* Fix validation of film property

Close #294 ([`98b0991`](

* Enhance episode/season range and sequence guessing

Close #311 ([`a4fb286`](

* Fix invalid comparator in audio_codec conflict solver ([`57fe78f`](

* Fix HDD release group detected as DolbyDigital

Close #317 ([`232ef2b`](

* Add name parameter to build_or_pattern re utils ([`c48edbd`](

* Ensure roman numbers are surrounded with separators

Close #304 ([`07aeb52`](

* Enhance season/episode guess validation ([`606fe40`](

* Fix Title not properly guessed when 'Complete' appears with 'The' article.

Requires new rebulk version (0.7.5)

Close #340 ([`0a04fd3`](

* Avoid guessing of to as episode title when ([`0045b7d`](

* Enhance season/episode guessing ([`6c0f8d4`](

* Add ~ to episode/season range separators ([`c7e0ff6`](

* Enhance complete guessing

Close #310 ([`d954db0`](

* Fix tests on python 3 ([`09b9c17`](

* Encode options like input_string

Close #326 ([`e3dd732`](

* Enhance season/episode range guessing

Close #339
Close #287 ([`7e71e66`](

* Fix cd_count issue with x264-CD...

Close #316 ([`e8b91af`](

* Fix part property ([`215bad6`](

* Better release_group guessing.

Close #313 ([`7636ed3`](

* Fix pylint issue. ([`8423caf`](

* Drop unicode conversion for -T/-G options

Close #326 ([`ea95691`](

* Add support for SxxEPxx pattern

Close #338 ([`0b73fec`](

* Add #328 unit test ([`2750b7b`](

* Better audio_channels guess when suffixed with ch

Close #328 ([`acc5061`](

* Enhance season list support

Close #336 ([`852cbaa`](

* Upgrade rebulk to 0.7.4

Close #306 ([`eae627b`](

* Fix invalid guess with --type episode

Close #335 ([`733b746`](

* Add workaround for zest.releaser twine issue

See ([`cc7b59c`](

* Back to development: 2.1.1 ([`ed8a57c`](

* Preparing release 2.1.0 ([`e1dc01e`](

* Update changelog ([`93d4367`](

* Add Rebulk version when running guessit --version

Close #322 ([`99cb5b3`](

* Remove python-dateutils dependency version constraint

Close #329 ([`484f308`](

* Fix pylint issue with python 2 ([`66fe4ce`](

* Drop regex native module support ([`11658fa`](

* Fix pylint issues ([`9943db5`](

* Merge pull request #325 from ratoaq2/format_video_codec_without_seps

Enhances format and video_codec detection when no separators between … ([`bb6e778`](

* Merge pull request #324 from ratoaq2/enhance_screen_size

Enhance screen_size to detect 720pHD and 1080pHD ([`2adce40`](

* Upgrade rebulk to 0.7.3 ([`5aabd3e`](

* Enhances format and video_codec detection when no separators between themselves ([`b5c6632`](

* Enhance screen_size to detect 720pHD and 1080pHD ([`dc52959`](

* Avoid season/episode to guessed when pattern is included inside other word

Close #242 ([`67b8ac7`](

* Avoid title to be guessed as website.

Close #298 ([`57966ab`](

* Guess Dolby keyword as DolbyDigital audio_codec

Close #295 ([`b8be99b`](

* Fix issue when running guessit in non-interactive shell with python 2

Close #293 ([`7615788`](

* Fix invalid conflict solving occuring between SssEee and ssXee patterns.

Close #286 ([`eb8229f`](

* Add docs to pytest ignore ([`f130254`](

* Merge pull request #320 from ratoaq2/subtitle_language_fix

Fix subtitle language detection when using subtitle_suffixes ([`977bf25`](

* Fix subtitle language detection when using subtitle_suffixes ([`45e5e85`](

* Merge pull request #314 from ratoaq2/release_group_fix_313

Fix for #313 ([`de2bf05`](

* Adding container, other and language as previous scene_names for SceneReleaseGroup rule ([`2e20069`](

* Update changelog ([`61303fa`](

* Keep langage if it exactly match the hole

Close #269 ([`5bd2ccb`](

* Remove properties ignore next to title when they are uppercase ([`77c2c7e`](

* Add subbed, custom sub and custom subbed as subtitle markers ([`baf7f93`](

* Back to development: 2.1.0 ([`1163c2c`](

* Preparing release 2.0.5 ([`4e9ee0a`](

* Update changelog ([`3276ff6`](

* Make audio_codec AC3D a synonym of AC3 ([`55ba043`](

* Fix pylint issues ([`3cf2391`](

* Add support for titles containing dots

Close #278 ([`91f7441`](

* Lock python-dateutil version


Close #284 ([`7d3a22a`](

* Fix docstring ([`2b54491`](

* Fix docs invalid properties and guessit -p listing

Close #283 ([`a18f827`](

* Update docs with guessit-io organization ([`28b6789`](

* Remove unicode stuff from docs ([`7d7f9c0`](

* Upgrade rebulk to 0.7.1 ([`8192668`](

* Back to development: 2.1.0 ([`c298cc0`](

* Preparing release 2.0.4 ([`d9ea60d`](

* Add GuessitException Report to get information when guessit crash on a guess. ([`58e27fc`](

* Fix issues related to backslashes

Close #265
Close #266 ([`3ee4ac0`](

* Remove possible path separators from patterns

Close #264 ([`27bc2b3`](

* Back to development: 2.1.0 ([`3f7284a`](

* Preparing release 2.0.3 ([`0f72c3d`](

* Update history ([`d3aa378`](

* Back to development: 2.1.0 ([`b2b43ab`](

* Preparing release 2.0.2 ([`e3d665f`](

* Update history ([`5109e63`](

* It now works with pypy ([`4fe0926`](

* Use utf-8 to decode/encode input unicode string ([`c9e5efd`](

* Back to development: 2.1.0 ([`be0586e`](

* Preparing release 2.0.1 ([`d2edcac`](

* Add support for all type of string with python 2 and python 3 ([`e24a4b0`](

* Back to development: 2.1.0 ([`04839ac`](

* Preparing release 2.0.0 ([`2dd6ce2`](

* Fix invalid RST description on Pypi ([`50ddb30`](

* Add more builds ([`122b1f8`](

* Back to development: 2.0rc9 ([`36af0b5`](

* Preparing release 2.0rc8 ([`6ea0851`](

* Make regex module optional using rebulk chain feature

Close #257 ([`fc3ada8`](

* Better and requirements ([`a0e95db`](

* Add HuBoard badge ([`963bdc3`](

* Back to development: 2.0rc8 ([`9e9f36e`](

* Preparing release 2.0rc7 ([`bd1f50c`](

* Fix packaging issue on Python 2 ([`2b7c4d7`](

* Back to development: 2.0rc7 ([`74ee5c1`](

* Preparing release 2.0rc6 ([`058e7d2`](

* Update history ([`a4b5705`](

* Oops, invalid python version check ([`e3693a7`](

* Add more short words to exclusion list for language guessing

Close #256 ([`d0bd6c0`](

* Handle UTF-8 encoding in (README/HISTORY) ([`1782213`](

* Back to development: 2.0rc6 ([`2e246c8`](

* Preparing release 2.0rc5 ([`23d74f6`](

* Update history ([`39efe20`](

* Add Jordan to excluded words for language guessing ([`0c805cd`](

* Add more possible values in other property (and AVCHD as h264)

Close #243 ([`898cb3d`](

* Guess film number only if less than 100

Close #245 ([`a693b69`](

* Add priority to Screener validation to avoid Scrubs collision

Close #246 ([`57c18a5`](

* Add XXX tag value to other property

Close #246 ([`b4b3341`](

* Add more words to common words for language guessing

Close #250 ([`a76b23e`](

* Add mimetype property to the docs

Close #252 ([`fd522b0`](

* Rename alternativeTitle to alternative_title and add it to docs

Close #253 ([`8114ae6`](

* Capitalize container property

Close #255 ([`95dd3c4`](

* Add Dolby Atmos audio_codec support

Close #249 ([`a39e019`](

* Remove country in title rule ([`e6de767`](

* Remove old repository references ([`43830f6`](

* Add docker section to README ([`0aaf76b`](

* Back to development: 2.0rc5 ([`bbf35e0`](

* Preparing release 2.0rc4 ([`2cf39ce`](

* Enhance and add some ignore to check-manifest ([`02d26fd`](

* Rename `audio_codec` value `true-HD` to `trueHD` ([`6a96441`](

* Add exotic `screen_size` patterns support like `720hd` and `720p50`. ([`34d0d6a`](

* Dockerize ([`0981eba`](

* Fix pylint issues ([`5c9003b`](

* Fix travis CI pylint call ([`f998105`](

* Upgrade to pylint 1.5.0 ([`88c6376`](

* Add docs and prepare switch to master branch ([`d560755`](

* Back to development: 2.0rc4 ([`c74aa1c`](

* Preparing release 2.0rc3 ([`d5dbf27`](

* Add version to main module ([`66413d5`](

* Back to development: 2.0rc3 ([`9dc375b`](

* Preparing release 2.0rc2 ([`19eb96a`](

* Update history ([`091f399`](

* Fix possible NoneType error ([`ea139f0`](

* Remove ; from titles separators and & from separators ([`59a99a2`](

* Single digit episodes are now guessed for --type episode instead of --episode-prefer-number ([`bfd21d3`](

* Back to development: 2.0rc2 ([`f1df1e3`](

* Preparing release 2.0rc1 ([`05d64c1`](

* Update README for Release Candidate ([`e473dc3`](

* Fallback to default title guessing when expected title doesn't match ([`301a9bd`](

* Back to development: 2.0b5 ([`3151faa`](

* Preparing release 2.0b4 ([`5e99e5e`](

* Update history ([`479ee4d`](

* Fix pylint issues ([`d24a3a9`](

* Add better support for -T option ([`27898a9`](

* Add support for unicode in -T/-G options ([`2f74c35`](

* Fix expected title

Close #238 ([`95b1f71`](

* Give priority to explicit title ([`2d8b53f`](

* Implement --verbose option ([`94fb398`](

* Add validation rule for single digit episode to avoid false positives. ([`4570eaa`](

* Add --expected-group option ([`9c7f7b7`](

* Back to development: 2.0b4 ([`c1beb0e`](

* Preparing release 2.0b3 ([`e84b645`](

* Fix IndexError when input has a closing group character with no opening one before. ([`c303db6`](

* Ensure date is found when conflicting with episode/season ([`2fb1c64`](

* Add better space support in episode/season properties ([`b6ce12b`](

* Update usage in README.rst ([`e4e2827`](

* Avoid uuid and crc32 collision with episode/season properties ([`a56a7f3`](

* Update history ([`3ab8726`](

* Update Development Status classifier ([`9a05b28`](

* Force implicit option in CLI ([`2ad4c4d`](

* Add --type option ([`7ba5ae3`](

* Add rebulk implicit option support ([`ed08358`](

* Add support for Part with no space before number ([`043a032`](

* Back to development: 2.0b3 ([`ca65d05`](

* Preparing release 2.0b2 ([`dd8a7bf`](

* Remove pypy environment from tox configuration ([`07725f3`](

* Add python 2.6 support ([`4dcc48a`](

* Remove rebulk master from dev requirements ([`3b4c467`](

* Back to development: 2.0b2 ([`6284423`](

* Preparing release 2.0b1 ([`356006a`](

* Update history ([`f8f25de`](

* Bump rebulk 0.6.1 and enhance title guessing ([`ca469a9`](

* Update migration ([`6733b78`](

* Avoid crash when displaying properties and yaml module is not available. ([`af68081`](

* Increase code coverage ([`f657685`](

* Rename properCount to proper_count and add it to introspector ([`0fe54b6`](

* We are in Beta now ([`f78b201`](

* Back to development: 2.0b1 ([`324adb8`](

* Preparing release 2.0a4 ([`11d4e51`](

* Update history ([`07b7f90`](

* Bump rebulk 0.6.0 and add -p/-V options ([`929e499`](

* Update HISTORY format to match zest.releaser ([`62b0b08`](

* Fix pylint issue on python 2.7 ([`12dba88`](

* Back to development: 2.0a4 ([`87eeb21`](

* Preparing release 2.0a3 ([`a701818`](

* Refactor api and rules to use builder pattern and allow customization ([`fb36ecc`](

* Back to development ([`d3c01e5`](

* Add zest.releaser[recommended] support ([`adc5b78`](

* Release 2.0a2 ([`cc6e34b`](

* Raise TypeError instead of AssertionError when non text is given to guessit API.

Thanks @diaoul ([`dfe0d10`](

* Release 2.0a1 ([`7010401`](

* Rename properties and update MIGRATION docs ([`eaee32e`](

* Fix pylint issue in benchmark test ([`224c398`](

* Use latest pip on TravisCI and use released version of rebulk ([`245fadf`](

* Add benchmark test ([`c62b45c`](

* Fix doctests for python 2.7 ([`125bfc1`](

* Fix issues related to str/unicode in python 2.7 ([`e02060c`](

* Add docs and better migration path ([`1ae6ca0`](

* Remame extension property to container with extension tag ([`ee57672`](

* Add mimetype property ([`aba054a`](

* Rename type series value to episode ([`b5cf22f`](

* bump rebulk version ([`b2c6917`](

* Add type property, more test cases and fixes ([`53c5522`](

* Add more episode tests along with small fixes ([`08e7c5e`](

* Add container property ([`9100d52`](

* Make python test works on an new environment ([`dfbfc0c`](

* Guess version property when version is detached from episodeNumber ([`938b851`](

* Add more series tests ([`6e4cc68`](

* Add more audioCodec tests ([`7fb7da7`](

* Fix possible NoneType error ([`158eaf3`](

* Add + as a separator for episodeNumber list ([`af488c5`](

* Fix possible conflict between audioChannel and episodeNumber ([`5157b41`](

* Add more series test cases ([`b4d54aa`](

* Bump rebulk version ([`418a552`](

* Add expected-title option and refactor title/episodeTitle guessing ([`eeb5fe1`](

* Add better conflict solver between screenSize and episodeNumber/season ([`da98979`](

* Enhance country, language and title properties ([`69e7d11`](

* Add enhancements for episodeNumber guessing ([`ad60eb6`](

* Add better season and episode list and count ([`a480741`](

* Add episode version property ([`76e6d5a`](

* Fix title guessing when title is not the first available hole ([`289b92a`](

* Add support for weak-duplicates (the.100.109.hdtv-lol.mp4 case) ([`876cb68`](

* Add season_year post_processor to add year property when season value is a valid year. ([`14e8444`](

* Add range support for episodeNumber (- character as range) ([`b7a7c2d`](

* Add equivalent holes post_processor to include equivalent parts of guessed files in matches list and retrieve best title case. ([`ab700ec`](

* Upgrade babelfish to 0.5.5 and add country property support ([`f98c8b7`](

* Add better anime releaseGroup support ([`a1d41c8`](

* Bump rebulk version ([`419c116`](

* Use more toposort for rebulk rules and fix issues with title ([`2a0aca1`](

* Use latest rebulk Rule API ([`9131068`](

* Simplify language prefix/suffix rules ([`496c508`](

* Avoid using Rebulk Match object in functionnal patterns ([`0a733e4`](

* Add crc32 property ([`dd232c8`](

* Add episodeNumber list support ([`09b7888`](

* Add remove_ambiguous post processor and support better guessing of titles ([`97491e4`](

* Add more episodes patterns and properties support ([`140f2fa`](

* Add alternativeTitle property ([`5c63b96`](

* Convert language to subtitleLanguage when extension is a subtitle ([`ce169dd`](

* Add private_parent=True to episodes regex to fix various issues ([`dabaa7f`](

* Add more season/episodeNumber support ([`485ac71`](

* Add weak episodeNumber/season patterns ([`94c6700`](

* Add reorder title feature ([`49f7971`](

* Update to latest Rebulk changes ([`01c7751`](

* Add name-only option ([`42aceda`](

* Keep ",:;-" when cleaning value ([`c318455`](

* Solve conflict with 'HQ' pattern from audioProfile and other properties ([`df56d69`](

* Enhance subtitleLanguage guessing with groups ([`3c7bfa9`](

* Add scr to excluded word for language guessing ([`4614116`](

* Enhance title/language guessing ([`7ae2bb4`](

* Update conflict_solver Rebulk API ([`66064aa`](

* Keep ",;" when cleaning value and ensure bonus is surrounded by separators ([`2938574`](

* Enhance title/language ([`aa518c2`](

* Add idNumber property and enhance audio properties conditions ([`1636ade`](

* Ignore language if included in title ([`ec8e429`](

* Add videoApi property ([`8d50a10`](

* Enhance cleanup formatter to remove duplicate spaces ([`62bca67`](

* Enhance year property when multiple match are found ([`331105c`](

* Add more tests for part property ([`ff7e1a4`](

* Optimize imports ([`f4fb6a8`](

* Refactor rules module ([`6bc2e95`](

* Fix bonusNumber and filmNumber properties ([`bbd7375`](

* Add part property support ([`729ca40`](

* Add filmSeries and filmNumber properties ([`149e344`](

* Fix an issue in bonus property ([`0ac46cf`](

* Add bonusNumber and bonusTitle properties ([`d935606`](

* Add audioChannels property ([`ae700f2`](

* Enhance code coverage ([`29ad170`](

* Fix parse_options for python 2.7 ([`4191b42`](

* Fix pylint issues ([`3c0c2b4`](

* Add more movies tests ([`9e73e69`](

* Fix language tests ([`26aad3a`](

* Fix releaseGroup to remove forbidden words at end of match ([`e2d9afc`](

* Add babelfish Contry/Language support in json dumps ([`2637723`](

* Let dot belong to extension ([`9435bf9`](

* Add command line support and relax releaseGroup guessing ([`b5de364`](

* Add date property ([`2d68c75`](

* Add unicode support for python 2.7 ([`ca3cfe7`](

* Fix pylint issue ([`88b29f2`](

* If multiple title are found, prefer one where filepart contains year ([`d4d57bc`](

* Fix cdNumberTotal property ([`cf01e1f`](

* Ignore an anime releaseGroup if scene releaseGroup is found ([`6ef3f7b`](

* Sort the longuer marker before when matches count is equal ([`9dff7d3`](

* Enhance releaseGroup guessing ([`881fd3e`](

* Fix an issue in format validation rule ([`7deae1a`](

* Add support of entries where most information are not in filename. ([`b12682e`](

* Add more movies tests ([`d8f6338`](

* Add cdNumber and cdNumberTotal properties ([`cfe5102`](

* Add edition property ([`3a62d43`](

* Add other and propertCount properties ([`a25e828`](

* Add videoProfile and audioProfile properties ([`88c46ba`](

* Enhance releaseGroup guessing ([`de3acb1`](

* Enhance language and subtitleLanguage guessing ([`9db5127`](

* Enhance releaseGroup guessing ([`14374bd`](

* Fix issue in subtitle suffix support ([`8b7cc69`](

* Add groups markers (...), [...] and {...} ([`4be239b`](

* Add language and subtitleLanguage property ([`d369634`](

* Add episodeTitle property ([`8d4dbcd`](

* Add releaseGroup property as Rule ([`6bd3864`](

* Use Rule class for title property ([`abeda01`](

* Fix badges to point to 2.x branch build ([`20e4280`](

* Add title property ([`7a545ad`](

* Add extension patterns ([`40106df`](

* Add path markers and give priority on last path element ([`e90225f`](

* Add format, screenSize, videoCodec, audioCodec, website and year patterns ([`9e640e9`](

* Add test for __main__ entry point ([`95a759d`](

* Add HuBoard link ([`9b988a7`](

* Initial commit ([`dab80bd`](

Project details

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

guessit-3.8.0.tar.gz (271.3 kB view hashes)

Uploaded Source

Built Distribution

guessit-3.8.0-py3-none-any.whl (206.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page