Discogs-Pone Script Version 3 von 2011


#21

Sowas wollt ich schon lang mal machen, also großen Screenshot oder so. Vielleicht komm ich die nächsten Tage (morgen) dazu. Ansonsten einfach ausprobieren, und die Schritte 6 und 7 solange wiederholen, bis dir das Ergebnis passt.
Ich hab versucht alles so zu formulieren, dass man weis was gemeint ist.

DISCOGS_... Felder
geben direkt einen Inhalt von Discogs wieder. Das ist meist unter dem selben Namen auf der Discogs Seite zu finden.

DISCOGS_MASTER ... Felder kannst man eigentlich vernachlässigen. Da war ich ein bisschen übermotiviert. Die sind nur für die wenigen Skripte (API Artist List, Direct by WWW und Standard Search), die auch die Master-Release-Pages bei Discogs aufrufen. Du kannst dann mit den DISCOGS_Master Feldern entscheiden, ob du dann auch die vollen Informationen willst (dann das selbe wie beim entsprechenden DISCOGS_... Feld eingeben), oder ob du z.B. nur die DISCOGS_MASTER RELEASE ID willst um hinterher gleich mit dem "API-List Master Release Page" Skript nach dem exakten Release zu suchen.


#22

Ich arbeite noch nicht sehr lange mit mp3Tag und habe mit den genannten Scripten und dem Einrichten anderer Tag-Quellen leider keine Erfahrung. Mein Problem ist folgendes: In meinen mp3-Dateien fehlen fast überall die Erscheinungsjahre der Titel. Diese sind mir aber besonders wichtig und sie sollten daher auch einigermaßen zuverlässig sein. Daher wollte ich diese Angaben entweder über Discogs oder Amazon beziehen. Ich habe also die vorhergehende Anleitung befolgt und die entpackten Dateien in den genannten Ordner verschoben. Allerdings erscheint die Aktionsgruppe "Discogs Pone > Update Settings Mp3 File" auch nach mehreren versuchen nicht im Aktionsgruppen-Fenster. Dort finde ich nur CD-R, Schreibweise aendern und Standard. Könnte mir da bitte jemand helfen? Vielen Dank!

Karsten61


#23

Dann hast du wahrscheinlich die Dateien in den Falschen Ordner geschoben.
Hier steht wie du den Ordner findest: /t/2749/1
Du kannst dir den Pfad auch innerhalb von Mp3tag anzeigen lassen, wenn du $getenv(mp3tagappdata) in den Tag-Dateinamen-Konverter eingibst. Dann wird als Vorschau der richtige Pfad angezeigt (das ".mp3" am Schluss musst du ignorieren).

Dort dann die Dateien in den Unterordnern unterbringen, in denen sie auch in der zip Datei sind:
.mta Dateien in den Unterordner data\actions
.mte Dateien in den Unterordner export


#24

Ich danke Dir für Deine Hilfe. Jetzt habe ich auch den Fehler entdeckt. Es fehlten Dateien, die ich beim Verschieben übersehen hatte. Jetzt funktioniert alles. :rolleyes:

Ein Problem habe ich trotzdem noch: Ich dachte, dass das Erscheinungsjahr eines Titel automatisch in den Tag übernommen wird. Nun muss man aber bei jedem Einzelnen dieses Jahr aus einer Auflistung von Alben heraussuchen. Das ist bei mehreren tausend Dateien eine sehr aufwändige Angelegenheit. Geht das auch einfacher?

Karsten


#25

Grundsätzlich: nein.
Ein automatische Schreiben von Tag-Feldern ist nicht möglich. Mann muss immer suchen und bestätigen.
Und wenn du lauter einzelen Lieder hast und keine kompletten Album/Releases, würd ich dir das Skript eher nicht empfehlen. Dann ist es halt schon sehr viel Arbeit.
Discogs.com ist nun mal nach Album/Releases strukturiert, und dafür lässt es sich auch am besten verwenden.
Und Discogs schreibt immer das Veröffentlichungsjahr des konkreten Tonträgers, nicht das Erstveröffentlichungsdatum eines Album. Damit muss man klar kommen. Das ist bei Amazon zum Beispiel anders.

