Skip to content

Example muxes without config

Batch Mux script for a private cyberpunk mux

Script
from muxtools import Setup, GlobSearch, Premux, SubFile, mux, TmdbConfig

for i in range(1, 11):
    # Basic Setup for every episode
    setup = Setup(
        f"{i:02d}",  # Format to have padded zeros
        None,
        show_name="Cyberpunk Edgerunners",
        out_dir=R"D:\Compings\muxed",
        mkv_title_naming=R"$show$ - S01E$ep$ - $title$",
        out_name=R"[Styx] $show$ - S01E$ep$ [WEB 1080p HEVC]",
        clean_work_dirs=True,
    )
    bobbington = GlobSearch(f"*choom* - {setup.episode}*.mkv", dir=R"D:\Compings\b")
    nfweb = GlobSearch(f"*Cyberpunk Edgerunners - {setup.episode}*GerEngSub*.mkv", dir=R"D:\Compings\b")

    premux = Premux(
        bobbington,
        keep_attachments=False,
        subtitles=None,
        mkvmerge_args='--no-global-tags --track-name 0:"choom/MTBB Encode" --track-name 1:"Japanese 5.1 (Netflix)"',
    )

    audios = Premux(
        nfweb,
        video=None,
        audio=[0, 1],
        subtitles=None,
        keep_attachments=False,
        mkvmerge_args='--no-global-tags --no-chapters --track-name 1:"German 5.1 (Netflix)" --track-name 2:"English 5.1 (Netflix)"',
    )
    sub_en = SubFile.from_mkv(bobbington.paths, 0).clean_styles()
    sub_ger = SubFile.from_mkv(nfweb.paths, 1).clean_styles()
    sub_ger_signs = SubFile.from_mkv(nfweb.paths, 0).clean_styles()

    # Each call returns all fonts collected into the workdir so far.
    sub_ger_signs.collect_fonts()
    sub_en.collect_fonts()
    fonts = sub_ger.collect_fonts()

    mux(
        premux,
        audios,
        sub_en.to_track("English (whomst modified)"),
        sub_ger.to_track("German (Netflix modified)", "ger", False, False),
        sub_ger_signs.to_track("German Signs & Songs (Netflix)", "ger", False, True),
        *fonts,
        tmdb=TmdbConfig(105248, write_title=True, write_ids=True),
    )

[FLE] The Fragrant Flower Blooms with Dignity

Script
from muxtools import (
    Setup,
    GlobSearch,
    Premux,
    SubFile,
    mux,
    TmdbConfig,
    Chapters,
    VideoTrack,
    TimeScale,
)

ep = input("Enter episode number or range: ").split()

if len(ep) == 1:
    start = end = int(ep[0])
else:
    start, end = map(int, ep)

for i in range(start, end + 1):
    setup = Setup(
        f"{i:02d}",  # Format to have padded zeros
        None,
        show_name="The Fragrant Flower Blooms with Dignity",
        work_dir=R"F:\Sub Projects\The-Fragrant-Flower-Blooms-with-Dignity\Temp",
        out_dir=R"F:\Sub Projects\The-Fragrant-Flower-Blooms-with-Dignity",
        mkv_title_naming=R"$show$ - S01E$ep$ - $title$",
        out_name=R"[FLE] The Fragrant Flower Blooms with Dignity - S01E$ep$ (WEB 1080p HEVC AAC) [$crc32$]",
        clean_work_dirs=True,
    )

    setup.set_default_sub_timesource("24000/1001", timescale=TimeScale.MKV)

    video = GlobSearch(rf"E{setup.episode}*.265", dir=rf"F:\Sub Projects\The-Fragrant-Flower-Blooms-with-Dignity\E{setup.episode}")
    audio = GlobSearch(rf"*S01E{setup.episode}*.mkv", dir=r"F:\Sub Projects\The-Fragrant-Flower-Blooms-with-Dignity\Videos")
    dialogues = GlobSearch(r"*Dialogues.ass", dir=rf"F:\Sub Projects\The-Fragrant-Flower-Blooms-with-Dignity\E{setup.episode}")
    signs = GlobSearch(r"*Signs.ass", dir=rf"F:\Sub Projects\The-Fragrant-Flower-Blooms-with-Dignity\E{setup.episode}")
    songs = ["./Songs/OP.ass", "./Songs/ED.ass"]

    print(rf"Muxing Started for S01E{setup.episode}")

    encode = VideoTrack(video, "WEB / HEVC / 10 bits / 1080p / FLE", lang="und")

    jpn = Premux(
        audio,
        keep_attachments=False,
        mkvmerge_args='--no-track-tags --no-global-tags --no-video --no-subtitles --no-chapters --language 1:ja --track-name 1:"Japanese / AAC / 2.0 / Netflix"',
    )

    TS = (
        SubFile([signs.paths[0]])
        .merge(songs[0], "opsync", no_error=True, use_actor_field=True)
        .merge(songs[1], "edsync", no_error=True, use_actor_field=True)
        .clean_styles()
        .clean_comments()
        .clean_garbage()
        .clean_extradata()
    )
    FLE = SubFile(dialogues.paths[0]).merge(TS).clean_styles().clean_comments().clean_garbage().clean_extradata()
    fonts = FLE.collect_fonts()
    chap = Chapters.from_sub(signs)

    mux(
        encode,
        jpn,
        FLE.to_track(r"Full Subtitles / English / ASS / FLE"),
        chap,
        *fonts,
        tmdb=TmdbConfig(id=271607, season=1, write_title=True, write_ids=True),
        quiet=True,
    )