{"id":28718705,"url":"https://github.com/jwillikers/driverbrainz","last_synced_at":"2026-05-08T10:36:25.764Z","repository":{"id":297272524,"uuid":"996274191","full_name":"jwillikers/driverbrainz","owner":"jwillikers","description":"Automates time-consuming tasks contributing metadata to BookBrainz and MusicBrainz","archived":false,"fork":false,"pushed_at":"2026-05-03T00:23:30.000Z","size":310,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T02:26:05.440Z","etag":null,"topics":["bookbrainz","musicbrainz","nix","selenium"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jwillikers.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.adoc","code_of_conduct":"CODE_OF_CONDUCT.adoc","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-04T17:57:30.000Z","updated_at":"2026-02-14T19:26:00.000Z","dependencies_parsed_at":"2025-06-04T23:05:26.343Z","dependency_job_id":"008648d6-e793-4b79-9a50-46aef4affdca","html_url":"https://github.com/jwillikers/driverbrainz","commit_stats":null,"previous_names":["jwillikers/driverbrainz"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jwillikers/driverbrainz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwillikers%2Fdriverbrainz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwillikers%2Fdriverbrainz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwillikers%2Fdriverbrainz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwillikers%2Fdriverbrainz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jwillikers","download_url":"https://codeload.github.com/jwillikers/driverbrainz/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jwillikers%2Fdriverbrainz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32776951,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"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":["bookbrainz","musicbrainz","nix","selenium"],"created_at":"2025-06-15T05:03:22.009Z","updated_at":"2026-05-08T10:36:25.715Z","avatar_url":"https://github.com/jwillikers.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=  DriverBrainz\nJordan Williams \u003cjordan@jwillikers.com\u003e\n:experimental:\n:icons: font\nifdef::env-github[]\n:tip-caption: :bulb:\n:note-caption: :information_source:\n:important-caption: :heavy_exclamation_mark:\n:caution-caption: :fire:\n:warning-caption: :warning:\nendif::[]\n:Asciidoctor_: https://asciidoctor.org/[Asciidoctor]\n:BookBrainz: https://bookbrainz.org/[BookBrainz]\n:Firefox: https://www.mozilla.org/en-US/firefox/new/[Firefox]\n:just: https://github.com/casey/just[just]\n:Linux: https://www.linuxfoundation.org/[Linux]\n:MusicBrainz: https://musicbrainz.org/[MusicBrainz]\n:Nix: https://nixos.org/[Nix]\n:nix-direnv: https://github.com/nix-community/nix-direnv[nix-direnv]\n:pip-tools: https://github.com/jazzband/pip-tools[pip-tools]\n:pre-commit: https://github.com/nix-community/nixpkgs-update[pre-commit]\n:Python: https://www.python.org/[Python]\n:Selenium: https://www.selenium.dev/[Selenium]\n\nimage:https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json[Ruff, link=https://github.com/astral-sh/ruff]\n\nAutomates time-consuming tasks contributing metadata to {BookBrainz} and {MusicBrainz}.\nEver find it a hassle to add large series of works bo BookBrainz or MusicBrainz?\nThis project tries to make it easier to automate such things.\n\n== How it Works\n\nDriverBrainz is just a Python project that drives a web browser using {Selenium} to automate adding series of works to BookBrainz and MusicBrainz.\n\n== Getting Started\n\nThis project uses Nix to manage all of the Python dependencies as well as the Selenium webdriver.\nThe instructions here are intended for Linux\n\n. Install an implementation of {Nix}, such as https://lix.systems[Lix] used here.\n+\n[,sh]\n----\ncurl -sSf -L https://install.lix.systems/lix | sh -s -- install\n----\n\n. Clone this project's repository.\n+\n[,sh]\n----\ngit clone https://github.com/jwillikers/driverbrainz.git\n----\n\n. Change into the project directory.\n+\n[,sh]\n----\ncd driverbrainz\n----\n\n. Update the `data.json` file with the details for the series.\n\n. Set the environment variable `MUSICBRAINZ_USERNAME` to your user's MusicBrainz username.\nThe following demonstrates this for the fish shell.\n+\n[,sh]\n----\nset --export --universal MUSICBRAINZ_USERNAME 'my-username'\n----\n\n. Set the environment variable `MUSICBRAINZ_PASSWORD` to your user's MusicBrainz password.\nThe following demonstrates this for the fish shell.\n+\n[,sh]\n----\nset --export --universal MUSICBRAINZ_PASSWORD '****'\n----\n\n. Run DriverBrainz from the Nix development environment.\nUse `--range-start` and `--range-end` to define a range of integers correlating to each chapter or volume in the series.\nAlternatively, define individual indices in a list using the `range` key in the `data.json` file.\n+\n[,sh]\n----\nnix develop --command ./driverbrainz.py --range-start 1 --range-end 200\n----\n\n== Development\n\nI've added development environment and some helpers using {Nix}.\nThe `nix develop` command can be used to enter or run commands in an environment with all of the necessary dependencies.\nFor convenience, direnv can be used to automatically load this environment when entering the project's directory.\nThe https://marketplace.visualstudio.com/items?itemName=mkhl.direnv[mkhl.direnv VSCode extension] integrates this environment in VSCode for development.\nNix also generates the configuration for {pre-commit}, which automates formatting and various checks when committing changes.\nFollow the instructions here to set up your development environment using Nix.\n\n. Install direnv for your system according to the https://direnv.net/docs/installation.html[direnv installation instructions].\n+\n[,sh]\n----\nsudo rpm-ostree install direnv\nsudo systemctl reboot\n----\n\n. Integrate direnv with your shell by following the instructions on the https://direnv.net/docs/hook.html[direnv Setup page].\n\n. Permit the direnv configuration for the repository.\n+\n[,sh]\n----\ndirenv allow\n----\n\n. Modify the `driverbrainz.py` script to suite your needs.\n\n. Run the `driverbrainz.py` script.\n+\n[,sh]\n----\nnix develop --command ./driverbrainz.py\n----\n\n== References\n\n* https://www.selenium.dev/documentation[Selenium Documentation]\n* https://selenium-python.readthedocs.io/index.html[Selenium Python Documentation]\n\n== Contributing\n\nContributions in the form of issues, feedback, and even pull requests are welcome.\nMake sure to adhere to the project's link:CODE_OF_CONDUCT.adoc[Code of Conduct].\n\n== Open Source Software\n\nThis project is built on the hard work of countless open source contributors.\nSeveral of these projects are enumerated below.\n\n* {Asciidoctor_}\n* {Firefox}\n* {Linux}\n// * {pip-tools}\n* {Nix}\n* {pre-commit}\n* {Python}\n* {Selenium}\n\n== Code of Conduct\n\nRefer to the project's link:CODE_OF_CONDUCT.adoc[Code of Conduct] for details.\n\n== License\n\nThis repository is licensed under the https://www.gnu.org/licenses/gpl-3.0.html[GPLv3], a copy of which is provided link:LICENSE.adoc[here].\n\n© 2025 Jordan Williams\n\n== Authors\n\nmailto:{email}[{author}]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwillikers%2Fdriverbrainz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjwillikers%2Fdriverbrainz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjwillikers%2Fdriverbrainz/lists"}