WEB Link zerlegen bzw. trimmen


#1

Hallo,

ich habe mal wieder eine Frage an euch. Ich sitze hier schon wieder Stunden vor einem Problem, ich habe die Hilfe bemüht, das Forum durchsucht und nichts gefunden (oder übersehen, keine Ahnung? Entschuldigt bitte wenn ich es übersehen habe) … Fakt ist dennoch, ich kapiere es mal wieder nicht.

Folgendes Problem. Ich habe in einen eigenen Tagfeld (DISCOGS_LINK) den nachfolgenden Eintrag:

http://www.discogs.com/Pearl-Jam-Vitalogy/release/464904

stehen, diesen String wollte ich jetzt mit den vorhandenen Funktionen zerlegen, so das am Ende für einen Export nur folgendes übrigbleibt:

discogs.com

also nur der reine Domain-Name.

Ich hoffe meine Ausführungen sind ausreichend?

Vielen Dank im Vorraus,

Gruß Ratjev


#2

Probier eine Aktion vom Typ "Tag-Feld importieren" für %discogs_link%
Import-String: http://%discogs_link%/%dummy%


#3

… vielleicht habe ich mich doch falsch ausgedrückt. Ich habe ein Export-Template (*.mte Datei) mit u.a. folgender Zeile:

discogs.com

die Ausgabe in einer Textdatei sieht dann folgendermaßen aus:

discogs.com

Das "discogs.com" am Ende ist fest implementiert; meine Idee war jetzt aus dem Tag "DISCOGS_LINK" das Discogs.com zu extrahieren und an das Ende zu stellen. Der Hintergrund ist folgender, mittlerweile steht nicht immer ein Discogs-Link drin, sondern der ändert schon mal in Allmusic.com etc. pp. … ergo muss ich hier wieder Handanlegen. Wenn meine Export.mte das automatisiert kann, warum nicht nutzen, oder?


#4

An der Stelle, wo das Feld DISCOGS_LINK bisher alleine stand, versuche mal folgenden Ausdruck anstatt:
$regexp(%discogs_link%,'http://(.+?)/.*',$1)


#5
$regexp(%DISCOGS_LINK%,'^(https?://)?(www\.)?([a-z0-9]+\.){1,}([a-z0-9]{2,})/?.*$','$3$4',1) Beispiele ... $regexp('http://DISCOGS.COM', '^(https?://)?(www\.)?([a-z0-9]+\.){1,}([a-z0-9]{2,})/?.*$','$3$4',1) ==> DISCOGS.COM $regexp('http://www.discogs.com/Pearl-Jam-Vitalogy/release/464904', '^(https?://)?(www\.)?([a-z0-9]+\.){1,}([a-z0-9]{2,})/?.*$','$3$4',1) ==> discogs.com $regexp('/t/17101/2', '^(https?://)?(www\.)?([a-z0-9]+\.){1,}([a-z0-9]{2,})/?.*$','$3$4',1) ==> mp3tag.de $regexp('http://www.4711.com/index.php/de/', '^(https?://)?(www\.)?([a-z0-9]+\.){1,}([a-z0-9]{2,})/?.*$','$3$4',1) ==> 4711.com

DD.20150728.1710.CEST


Wort/Text in Titel suchen und entfernen
How to remove web address from title ?
#6

Hallo Detlev,
dein erstes Beispiel funktioniert SUPER :slight_smile: :slight_smile: :slight_smile:
Ich verstehe allerdings nur ungefähr die Hälfte von dem was du da als String aufgeführt hast. Kannst du mir mal das ein wenig erläutern, so das ich das auch verstehe und ich irgendwann einmal das anderweitig einsetzen kann?

Hier mein Ansatz zur Lösung:

$put(DISCOG, %discogs_link%)

$put(Punkt1, $strchr(%discogs_link%,.))
$put(DOMAIN1, $cutleft(%discogs_link%, $get(Punkt1)))
$put(Punkt2, $strchr($get($trim(DOMAIN1)),/))
$put(DOMAIN2, $cutright(DOMAIN1, $get(Punkt2)))

Was kommt raus?: $get(DISCOG)

 Stelle ".": $get(Punkt1)
 Stelle "/": $get(Punkt2)
1ste Domain: $get(DOMAIN1)
 2te Domain: $get(DOMAIN2)<!--fontc--></span><!--/fontc-->

... und noch das Ergebnis:

Was kommt raus?: http://www.discogs.com/Pearl-Jam-Vitalogy/release/464904
 Stelle ".":  11
 Stelle "/":  9
1ste Domain:  discogs.com/Pearl-Jam-Vitalogy/release/464904
 2te Domain:  <!--fontc--></span><!--/fontc-->

Hat mir natürlich nicht, oder nur zum Teil geholfen.
Vielen Dank an Detlev und an alle die mir helfen konnten/wollten!

Ratjev


#7

Hallo Detlev,

ich habe mal versucht den/die String(s):

$regexp('http://DISCOGS.COM','^(https?://)?(www.)?([a-z0-9]+.){1,}([a-z0-9]{2,})/?.*$','$3$4',1)

$regexp(%DISCOGS_LINK%,'^(https?://)?(www.)?([a-z0-9]+.){1,}([a-z0-9]{2,})/?.*$','$3$4',1)

$regexp('http://www.discogs.com/Pearl-Jam-Vitalogy/release/464904','^(https?://)?(www.)?([a-z0-9]+.){1,}([a-z0-9]{2,})/?.*$','$3$4',1)

zu verstehen und nach meinem Verständnis mal aufgedröselt und kommentiert.

o Zerlegt werden soll: 'http://www.discogs.com/Pearl-Jam-Vitalogy/release/464904' --> reguläre Ausdrücke zwischen ' setzen
                                                          --> reguläre Felder %TAG% ohne '
