{"id":13825801,"url":"https://github.com/crisbal/album-splitter","last_synced_at":"2025-12-30T14:54:31.111Z","repository":{"id":3197842,"uuid":"42104061","full_name":"crisbal/album-splitter","owner":"crisbal","description":"Split single-file MP3 albums into separate tracks. Downloads from YouTube supported.","archived":false,"fork":false,"pushed_at":"2024-09-03T22:56:30.000Z","size":180,"stargazers_count":259,"open_issues_count":17,"forks_count":49,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-11-11T15:52:01.403Z","etag":null,"topics":["album","ffmpeg","file-management","file-manipulation","mp3","music","python","youtube","youtube-dl"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crisbal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2015-09-08T09:51:49.000Z","updated_at":"2024-11-09T22:34:11.000Z","dependencies_parsed_at":"2024-02-16T03:44:14.162Z","dependency_job_id":null,"html_url":"https://github.com/crisbal/album-splitter","commit_stats":{"total_commits":100,"total_committers":6,"mean_commits":"16.666666666666668","dds":0.24,"last_synced_commit":"28df018518e74bb7095340f0f4c53249edfabef3"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crisbal%2Falbum-splitter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crisbal%2Falbum-splitter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crisbal%2Falbum-splitter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crisbal%2Falbum-splitter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crisbal","download_url":"https://codeload.github.com/crisbal/album-splitter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225470631,"owners_count":17479366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["album","ffmpeg","file-management","file-manipulation","mp3","music","python","youtube","youtube-dl"],"created_at":"2024-08-04T09:01:27.317Z","updated_at":"2025-12-14T00:01:58.692Z","avatar_url":"https://github.com/crisbal.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# album-splitter\n\nUse **album-splitter** to automatically split any audio file (youtube videos, albums, podcasts, audiobooks, tapes, vinyls) into separate tracks starting from timestamps. album-splitter will also take care of tagging each part with the correct metadata. If your file is on YouTube, you can download it automatically.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src='.github/readme/hero.png' width='500px'\u003e\n\u003c/p\u003e\n\nCommon use cases covered:\n\n* music album on YouTube to download and split into tracks\n* full audiobook to split into chapters\n* music tape/cassette rip to split into tracks\n* digitalized vinyl to split into tracks\n\nAll you need is:\n\n* The file to split OR an URL of a YouTube video\n* Timestamps for each track, for example:\n    * `00:06 - When I Was Young`\n    * `03:35 Dogs Eating Dogs`\n\n## How to install\n\nFirst time only:\n\n+ Install `ffmpeg`\n    * Linux: `apt install ffmpeg` (or equivalent)\n    * Windows: [Official website](https://ffmpeg.org/)\n    * MacOS: [Official website](https://ffmpeg.org/) or `brew install ffmpeg`\n+ Install `Python 3` (a version newer or equal to `3.12` is required)\n    * Linux: `apt install python3` (or equivalent)\n    * Windows: [Official webiste](https://www.python.org/)\n    * MacOS: You should have it already installed or `brew install python3`\n+ Open your terminal app\n+ Create a virtual environment\n    * `python3 -m venv venv`\n+ Activate the virtual environment\n  * Linux/MacOS: `source venv/bin/activate`\n  * Windows: `./venv/Scripts/activate`\n+ Install album-splitter\n    * `python3 -m pip install album-splitter`\n+ You are ready to go!\n\nAfter the first time:\n\n+ Open your terminal app\n+ Activate the virtual environment\n  * Linux/MacOS: `source venv/bin/activate`\n  * Windows: `./venv/Scripts/activate`\n+ Optional, update `album-splitter`:\n    * `python3 -m pip install --upgrade album-splitter`\n+ You are ready to go!\n\n## Quick guide (from a local album)\n\n+ Create a copy of the `tracks.txt.example`, rename it as `tracks.txt`\n+ Open `tracks.txt`\n+ Add your tracks timestamps info in this format:\n    * `\u003cstart-time\u003e - \u003ctitle\u003e`\n    * A track on each line\n    * See *Examples* section, many other formats supported\n+ Run the script\n    * Basic usage: `python -m album_splitter --file \u003cpath/to/your/album.mp3\u003e`\n    * More in the *Examples* section\n+ Wait for the splitting process to complete\n+ You will find your tracks in the `./splits/` folder\n\n## Quick guide (from a YouTube video)\n\n+ Copy the YouTube URL of the album you want to download and split\n+ Find in the YouTube comments the tracklist with start-time and title\n+ Create a copy of the `tracks.txt.example`, rename it as `tracks.txt`\n+ Open `tracks.txt`\n+ Copy the tracklist in the file, adjusting for the supported formats\n    * `\u003cstart-time\u003e - \u003ctitle\u003e`\n    * A track on each line\n+ Run the script\n    * Basic usage: `python -m album_splitter -yt \u003cyoutube_url\u003e`\n    * More in the *Examples* section\n+ Wait for the Download and for the conversion\n+ Wait for the splitting process to complete\n+ You will find your tracks in the `./splits` folder\n\n## Output Format\n\nThe format of the output tracks is the same as the format of the input (same extension, same codec, same bitrate, ...), it simply does a copy of the codec. If you want to convert the output tracks to a different format, you can do this using additional tools.\n\nFor example to convert from `.wav` to `.mp3` you can use FFmpeg. [Here](https://stackoverflow.com/a/41207442) is how you can do it on Linux/macOS. [This](https://sourceforge.net/projects/ffmpeg-batch/) or [this](https://stackoverflow.com/a/56244203) might help for Windows instead. You can adopt such snippets to do other processing, such as changing the bitrate.\n\n## Examples\n\n### Downloading and splitting an album from YouTube\n\n+ This is the album I want to download and split: `https://www.youtube.com/watch?v=p_uqD4ng9hw`\n+ I find the tracklist in the comments and I copy that in `tracks.txt`, eventually adjusting it to a supported format for the tracklist\n+\n```\n00:06 - When I Was Young\n...\n14:48 - Pretty Little Girl\n```\n\n+ I execute `python -m album_splitter -yt \"https://www.youtube.com/watch?v=p_uqD4ng9hw\"` and wait\n+ Once the process is complete I open the `./splits` and I find all my songs:\n```\n    When I Was Young.mp3\n    ...\n    Pretty Little Girl.mp3\n```\nThese songs are already mp3-tagged with their track name and track number, but not their author or their album, since we have not specified it.\n\n### Splitting and tagging with Author and Album a local file\n\n+ I somehow got the file `DogsEatingDogsAlbum.mp3` that I want to split\n+ I set the tracklist in `tracks.txt` (same tracks as before)\n+ I execute `python -m album_splitter --file DogsEatingDogsAlbum.mp3 --album \"Dogs Eating Gods\" --artist \"blink-182\" --folder \"2012 - Dogs Eating Dogs\"`\n+ The software will execute, it will split the album, and mp3-tag each track with the author and the album name I passed as a parameter (as well as track number and name). It will also put the files in the folder passed as an argument (instead of putting them in the default `./splits` folder)\n\n## Supported formats for the track list (`tracks.txt`)\n\nThese are just some examples, find more in `tracks.txt.example`.\n\n* `[hh:]mm:ss - Title`\n* `Title - [hh:]mm:ss`\n* `Title [hh:]mm:ss`\n\nTo just see which data would be extracted from the tracklist use the option `--dry-run`.\n\n## Available Options\n\nTo get the full help and all the available options run `python -m album_splitter --help`\n\n## Need help?\n\nIf you need any help just [create an Issue](https://github.com/crisbal/album-splitter/issues) or send me an email at the address you can find on my profile.\n\n## Updating\n\nTo update to use the latest version of album-splitter you can use `python3 -m pip install --upgrade album-splitter`\n\n## Want to help?\n\nIf you want to improve the code and submit a pull request, please feel free to do so.\n\n## License\n\nGPL v3\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=crisbal/album-splitter\u0026type=Date)](https://star-history.com/#crisbal/album-splitter\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrisbal%2Falbum-splitter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrisbal%2Falbum-splitter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrisbal%2Falbum-splitter/lists"}