{"id":20687860,"url":"https://github.com/cribbles/discogs-shuffle","last_synced_at":"2026-04-20T14:01:45.474Z","repository":{"id":57490282,"uuid":"173377952","full_name":"cribbles/discogs-shuffle","owner":"cribbles","description":"🎧 sync and shuffle Discogs collections","archived":false,"fork":false,"pushed_at":"2021-09-23T20:08:48.000Z","size":9562,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-16T08:16:55.182Z","etag":null,"topics":["discogs","discogs-client","ecto","elixir","sqlite"],"latest_commit_sha":null,"homepage":"https://hexdocs.pm/discogs","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cribbles.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}},"created_at":"2019-03-01T22:46:54.000Z","updated_at":"2023-05-18T10:03:30.000Z","dependencies_parsed_at":"2022-09-19T11:22:23.791Z","dependency_job_id":null,"html_url":"https://github.com/cribbles/discogs-shuffle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cribbles/discogs-shuffle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cribbles%2Fdiscogs-shuffle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cribbles%2Fdiscogs-shuffle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cribbles%2Fdiscogs-shuffle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cribbles%2Fdiscogs-shuffle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cribbles","download_url":"https://codeload.github.com/cribbles/discogs-shuffle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cribbles%2Fdiscogs-shuffle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32050451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["discogs","discogs-client","ecto","elixir","sqlite"],"created_at":"2024-11-16T22:58:29.172Z","updated_at":"2026-04-20T14:01:45.451Z","avatar_url":"https://github.com/cribbles.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# discogs_shuffle\n\nThis is an Elixir library that stores [Discogs](https://discogs.com) user\ncollections to a local database and allows interaction via\n[Ecto](https://github.com/elixir-ecto/ecto) wrappers.\n\n## Installation\n\n```sh\nmake build\n```\n\n## Usage\n\n```sh\n./discogs\n```\n\n```sh\nUsage: discogs [options]\n    --sync USER             Sync a user collection\n    --shuffle USER \u003cN=30\u003e   Pick n random records from a user collection\n```\n\n## Tests\n\n```sh\nmake test-unit\n```\n\n## Notes\n\nYou might find this library useful if you are an Elixir developer who needs to\nwork with the Discogs API in some form.\n\nIt includes Ecto mappings for the Discogs `User -\u003e Release -\u003e Record` and\n`Artist -\u003e Release -\u003e Record` relationships, and could be easily extended.\n\nI kept the Ecto model structs quite slim, since I originally wrote this repo for\na fairly simple use-case (creating a shuffled sample of records to experiment\nwith aleatory DJ mixes).\n\nHere are a few more reasons this library might be of interest to Elixir\ndevelopers:\n\n- as an example of a tested Ecto library that does not include Phoenix\n- as an example of a library using the uncommon\n  [`sqlite_ecto2`](https://github.com/elixir-sqlite/sqlite_ecto2) adapter\n- as an example of a CLI app making very minimal use of Elixir's\n  [OptionParser](https://hexdocs.pm/elixir/OptionParser.html)\n\n## Contributing\n\nThis project uses [credo](http://credo-ci.org/) and\n[formatter](https://hexdocs.pm/mix/master/Mix.Tasks.Format.html) for style\nconsistency. Please run\n\n```sh\nmix format\n```\n\nand\n\n```sh\nmix credo -a --strict\n```\n\nbefore committing changes.\n\n### Guidelines\n\n#### Testing\n\nAll public functions for the Ecto models should be tested exhaustively,\nincluding `changeset/2`.\n\n#### Documentation\n\nAll public modules and their functions should be documented with the\nappropriate typespecs.\n\nThis library uses\n[ExDoc](https://hexdocs.pm/elixir/1.12/writing-documentation.html)\nconventions for documentation. You can run\n\n```sh\nmix docs\n```\n\nto build the docs and open them in your local environment.\n\nTypespecs are validated through\n[dialyzer](https://github.com/jeremyjh/dialyxir).\n\n```sh\nmix dialyzer\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcribbles%2Fdiscogs-shuffle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcribbles%2Fdiscogs-shuffle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcribbles%2Fdiscogs-shuffle/lists"}