Package: chapter-converter
chapter_converterConvert between several different video chapter file formats with ease.FeaturesAuto input format detection: including various chapter files and video files with chapters (.mkvand.mp4)Auto input encoding detectionCan specify output format and filenameClipboard support (input and output) for editing purposesPrerequisitesMKVToolNixbinariesmkvextractandmkvmerge. You can download it viaOfficial website:https://mkvtoolnix.download/downloads.htmlArch Linuxpacman -S mkvtoolnix-cliDebian / Ubuntuapt install mkvtoolnixopenSUSE / SLESzypper in mkvtoolnixInstallpip install -U chapter_converteror from source:pip install -U git+https://github.com/fireattack/chapter_converterUsageCLI script is namedchap. Or you can usepython -m chapter_converter.usage: chap [-h] [-f {simple,pot,ogm,tab,xml}] [--mp4-charset MP4_CHARSET] [--charset CHARSET] [-o OUTPUT] [-c] [--lang LANG] [--yes] [filename]

positional arguments:
  filename              input filename

options:
  -h, --help            show this help message and exit
  -f {simple,pot,ogm,tab,xml}, --format {simple,pot,ogm,tab,xml}
                        output format (default: pot)
  --mp4-charset MP4_CHARSET
                        input chapter charset for mp4 file, since it can't be auto detected (default: utf-8)
  --charset CHARSET     output file charset. XML output will always be utf-8-sig (default: utf-8-sig)
  -o OUTPUT, --output OUTPUT
                        output filename (default: original_filename.format[.txt])
  -c, --clipboard       automatically process text in clipboard and save it back.
  --lang LANG           manually set language tag for XML chapter.
  --yes, -y             automatically overwrite existing file.If you prefer a single file than a package, you can just downloadchapter_converter.pyinchapter_converter/and use it directly (chapter_converter.py -h).A simple GUI is also provided as-is by runningchapgui. You need to install modulegooeyinpipmanually to make it work. Seemy commentsfor some caveats.As a Python module:fromchapter_converterimportchapter_converterchapter_converter.main('input.pbf','-o','output.xml')NoteOutput by default saved as UTF-8-BOM for max compatibility on Windows. You can change it by passing in--charsetargument.When-cis used, you can still pass in a file as input instead.When-cis used, you can still pass in an output filename (using-oand/or-f) as output instead.Supported formatsSee also: example files inexamples/.MKV and MP4 video containers (inputs only)Guessed by suffix. Not idiot-proof, please only feed in file with chapters.Simple format (simple)I made it up.Format:Each line:{timestamp},{title}Example:0:17:02.148,Title1
0:42:19.976,Title2
0:58:10.114,Title3
...Tab format (tab)Similar to Simple, but separated by tab instead of comma.Format:Each line:{timestamp}	{title}Example:0:17:02.148	Title1
0:42:19.976	Title2
0:58:10.114	Title3
...OGM format (ogm)Can be recognized by common video tools, such asMKVToolNix.Format:Odd lines:CHAPTER{i:02}={timestamp}Even lines:CHAPTER{i:02}NAME={tilte}istarts at 1.Example:CHAPTER01=0:17:02.148
CHAPTER01NAME=Title1
CHAPTER02=0:42:19.976
CHAPTER02NAME=Title2
CHAPTER03=0:58:10.114
...MediaInfo format (inputs only)The wayMediaInfopresents chapter information in text form. Input only. Supports both with or without the "Menu" line.Format:Each line:{timestamp}\s+: ({two_letter_lang_code})?:{title}Example:Menu
00:00:00.000                : en:Contours
00:02:49.624                : en:From the Sea
00:08:41.374                : en:Bread and Wine
00:12:18.041                : en:Faceless
...XML format (xml)XML chapter format defined byMatroska specification.PotPlayerBookmark format (.pbf) (pot)A format PotPlayer uses for its bookmarks. If you put the file together with the video file (same name except extension, just like any external resources), it will be recognized by PotPlayer just like internal chapters - you can use "H" to view and select, and they will show up as markers on navigation bar too:It is not ideal, but it's the closest thing to "external chapter file" to my knowledge.Format:First line:[Bookmark]Other lines:{i}={timestamp_in_ms}*{title}*{some_optional_hash_for_pot_internal_usage}istarts at 0.Example:[Bookmark]
0=1022148*Title1*
1=2539976*Titile2*
...