{"schema_version":1,"metadata":{"branch":"current","release":"7.9","architecture":"amd64","generated_at":"2026-09-16T22:39:25.100275+00:00","source_url":"https://cdn.openbsd.org/pub/OpenBSD/snapshots/packages/amd64/sqlports-7.55.tgz","source_sha256":"6f28e1a3a8a3a35d076b322d2921451ea2678820c65809dbd44da34b211ede49","package_count":12042,"source_kind":"sqlports"},"package":{"name":"beets-2.14.0","path":"audio/beets","url":"/packages/current/audio/beets/","comment":"CLI tools to manage music collections","homepage":"https://beets.io/","maintainer":"Kirill A. Korinsky <kirill@korins.ky>","description":"The purpose of beets is to get your music collection right once and for\nall. It catalogs your collection, automatically improving its metadata\nas it goes using the MusicBrainz database. Then it provides a bouquet of\ntools for manipulating and accessing your music.\n\nIf you plan to use plugins, please make sure that you have all necessary\ndependencies installed.\n\nFeatures include:\n\n- Fetch or calculate metadata: album art, lyrics, genres, tempos,\nReplayGain levels, or acoustic fingerprints.\n\n- Get metadata from MusicBrainz, Discogs, or Beatport. Or guess metadata\nusing songs' filenames or their acoustic fingerprints.\n\n- Transcode audio.\n\n- Check your library for duplicate tracks and albums or for albums\nthat are missing tracks.\n\n- Browse your music library graphically through a Web browser and play\nit in any browser that supports HTML5 Audio.\n","description_source":null,"description_unresolved":[],"package_architecture":"amd64","stem":"beets","readme":{"url":"/packages/data/43/430bd7917afbd8338cd6bfee532866c9498942e0fd7b056511f6e5e4436ca010.json","unresolved":[]},"dependencies":[{"path":"textproc/py-confuse","type":"runtime","package_spec":"","url":"/packages/current/textproc/py-confuse/"},{"path":"textproc/py-jellyfish","type":"runtime","package_spec":"","url":"/packages/current/textproc/py-jellyfish/"},{"path":"math/py-lap","type":"runtime","package_spec":"","url":"/packages/current/math/py-lap/"},{"path":"audio/py-mediafile","type":"runtime","package_spec":"","url":"/packages/current/audio/py-mediafile/"},{"path":"math/py-numpy","type":"runtime","package_spec":"","url":"/packages/current/math/py-numpy/"},{"path":"sysutils/py-packaging","type":"runtime","package_spec":"","url":"/packages/current/sysutils/py-packaging/"},{"path":"sysutils/py-platformdirs","type":"runtime","package_spec":"","url":"/packages/current/sysutils/py-platformdirs/"},{"path":"textproc/py-yaml","type":"runtime","package_spec":"","url":"/packages/current/textproc/py-yaml/"},{"path":"devel/py-typing-extensions","type":"runtime","package_spec":"","url":"/packages/current/devel/py-typing-extensions/"},{"path":"textproc/py-unidecode","type":"runtime","package_spec":"","url":"/packages/current/textproc/py-unidecode/"},{"path":"www/py-beautifulsoup4","type":"runtime","package_spec":"","url":"/packages/current/www/py-beautifulsoup4/"},{"path":"textproc/py-langdetect","type":"runtime","package_spec":"","url":"/packages/current/textproc/py-langdetect/"},{"path":"audio/py-mutagen","type":"runtime","package_spec":"","url":"/packages/current/audio/py-mutagen/"},{"path":"graphics/py-Pillow","type":"runtime","package_spec":"","url":"/packages/current/graphics/py-Pillow/"},{"path":"audio/py-acoustid","type":"runtime","package_spec":"","url":"/packages/current/audio/py-acoustid/"},{"path":"audio/py-last","type":"runtime","package_spec":"","url":"/packages/current/audio/py-last/"},{"path":"audio/py-discogs-client","type":"runtime","package_spec":"","url":"/packages/current/audio/py-discogs-client/"},{"path":"devel/py-xdg","type":"runtime","package_spec":"","url":"/packages/current/devel/py-xdg/"},{"path":"archivers/py-rarfile","type":"runtime","package_spec":"","url":"/packages/current/archivers/py-rarfile/"},{"path":"textproc/py-titlecase","type":"runtime","package_spec":"","url":"/packages/current/textproc/py-titlecase/"},{"path":"www/py-requests","type":"runtime","package_spec":"","url":"/packages/current/www/py-requests/"},{"path":"www/py-requests-oauthlib","type":"runtime","package_spec":"","url":"/packages/current/www/py-requests-oauthlib/"},{"path":"www/py-requests-ratelimiter","type":"runtime","package_spec":"","url":"/packages/current/www/py-requests-ratelimiter/"},{"path":"lang/python/3","type":"runtime","package_spec":"","url":"/packages/current/lang/python/3/"},{"path":"lang/python/3","type":"build","package_spec":"","url":"/packages/current/lang/python/3/"},{"path":"devel/py-build","type":"build","package_spec":"","url":"/packages/current/devel/py-build/"},{"path":"devel/py-installer","type":"build","package_spec":"","url":"/packages/current/devel/py-installer/"},{"path":"devel/py-hatchling","type":"build","package_spec":"","url":"/packages/current/devel/py-hatchling/"},{"path":"archivers/py-rarfile","type":"test","package_spec":"","url":"/packages/current/archivers/py-rarfile/"},{"path":"audio/py-mpd2","type":"test","package_spec":"","url":"/packages/current/audio/py-mpd2/"},{"path":"devel/py-test-cov","type":"test","package_spec":"","url":"/packages/current/devel/py-test-cov/"},{"path":"devel/py-pytest-factoryboy","type":"test","package_spec":"","url":"/packages/current/devel/py-pytest-factoryboy/"},{"path":"www/py-flask","type":"test","package_spec":"","url":"/packages/current/www/py-flask/"},{"path":"www/py-pytest-flask","type":"test","package_spec":"","url":"/packages/current/www/py-pytest-flask/"},{"path":"www/py-requests-mock","type":"test","package_spec":"","url":"/packages/current/www/py-requests-mock/"},{"path":"www/py-requests-oauthlib","type":"test","package_spec":"","url":"/packages/current/www/py-requests-oauthlib/"},{"path":"www/py-responses","type":"test","package_spec":"","url":"/packages/current/www/py-responses/"},{"path":"textproc/py-confuse","type":"test","package_spec":"","url":"/packages/current/textproc/py-confuse/"},{"path":"textproc/py-jellyfish","type":"test","package_spec":"","url":"/packages/current/textproc/py-jellyfish/"},{"path":"math/py-lap","type":"test","package_spec":"","url":"/packages/current/math/py-lap/"},{"path":"audio/py-mediafile","type":"test","package_spec":"","url":"/packages/current/audio/py-mediafile/"},{"path":"math/py-numpy","type":"test","package_spec":"","url":"/packages/current/math/py-numpy/"},{"path":"sysutils/py-packaging","type":"test","package_spec":"","url":"/packages/current/sysutils/py-packaging/"},{"path":"sysutils/py-platformdirs","type":"test","package_spec":"","url":"/packages/current/sysutils/py-platformdirs/"},{"path":"textproc/py-yaml","type":"test","package_spec":"","url":"/packages/current/textproc/py-yaml/"},{"path":"devel/py-typing-extensions","type":"test","package_spec":"","url":"/packages/current/devel/py-typing-extensions/"},{"path":"textproc/py-unidecode","type":"test","package_spec":"","url":"/packages/current/textproc/py-unidecode/"},{"path":"www/py-beautifulsoup4","type":"test","package_spec":"","url":"/packages/current/www/py-beautifulsoup4/"},{"path":"textproc/py-langdetect","type":"test","package_spec":"","url":"/packages/current/textproc/py-langdetect/"},{"path":"audio/py-mutagen","type":"test","package_spec":"","url":"/packages/current/audio/py-mutagen/"},{"path":"graphics/py-Pillow","type":"test","package_spec":"","url":"/packages/current/graphics/py-Pillow/"},{"path":"audio/py-acoustid","type":"test","package_spec":"","url":"/packages/current/audio/py-acoustid/"},{"path":"audio/py-last","type":"test","package_spec":"","url":"/packages/current/audio/py-last/"},{"path":"audio/py-discogs-client","type":"test","package_spec":"","url":"/packages/current/audio/py-discogs-client/"},{"path":"devel/py-xdg","type":"test","package_spec":"","url":"/packages/current/devel/py-xdg/"},{"path":"textproc/py-titlecase","type":"test","package_spec":"","url":"/packages/current/textproc/py-titlecase/"},{"path":"www/py-requests","type":"test","package_spec":"","url":"/packages/current/www/py-requests/"},{"path":"www/py-requests-ratelimiter","type":"test","package_spec":"","url":"/packages/current/www/py-requests-ratelimiter/"},{"path":"lang/python/3","type":"test","package_spec":"","url":"/packages/current/lang/python/3/"},{"path":"devel/py-test","type":"test","package_spec":"","url":"/packages/current/devel/py-test/"}],"reverse_dependencies":{"count":0,"url":null},"categories":["audio","lang/python"],"flavors":[],"only_for_architectures":["aarch64","amd64","arm","i386","mips64","mips64el","powerpc","powerpc64","riscv64","sparc64","alpha","hppa"],"not_for_architectures":[]}}
