{"id":16434589,"url":"https://github.com/dflock/muso","last_synced_at":"2026-05-13T08:30:56.396Z","repository":{"id":7903041,"uuid":"9284162","full_name":"dflock/muso","owner":"dflock","description":"Music Collection Auditor","archived":false,"fork":false,"pushed_at":"2013-04-19T23:35:44.000Z","size":280,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-10T15:25:03.067Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/dflock.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}},"created_at":"2013-04-07T22:14:38.000Z","updated_at":"2013-09-29T12:02:50.000Z","dependencies_parsed_at":"2022-09-07T05:50:14.508Z","dependency_job_id":null,"html_url":"https://github.com/dflock/muso","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dflock/muso","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflock%2Fmuso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflock%2Fmuso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflock%2Fmuso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflock%2Fmuso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dflock","download_url":"https://codeload.github.com/dflock/muso/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflock%2Fmuso/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32974429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T06:31:55.726Z","status":"ssl_error","status_checked_at":"2026-05-13T06:31:51.336Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-10-11T08:49:36.349Z","updated_at":"2026-05-13T08:30:56.379Z","avatar_url":"https://github.com/dflock.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Muso - Music Collection Auditor\n\nMuso will audit a large digital music collection and check for consistency and proper structure - in both metadata/tags and file \u0026 folder names.\n\nMuso currently defaults to scanning `~/Music` and outputs something like this to the console:\n\n![Currently looks something like this](./docs/images/Screenshot%20-%2013-04-11%20-%2005:57:15%20PM.png)\n\nThis script will do the following things, eventually:\n\n## Assume the following folder structures:\n\n\t~/Music/artist/album/\n\t~/Music/Compilations/album/\n\t~/Music/Soundtracks/album/\n\t~/Music/Classical/album/ ?\n\n\nReport folders that don't match.\n\n## Check for \u0026 report on:\n\nThese are things that you might want to fix:\n\n### Currently implemented:\n\n* Albums with '(YYYY)' in the folder name\n* Albums with '[cd|disk ??]' in the folder name\n* Albums with extraneous spaces in the folder name\n* Albums with folder names that Aren't Title Case\n* Extraneous .m3u, .info, .sfv, etc... files.\n* A folder.jpg in each album \u0026 artist folder, of at least 500x500px\n* The following filename structures:\n\t* Compilation Albums: `\u003calbum\u003e - \u003cdiscnumber\u003e.\u003ctracknumber\u003e - \u003cartist\u003e - \u003ctitle\u003e.ext`\n\t* Regular Albums:     `\u003cartist\u003e - \u003calbum\u003e - \u003cdiscnumber\u003e.\u003ctracknumber\u003e - \u003ctitle\u003e.ext`\n\n### Not implemented yet:\n\n* Albums with any of the following tags not the same for each track:\n\t* `album`, `albumartist`, `discnumber`, `genre`, `date`\n\t* `replaygain_album_gain`, `replaygain_album_peak`\n\t* `musicbrainz_albumid`, `musicbrainz_albumartistid`\n* Compilation albums that don't have albumartists set to 'Various Artists'\n* Tracks missing any of the following tags:\n\t* `album`, `artist`, `albumartist`, `tracknumber`, `discnumber`, `title`, `genre`, `date`\n\t* `replaygain_album_gain`, `replaygain_album_peak`, `replaygain_track_gain`, `replaygain_track_peak`\n\t* `musicbrainz_albumid`, `musicbrainz_albumartistid`, `musicbrainz_trackid`\n* Genre issues:\n\t* Genre's with small number of tracks/ one track/ablum in\n\t* Unknown genre's/malformed genre tags\n\n## Report on:\n\nThese are more statistical/informational:\n\n### Currently implemented:\n\n### Not implemented yet:\n\n* Total numbers of: tracks, albums, artists, genre's, total collection size in GB\n* Breakdown of file formats: mp3/flac/ogg/etc\n* Breakdown of bitrates for mp3/ogg/etc\n* Most/least represented:\n\t* Artist, Genre\n\n## TODO:\n\n* Should probably be more OO, yo.\n* Needs more renderers for output - maybe HTML, CSV. Should probably use Jinja or something for this?\n* Maybe need to think about multi-thread/process, to deal with slowness when reading tags?","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdflock%2Fmuso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdflock%2Fmuso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdflock%2Fmuso/lists"}