Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11324
Wohnort: Bremen
|
Hallo Grek336 Leider funktioniert es noch weniger - nach Start des auf Vagalume umgeschriebenen skripts passiert bei mir nur das: heinrich@ubuntu:~$ ./WatchDog.py
Zu wenige Argumente
Watchdog [Programm] [LastFMUrl] [TempFile] optional [Kontrollintervall]
Kontrollintervall ist standardmäßig 60 Sekunden
Traceback (most recent call last):
File "./WatchDog.py", line 82, in <module>
print (sys.argv[1])
IndexError: list index out of range
☹ ☹ 😢 so long hank
|
Grek336
Anmeldungsdatum: 28. November 2007
Beiträge: 408
|
Hallo Heinrich Schwietering. Ein paar Parameter brauchst du schon: ./WatchDog.py vagalume "lastfm://artist/Mariah Carey/similarartists" "/tmp/vagalume-michael" 60 Parameter: welches Programm soll aufgerufen werden Parameter: Welcher Parameter soll an das Programm in Parameter 1 übergeben werden Parameter: Wie heißt die Datei die überwacht werden soll Parameter (optional): Wie lang soll der Kontrollintervall sein
Im Beispiel oben soll es also heißen:
Allerdings habe ich festgestellt das in Intrepid das Änderungsdatum nicht aktualisiert wird. Deswegen wird alle 2 Minuten vagalume beendet und wieder neu aufgerufen. Wenn ich in Nautilus allerdings mit
F5 (wenn ich im Verzeichnis /tmp bin) die Anzeige regelmäßig erneuere passiert das nicht. Es sieht so aus als ob ab Intrepid (oder schon ab Hardy) das Änderungsdatum einer Datei nicht ständig erneuert wird. Wenn man das mit Nautilus über
F5 macht allerdings schon. Die Frage ist also wie kann man das Datei- bzw. Betreibssystem dazu bringen die Änderungszeit für die Datei regelmäßig zu erneuern. Ich habe gerade herausgefunden das es einen Unterschied zwischen getatime und getmtime gibt. Und dann gibt es noch os.stat(FileToControl).st_mtime. Mal sehen ob das hilft. Grüße aus Berlin Nachtrag: Das mit getatime <> getmtime war wohl der Fehler. Allerdings habe ich möglicherweise noch einen Fehler in der BeendeProgramm Funktion. Sie funktioniert zwar aber anders als sie soll. Nachtrag 2: Und hier das Python Programm
- WatchDog5.py (6.3 KiB)
- Download WatchDog5.py
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11324
Wohnort: Bremen
|
Hi! Grek336 schrieb: Ein paar Parameter brauchst du schon: ./WatchDog.py vagalume "lastfm://artist/Mariah Carey/similarartists" "/tmp/vagalume-michael" 60 Parameter: welches Programm soll aufgerufen werden Parameter: Welcher Parameter soll an das Programm in Parameter 1 übergeben werden Parameter: Wie heißt die Datei die überwacht werden soll Parameter (optional): Wie lang soll der Kontrollintervall sein
Im Beispiel oben soll es also heißen:
Ooops - Denkfehler bei mir - ich hatte im Skript selbst die entsprechenden Angaben gemacht...(siehe Frage im Edit unten)
Allerdings habe ich festgestellt das in Intrepid das Änderungsdatum nicht aktualisiert wird. Deswegen wird alle 2 Minuten vagalume beendet und wieder neu aufgerufen. Wenn ich in Nautilus allerdings mit
F5 (wenn ich im Verzeichnis /tmp bin) die Anzeige regelmäßig erneuere passiert das nicht. Es sieht so aus als ob ab Intrepid (oder schon ab Hardy) das Änderungsdatum einer Datei nicht ständig erneuert wird. Wenn man das mit Nautilus über
F5 macht allerdings schon. Die Frage ist also wie kann man das Datei- bzw. Betreibssystem dazu bringen die Änderungszeit für die Datei regelmäßig zu erneuern.
Ja, das hatte ich ja oben schon im Edit vermutet; aber wie das umgangen werden kann, weiß ich allerdings auch nicht...
Nachtrag 2: Und hier das Python Programm
Werde' gleich mal testen! so long hank EDIT Das neue script funktioniert; Vagalume startet und bricht auch nicht ab! Jetzt muß ich nur noch auf 'nen "Connection Error" oder so was warten, aber der kommt sicher - Vagalume behauptet immer mal, dass trotz reichlich gefüllter Playlist kein Titel mehr zur Wiedergabe vorhanden wäre 😉. Aber mir ist nicht ganz klar, was diese Zeilen im Skript zu bedeuten haben (Zeile 61-66)
DateiNichtGefunden = 0
WarteZeit = 60
Programm = 'last-exit'
LastFMUrl = 'lastfm://artist/Dannii Minogue/similarartists'
FileToControl = '/tmp/lastexit-michael'
ZuWenigeArgumente = True Ich habe sie erstmal nicht geändert; es funktioniert auch so. Sind das "debugging"-Parameter? Sollte ich dann wohl auf meine Start-Angaben einstellen.
Außerdem finden sich etliche "LastExit"s im Programm; sollte ich wohl auch entsprechend anpassen? Noch komfortabler wäre es vielleicht, das Skript mit Zenity auzupeppen; werd' ich mal versuchen, ob das geht. Besten Dank erst einmal!
|
Grek336
Anmeldungsdatum: 28. November 2007
Beiträge: 408
|
Heinrich Schwietering schrieb: Aber mir ist nicht ganz klar, was diese Zeilen im Skript zu bedeuten haben (Zeile 61-66)
DateiNichtGefunden = 0
WarteZeit = 60
Programm = 'last-exit'
LastFMUrl = 'lastfm://artist/Dannii Minogue/similarartists'
FileToControl = '/tmp/lastexit-michael'
ZuWenigeArgumente = True
Das sind noch Überreste von früher. Jede (na ja nicht wirklich jede Variable) hat so einen Anfangswert. Die Initialisierungen von Programm, LastFMUrl und FileToControl sind eigentlich überflüssig geworden. DateiNichtGefunden ist eventuell auch überflüssig. WarteZeit und ZuWenigArgumente sind nötig (glaube ich).
Ich habe sie erstmal nicht geändert; es funktioniert auch so. Sind das "debugging"-Parameter? Sollte ich dann wohl auf meine Start-Angaben einstellen.
Außerdem finden sich etliche "LastExit"s im Programm; sollte ich wohl auch entsprechend anpassen?
Das Debug = True irgendwo relativ am Anfang ist der Debugging-Schalter der dann zusätzliche Ausgaben auf Standard-Out schreibt. Die kann man dann im Terminal sehen oder wie ich hier in DrPython oder Eric. Ist leider "festverdrahtet" da ich nicht wusste wie ich auf die schnelle die Parametererkennung umschreiben müsste damit es über die Kommandozeile funktioniert. Die Variable LastExit stammen auch noch aus der "Frühzeit" der Programmentwicklung. Die Variablen brauchen halt Namen. Das ist sozusagen der Zeiger auf die Datenstruktur für den aufgerufenen Prozess. In deinem Fall also Vagamule.
Noch komfortabler wäre es vielleicht, das Skript mit Zenity auzupeppen; werd' ich mal versuchen, ob das geht.
Da muss ich mal sehen was Zenity ist. Da du mir schon gleich einen Link darauf gesetzt hast. Da "Programm" ist ja eigentlich nur entstanden weil ich mich immer über das Anhalten von last-exit geärgert habe. Ein Wut-Baby sozusagen. Ich dachte das ich die wesentlichen Probleme dabei hätte eine zuverlässige Methode zu finden um das Anhalten zu erkennen, den Abbruch zu erreichen und last-exit wieder neu zu starten. Allerdings hatte ich mehr Probleme in Python die richtigen Befehle für das Starten von Programmen zu finden. Und dann hat sich ja noch der Fehler mit getatime und getmtime ergeben. Das ist im wahrsten Sinne des Wortes eine Bastelarbeit, sozusagen eine "Fliegende Verdrahtung". Grüße aus Berlin PS: Bei mir läuft Watchdog seit ca. 23:30 gestern und Vagamule muss zumindest ein mal angehalten haben. Ist es eigentlich normal das Vagamule in 4,5 Stunden ca. 1 Stunde Rechenzeit verbraucht, oder liegt das an meiner VM?
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11324
Wohnort: Bremen
|
Hi! Grek336 schrieb:
Das sind noch Überreste von früher. Jede (na ja nicht wirklich jede Variable) hat so einen Anfangswert. Die Initialisierungen von Programm, LastFMUrl und FileToControl sind eigentlich überflüssig geworden. DateiNichtGefunden ist eventuell auch überflüssig. WarteZeit und ZuWenigArgumente sind nötig (glaube ich).
OK, test ich mal aus...
Das Debug = True irgendwo relativ am Anfang ist der Debugging-Schalter der dann zusätzliche Ausgaben auf Standard-Out schreibt. Die kann man dann im Terminal sehen oder wie ich hier in DrPython oder Eric. Ist leider "festverdrahtet" da ich nicht wusste wie ich auf die schnelle die Parametererkennung umschreiben müsste damit es über die Kommandozeile funktioniert.
Na, das geht etwas über meinen Horizont hinaus... Die Variable LastExit stammen auch noch aus der "Frühzeit" der Programmentwicklung. Die Variablen brauchen halt Namen. Das ist sozusagen der Zeiger auf die Datenstruktur für den aufgerufenen Prozess. In deinem Fall also Vagamule.
Jupp, funktioniert auch einwandfrei; ich hab' Vagalume dann einfach mal angehalten; es wurde dann tatsächlich beendet, und dann auch wieder gestartet; alles, wie es soll 👍
Da muss ich mal sehen was Zenity ist. Da du mir schon gleich einen Link darauf gesetzt hast.
Ich weiß nicht, ob das mit python funktioniert, ist halt was für GUI-Futzis wie mich, die sich gerne mal vertippen auf der Kommandozeile 😉 Da "Programm" ist ja eigentlich nur entstanden weil ich mich immer über das Anhalten von last-exit geärgert habe. Ein Wut-Baby sozusagen. Ich dachte das ich die wesentlichen Probleme dabei hätte eine zuverlässige Methode zu finden um das Anhalten zu erkennen, den Abbruch zu erreichen und last-exit wieder neu zu starten. Allerdings hatte ich mehr Probleme in Python die richtigen Befehle für das Starten von Programmen zu finden. Und dann hat sich ja noch der Fehler mit getatime und getmtime ergeben.
Jaja, ich müsste dafür dann halt doch noch Informatik studieren (oder zumindest 'nen Volkshochschulkurs in py belegen... 😊
PS: Bei mir läuft Watchdog seit ca. 23:30 gestern und Vagamule muss zumindest ein mal angehalten haben. Ist es eigentlich normal das Vagamule in 4,5 Stunden ca. 1 Stunde Rechenzeit verbraucht, oder liegt das an meiner VM?
Verstehe ich jetzt auch nicht ganz - "Rechenzeit verbraucht"? Aber es geht wohl um den Umgang mit Rechner-Ressourcen, und da steckt dann ggf. PulseAudio dahinter, das unter intrepid Standard-Soundserver ist; und das frisst unglaublich viel Rechnerleistung... so long hank
|
Grek336
Anmeldungsdatum: 28. November 2007
Beiträge: 408
|
Hallo Heinrich Schwietering!
Das Debug = True irgendwo relativ am Anfang ist der Debugging-Schalter der dann zusätzliche Ausgaben auf Standard-Out schreibt. Die kann man dann im Terminal sehen oder wie ich hier in DrPython oder Eric. Ist leider "festverdrahtet" da ich nicht wusste wie ich auf die schnelle die Parametererkennung umschreiben müsste damit es über die Kommandozeile funktioniert.
Na, das geht etwas über meinen Horizont hinaus...
Ist ganz einfach und primitiv: Wenn ich nichts nachträglich am Quellcode verändert habe steht in Zeile 59 Also nur eine globale Variable die ich auf True (wahr) setze. An verschiedenen Stellen im Quellcode (z.B Zeile 10,14,24,...) findest du | if Debug: print ('(WatchDog) '+'['+time.asctime(time.localtime(time.time()))+'] '+ #...hier steht dann jeweils was anders, je nachdem was ausgegeben werden soll
|
Dadurch wird (wenn du WatchDog im Terminal ausführst) jeweils eine Zeile mit Informationen ausgegeben. Wenn du Debug = False hinschreibst ist Schuss damit und WatchDog hält die Klappe. Normalerweise macht man so etwas über eine zusätzliche Option in der Kommandozeile wie --debug, aber da meine Erkennungsroutine (Zeile 68-84) sehr primitiv ist kann ich so eine Option nicht erkennen ohne sie komplet neu zu schreiben. Ist eben alles eine Bastelarbeit. Sag niemanden das ich vor über 20 Jahren mal Informatik studiert habe (bevor ich krank wurde). 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | if len(sys.argv) < 4 :
print('Zu wenige Argumente')
print('Watchdog [Programm] [LastFMUrl] [TempFile] optional [Kontrollintervall]')
print('Kontrollintervall ist standardmäßig 60 Sekunden')
else:
ZuWenigeArgumente = False
print ('Argument 1: '+sys.argv[1])
Programm = sys.argv[1]
print ('Argument 2: '+sys.argv[2])
LastFMUrl = sys.argv[2]
print ('Argument 3: '+sys.argv[3])
FileToControl = sys.argv[3]
if len(sys.argv) == 5 :
print ('Argument 4: '+sys.argv[4])
WarteZeitTemp = float(sys.argv[4])
if WarteZeitTemp >= 5:
WarteZeit = float(sys.argv[4])
|
Da muss ich mal sehen was Zenity ist. Da du mir schon gleich einen Link darauf gesetzt hast.
Ich weiß nicht, ob das mit python funktioniert, ist halt was für GUI-Futzis wie mich, die sich gerne mal vertippen auf der Kommandozeile 😉
Ich habe mir einen Starter angelegt mit z.B. folgendem Inhalt in Befehl: "/media/disk/Programmieren/Python/last-exit/WatchDog4.py" vagalume "lastfm://artist/Girls Aloud/similarartists" "/tmp/lastfm-michael" 60 Falls du beim Start jedoch auswählen möchtest was du jeweils hören willst, müsstest du dir ein Script schreiben das dich nach dem Künstler fragt (oder nach der Playlist).
PS: Bei mir läuft Watchdog seit ca. 23:30 gestern und Vagamule muss zumindest ein mal angehalten haben. Ist es eigentlich normal das Vagamule in 4,5 Stunden ca. 1 Stunde Rechenzeit verbraucht, oder liegt das an meiner VM?
Verstehe ich jetzt auch nicht ganz - "Rechenzeit verbraucht"? Aber es geht wohl um den Umgang mit Rechner-Ressourcen, und da steckt dann ggf. PulseAudio dahinter, das unter intrepid Standard-Soundserver ist; und das frisst unglaublich viel Rechnerleistung...
Unter Intrepid wird in der Systemüberwachung (Hauptmenü → System → Systemverwaltung → Systemüberwachung) unter anderem die verbrauchte CPU-Zeit angezeigt. Nachdem Vagalume ca. 4 1/2 Stunden lief wurde ca. 1 Stunde CPU-Zeit angezeigt. Das ist eine Menge. Bei mir läuft TheLastRipper seit ca. 1 3/4 Tagen und hat erst ca. 20 Minuten verbraucht. Grüße aus Berlin
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11324
Wohnort: Bremen
|
Hi! Grek336 schrieb:
Ist ganz einfach und primitiv:
Wenn du das sagst... Sag niemanden das ich vor über 20 Jahren mal Informatik studiert habe (bevor ich krank wurde).
Versprochen 😀 - Die Krankheit hieß aber nicht "Lastfm-Sucht?"... 😉 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | if len(sys.argv) < 4 :
print('Zu wenige Argumente')
print('Watchdog [Programm] [LastFMUrl] [TempFile] optional [Kontrollintervall]')
print('Kontrollintervall ist standardmäßig 60 Sekunden')
else:
ZuWenigeArgumente = False
print ('Argument 1: '+sys.argv[1])
Programm = sys.argv[1]
print ('Argument 2: '+sys.argv[2])
LastFMUrl = sys.argv[2]
print ('Argument 3: '+sys.argv[3])
FileToControl = sys.argv[3]
if len(sys.argv) == 5 :
print ('Argument 4: '+sys.argv[4])
WarteZeitTemp = float(sys.argv[4])
if WarteZeitTemp >= 5:
WarteZeit = float(sys.argv[4])
|
Naja, so halbwegs verstehe ich es ja vielleicht...
Ich habe mir einen Starter angelegt mit z.B. folgendem Inhalt in Befehl:
"/media/disk/Programmieren/Python/last-exit/WatchDog4.py" vagalume "lastfm://artist/Girls Aloud/similarartists" "/tmp/lastfm-michael" 60
Ja, gute Idee! Da ich meist sowieso meine (ständig aktualisierte 😉 ) Playlist rippe, werd' ich das wohl auch so machen! Falls du beim Start jedoch auswählen möchtest was du jeweils hören willst, müsstest du dir ein Script schreiben das dich nach dem Künstler fragt (oder nach der Playlist).
Ja, das war mein Gedanke mit Zenity, aber tippen muss ich da auch (gerade hab' ich mich z.B gewundert, dass Vagalume immer beendet wurde, bis ich dann feststellen musste, dass ich /tmp/vagamlume-heinrich geschrieben hatte...
Unter Intrepid wird in der Systemüberwachung (Hauptmenü → System → Systemverwaltung → Systemüberwachung) unter anderem die verbrauchte CPU-Zeit angezeigt. Nachdem Vagalume ca. 4 1/2 Stunden lief wurde ca. 1 Stunde CPU-Zeit angezeigt. Das ist eine Menge. Bei mir läuft TheLastRipper seit ca. 1 3/4 Tagen und hat erst ca. 20 Minuten verbraucht.
Was sich doch alles unter der Haube verbirgt! Unter den Einstellungen hab' ich es dann ja auch gefunden... Vagalume ist wohl etwas anspruchsvoller als TheLastRipper (das verwendet den Prozessor wohl hauptsächlich beim Abspeichern, weil die Songs anders als bei Vagalume zunächst mal im Speicher landen)
so long (grüß' mir Berlin, die Tage über Silvester waren viel zu kurz...) hank
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11324
Wohnort: Bremen
|
Hi! Läuft jetzt alles bestens mit dem WatchDog; eine Kleinigkeit: wie könnte man das Skript dazu bewegen, beim Starten nicht die angegebene Wartezeit "auszusitzen", sonder gleich loszulegen? Was mir noch aufgefallen ist: Manchmal lässt sich das "bewachte" Programm regulär im Programmfenster selbst beenden; WatchDog beendet sich dann auch nach der Wartezeit; mit der Meldung ""Programm" hat sich ohne Fehler beendet". Manchmal bleibt aber der WatchDog dann aktiv; und das bewachte Programm startet nach der Wartezeit wieder neu... 😲 ; Beenden nur über Abschalten des WatchDogs möglich... Ich hab noch kein System dahinter entdeckt; hängt es ggf davon ab, ob der Track, bei dem ich abschlte, gescrobbelt wurde oder nicht? Bisher beziehen sich meine Beobachtungen auf Vagalume, dort habe ich standardmäßig das "Scrobbeln" der Titel erlaubt. Werde das Skript mal im Wiki verlinken, vielleicht nervt ja auch andere, dass es zu Abbrüchen und Hängenbleibern kommt ☺ so long hank
|
LiDa
Anmeldungsdatum: 6. Juni 2008
Beiträge: 3
Wohnort: Winterthur
|
Hi
Ich entdeckte vor einer Woche LastFM und nervte mich über die Unterbrüche von vagalume dieser Beitrag hat mir sehr geholfen. Dennoch gehöre ich zu den GUI-Futzis.
Darum habe ich mich bemüht das Programm WatchDog mit zenity auszustatten, weil ich jedoch keine Erfahrung mit Python habe (ich weiss nicht ob zenity überhaubt mit Python funktioniert), habe ich mich entschieden das Programm in ein shell script umzuschreiben. Das Programm wie ich es angehängt habe, ist bei mir in Gebrauch und funktioniert für vagalume. Falls jemand auch lieber ein Programm mit einem minimalen GUI hat stellt diese Variante eine alternative dar. Es können am Anfang in der Datei unter Konfiguration die Standartwerte für das Programm eingegeben werden damit nicht immer alles eingegeben werden muss.
- WatchCat.sh (5.4 KiB)
- Download WatchCat.sh
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11324
Wohnort: Bremen
|
Hi! @ LiDa Im Prinzip sehr schön; so hatte ich mir das mit Zenity in etwa vorgestellt! (Ich musste allerdings erst mal die erste Zeile in #!/bin/bash umwandeln; das ist eigentlich der Standard-Ort dafür (ja, wirklich mit d, ist ja keine Standarte 😉 )) In der Praxis passiert bei mir allerdings dieses: Vagalume startet, es kommt aber zu diesen Fehlermeldungen (sind mir bisher noch nicht so aufgefallen)
vagalume:7451): GLib-CRITICAL **: g_markup_escape_text: assertion `text != NULL' failed
(vagalume:7451): GLib-CRITICAL **: g_string_append: assertion `val != NULL' failed
Debug - (WatchCat) [ CET ] Program id
Debug - (WatchCat) [ CET ] Endlosschlaufe
heinrich@ubuntu:~$
Vagalume läuft weiter, es wird allerdings der gespielte Sender nicht mehr angezeigt (es ist aber der, der im Skript angegeben war); das Skript scheint sich allerdings verabschiedet zu haben... EDIT: Die Fehlermeldung scheint ein allgemeines Problem zu sein, ggf. haben die Lastfm-Leute mal wieder was umgestellt. TheLastRipper zeigte schon länger nicht mehr den gespielten Sender an; vielleicht ist jetzt wieder etwas am audioscrobbler-Protokoll o.ä. geändert worden... Der WatchDog läuft aber auch mit den Meldungen weiter. Die GLib-CRITICAL Meldungen beziehen sich also wohl nur das Zusammenspiel von Vagalume und lastfm; Last-Exit teste ich jetzt auch noch mal darauf - und siehe da: Auch hier keine Angabe mehr zum gespielten Sender! Wenn es aber ansonsten funktioniert: Jetzt noch in die Zenity-Fenster etwas mehr Erläuterungen in den Text (Beispiele, ggf. ein lastfm:// als vorgegebenen Anfang für die URL etc.), und das ganze wird richtig anschaulich! (Ich komme auch mit meinem Starter im Hauptmenü gut klar, das stehen meine Standard-Werte drin; aber wer öfter verschiedene Sender verwendet, ist damit natürlich besser bedient. Da fällt mir noch was eine: Was passiert, wenn ich zwischendurch den Sender wechsele, und es kommt dann zu Abbrüchen? Startet das überwachte Programm mit den neuen oder den in der Standardeinstellung gespeicherten Werten? - Na, ich werd's mal mit dem WatchDog ausprobieren...) so long hank
|
LiDa
Anmeldungsdatum: 6. Juni 2008
Beiträge: 3
Wohnort: Winterthur
|
Hi Das Problem liegt am Script ich habe den Eintrag:
| id=$(ps -e | grep $Programm | cut -d" " -f1)
|
nach:
geändert somit findet das Script immer den "pid" von vagalume und das Problem ist behoben.
Die anderen Debug-Informationen sind von vagalume selber und entstehen bei mir auch ist aber nicht weiter tragisch.
- WatchCat.sh (5.4 KiB)
- Download WatchCat.sh
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11324
Wohnort: Bremen
|
Hi! Jo, jetzt funktioniert es! Danke 👍 Hab' die Zenity-Texte mal etwas informativer gestaltet; so weiß man gleich, was eingetragen werden kann. Das Programm funktioniert natürlich nicht für alle Lastfm.Player, sondern nur die, die per Save-Song-Patch mit Temporärdatei arbeiten; die "Standard-Versionen" von Vagalume und Last-Exit lassen sich so nicht überwachen; auch TheLastRipper nicht; da wird der Song zunächst im Speicher abgelegt, um dann geschrieben zu werden. so long hank
- WatchCat2.sh (5.7 KiB)
- Download WatchCat2.sh
|
uvok89
Anmeldungsdatum: 14. Oktober 2007
Beiträge: 179
|
Weiß jemand, ob Last-Exit noch weiter entwickelt wird? Im SVN hat sich seit 6 Monaten nichts getan:
http://svn.gnome.org/viewvc/last-exit/trunk/
|
evilware666
Anmeldungsdatum: 5. November 2006
Beiträge: 316
Wohnort: Ein Dorf in Dithschiländ ;-)
|
Moin Moin! Leider bekomme ich das Skript nicht zum laufen. Ich poste mal wie ich das eingestellt habe, wäre nett wenn jemand mal ein Blick drauf werfen könnte. ☺ #!/bin/bash
###########################################################################################
###### Programm Informationen
###########################################################################################
# Name: WatchCat
# Zweck: Kontrollieren von vagalume
# Autor: David Linzberger, modifiziert von heinrich Schwietering
# Datum: 09.02.2009
# Version: v1.1a
###########################################################################################
###### Konstanten
###########################################################################################
# Mit Debug kann bestimmt werden ob Debug Informationen angezeit werden.
# Es stehen true=1 oder false=0 zur Auswahl
#
# Standardwert "1"
Debug="1"
# Die folgenden Einstellungen sind nur Standardeinstellungen, welche helfen, das Programm
# schneller und einfacher zu bedienen. Während des Programmstarts müssen noch einmal
# alle Eingaben bestätigt werden. Es geht jedoch entschieden schneller, wenn hier richtige
# Standardwerte eingetragen werden.
# Mit StandardProgramm kann entschieden werden, welches Programm standardmäßig verwendet
# wird, damit die Eingabe im GUI nicht immer gemacht werden muss. Das Programm wurde für
# vagalume geschrieben und auch getestet, aber es sollte kein Problem sein, auch
# Last-Exit (mit Save-Song-Patch) damit zu überwachen.
#
# Standardwert "vagalume"
StandardProgramm="vagalume"
# Mit StandardLastFMUrl kann entschieden werden, welche LastFM Url standardmässig verwendet
# wird. Diese Standard Url erscheint im GUI und muss nicht immer eingegeben werden.
# Dabei gibt es u.a. folgende Url's
# Meine Musiksammlung -> lastfm://user/<LastFM-USER>/personal
# Radiostation -> lastfm://globaltags/<Radiostation>
# Meine Playliste -> lastfm://user/<LastFM-USER>/playlist/<NamePlaylist>
# Artist -> lastfm://artist/<NameArtist>
# ändliche Artisten -> lastfm://artist/<NameArtist>/similarartists
#
# Standardwert "lastfm://user/<LastFM-USER>/personal"
StandardLastFMUrl="lastfm://artist/<toto>/similarartists"
# Mit StandardFile kann entschieden werden, welche Datei überwacht werden sollte, damit
# entschieden werden kann, ob das Programm neu gestartet werden muss.
# Beispiel für vagalume:
# /tmp/vagalume-<USER>
#
# Standardwert "/tmp/vagalume-<USER>"
StandardFile="/tmp/vagalume-evilware666"
# Mit StandardZeit kann entschieden werden, wie schnell das Kontrollintervall sei soll;
# dabei ist zu beachten, dass dieses Script auch eine gewisse, jedoch geringe, Leistung
# verbraucht. Deshalb sollte das Kontrollintervall nicht kleiner als 10 Sekunden
# gewählt werden.
#
# Standardwert "60"
StandardZeit="15"
# <-- Ab hier sind normalerweise keine Änderungen mehr notwendig -->
###########################################################################################
###### Programm
###########################################################################################
Schlafe() {
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] Warte $1 Sekunden lang."; fi
sleep $1
}
Progstart() {
$Programm $LastFMUrl &
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] Starte $Programm"; fi
Schlafe 10
id=$(pidof $Programm)
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] Programm id $id"; fi
}
ProgEnde() {
exit
}
Programm=$(zenity --entry \
--title "WatchCat"\
--text "Welches Programm soll überwacht werden?
Es können Vagalume/Vagalume oder Last-Exit (jeweils mit Save-Songpatch!) gewählt werden."\
--entry-text "$StandardProgramm")
if [ "$Programm" == "" ]; then ProgEnde; fi
LastFMUrl=$(zenity --entry \
--title "WatchCat"\
--text "Wie lautet die Url von LastFM?
Sie beginnt immer mit lastfm://"\
--entry-text "$StandardLastFMUrl")
if [ "$LastFMUrl" == "" ]; then ProgEnde; fi
FileToControl=$(zenity --entry \
--title "WatchCat"\
--text "Welche Datei soll überwacht werden?
Für Vagalume: /tmp/vagalume-<Lastfm-Benutzername>,
für Last-Exit:/tmp/lastfm-<Computer-Benutzername>"\
--entry-text "$StandardFile")
if [ "$FileToControl" == "" ]; then ProgEnde; fi
WarteZeit=$(zenity --entry \
--title "WatchCat"\
--text "Wie groß soll das Kontrollintervall (in Sekunden) sein?"\
--entry-text "$StandardZeit")
if [ $? != 0 ]; then ProgEnde; fi
if [ "$WarteZeit" == "" ]; then $WarteZeit=$StandardZeit; fi
zenity --question\
--title "Information"\
--text "\
Programm: $Programm \n\
LastFM Url: $LastFMUrl \n\
Datei: $FileToControl \n\
Kontrollinterval: $WarteZeit sek"
if [[ $? != 0 ]] ; then ProgEnde; fi
id=$(pidof $Programm)
if [ "$id" == "" ]
then
Progstart
else
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] Programm existiert"; fi
kill $id
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] Programm mit ID:$id abgebrochen"; fi
Schlafe 5
Progstart
fi
DateiNichtGefunden=0
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] Endlosschlaufe"; fi
while true; do
id=$(pidof $Programm)
if [ "$id" == "" ]; then ProgEnde; fi
if [ "$DateiNichtGefunden" == "1" ]; then
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] $Programm beenden"; fi
kill $id
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] $Programm beendet"; fi
Progstart
fi
Schlafe $WarteZeit
if [ ! -f $FileToControl ]; then
DateiNichtGefunden=1
else
DateiNichtGefunden=0
fi
if [ $Debug == "1" ]; then echo "Debug - (WatchCat) [ $(date +%T) ] Datei nicht gefunden $DateiNichtGefunden"; fi
done Hab alle Varianten mit der Url-Einstellung durch aber nichts klappt. 😬 Eventuell weiss ja jemand was ich falsch eingestellt habe. ☺ P.S. Vagalume 0.7.1 ( natürlich mit Song Patch ) C.U. Evilware666 😈
|
evilware666
Anmeldungsdatum: 5. November 2006
Beiträge: 316
Wohnort: Ein Dorf in Dithschiländ ;-)
|
Moin Moin! Hab es selber hin bekommen. 😀 Mein Fehler bestand darin, das ich den "Artist" immer zwischen die Pfeile gesetzt habe lastfm://artist/<toto>/similarartists aber genau darin bestand der Fehler, so lastfm://artist/toto/similarartists erst hab ich das Ganze zum laufen bekommen. Aber Gut Ding will Weile habe. 😀 Gruss Evilware666 😈
|