Kommata , nicht vergessen --> Trenner zwischen x und expr, repl und einem optionalem Parameter … also
$regexp(x,expr,repl,1)
		
		x=%TAG% oder Ausdruck 'http://www.discogs.com/Pearl-Jam-Vitalogy/release/464904'
		
		expr=<!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->'^(https?://)?(www\.)?([a-z0-9]+\.){1,}([a-z0-9]{2,})/?.*$',<!--colorc--></span><!--/colorc-->
		 - auch hier zwischen ' setzen und Kommata am Ende nicht vergessen!
		 
		 - String Anfang mit ^ beginnen und mit $ beenden.
		 
		 - <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->(https?://)?<!--colorc--></span><!--/colorc--> - nach http:// oder https:// suchen (feste Vorgabe, das erste ? bewirkt ob es sich http oder https handelt (beides
		   wird gefunden?), das zweite ? als Platzhalter für die Wiederholung 'keinmal oder einmal' oder gleich löschen?
		   
		 - <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->(www\.)?<!--colorc--></span><!--/colorc--> - nach www. suchen, Abgrenzen des "Wortes" www mit dem \ (meine Überlegung?) 
		   und das ? als Platzhalter für die Wiederholung 'keinmal oder einmal'  oder gleich löschen?
		   
		 -<!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro--> ([a-z0-9]+\.)<!--colorc--></span><!--/colorc--> - String ab hier bis zum nächsten . suchen. 
		   Alle möglichen Zeichen von a-z und 0-9 innerhalb der [] suchen inkl. + (Wiederholung - einmal oder mehrfach) oder inkl. . (?), 
		   Abgrenzen des "Suchstrings" [a-z0-9] mit dem \ (meine Überlegung?)
		   (Domain-Name)
		   
		 - <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->{1,}<!--colorc--></span><!--/colorc--> das ganze 1x Wiederholen, oder Ausgabe 1.Teil "discogs" (meine Überlegung?)
		 
		 - <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->([a-z0-9]{2,})<!--colorc--></span><!--/colorc--> - nach dem nächsten regulären String von a-z und 0-9 suchen und 2x Wiederholen {2,0} (meine Überlegung?)
		 
		 -<!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro--> /?.*$<!--colorc--></span><!--/colorc--> - Suche nach dem nächsten / inkl. und alles danach "löschen" (?)
		
		repl=<!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->'$3$4'<!--colorc--></span><!--/colorc-->
		 - auch hier zwischen ' setzen und Kommata am Ende nicht vergessen!
		 
		 - Ausgabe der Klammerung/Gruppierung  3 + 4 ([a-z0-9]+\.){1,}([a-z0-9]{2,})
		   discogs.com
		
		<!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->,1)<!--colorc--></span><!--/colorc--> --> schließt den String ab; 1 oder 0 für Groß- oder Kleinschreibung
		 - ein optionaler Parameter - $regexp(x,expr,repl,1)
		 - abschließende Klammer nicht vergessen!

So, ich hoffe das ich es zum Teil richtig verstanden habe? … und auch verständlich kommentiert habe. Einiges verstehe ich immer noch nicht richtig. Vielleicht, nur wenn du Lust und Launs hast, das du einmal durchgehst und deinen Kommentar dazu abgibst, ggf. korrigierst?

Wäre sehr nett von dir! :slight_smile:

Vielen Dank,

Gruß Ratjev


#8

Mit einer Gruppe aus "Tag-Feld formatieren" Aktionen und Standardfunktionen kann es auch funktionieren ...

TEST <== '/t/17101/2' TEST <== $replace(%TEST%,'https://',,'http://',,'www.',) TEST ==> 'forums.mp3tag.de/index.php?showtopic=20183&pid=85043&st=0&#entry85043' TEST <== $ifgreater($strchr(%TEST%,'/'),0,$left(%TEST%,$sub($strchr(%TEST%,'/'),1)),%TEST%) TEST ==> 'forums.mp3tag.de' TEST <== $ifgreater($strrchr(%TEST%,'.'),$strchr(%TEST%,'.'),$cutLeft(%TEST%,$strchr(%TEST%,'.')),%TEST%) TEST ==> 'mp3tag.de'

DD.20150729.1215.CEST

MTE Exportskript mit MP3 Beispieldateien ...
20150729.Test.DomainName.zip (2.82 KB)
DD.20150729.1544.CEST

20150729.Test.DomainName.zip (2.82 KB)


#9

Regulärer Ausdruck, Beispiele und Erläuterungen zur Syntax ...
https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck
https://en.wikipedia.org/wiki/Regular_expression
http://www.regular-expressions.info/

http://help.mp3tag.de/options_format.html#regexp
/t/521/1

https://de.wikipedia.org/wiki/Uniform_Resource_Locator

DD.20150729.1329.CEST


#10

… jetzt willste mich aber fordern, oder? :wink:
Ich muss allerdings zugeben, je tiefer man sich da reinwuselt um so interessanter wird die ganze Gechichte; und je mehr ich mich mit dem Export, Aktionen etc. pp. in MP3TAG einigermaßen Beschäftigt und reingewühlt habe, macht das Taggen meiner eigenen Rips wesentlich mehr Spass. Einiges hab ich schon soweit automatisiert dass es für mich keinen großen Aufwand mehr macht, meine Sachen zu taggen.
Da ich viel über Discogs pre-tagge (?) und in MP3TAG des Rest mache, hab ich schon mal überlegt die vorhandene Discogs Schnittstelle meinen Bedürfnissen anzupassen. Mal schauen :slight_smile:

Nochmals vielen Dank für die wirklich guten Lösungsansätze, die Links und die super Unterstützung.

Lieben Gruß Ratjev