Ansonsten kann ich dir nur ein paar Tipps geben, die du vielleicht eh schon entdeckt hast:

  • Du kannst die Liste der Alben nach dem Jahr ordnen, dann steht das älteste immer oben.
  • Wenn du eines der Such-Skripte verwendest, die auch Master Releases anzeigen (API-List Artist, Direct by WWW, Standard Search), kannst du immer dieses verwenden, dann hast du im Normalfall auch immer das älteste Jahr. (Dazu musst du in der Settings mp3 Datei das Feld DISCOGS_MASTER YEAR verwenden)
  • Mit dem API-Liste Master Release Page Such-Skript kannst du auch nochmal alle Versionen eines Releases auflisten, wenn du eine ganz bestimmte brauchst.

#26

Vielen Dank! Ich werde mich dann mal ans Werk machen. Bisher hatte ich diese Daten manuell aus charts.de und allmusic.com herausgesucht, aber nun geht es wahrscheinlich doch etwas schneller.

Karsten


#27

ciao,

großartiges skript! allein schon wegen der technischen schönheit.

ich habe leider ein problem.

  1. das feld DISCOGS_CATALOG# wird nirgendwo hin geschrieben. eigentlich soll es in comment geschrieben werden, aber ich habe testweise auch eigene feldnamen probiert, but nothing ever happens. die releases von denen ich es probiere haben nur eine cat# und sämtliche Series-funktionalität habe ich eigentlich ausgeschaltet.

  2. leider wird auch die debug.txt nicht geschrieben. kann und muß ich das irgendwo einschalten?

  3. wie wäre es auch die zu erstellenden (bzw. im gegenteil zu löschenden) skripte konfigurieren zu können? das macht es für leute wie mich, die eigentlich nur per release_id fetchen, übersichtlicher.

  4. noch eine idee: das DISCOGS_DATE-feld nur schreiben, wenn Monat darin ungleich Null ist. aus kompalibitätsgründen schreibe ich auch das year-feld. es kann also vorkommen, daß die information in date und year dann voll redundant sind.

schönen tag noch!


#28

