Initial commit

This commit is contained in:
jkortis committed 2026-09-30 23:06:14 -04:00
commit 1d235d30e7
58 files changed
+19693

No files matched your search

+164
View File
@@ -0,0 +1,164 @@
from pathlib import Path
import pytest
from media_sorter.tokenizer import FilenameTokenizer
@pytest.fixture
def tokenizer():
return FilenameTokenizer()
def test_tv_show_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("Breaking.Bad.S05E14.Ozymandias.1080p.BluRay.x264-ROVERS.mkv"))
assert tokens.is_episodic is True
assert tokens.title == "Breaking Bad"
assert tokens.season == 5
assert tokens.episode == 14
assert tokens.episode_title == "Ozymandias"
assert tokens.resolution == "1080p"
assert tokens.source == "BLURAY"
assert tokens.video_codec == "x264"
assert tokens.group == "ROVERS"
def test_tv_multi_episode(tokenizer):
tokens = tokenizer.tokenize(Path("Stranger.Things.S04E01-E02.Chapter.One.720p.WEB-DL.mkv"))
assert tokens.is_episodic is True
assert tokens.season == 4
assert tokens.episode == 1
assert tokens.multi_episodes == [1, 2]
assert tokens.resolution == "720p"
def test_anime_fansub_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("[SubsPlease] Frieren - Beyond Journey's End - 01 (1080p) [ABCD1234].mkv"))
assert tokens.is_anime is True
assert tokens.is_episodic is True
assert tokens.group == "SubsPlease"
assert "Frieren" in tokens.title
assert tokens.episode == 1
assert tokens.season == 1
def test_movie_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("Inception.2010.2160p.UHD.Remux.HEVC.TrueHD.Atmos-FraMeSToR.mkv"))
assert tokens.is_episodic is False
assert tokens.title == "Inception"
assert tokens.year == 2010
assert tokens.resolution == "2160p"
assert tokens.video_codec == "hevc"
assert tokens.audio_codec == "TRUEHD"
def test_music_track_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("/Music/Daft Punk - Discovery/02 - One More Time.flac"))
assert tokens.is_music is True
assert tokens.track == 2
assert tokens.title == "One More Time"
assert tokens.artist == "Daft Punk"
assert tokens.album == "Discovery"
def test_camera_and_date_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("IMG_20240815_142301.jpg"))
assert tokens.is_photo_or_home_video is True
assert tokens.date_stamp == "2024-08-15"
assert tokens.year == 2024
def test_podcast_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("The Daily - 2026-03-12 - The Sunday Read.mp3"))
assert tokens.artist == "The Daily"
assert tokens.year == 2026
assert tokens.date_stamp == "2026-03-12"
assert tokens.title == "The Sunday Read"
def test_movie_with_dimensions_not_episodic(tokenizer):
tokens = tokenizer.tokenize(Path("Interstellar.1920x1080.mkv"))
assert tokens.is_episodic is False
assert tokens.season is None
assert tokens.episode is None
assert tokens.resolution == "1080p"
assert "Interstellar" in tokens.title
tokens4k = tokenizer.tokenize(Path("Dune.Part.Two.3840x2160.mkv"))
assert tokens4k.is_episodic is False
assert tokens4k.season is None
assert tokens4k.episode is None
assert tokens4k.resolution == "2160p"
def test_movie_bracket_group_year_not_anime(tokenizer):
tokens = tokenizer.tokenize(Path("[YTS.MX] Movie Title - 2024 [1080p].mkv"))
assert tokens.is_anime is False
assert tokens.is_episodic is False
assert tokens.year == 2024
assert tokens.title == "Movie Title"
def test_standalone_episode_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("Naruto Episode 207 The Supposed Sealed Ability.mkv"))
assert tokens.is_episodic is True
assert tokens.title == "Naruto"
assert tokens.season == 1
assert tokens.episode == 207
assert tokens.episode_title == "The Supposed Sealed Ability"
def test_anime_fansub_without_group_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("BLEACH꞉ Sennen Kessen-hen - 27 E89717B7].mkv"))
assert tokens.is_anime is True
assert tokens.is_episodic is True
assert "BLEACH" in tokens.title
assert tokens.episode == 27
assert tokens.season == 1
def test_anime_ending_opening_tokenization(tokenizer):
tokens = tokenizer.tokenize(Path("[A&C] Sword Art Online Alicization S03ED01 [BDrip 1080p] [09F0EA6C].mkv"))
assert tokens.is_episodic is True
assert "Sword Art Online" in tokens.title
assert tokens.season == 3
assert tokens.episode == 1
def test_one_piece_tokenization_varieties(tokenizer):
# 1. Anime Time release with episode title and ancestor season folder
p1 = Path("One Piece (0001-1071+Movies+Specials)/Season 08 - Water Seven (229-263)/[Anime Time] One Piece - 0233 - Pirate Abduction Incident! A Pirate Ship That Can Only Await Its End! [1080p][HEVC 10bit x265][AAC].mkv")
t1 = tokenizer.tokenize(p1)
assert t1.title == "One Piece"
assert t1.season == 8
assert t1.episode == 233
assert "Pirate Abduction" in t1.episode_title
assert t1.group == "Anime Time"
# 2. Adjacent episode in same folder to ensure natural order
p2 = Path("One Piece (0001-1071+Movies+Specials)/Season 08 - Water Seven (229-263)/[Anime Time] One Piece - 0232 - Galley-La Company! A Grand Sight Dock 1!.mkv")
t2 = tokenizer.tokenize(p2)
assert t2.title == "One Piece"
assert t2.season == 8
assert t2.episode == 232
# 3. 4-digit episode S01E1171 WEB-DL
p3 = Path("One.Piece.S01E1171.1080p.CR.WEB-DL.AAC2.0.H.264.mkv")
t3 = tokenizer.tokenize(p3)
assert t3.title == "One Piece"
assert t3.season == 1
assert t3.episode == 1171
# 4. HatSubs release with 4-digit episode and CRC
p4 = Path("[HatSubs] One Piece 1073 (BD 1080p 10-bit Opus) v2 [194B3FBA].mkv")
t4 = tokenizer.tokenize(p4)
assert t4.title == "One Piece"
assert t4.episode == 1073
assert t4.crc32 == "194B3FBA"
# 5. Kaerizaki-Fansub underscore release
p5 = Path("[Kaerizaki-Fansub]_One_Piece_1076_[VOSTFR][FHD_1920x1080].mp4")
t5 = tokenizer.tokenize(p5)
assert t5.title == "One Piece"
assert t5.episode == 1076