Package: beetcamp
Bandcamp autotagger plugin forbeets. It mostly focuses onStaying up-to-date with information Bandcamp provide in the JSON metadataParsingall possible(if relevant) metadata from various placesFor example, a catalog number given in the release or media descriptionCorrectness of the dataFor example, determining artist names from various artists releasesCompliance with MusicBrainz fields format, to remove the need for pre-processing if, for
example, one wishes to upload the metadata to MB.Thanks tounrbltforbeets-bandcampproviding the idea and initial implementation.InstallationRecommended methodInstallbeetswithpipxso that it's isolated from your system and other projectspipxinstallbeetsInjectbeetcampand other dependencies that you needpipxinjectbeetsbeetcamp[python-mpd2...]Addbandcampto thepluginslist to your beets configuration file.OtherwiseNavigate to yourbeetsvirtual environment and install the plug-in withpipinstallbeetcampCLIThe plugin exposes some of its functionality through a command-line applicationbeetcamp:usage:beetcamp[-h][-a][-l][-t][release_url|query]

Getbandcampreleasemetadatafromthegiven<release-url>orperform
bandcampsearchwith<query>.Anythingthatdoesnotstartwithhttps://
willbeassumedtobeaquery.Searchtypeflags:-aforalbums,-lfor
labelsandartists,-tfortracks.Bydefault,alltypesaresearched.

positionalarguments:release_urlReleaseURL,startingwithhttps://ORquerySearchquery

options:-h,--helpshowthishelpmessageandexit-a,--albumSearchalbums-l,--labelSearchlabelsandartists-t,--trackSearchtracks-oINDEX,--openINDEXOpensearchresultindexedbyINDEXinthebrowserUsebeetcamp <bandcamp-release-url>to return release metadata in JSON format.Usebeetcamp [-alt] <query>to search albums, labels and tracks on Bandcamp and return
results in JSON.Search results are indexed - add-o <index>in order to open the chosen URL in the browser.You can see how the data looks below (the output is prettified withrich-tables).ConfigurationDefaultbandcamp:include_digital_only_tracks:truesearch_max:2art:yescomments_separator:"\n---\n"exclude_extra_fields:[]genre:capitalize:nomaximum:0always_include:[]mode:progressive# classical, progressive or psychedelicinclude_digital_only_tracksType:boolDefault:trueFor media that isn'tDigital Media, include all tracks, even if their titles containdigital only(or alike).If you haveFalsehere, then, for example, aVinylmedia of an album will only include
the tracks that are supposed to be found in that media.search_maxType:intDefault:2.Number of items to fetch through search, maximum is 18. Usually, a matching release should
be found among the first two items.artType:boolDefault:false.Add a source to theFetchArtplug-in to
download album art for Bandcamp albums (requiresFetchArtplug-in enabled).comments_separatorType:stringDefault:"\n---\n".The separator that divides release, media descriptions and credits within thecommentsfield. By default you would getDescription
---
Media description
---
Creditsexclude_extra_fieldsType:listDefault:emptyList of fields that youdo notwant to see in the metadata. For example, if you find the
inclusion ofcommentsirrelevant and are not interested in lyrics, you could specifybandcamp:search_max:5exclude_extra_fields:-lyrics-commentsand the plugin will skip them.You cannot excludealbum,album_id,artist_id,mediaanddata_urlalbum fields.genre(new since 0.11.0)Type:objectDefault:genre:capitalize:nomaximum:0# no maximummode:progressivealways_include:[]genre.capitalize:Classical, Technoinstead of defaultclassical, techno.
For consistency, this option also applies to thestylefield.genre.maximumcaps the maximum number of included genres. This may be of
value in those cases where artists/labels begin the list with the most relevant keywords,
however be aware it is rarely the case.genre.modeaccepts one of the following options:classical(less genres) orprogressiveorpsychedelic(more genres). Each later one is more flexible regarding what is a valid
genre and what is not. See below (we use the list ofmusicbrainz genresfor reference).genre.always_include: genre patterns that override the mode and always match
successfully. For example, if you want to bypass checks for every keyword that ends withcore, you could specifygenre:always_include:-"core$"genremodesWe can place all keywords into the following buckets:type1genrea valid single-word musicbrainz genre1more specific genrea valid musicbrainz genre made of multiple words2somegenresomeothergenreeach of the words is a valid musicbrainz genre, but the combo is not3very specificgenrenot all words are valid genres, but the very last one is4maybegenrebutbut it is followed by noise at the end4some sort of locationirrelevantclassicalmode strictly follows the musicbrainz list of genres, therefore it coverstype 1onlyprogressivemode, in addition to the above, takes into account each of the words that
make up the keyword and will be fine as long as each of those words maps to some sort of
genre from the musicbrainz list. It coverstypes 1 and 2.psychedelic(ornoise) mode, in addition to the above, treats the keyword as a
valid genre as long asthe last wordin it maps to some genre - coveringtypes 1 to 3.
This one should include the hottest genre naming trends but is also liable to covering the
latest<some-label>-<genre>or<some-city>-<some-very-generic-genre>trends which may
not be ideal. It should though be the best option for those who enjoy detailed, fine-grained
stats.type 4is ignored in each case (can be overridden and included through thegenre.includeoption).See below for some examples and a comparison between the modes.typekeywordclassicalprogressivepsychedelic1techno✔✔✔1funk✔✔✔1ambient✔✔✔1noise✔✔✔1ambient techno✔✔✔2technofunk✖✔✔4funky✖✖✖4bleep✖✖✖3funkytechno✖✖✔4bleepy beep✖✖✖3bleepy beepnoise✖✖✔4bleepynoisebeep✖✖✖UsageThis plug-in uses Bandcamp release URL asalbum_id(.../album/...for albums and.../track/...for singletons). If no matching release is found during the import you can
selectenter Idand paste the URL that you have.Supported metadatafieldsingletonalbum trackalbumnotealbum✔album_id✔release Bandcamp URLalbumartist✔albumstatus✔albumtype*✔✔albumtypes*✔*✔artist✔✔✔artist_id✔✔label / publisher Bandcamp URLcatalognum*✔✔comments*✔*✔release and media descriptions, and creditscountry*✔✔day*✔✔disctitle*✔✔genre*✔*✔comma-delimited list ofrelease keywordswhich matchmusicbrainz genresindex✔label*✔✔length✔✔lyrics*✔*✔media*✔✔✔medium✔likely to be inaccurate, since it depends on information in the release descriptionmediums✔medium_index✔for now, same asindexmedium_total✔total number of tracks in the releasemonth*✔✔style*✔*✔Bandcamp genre tagtitle✔✔track_alt✔✔track_id✔track URLva✔year*✔✔*Available withbeetsversions1.5or higher.