Kann ich dir jetzt nicht sagen woran das liegt. Bei früheren Versionen konnte die Katalognummer (DISCOGS_CATALOG#) nur gelesen werden, wenn man auch das Label (DISCOGS_LABEL) als Tag-Feld aktiviert hatte. Aber das hab ich eigentlich behoben. Bei mir funktioniert es ohne Probleme, mit Series dürfte eigentlich auch kein Konflikt bestehen. So wie du das willst, müßtest du einfach folgendes haben:
DISCOGS_CATALOG# = comment

Der ursrüngliche Wert war anders, aber das spielt keine Rolle:
DISCOGS_CATALOG# = catalog #
Wenn es mir nicht klappt, schick mir bitte deine Settings mp3 Datei, dann schau ich woran es liegen könnte.

Ja, muss mann.
Zum einen muss man im Feld TEXT OPTION: DEBUG PATH den vollen Dateipfad der gewünschten Debug Datei angeben. Beim ersten ausführen der Discogs Pone>Update Settings Mp3 File wird dafür automatisch der Pfad eingetragen, an dem sich auf deinem Computer auch die Web Scripte von Mp3tag befinden. Wenn du das in der Settings Datei änderst, bleibt dein geänderter Pfad bei weiteren Updates erhalten.
Zum anderen muss man in den .src Datein selbst noch die Debug Funktion aktivieren. Dort steht jetzt am Anfang des [ParserScriptAlbum]=... Teil:
# debug "on" "C:\Users<user name>\AppData\Roaming\Mp3tag\data\sources\debug.txt"
Wenn du die Raute am Anfang löscht, wird der Befehl aktiviert. Du kannst die Zeile auch an eine beliebige andere Stelle in der src Datei kopieren, um den Befehl erst später zu aktivieren. Mit
# debug "off" "C:\Users<user name>\AppData\Roaming\Mp3tag\data\sources\debug.txt"
lässt sich der Befehl auch wieder deaktivieren.
Jedesmal wenn du die src Dateien mit der Aktion Discogs Pone>Create Scripts wieder neu erstellst, ist der Befehl erstmal wieder deaktiviert.

Dazu einfach nach der Aktion Discogs Pone>Create Scripts die unerwünschten .src Dateien wieder löschen. Schaden aber doch eigentlich nicht. Durch die verschiedenen Suchmethoden ist ein zuvoriges Suchen im Web Browser eigentlich überflüssig. Und wenn du dir die Tastenkombinateion Alt+Q > P > I merkst, hast du dein gewünschtes Skript immer schnell aufgerufen. Die .src Datei befinden sich im Ordner Mp3tag\data\sources , in dem wie gerade geschrieben auch die Debug Datei standardmäßig landet.

Das ist bereits möglich. Und es hat mich einige Mühen gekostet, das als flexible Option einzubauen. Die Anleitung dazu ist hier versteckt:
[WS] Discogs (pone mod)
Was in eckiger Klammer steht, wird nur geschrieben wenn ein Monat angegeben ist, was in runder Klammer steht nur wenn ein Tag angegeben ist
Bespiele:
[YYYY-MM-DD] schreibt nichts wenn das Monat fehlt.
YYYY[-MM-DD] schreibt nur das Jahr wenn das Monat fehlt.

YYYY-MM schreibt nur Jahr und Monat wenn der Tag fehlt, nichts wenn der Monat fehlt
YYYY-MM schreibt nur Jahr und Monat wenn der Tag fehlt, nur das Jahr wenn der Monat fehlt
(YYYY-MM-DD) schreibt nichts wenn der Tag fehlt.

Ansonsten werden fehlende Daten immer mit 00 ersetzt wenn sie nicht eingeklammert sind.


#29

vielen dank erstmal für die schnelle und ausführliche antwort.

  1. auch weiteres probieren (die einstellung hatte ich ja so schon) hat nicht geholfen.
    das sagt der debug-output:

    Script-Line : 68
    Command : outputto
    Parameter 1 : >comment<

    Output : ><

    Line and position:

    Label:
    <>Deram – 800 087-2
    Format:
    <>CD, Album
    Country:
    <> US
    Released:
    <> 1983
    Genre:
    <>Rock
    Style:
    <>Folk Rock, <>Psychedelic Rock
    ^

    Script-Line : 69
    Command : regexpreplace
    Parameter 1 : ><>.+? – (.*?)

    <
    Parameter 2 : ><>$1<><

    Output : ><

    Line and position:

    Label:
    <>800 087-2 <>
    Format:
    <>CD, Album
    Country:
    <> US
    Released:
    <> 1983
    Genre:
    <>Rock
    Style:
    <>Folk Rock, <>Psychedelic Rock

    die konfigurations-mp3 hänge ich an.

    1. klar geht's auch händisch. ich war und bin nur immer noch sehr begeistert von deinem ansatz das skript zu konfigurieren. bisher hatte ich mir immer danos skript von hand angepaßt. bei der x-ten änderung des discogs-outputs nervt das dann irgendwann.
      a propos, könntest du nicht auch die felder direkt via discos-api beziehen statt das html zu parsen?
      http://www.discogs.com/developers/resource...se/release.html

    2. ich meinte das so. bspw:
      DISCOGS_DATE = 2012-02-07
      =>
      date -> 2012-02-07
      year -> 2012

    DISCOGS_DATE = 2012
    =>
    date
    year -> 2012

    so können auch ganz einfache mp3-player wenigstens das jahr anzeigen. ansonsten mag ich einfach keine redundanten daten. ich weiß, es ist ein luxusproblem.

    Discogs_Pone_Web_Script_Settings__Kopie_.mp3 (74 KB)


#30

Danke für deine Settings Datei. Konnte den Fehler schnell finden.
TEXT OPTION: MULTI LABEL: MULTIVALUE TAG (= YES)/ONLY FIRST (= NO)/SEPERATE BY: (WRITE CHARACTERS) = yes
verträgt sich nicht mit
TEXT OPTION: MULTI CATALOG#: MULTIVALUE TAG (= YES)/ONLY FIRST (= NO)/SEPERATE BY: (WRITE CHARACTERS) = no

Das selbe zählt wohl auch für:
TEXT OPTION: MULTI SERIES: MULTIVALUE TAG (= YES)/ONLY FIRST (= NO)/SEPERATE BY: (WRITE CHARACTERS) = yes
TEXT OPTION: MULTI CATALOG#_(SERIES): MULTIVALUE TAG (= YES)/ONLY FIRST (= NO)/SEPERATE BY: (WRITE CHARACTERS) = no

Ich schau, dass ich das Problem beim nächsten Update behebe. Einstweilen kannst du dir dadurch helfen, dass du folgendes in diese Zeilen:

outputto "comment"
findline "<<_GO-TO-START_>>" -1 1
findline "<a href=\"/label/" 1 1
regexpreplace ",\s*<a href=\"/label" "</div>"
findinline "<a href=\"/label/" 1 1
findinline "&ndash;" 1 1
sayuntil "</div>"

in das Feld
TEXT OPTION: FREE WEB SOURCES SCRIPT CODE FOR STANDARD SCRIPTS
kopierst.
Wenn du auch die spezial Skripte verwenden möchtest, dann auch in
TEXT OPTION: FREE WEB SOURCES SCRIPT CODE FOR MULTISONG-TRACKS TRACKLIST SCRIPT
&
TEXT OPTION: FREE WEB SOURCES SCRIPT CODE FOR DJ SETS IN ONE FILE TRACKLIST SCRIPT

Für die Master Scripts dürfte dieser Code nicht funktionieren.

Das mit der API hab ich mir schon öfter überlegt und auch schon ein bisschen rumgebastelt. Was mich davon abhält ist, dass dort ein paar Sachen fehlen. Nämlich Series, Series Cat#, Companies etc und Rating. Dafür würde sich die Hauptschreibweise von Künstlernamen viel einfacher holen lassen, wenn Discogs eine Variant mit Stern* verwendet. Und das Skript wäre wohl stabieler und schneller.
Kommt vielleicht irgendwann. Kann ich aber nicht versprechen.

Das wäre dann:
DISCOGS_YEAR = YEAR
DISCOGS_DATE = DATE
TEXT OPTION: DATE FORMAT (DD/D = DAY, MM/M/MON/MONTH = MONTH, YYYY/YY = YEAR) = [YYYY-MM-DD]
oder
TEXT OPTION: DATE FORMAT (DD/D = DAY, MM/M/MON/MONTH = MONTH, YYYY/YY = YEAR) = YYYY-MM

Das zweite hast du ja in der mir zugesandten Datei. Funktioniert doch, oder? Zumindest bei den Skripten die ich mit deiner Datei gemacht hab.


Import der Catalog# von Discogs
#31
  1. cool, danke für den hinweis. ich habe auch bei den anderen feldern die multifield-option ausgestellt.

  2. soll ich da mal nen feature request bei discogs schreiben?
    allerdings würde das sicher auch bedeuten, daß noch allerhand andere felder dazukommen, die gar nicht mal so uninteressant für den einen oder die andere sein werden (phonographisches / mechanisches Copyright, Recorded At, Mixed At, ...).

  3. ich hab ne weile auf'm schlauch gestanden und hab endlich alles zusammengepuzzled (discogs_year hatte ich zunächst übersehen). :rolleyes: die lösung für mich lautet also:
    [YYYY-MM(-DD)]


#32

Das geht natürlich auch.

Nen Feature Request and discogs kannst du gerne schreiben. Keine Ahnung ob das was bringt. Die haben ja die API gerade umgestellt, weiß nicht ob sie da wieder was ändern wollen.

Die von die angesprochenen Felder kann mein Skript ja momentan lesen. Sie werden alle zusammengefasst in das Feld DISCOGS_COMPANIES_ETC geschrieben.
Bei Bedarf könnte ich auch Optionen einbauen, das in einzelne Tagfelder zu splitten. Bei Barcodes & Other Identifiers hab ich das mal auf Nachfrage mit Barcodes gemacht. Das würde halt die Optionen in der Settingsdatei noch unübersichtlicher machen. Und ich glaube eigentlich nicht, dass das Sinn gibt, weil die Daten bei Discogs hier doch sehr lückenhaft sinde. Ein eigenes Feld gibt ja meiner Meinung nach nur Sinn, wenn man es auch in seiner Medienbibliothek anzeigen lässt. Und dort hab ich bereits eine unübersichtlich große Anzahl an Spalten. Und Spalten, die beim Großteil der Dateien leer bleiben, sind in der Anzeige im Mediaplayer unökonomisch.

Schön wenn jetzt so weit alles funktioniert. Freut mich immer wenn mein Skript die Leute zufriedenstellt.


#33

Ist auch ein super script.
Und ich habs auch langsam im Griff. :rolleyes:


#34

was ein feature request bringt ist schwer zu sagen. mir schien aber immer, daß es ein stärkeres interesse gibt die api als andere aus discogs-user-sicht wichtigere dinge.
ich sehe aber gerade, daß es doch schon so nutzbar ist:

http://www.discogs.com/developers/resource...se/release.html

um flexibilität zu bieten, könntest du ja frei konfigurierbare zuordnungen einführen, z.b.:
free_config_discogs_field_1 = discogs_series
free_config_target_tag_1 = series
free_config_discogs_field_2 = discogs_recorded_at
free_config_target_tag_1 = recording studio

wobei die variablennamen völlig willkürlich gewählt sind, es soll nur das prinzip erklären.

außerdem hatte ich die idee, die konfiguration auf mehrere mp3s zu verteilen. schon jetzt ist es ja reichlich unübersichtlich. ob das mit mptags action-funktionalität überhaupt realisierbar ist, weißt du aber sicher besser als ich. ich weiß es nämlich nicht.

wie sich die leute ihre mediaplayeranzeige einrichten (ich bin da selbst recht sparsam), ist denke ich, gar nicht so wichtig. denn struktur und repräsentation von daten sind ja im idealfall zwei verschieden paar schuhe und mp3tag ist ja nur für die struktur zuständig.


#35

Vielen, vielen Dank. Ich habe die Seite bisher immer als xml anstatt json dokument anzeigen lassen. Und da fehlt das dann. Hätte nicht gedacht, dass es da inhaltliche Unterschiede gibt.

Weißt du zufällig ein Tool, dass mir solche json Dokumente wie oben dargestellt in verschiedenen Zeilen darstellt? Mit meinem Mozilla Firefox seh ich da nämlich immer alle in eine Zeile, das ist sehr unübersichtlich.

Damit wird die API Version meines Skriptes ein gutes Stück wahrscheinlicher. Wird aber noch ein bisschen dauern bis ich das mach, weil ich dafür alles von Grund auf überarbeiten muss.

Wie meinst du das mit den free_config Felder? Damit hätte die Settings Datei ja dann doppelt so viele Felder. Technisch ist das auch komplizierter denke ich. Die fertigen Skripte werden ja jetzt durch die in Mp3tag eingebaute Export Funktion erstellt. Dort steht jetz z.b.:
outputto "%discogs_series%"
im fertigen web script steht dann das, was du im feld DISCOGS_SERIES eingetragen hast, also hier
outputto "series"

Mit deinem Vorschlag müßte ich schreiben:
outputto "$if($eql(%free_config_discogs_field_1%,discogs_series),%free_config_target_tag_1%,)"
Und das würde nur das erste Feld abdecken. Ich müßte das dann noch für jedes weitere free_config Feld wiederholen, und zwar jedesmal wenn ich einen Feldnamen brauche.

Mehrere Mp3 Dateien wäre denkbar. Würde den Export aber auch viel komplizierter Machen. Und der User hätte dann das Problem, die richtige Einstellung in verschiedenen Dateien suchen zu müssen. Eher nicht.

Lösungen die ich mir überlegt habe, aber aufgrund des Aufwands noch nicht durchgeführt habe:

  • Alle Felder in der Settings Datei grundsätzlich umbenennen.
    Momentatan sind sie ja nach der Funktion der Felder geordnet. Erst alle Felder die für Werte aus der Discogs Seite stehen (DISCOGS_), dann alle Felder, die zwar auch für Werte von der Seite, aber schon in veränderter oder kombinierter Form stehen (DISCOGS~), dann Optionsfelder die mann nur mit yes/no beantworten kann (OPTION:), dann Optionsfelder die komlexere Möglichkeiten zulassen (TEXT OPTION).
    Schon die einführung der Master Felder (DISCOGS_MASTER ) hat mir da nen Wurm reingbracht.
    Besser wäre wahrscheinlich, alles so zu ordnen (=umbenennen, da Ordnung immer alphabetisch), dass die Optionen immer gleich unter dem Feld stehen, auf dass sie sich beziehen.

  • Eine Grundsätzlich ander Eingabeart wär denkbar, wenn der User erst ein externes Dokument editiert und das dann mit der Aktion Textdatei Importieren in die Mp3 übertragen wird. Dazu bräuchte ich am besten irgendein tabellarische Textformat, damit der User nicht vesehentlich etwas verschiebt und dann nichts mehr richtig zugordnet werden kann.

Es ist zwar richtig, dass Mp3tag nur für die Struktur der Daten zuständig ist. Da sich aber bei ca. 95% (frei erfundener Wert) der erhältlichen Hard- & Software Mediaplayer & -bibliotheken nicht oder nur sehr wenig in der Zuordnung der Tagfelder einstellen läßt, gibt die Datenstruktur in den meisten Fällen die spätere Datenanzeige vor.


#36

Wie meinst du das genau?
Beispiel?

DD.20120211.1135.CET


#37

Eine Anzeige wieh ier: http://www.discogs.com/developers/resource...se/release.html
Im Respone Teil ist jede Information in einer extra Zeile dargestellt. Ausserdem übersichtliche Einrückungen bei geschweiften Klammern.

Wenn ich Seite, von der der Code im Beispiel stammt, mit Mozilla Firefox aufmache, bekomme ich erstmal eine xml Anzeige zu sehen.
http://api.discogs.com/release/1

Mit dem Zusatz ?f=json bekomme ich die json anzeige, allerding in einer einzigen Zeile ohne die Zeilenumbrüche und Einrückungen bei Klammern und Kommas.
http://api.discogs.com/release/1?f=json

Ich muss dazu sagen dass ich nicht die geringste Ahnung von json hab. Weiß nichtmal was das heißt. Wahrscheinlich müßte ich nur nach einem Plug-in für Firefox suchen. Weißt du ein gutes?


#38

Google JSON Validator


#39

Danke. Auch nicht schlecht.
Ich hab mir jetz das JSONovich add-on für Mozilla insalliert. Macht was ich wollte:
https://addons.mozilla.org/en-US/firefox/addon/jsonovich/


#40

Wie ich soeben im Thread sehe hat sich die Frage erledigt.
Eigentlich kann man das Aufbrechen des JSON strings in einzelne Zeilen mit je einem Key:Value Paar doch auch im Websource Script machen mit einem RegEx.

DD.20120211.1215.CET