![]() |
| |
#1 |
|
Assist
Beiträge: 5.605
| ![]() Code: #!/bin/bash INFO=`mocp --info` if [ "$INFO" == "State: STOP" ]; then echo -n "" else ARTIST=`mocp --info | grep Artist | cut -f2 -d :` TITLE=`mocp --info | grep SongTitle | cut -f2 -d :` ALBUM=`mocp --info | grep Album | cut -f2 -d :` expr substr "$ARTIST -$TITLE [$ALBUM]" 1 500 fi atm sieht das so aus: Code: In Flames - Food for the Gods [ Whoracle] |
| | |
| | #2 |
|
Lucy
Beiträge: 834
| |
| | |
| | #3 |
|
Assist
Beiträge: 5.605
| Code: [...]ALBUM=`mocp --info | grep Album | cut -f2 -d | sed 's/^[ \t]*//' :[...] Code: [...]ALBUM=`mocp --info | grep Album | sed 's/^[ \t]*//' :`[...] |
| | |
| | #4 |
| Guest
Beiträge: n/a
| Code: expr substr "$ARTIST -$TITLE [${ALBUM/ /}]" 1 500 Um die Eleganz des uebrigen Codes entsprechend zu wuerdigen, schweigen wir alle gemeinsam ein paar Minuten betreteten ![]() Edith sagt: `man printf` |
|
| | #5 |
|
Assist
Beiträge: 5.605
|
<3 danke colo :* (das script ist nicht von mir :F) |
| | |
| | #6 |
| Guest
Beiträge: n/a
|
Naja, also expr substr dient hier nur dazu, das erste Zeichen abzuschneiden. Und der Bindestrich ist an $TITLE drangeknallt. Offensichtlich haben sämtliche Wert vorn ein Leerzeichen zuviel. Daher stattdessen: Code: echo "${ARTIST# } - ${TITLE# } [${ALBUM# }]" Code: #!/bin/bash mocp --info | while read LINE ; do [ "$LINE" = 'State: STOP' ] && exit X=$(expr "$LINE" : 'Artist[^:]*: \(.*\)') && ARTIST=$X X=$(expr "$LINE" : 'SongTitle[^:]*: \(.*\)') && TITLE=$X X=$(expr "$LINE" : 'Album[^:]*: \(.*\)') && ALBUM=$X done echo "$ARTIST - $TITLE [$ALBUM]" |
|
| | #7 |
|
Keel
Beiträge: 2.700
|
sed -e "s/\[\ /\[/g" würde auch gehn edit: wie siehtn die ausgabe vom mocp --info aus?
__________________ |
| | |
| | #8 |
|
Assist
Beiträge: 5.605
|
@edgewalker: mit und ohne »[^:]*« geht es leider nicht :< @rob``: mocp --info Code: State: PLAY File: /home/mcd/Musik/god_is_an_astronaut/god_is_an_astronaut-[2002]-the_end_of_the_beginning/the_end_of_the_beginning-01-the_end_of_the_beginning.mp3 Title: God Is an Astronaut - The End of the Beginning [The End of the Beginning] Artist: God Is an Astronaut SongTitle: The End of the Beginning Album: The End of the Beginning TotalTime: 04:15 TimeLeft: 04:14 TotalSec: 255 CurrentTime: 00:01 CurrentSec: 1 Bitrate: 192Kbps Rate: 44KHz |
| | |
| | #9 |
| Guest
Beiträge: n/a
|
ALTER WAS MACHT DIE SAU FORENSOFTWARE MIT MEINEM SCRIPT FFS?!?!?!?! :mad: :mad: Dann eben so, Version mit Singlequotes fuer sicher(er)es eval:: http://johannes.truschnigg.info/code/mocpinfo.sh.asc |
|
| | #10 |
|
Assist
Beiträge: 5.605
|
geht, danke |
| | |
| | #11 | |
| Guest
Beiträge: n/a
| Zitat:
![]() Wenn du das Anführungszeichen beim sed ganz vorne hinschreibst, kannst du dir ca. 300 Backslashes sparen. Du hast übrigens vergessen, dass der Wert selbst auf der rechten Seite auch Anführungszeichen enthalten könnte. Davon abgesehen ist die Gymnastik mit »^([^:]*): « völlig unnötig, weil du den linken Teil behalten willst und s/// eh immer das erste Vorkommen ersetzt, dh. du kannst einfach »s/: /='/« sagen (das Anführungszeichen muss natürlich entwertet werden), um denselben Effekt zu erzielen. Außerdem sollten die Schlüssel eigentlich am Zeilenanfang verankert sein, auch wenn das in der Praxis kaum zu Problem führen sollte. Summa summarum ergibt das: Code: sed -r '/^Artist|^SongTitle|^Album/!d; s/'\\''/'\\'\\\\\\'\\''/g; s/: /='\\''/; s/$/'\\''/' Jetzt, wo ich die Ausgabe gesehen habe, würde ich einen ganz anderen Ansatz verfolgen. Code: #!/bin/bash
mocp --info | awk '
BEGIN { FS = ": " }
$1 == "State" { do_print = "STOP" != $2 }
$1 == "Artist" { artist = $2 }
$1 == "SongTitle" { title = $2 }
$1 == "Album" { album = $2 }
END { if ( do_print ) printf "%s - %s [%s]\n", artist, title, album }
' | |
|
| | #12 |
|
Assist
Beiträge: 5.605
|
gehen beide super, was soll ich nun nutzen? |
| | |
| | #13 |
| Guest
Beiträge: n/a
|
Meins. ![]() Das kann nämlich auch jemand anders noch entziffern. (Aber wenn du das von colo nehmen willst, übernimm wenigstens meine Korrekturen.) |
|
| | #14 |
|
Assist
Beiträge: 5.605
|
ok, nutze deins. ![]() danke an alle! \o/ |
| | |
| | #15 | |
| Guest
Beiträge: n/a
| Zitat:
![]() Ist doch kein Schoenheitswettbewerb hier! | |
|
| | #16 |
|
Assist
Beiträge: 5.605
|
das script geht echt gut, aber ich habs nun erstmal aus :_ opera, irssi, bitlbee, mocp, mutt, rtorrent, snownews, htop und noch ein paar sachen brauchen zusammen ~8-10% vom CPU -- das script alleine ~2-4%, es ist einfach zu gierig mit dem 'mocp --info' spam. :< |
| | |
| | #17 |
|
Dopefish
Beiträge: 4.701
|
Mal ne kurze Frage, kann man nicht irgendwie die Abfrage nur dann ausführen lassen, wenn das Lied wechselt?
__________________ Als Hirte erlaube mir, zu dienen meinem Vater dir. Deine Macht reichst Du uns durch Deine Hand, diese verbindet uns wie ein heiliges Band. Wir waten durch ein Meer von Blut, Herr gib uns dafür Kraft und Mut. in nomine patris et filii et spiritus sancti... Der blutige Pfad Gottes - The Boondock Saints "Mehr als das Gold, hat das Blei die Welt verändert." - Georg C. Lichtenberg Semper fidelis |
| | |
| | #18 |
|
Assist
Beiträge: 5.605
|
das waere sinnvoll :>
|
| | |
| | #19 |
| Guest
Beiträge: n/a
|
Wenn die Player-Software die Info nicht irgendwohin pusht, dann kommt man um pollen nicht herum, nein. Ist das Ding da ein Client fuer mpd?
|
|
| | #20 |
|
Assist
Beiträge: 5.605
| |
| | |
| | #21 |
|
Cadavre
|
gibt nochn anderes conky-moc-script das ballert die info in verschiedene files, dann wird nicht immer gepollt. ich suchs mal und editiers hier rein
|
| | |
![]() |
| Themen-Optionen | Thema durchsuchen |
|
|
TaKe 32 Spieler eingeladen und veranstaltet ein bisher einzigartiges Turnier, mit einzigartiger Stimmung mehr...
Apollo und
Nathanias mehr...