Guten Morgen,
sorry, hätte das ganze Szenario beschreiben sollen..
Es geht um ein Schüler-Radio Projekt für das es leider keine Kostenstelle gibt, daher versuche ich eine "Sendeautomation" auf einem Cubietruck zum Laufen zu bringen.
Also habe ich ein sabashare eingerichtet in welches die Produzierten Audiodateien hinein kommen und entsprechend der Benennung Abgespielt werden.
Realisiert habe ich das über eine Kombination aus MPD, etwas Bash und einen Cron job
- Ja, ich weiss, dass geht bestimmt besser. Wie gesagt, ich kann eher php..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 | #!/bin/bash
# Suche Dateien die in der Bennenung Tag-Nr, Tag, Stunde, Minuten im Namen hat
# -> wert wird nach $matchfile übergeben und in die Playlist von MPD gesetzt
PATH=/RPB/lan-shares/Audio:/usr/local/bin:/usr/bin:/bin
# Jahr
jahr=`date +"%Y"`
# Monat für log
monat=`date +"%m"`
# Tag im Monat
tgimonat=`date +"%d"`
# Wochentag als Zahl
wtag=`date +"%w"`
# Tag - nach Muster Mo, Di, Mi, usw.
tag=`date +"%a"`
# Stunden im Format 01, 02, 03, etc.
stunde=`date +"%H"`
# Minuten im Format 01, 02, 03, etc.
minute=`date +"%M"`
# pfad für getauschte Sendungen - dev
#oldfiles=`"/RPB/lan-shares/Audio/Ausgetauschte Sendungen/"`
# Datei die bei Ausfall gespielt werden soll.
streamfailsound="streamfail.mp3"
# zeit die für das kopieren der Ausfalldatei ca nötig ist.
wzeit=1
# MPC Status und ab in mpc-status
mpcstatus=$(mpc status)
# suche nach datei welche aktuellen Tag, und Uhrzeit im namen hat
# gebe Dateinamen ohne Pfad aus
# ergebniss kommt in matchfile
matchfile=`find /RPB/lan-shares/Audio -type f -iname "*00$wtag*$tag*$stunde*$minute*bis*" -exec basename {} \;`
echo *00$wtag*$tag*$stunde*$minute*
#test MUSS GEÄNDERT WERDEN!!
#matchfile=`find /RPB/lan-shares/Audio -type f -iname "*findmich*" -exec basename {} \;`
echo "datei: $matchfile"
# wenn keine passende Daten gefunden werden, prüfe status von mpc
if [ -z "$matchfile" ];
then
# prüfe ob bereits play ausgegeben wird, wenn nicht lade ausfallsound
if [[ $mpcstatus != *playing* ]]
then
# Kopiere ausfallsound in Musikverzeichniss
cp /RPB/stream-fail/$streamfailsound /RPB/lan-shares/Audio/$streamfailsound
mpc clear
mpc repeat on
mpc replaygain track
#warte bis das kopieren abgeschlossen ist, und mach den rest
mpc update
sleep $wzeit
mpc add $streamfailsound
mpc add $streamfailsound
mpc crossfade 4
mpc play
# nörgeln..
cp /RPB/script/blank.log /RPB/lan-shares/log/"$jahr $monat $tgimonat - $stunde.$minute Uhr - WARNING Backup Audio.log"
fi
else
# Aufräumen, falls streamfail aktiv war
clean=`find /RPB/lan-shares/Audio -type f -iname $streamfailsound`
rm $clean
echo $wtag $tag $stunde $minute
echo "gefunden: $matchfile"
mpc clear
mpc update
sleep $wzeit
mpc insert "$matchfile"
mpc repeat off
mpc crossfade 0
mpc play
cp /RPB/script/blank.log /RPB/lan-shares/log/"$jahr $monat $tgimonat - $stunde.$minute Uhr - Playing file - $matchfile".log
fi
exit
|
Die Audiodateien werden nach dem Muster;
01 Mo 08.00 bis 10.00Uhr -Sendungsname.mp3
01 Mo 10.00 bis 11.00Uhr -Sendungsname.mp3
01 Mo 12.00 bis 13.30Uhr -Sendungsname.mp3
[..]
02 Di 08.00 bis 10.00Uhr -Sendungsname.mp3
02 Di 10.00 bis 11.00Uhr -Sendungsname.mp3
usw.. benannt.
Durch die Wildcards in "*$tag*$stunde*$minute*bis*" sollen alle Dateibezeichnungen verwendet werden können, die "Tag", "Uhrzeit" und als Trennzeichen "bis" enthalten (also auch sowohl "01mo10.00bis11.00Uhr[...].mp3" als auch "01 Mo 08.00 bis 10.00 Uhr [...].mp3).
Das ist wichtig, damit die Schüler das ganze zum Schluss auch wirklich hinkriegen..
Das funktioniert soweit, nun gab es aber die Frage ob evtl. auch Programmhinweise über 2 Monitore im Essenssaal ausgegeben werden könnten.
Ich dachte das könnte man ähnlich realisieren, der Gedanke;
Schüler erstellen ein Programmbild und kopieren dieses in ein extra lan-share.
Sollte die Datei bspw. "01 mo 08.00 - 10.00 -IrgendEinText.png" heißen, müsste Sie am Montag von 8:00 bis 10:00Uhr dargestellt werden,
Analog dazu müsste die Datei "01 mo 09.00 bis 12.00 - IrgendEinText.png" am Montag von 09:00 bis 11:00Uhr wiedergegeben werden (Überschneidungen der Zeiträume sind möglich).
usw..
Das abspielen wird ebenfalls mit Cron und über die Hintergrundbildfunktion von LXDE umgesetzt.
| pcmanfm -w "$(find /RPB/lan-shares/programm -type f | shuf -n1)"
|
ganz blöd;
wtag=`date +"%w"`
tag=`date +"%a"`
stunde=`date +"%H"`
pruefmich= (hier weiss ich nicht weiter..)
suche alle Dateien im Verzeichnis XY die im Namen das Muster *$wtag$*$tag$stunde*bis*$PRUEFMICH*.png haben
und vergleiche ob das aktuellen Datum und Zeit passen oder im angegebenen Zeitraum liegen -> wenn ja, kopiere in Arbeitsverzeichnis
Die Endgültigen Dateibenennungen können noch festgelegt werden, toll wäre aber wenn das möglichst nicht zu sensibel "Fehlbenennungen" wäre, also im schlimmsten fall auch "00001-mOnTaG-blödinn-10.00BIS1100.png" erkannt würde.
Leider weiß ich noch nicht so genau was der geschickteste weg wäre, das zu realisieren, daher auch die etwas schwer verständliche Beschreibung des Vorhabens.
Einen guten Start in die neue Woche ☺
Jan
[edit] Fett gesetzte Dateinamen.. Kann ich hier keine Zeilenumbrüche ohne [code] einfügen?