Skip to content

[Bug] Decimal / fractional version titles greedily parsed as broadcast dates or audio channels (forcing type: episode) #963

Description

@zotabee

Summary

When a release name contains decimal versioning or fractional numbering (such as 2.5.2007, 3.0.1.11, or 2.0.2025), GuessIt's property transformers greedily match these numeric sequences as calendar dates or audio channels.

This leads to several extraction errors:

  1. False Date Generation & Forced type: episode: Fractional numbers preceding a year (e.g., 2.5.2007 -> 2007-05-02; 0.1.11 -> 2000-11-01) trigger broadcast TV date heuristics, overriding standalone feature films into episodes and consuming valid release years into episode_title.
  2. False Audio Channel Classification: Fractional title numbers like 2.0 in Ghost in the Shell 2.0 or M3GAN 2.0 are mistakenly extracted as audio_channels: "2.0" instead of remaining part of the title.

Minimal Reproducible Examples

from guessit import guessit
import json

samples = [
    # Pattern 1: Decimal sequel numbering parsed as calendar date (forces type: episode)
    "Jackass.2.5.2007.DVDRip.x264.AC3-DEEP",
    "Jackass.3.5.2011.Unrated.720p.BluRay.DD5.1.x264-EbP",
    "Jackass.4.5.2022.1080p.NF.WEB-DL.DDP5.1.x264-KHN",

    # Pattern 2: Multi-decimal version string parsed as date (forces type: episode)
    "Evangelion.3.0.1.11.Thrice.Upon.A.Time.2021.COMPLETE.UHD.BLURAY-NERV",

    # Pattern 3: Decimal title numbers parsed as audio channels
    "Ghost.In.The.Shell.2.0.2008.1080p.BluRay.x264-MOOVEE",
    "M3GAN.2.0.2025.UNRATED.1080p.BluRay.x264-ROEN"
]

for name in samples:
    print(f"\n--- Input: {name} ---")
    print(json.dumps(guessit(name), indent=2))

Actual Output

Example 1: Jackass.2.5.2007.DVDRip.x264.AC3-DEEP

  • 2.5.2007 is parsed as date: 2007-05-02.
{
  "title": "Jackass",
  "date": "2007-05-02",
  "source": "DVD",
  "other": "Rip",
  "video_codec": "H.264",
  "audio_codec": "Dolby Digital",
  "release_group": "DEEP",
  "type": "episode"
}

Example 2: Evangelion.3.0.1.11.Thrice.Upon.A.Time.2021.COMPLETE.UHD.BLURAY-NERV

  • 0.1.11 is parsed as year 00 (2000), month 11, day 01 (2000-11-01).
  • Release year 2021 is swallowed into episode_title.
{
  "title": "Evangelion 3",
  "date": "2000-11-01",
  "episode_title": "Thrice Upon A Time 2021",
  "other": "Complete",
  "source": "Ultra HD Blu-ray",
  "release_group": "NERV",
  "type": "episode"
}

Example 3: Ghost.In.The.Shell.2.0.2008.1080p.BluRay.x264-MOOVEE

  • 2.0 is parsed as audio_channels: "2.0" instead of title.
{
  "title": "Ghost In The Shell",
  "audio_channels": "2.0",
  "year": 2008,
  "screen_size": "1080p",
  "source": "Blu-ray",
  "video_codec": "H.264",
  "release_group": "MOOVEE",
  "type": "movie"
}

Example 4: M3GAN.2.0.2025.UNRATED.1080p.BluRay.x264-ROEN

  • 2.0 is parsed as audio_channels: "2.0" instead of title.
{
  "title": "M3GAN",
  "audio_channels": "2.0",
  "year": 2025,
  "edition": "Unrated",
  "screen_size": "1080p",
  "source": "Blu-ray",
  "video_codec": "H.264",
  "release_group": "ROEN",
  "type": "movie"
}

Expected Output

Example 1

{
  "title": "Jackass 2.5",
  "year": 2007,
  "source": "DVD",
  "other": "Rip",
  "video_codec": "H.264",
  "audio_codec": "Dolby Digital",
  "release_group": "DEEP",
  "type": "movie"
}

Example 2

{
  "title": "Evangelion 3.0+1.01 Thrice Upon A Time",
  "year": 2021,
  "other": "Complete",
  "source": "Ultra HD Blu-ray",
  "release_group": "NERV",
  "type": "movie"
}

Example 3

{
  "title": "Ghost In The Shell 2.0",
  "year": 2008,
  "screen_size": "1080p",
  "source": "Blu-ray",
  "video_codec": "H.264",
  "release_group": "MOOVEE",
  "type": "movie"
}

Example 4

{
  "title": "M3GAN 2.0",
  "year": 2025,
  "edition": "Unrated",
  "screen_size": "1080p",
  "source": "Blu-ray",
  "video_codec": "H.264",
  "release_group": "ROEN",
  "type": "movie"
}

Environment

  • GuessIt Version: 4.4.0
  • Python Version: 3.13
  • OS: Windows 11

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions