{"id":29790952,"url":"https://github.com/metabrainz/artwork-redirect","last_synced_at":"2025-07-28T00:13:21.081Z","repository":{"id":2309362,"uuid":"3268885","full_name":"metabrainz/artwork-redirect","owner":"metabrainz","description":"URL redirect service for the coverartarchive.org","archived":false,"fork":false,"pushed_at":"2024-05-22T10:40:00.000Z","size":466,"stargazers_count":39,"open_issues_count":6,"forks_count":13,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-05-22T11:46:19.202Z","etag":null,"topics":["cover-art","internet-archive","python"],"latest_commit_sha":null,"homepage":"https://coverartarchive.org","language":"Python","has_issues":false,"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/metabrainz.png","metadata":{"funding":{"custom":["https://metabrainz.org/donate"],"github":["metabrainz"]},"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2012-01-25T21:44:53.000Z","updated_at":"2024-07-06T14:50:51.958Z","dependencies_parsed_at":"2023-07-05T17:15:44.625Z","dependency_job_id":"ef71b474-e329-48a2-9e35-a44529201cb7","html_url":"https://github.com/metabrainz/artwork-redirect","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/metabrainz/artwork-redirect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metabrainz%2Fartwork-redirect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metabrainz%2Fartwork-redirect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metabrainz%2Fartwork-redirect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metabrainz%2Fartwork-redirect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metabrainz","download_url":"https://codeload.github.com/metabrainz/artwork-redirect/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metabrainz%2Fartwork-redirect/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267442923,"owners_count":24087897,"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","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cover-art","internet-archive","python"],"created_at":"2025-07-28T00:13:19.832Z","updated_at":"2025-07-28T00:13:21.071Z","avatar_url":"https://github.com/metabrainz.png","language":"Python","funding_links":["https://metabrainz.org/donate","https://github.com/sponsors/metabrainz"],"categories":[],"sub_categories":[],"readme":"Artwork URL redirect service\n============================\n\nThis service will redirect from `coverartarchive.org` and `eventartarchive.org` URLs\nto `archive.org` URLs, taking into account MBID redirects caused by release and event merges.\n\nFor example, this URL:\n\n    https://coverartarchive.org/release/5b07fe49-39a9-47a6-97b3-e5005992fb2a/front.jpg\n\nshould redirect to:\n\n    https://archive.org/download/mbid-5b07fe49-39a9-47a6-97b3-e5005992fb2a/mbid-5b07fe49-39a9-47a6-97b3-e5005992fb2a-2270157148.jpg\n\n## Development setup\n\nThere are two ways of setting up the server: with and without Docker.\nThe first option might be easier if you're just getting started. The second\nrequires having a MusicBrainz database set up on your machine.\n\n### Option 1: Docker-based\n\nMake sure you have [Docker](https://www.docker.com/) and\n[Docker Compose](https://github.com/docker/compose) installed.\nTo start the development server and its dependencies, run:\n\n    $ docker-compose -f docker/docker-compose.dev.yml up --build\n\nAfter all Docker images start you should be able to access the web server at `localhost:8080`.\n\n**Note:** Keep in mind that any changes that you make won't show up until the\nserver container is recreated. To do that you can simply stop the server\n(Ctrl + C) and run the command above again.\n\n### Option 2: Manual\n\nartwork-redirect works with *Python 3.13+*, so make sure that you have it\ninstalled. Create a\n[virtual environment](https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments)\nif necessary.\n\nInstall all required packages using [pip](https://pip.pypa.io):\n\n    $ pip install -r requirements.txt\n\nCopy *config.default.ini* to *config.ini* and adjust configuration values.\nYou'd want to set up a connection to the instance of PostgreSQL with a\nMusicBrainz database that you should already have running.\n\nFinally, run the *artwork_redirect_server.py* script to start the server.\n\nAll logging goes to stdout, including stacktraces, so it's suitable for\nrunning inside of daemontools.\n\n## Testing\n\n*Currently some tests depend on an actual MusicBrainz database running in the background, so make sure to follow the setup process first.* We use\n[Pytest](https://pytest.org) as a test runner. All tests can be run with the\nfollowing command:\n\n    $ pytest\n\nThere are more ways to use Pytest (for example, to run only tests for a\nspecific module). Check their documentation to see what kinds of additional\noptions you have.\n\nWith **Docker** you can run all the tests like this:\n\n    $ docker-compose -f docker/docker-compose.test.yml up --build\n\nYou should see test results in the output.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetabrainz%2Fartwork-redirect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetabrainz%2Fartwork-redirect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetabrainz%2Fartwork-redirect/lists"}