User:Mineo: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
mNo edit summary
No edit summary
 
(7 intermediate revisions by 2 users not shown)
Line 7: Line 7:


=== aria2c download list for MB dumps ===
=== aria2c download list for MB dumps ===
<nowiki>
<pre>
ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump.tar.bz2 ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump.tar.bz2
ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump.tar.bz2 ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump.tar.bz2
ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump-editor.tar.bz2 ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump-editor.tar.bz2
ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump-editor.tar.bz2 ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump-editor.tar.bz2
ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump-derived.tar.bz2 ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump-derived.tar.bz2
ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump-derived.tar.bz2 ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump-derived.tar.bz2
</nowiki>
</pre>
Those are tabs (\t) separating the URLs, not spaces!
Those are tabs (\t) separating the URLs, not spaces!
Replace latest with the real folder name.
Then save all the URLs to a file and run aria2c like so:
<pre>
aria2c -j 6 -i <filename>
</pre>
to download the files to the current directory

==ListenBrainz ==
===submit via curl===
<pre>curl -X POST -d @foo.json -H "Authorization: Token aebacb47-a7a2-4b71-ac77-424883c920dc" http://10.1.2.3:8080/1/submit-listens</pre>
===transform a JSON document from the GET listens API for import===

<pre>jq "{listen_type: \"import\", payload: [.payload.listens[]|del(.recording_msid)]}" < foo.json > foo2.json</pre>

== Picard ==

For the following to work, you'll need all plugins except cue.py from [https://github.com/mineo/mbstuff/tree/master/picard/plugins my plugin repository].

=== Picard scripting ===
=== Picard scripting ===


<pre>
<pre>
$unset(genre)
$unset(_rating)
$unset(bpm)
$unset(mood)
$unset(isrc)
$unset(copyright)
$unset(media)
$unset(barcode)
$unset(encodedby)
$unset(releasestatus)
$unset(asin)
$unset(script)
$unset(language)
$unset(musicip_puid)
$unset(musicip_fingerprint)
$unset(composersort)
$unset(originaldate)
$if($eq(%label%,8bitpeoples),
$if($eq(%label%,8bitpeoples),
$set(_labelandcatno,yes)
$set(_labelandcatno,yes)
Line 47: Line 48:
,
,
)
)

$unset(label)
$keep(artist,album,title,albumartist,date,discsubtitle,,tracknumber,totaltracks,discnumber,totaldiscs,releasetype,composer)
$unset(catalognumber)

</pre>
</pre>


=== Picard file naming ===
=== Picard file naming ===

