{"id":23104976,"url":"https://github.com/extrange/beet","last_synced_at":"2026-03-20T00:36:59.809Z","repository":{"id":268067959,"uuid":"903221850","full_name":"extrange/beet","owner":"extrange","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-06T17:32:45.000Z","size":669,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-06T18:37:47.456Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/extrange.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-14T03:13:57.000Z","updated_at":"2025-07-06T17:32:18.000Z","dependencies_parsed_at":"2024-12-14T04:19:02.687Z","dependency_job_id":"2bf40ba5-9cf3-4c7c-9c91-e99b389c0ab2","html_url":"https://github.com/extrange/beet","commit_stats":null,"previous_names":["extrange/beet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/extrange/beet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrange%2Fbeet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrange%2Fbeet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrange%2Fbeet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrange%2Fbeet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/extrange","download_url":"https://codeload.github.com/extrange/beet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/extrange%2Fbeet/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264446716,"owners_count":23609632,"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":[],"created_at":"2024-12-17T00:36:59.540Z","updated_at":"2026-02-02T20:39:38.772Z","avatar_url":"https://github.com/extrange.png","language":"Dockerfile","readme":"# Beet\n\nTo run, do `docker compose run beet \u003ccommand\u003e`. I've set up a `bash` alias.\n\n## Importing Music Files\n\n- Place files in `/mnt/storage/Music - Import`\n- Run `beet import /import` (aliased to the above `docker` command)\n- If you want to tag them to a playlist, add an appropriate tag to the `comments` field (via `beet modify \u003cquery\u003e comments=\u003cvalue\u003e`) after importing\n- If a field is unknown, when editing, remove it instead of giving the empty string `''`. This prevents Navidrome from listing it\n- Use the GUI tag editor `kid3` to mark tracks as toprated (in the `comments` field)\n\nNote: Navidrome will not detect `.mp4` containers\n\n## Modifying metadata for specific paths in the library\n\n`beet mod /path/to/album field='value'`\n\n## Move files to correct locations\n\n`beet update` and `beet move` don't seem to move files in the library. I manually move them out, do `beet update` (which deletes them from the database), then reimport them again.\n\nBeet has the following catch-all folders:\n\n- `compilations`: check that songs/albums don't get sent here accidentally\n- `_`: unknown albums\n- `Non-Album`: singleton tracks\n- `Various Artists`\n\n## Check files in library which are not in database\n\n## Import Rules\n\n- No/unknown artist/album: set as `''` (**not just blank**, that will create a folder with the name `None`)\n- Always import songs as albums, if available, even if incomplete (i.e. never as singletons/`T`)\n- Sometimes songs seemingly not part of any album might be singles (e.g. MaxKoMusic)\n\n## Importing an existing library with playlists\n\nThe best way (after trying multiple methods) is:\n\n- Make a copy of the whole library\n- Move files in playlists to their named folders (unfortunately, this won't work with files which are in multiple playlists)\n- Do `beet import -A --set=comments=\u003cplaylistname\u003e \u003cplaylistdir\u003e` for each playlist directory. This tags the files (in the `comment` field) with the playlist they are in, so they can be queried later.\n- Import the rest of the library with `beet import -A \u003cmusiclibrary\u003e`.\n\n## Adding titles/subtitles to discs\n\nFor albums with many discs, you can add the name of the disc by adding a `TSST` field to all tracks in the same disc.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fextrange%2Fbeet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fextrange%2Fbeet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fextrange%2Fbeet/lists"}