This needs the [https://github.com/mineo/mbstuff/tree/master/picard/plugins/iprefersnakes I Prefer Snakes] plugin.


<pre>
<pre>
m = metadata
$set(_theend,
$if(
$gt(%totaldiscs%, 1),
Disc %_paddeddiscnumber%/,
)
%_paddedtracknumber% - %title%
)


at = u"{artist} - {title}".format(artist=m["artist"], title=m["title"])
$if(%date%,
$set(_year,$left(%date%,4)),
)


if u"OC ReMix" in m["~filename"]:
$if($eq(%albumartist%,OverClocked ReMix),
return u"OverClocked ReMix/misc/" + at
$set(albumartist,Various Artists),
)


if m["albumartist"] == "OverClocked ReMix":
$if($in(%_dirname%,_misc),
m["albumartist"] = "Various Artists"
misc/tagged/%artist% - %title%
$stop()
,)


if u"_misc_" in m["~dirname"]:
$if(
return u"misc/tagged/" + at
$or($in(%_dirname%,Soundtracks),$inmulti(%releasetype%,soundtrack)),
$set(_soundtrackprefix,Soundtracks),
)


theend = u"{tn} - {title}".format(tn=m["~paddedtracknumber"], title=m["title"])
$if(
$in(%_dirname%,Soundtracks - Score),
$set(_soundtrackprefix,Soundtracks - Score),
)


if m["date"]:
$if(
year = m["date"][:4]
$in(%_dirname%,Anime),
paryear = u" (" + unicode(year) + u")"
$set(_soundtrackprefix,Soundtracks - Anime),
else:
)
year = None
paryear = ""


try:
$noop(begin labelandcatno - for some labels it makes sense to give them their own folder - label/catno - album \(year\))
td = int(m["totaldiscs"])
$if(%_labelandcatno%,
if td > 1:
%_label%/%_catno% - %album%$if(%_year%, \(%_year%\))/%_theend%
disc = u"Disc {disc}".format(disc=m["discnumber"])
$stop(),
else:
)
disc = u""
$noop(end labelandcatno)
except:
$noop(begin soundtrack)
disc = u""
$if(%_soundtrackprefix%,
%_soundtrackprefix%/
%album% $if(%_releasecomment%,\(%_releasecomment%\) ,)- $if2(%albumartist%,%albumartist%)
$if(
%date%,
\($left(%date%,4)\),
)


/%_theend%
$stop(),
)
$noop(end soundtrack),
$noop(begin normal - this is neither a soundtrack, nor an album from one of the special labels)
$if2(
%albumartist%,
%artist%
)/
$if(%_year%,%_year% - )
%album%/%_theend%
$noop(end normal)
</pre>


if m["~labelandcatno"]:
return u"{label}/{catno}{album}{year}/{disc}/{theend}".format(
label=m["~label"],
catno=m["~catno"] + u" - " if m["~catno"] else u"",
album=m["album"],
year=paryear,
theend=theend,
disc=disc
)


split_path = m["~dirname"].split(u"_")
{{lang de-native}}

{{lang en-fluent}}
for p in split_path:
if p.startswith(u"Soundtracks"):
soundtrackprefix = p
break
else:
soundtrackprefix = None

if soundtrackprefix is not None:
return u"{prefix}/{album}{comment} - {albumartist}{year}/{disc}/{theend}".format(
prefix=soundtrackprefix,
album=m["album"],
comment=(u"(" + m["~releasecomment"] + u")") if m["~releasecomment"] else u"",
albumartist=m["albumartist"],
year=paryear,
theend=theend,
disc=disc
)

return u"{albumartist}/{year}{album}/{disc}/{theend}".format(
albumartist=m["albumartist"] if m["albumartist"] else m["artist"],
year=(year + u" - ") if year is not None else u"",
album=m["album"],
theend=theend,
disc=disc)
</pre>

Latest revision as of 13:32, 28 March 2016

My MBz profile

Websites with catalogues of classical music

Bielekat

Klassikakzente

aria2c download list for MB dumps

ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump.tar.bz2 ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump.tar.bz2
ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump-editor.tar.bz2  ftp://mirrors.dotsrc.org/MusicBrainz/data/fullexport/LATEST/mbdump-editor.tar.bz2
ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump-derived.tar.bz2    ftp://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport/LATEST/mbdump-derived.tar.bz2

Those are tabs (\t) separating the URLs, not spaces! Replace latest with the real folder name. Then save all the URLs to a file and run aria2c like so:

aria2c -j 6 -i <filename>

to download the files to the current directory

ListenBrainz

submit via curl

curl -X POST -d @foo.json -H "Authorization: Token aebacb47-a7a2-4b71-ac77-424883c920dc" http://10.1.2.3:8080/1/submit-listens

transform a JSON document from the GET listens API for import

jq "{listen_type: \"import\", payload: [.payload.listens[]|del(.recording_msid)]}" < foo.json > foo2.json

Picard

For the following to work, you'll need all plugins except cue.py from my plugin repository.

Picard scripting

$if($eq(%label%,8bitpeoples),
	$set(_labelandcatno,yes)
	$set(_label,%label%)
	$set(_catno,%catalognumber%)
	$add_to_collection(56cd604b-c02a-4f4a-9b75-400692624831)
    ,
)
$if($eq(%label%,OverClocked ReMix),
	$set(_labelandcatno,yes)
	$set(_label,%label%)
	$set(_catno,%catalognumber%)
	$add_to_collection(450a79e3-73ba-44a0-9d99-64651e7b65ff)
    ,
)

$keep(artist,album,title,albumartist,date,discsubtitle,,tracknumber,totaltracks,discnumber,totaldiscs,releasetype,composer)

Picard file naming

This needs the I Prefer Snakes plugin.

m = metadata

at = u"{artist} - {title}".format(artist=m["artist"], title=m["title"])

if u"OC ReMix" in m["~filename"]:
    return u"OverClocked ReMix/misc/" + at

if m["albumartist"] == "OverClocked ReMix":
   m["albumartist"] = "Various Artists"

if u"_misc_" in m["~dirname"]:
    return u"misc/tagged/" + at

theend = u"{tn} - {title}".format(tn=m["~paddedtracknumber"], title=m["title"])

if m["date"]:
    year = m["date"][:4]
    paryear = u" (" + unicode(year) + u")" 
else:
    year = None
    paryear = ""

try:
    td = int(m["totaldiscs"])
    if td > 1:
        disc = u"Disc {disc}".format(disc=m["discnumber"])
    else:
        disc = u""
except:
   disc = u""


if m["~labelandcatno"]:
    return u"{label}/{catno}{album}{year}/{disc}/{theend}".format(
        label=m["~label"],
        catno=m["~catno"] + u" - " if m["~catno"] else u"",
        album=m["album"],
        year=paryear,
        theend=theend,
        disc=disc
    )

split_path = m["~dirname"].split(u"_")

for p in split_path:
    if p.startswith(u"Soundtracks"):
        soundtrackprefix = p
        break
else:
    soundtrackprefix = None

if soundtrackprefix is not None:
    return u"{prefix}/{album}{comment} - {albumartist}{year}/{disc}/{theend}".format(
        prefix=soundtrackprefix,
        album=m["album"],
        comment=(u"(" + m["~releasecomment"] + u")") if m["~releasecomment"] else u"",
        albumartist=m["albumartist"],
        year=paryear,
        theend=theend,
        disc=disc
    )

return u"{albumartist}/{year}{album}/{disc}/{theend}".format(
    albumartist=m["albumartist"] if m["albumartist"] else m["artist"],
    year=(year + u" - ") if year is not None else u"",
    album=m["album"],
    theend=theend,
    disc=disc)