staging.inyokaproject.org

TubeTV - Youtube Videos verwalten und abspielen im Terminal

Status: Ungelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

KarstenW.

Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Hallo,

in den letzten Tagen habe ich an einem neuen Bash Script gearbeitet welches ich hier kurz vorstellen und zum testen anbieten möchte.

- Tube TV -

Das Bash Script wird einfach aus dem entpackten Ordner im Terminal gestartet. Damit es einwandfrei arbeitet ist "Zenity, mplayer & youtube-dl" notwendig, diese Programme müssen installiert sein.

Nach dem Start von tubetv.sh "Im Terminal ausführen" erscheint ein Auswahlmenü. Im oberen Teil werden die anwählbaren Videos nummeriert angezeigt. Durch Eingabe der Nummer und drücken der Entertaste startet das entsprechende Video. Das Video kann durch drücken von Q unterbrochen werden, man gelangt zurück ins Menü.

Im unteren Teil sieht man eine Leiste mit einer Übersicht einiger Befehle. Durch Eingabe von help und drücken der Entertaste erhält man eine Übersicht aller Befehle.

Das Programm arbeitet mit sogenannten Blöcken in denen die Video URL 's von Youtube gespeichert sind. Die Blöcke befinden sich im Ordner /sl und sind wenn man sie mit einem Editor öffnet selbsterklärend. Der erste Teil im Block besteht aus dem Videonamen, der zweite teil url und der dritte Teil ist die URL. Die wichtigsten Verwaltungsfunktion für die Blöcke kann man über das Programm steuern, aber man kann die Blöcke auch manuell mit einem Editor bearbeiten.

Befehle:

  • load = Läd einen Block ins Menü und zeigt die darin enthaltenen Videos an

  • list = Listet die vorhandenen Blöcke

  • newblock = Legt einen neuen Block im Verzeichniss /sl an

  • newvideo = Trägt ein neues Video in einen Block ein

  • del = Löscht einen kompletten Block

  • + = Trägt ein Video in den Block fav (Favouriten) ein

Mit + hat man auch die Möglichkeit mehrere Videos hintereinander einzutragen. Es erscheint eine Abfrage wieviele Videos man eintragen möchte. Der Block fav startet immer beim ersten Aufruf des Programms und darf auch nicht vollständig gelöscht werden. Es muss zumindest eine Datei fav im Ordner /sl vorhanden sein, diese kann auch leer sein. Die Blöcke haben keine Extension, werden also nur unter Namen abgespeichert.

So ich hoffe ich habe nichts vergessen, würde mich freuen wenn jemand das Programm testen und eine Beurteilung abgeben würde. Verbesserungen oder Verbesserungsvorschläge sind natürlich auch willkommen.

Das Script ist im Anhang, einfach entpacken und starten, viel Spaß.

Gruß Karsten

tubetv.tar.gz (2.7 KiB)
Download tubetv.tar.gz

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Für alle die youtube-dl nicht zum laufen bekommen, hier ein Script welches die aktuelle Version ins richtige Verzeichniss installiert:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash

#Installation von youtube-dl (Version 2011.09.30) 

#Herunterladen der aktuellen youtube-dl zu /usr/local/bin
sudo wget -O /usr/local/bin/youtube-dl https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl
#youtube-dl ausführbar machen
sudo chmod +x /usr/local/bin/youtube-dl
#2 Sekunden warten
sleep 2s
#youtube-dl updaten
sudo youtube-dl -U

tahr09

Anmeldungsdatum:
5. Januar 2011

Beiträge: 946

Hey,

die Idee gefällt mir.

Ich peppe das ein wenig grafisch auf und baue es (für mich) ins MusikCenter ein. Seit Youtube-dl bin ich kaum mehr im Browser unterwegs. Ich denke so langsam haben wir die Anwendung ausgereizt.

Ein wenig Kritik:

  • Die Zenity Fenster sind nicht breit genug. Der Fenstertitel ist immer abgeschnitten

  • Die Fenster haben alle den gleichen Titel/ bsp:

    • Ich nehme die Funktion del zum löschen. Im Zenity Fenster steht 'Einen Eintrag hinzufügen'.

  • Block löschen

    • Ich gebe einen falschen Block an. Es erscheint eine Fehlermeldung vom rm, und das Zenity Fenster sagt dennoch der Block wurde gelöscht. Eventuell könnest du hier den Block auf Verfügbarkeit checken, und im Falle ausgeben :"Block nicht vorhanden"

  • Hilfeseite

    • Etwas Formatierung würde nicht schaden. Muss nicht sein, aber wäre schöner. Sehe dir dazu mal folgendes Zenity Fenster an:

zenity --info --text \
'<span size="x-large" color="red">Ich bin die rote Überschrift</span>
<span size="x-large" color="blue">Ich bin die blaue Überschrift</span>

<b>Ich bin Fett
<i>Ich bin Fett und kursiv</i></b>

Ich bin normaler Text

<i>Ich bin nur kursiv</i>' --title="Hilfeseite"

Zum Installationsskript von Youtube-dl:

Für was schlafen wir 2 Sekunden?

#2 Sekunden warten
sleep 2s

Nebenbei:

Du musst dich nicht auf Youtube beschränken. Dank Youtube-dl funktioniert dein Script auch mit MyVideo,GoogleVideo &Co. Auch das könntest du an geeigneter Stelle erwähnen.

Ansonsten danke für das Skript, kann ich gebrauchen!

lg

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Hi Julian,

das sind wie immer nur Ansätze die natürlich hier und da verbessert werden können, aber insgesamt denke ich mal ist es eine brauchbare und bereits funktionierende Sache. Zugegeben in Sachen Zenity bin ich noch nicht so bewandert aber ich lerne ☺

Naja ausgereizt ist das Thema youtube-dl noch nicht, gerade heute hatte ich wieder eine Idee und habe sie umgesetzt. Man kann youtube-dl und mplayer dazu bringen ein Youtube Video nur als Audio abzuspielen. So kann ich mir eine kleine Musiksammlung direkt von Youtube anlegen. Der Vorteil ist das wenn das Video nicht abgespielt wird Rechenleistung gespart wird. Man braucht die Videos auch nicht mehr so lange puffern zu lassen und kann den Wert von 30 auf 5 reduzieren. Hier mal das Script was ich dazu geschrieben habe:

 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
#!/bin/bash
# Bash-Tuner
# Ein Script von Karsten Weidenfeld (2011)

SHOUTCAST_BASISURL="http://yp.shoutcast.com/sbin/tunein-station.pls?id="
# Senderliste im gleichen Verzeichnis wie das Script
SENDER_LISTE="$(dirname "$(readlink -f "$0")")/fav.yml"
# Senderliste im HOME-Verzeichnis
#SENDER_LISTE="$HOME/bt.sl"

while :; do # Beginn Endlosschleife

if ! [[ -f "$SENDER_LISTE" ]]; then
  echo "Senderliste \"$SENDER_LISTE\" nicht gefunden." >&2
sleep 3s
  exit 1
fi

# Senderliste laden
SENDER_NAMEN=()
SENDER_URLS=()
i=0
while read typ parameter name; do
  case "$typ" in
    url)
      SENDER_URLS[i]="$parameter"
      ;;
    shoutcast)
      SENDER_URLS[i]="$SHOUTCAST_BASISURL$parameter"
      ;;
    *)
      #echo "Unbekannter Sendertyp \"$typ\"" >&2
      continue
      ;;
  esac
  SENDER_NAMEN[i]="$name"
  let i++
done < <(sed -r '/^\s*#/d;s/^(.*)\s+([[:alnum:]]+)\s+([^[:space:]]+)$/\2 \3 \1/' < "$SENDER_LISTE")
clear
cat <<EOF
====================================
    @ Youmbo V.1.0 @
    www.Bitdome.de 
    Autor: Karsten Weidenfeld          
====================================
EOF

# Liste ausgeben
i=1
anzahl_sender=${#SENDER_NAMEN[@]}
ziffern=${#anzahl_sender}
for sender in "${SENDER_NAMEN[@]}"; do
  printf "%-${ziffern}d: $sender\n" $i
  let i++
done

cat <<EOF

=========================================================
Playersteuerung: [9] Leiser [0] Lauter [Q] Track beenden
=========================================================
|+| Track hinzufügen  
=========================================================

Tracknummer oder Befehl eingeben:
EOF

declare -l sendernummer
read sendernummer
if [[ $sendernummer =~ ^[0-9]+$ ]]; then
  if (( sendernummer > 0 && sendernummer <= anzahl_sender )); then
youtube-dl -f 18 -g >.tubetemp.m3u "${SENDER_URLS[sendernummer-1]}"
mplayer -novideo -framedrop -cache 12000 -cache-min 5 -playlist .tubetemp.m3u
else
    echo "Senderplatz nicht belegt: $sendernummer" >&2
sleep 3
fi
elif [[ $sendernummer == + ]]; then
  echo "Bitte geben Sie einen Namen für den Track ein"
read sender
echo "Bitte geben Sie die Video URL von Youtube ein"
read id
echo $sender url $id>>$HOME/tubetv/fav.yml
echo "Track $sender wurde eingetragen"
sleep 2s
clear 
elif [[ $sendernummer == x ]]; then
  exit
clear
fi

done # Ende der Endlosschleife

Man muss nur darauf achten das die Datei fav jetzt die Extension .yml (steht für Youtube Musikliste) hat. Ansonsten ist die Beschaffenheit dieser Datei dieselbe. Wenn man dieses Script so startet einfach eine leere Datei Namens "fav.yml" im selben Verzeichniss anlegen und dann wie gewohnt mit dem Befehl + im Script die Videos bzw. in diesem Script Tracks eintragen.

Wenn Du eine Zenity Version fertig hast dann kannste mir ja mal diese zukommen lassen, denn mich würde interessieren wie Du das umsetzt das Zenity auf die Datei fav zugreift und die Daten dort entnimmt. Vielleicht weisst Du ja wie man eine Auflistung so wie sie im Terminal angezeigt wird in Zenity umsetzen kann.

lg

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Noch was vergessen:

Sleep habe ich eingebaut um die Ausgabemeldung zu sehen wenn das Dingen fertig ist. War auch ein Teil aus einem Script. Ohne sleep schließt sich die Installation nach beenden und man sieht keine Fehlermeldung wenn es sie denn gibt.

Mit den anderen Plattformen die youtube-dl unterstützt werde ich mich noch gesondert beschäftigen.

tahr09

Anmeldungsdatum:
5. Januar 2011

Beiträge: 946

Alles klar 👍

Youtube-dl ist ja genial...

Noch eine Sache:

Vorsicht mit dem Namen TubeTV.

Das Programm gibt es schon.

lg

tahr09

Anmeldungsdatum:
5. Januar 2011

Beiträge: 946

edit:

Doppelpost.

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Ok haste Recht den Namen gibt es schon ☺ naja da fällt mir dann noch was anderes ein. Solange wie der Name nicht in Deutschland verwendet wird und rechtlich geschützt ist mache ich mir keine Sorgen. Naja dennoch werde ich den Namen natürlich ändern soll ja mein eigenes Projekt sein und nicht abgekupfertes.

Yanneck

Avatar von Yanneck

Anmeldungsdatum:
25. September 2009

Beiträge: 1192

KarstenW. schrieb:

Für alle die youtube-dl nicht zum laufen bekommen, hier ein Script welches die aktuelle Version ins richtige Verzeichniss installiert:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash

#Installation von youtube-dl (Version 2011.09.30) 

#Herunterladen der aktuellen youtube-dl zu /usr/local/bin
sudo wget -O /usr/local/bin/youtube-dl https://github.com/rg3/youtube-dl/raw/2011.09.30/youtube-dl
#youtube-dl ausführbar machen
sudo chmod +x /usr/local/bin/youtube-dl
#2 Sekunden warten
sleep 2s
#youtube-dl updaten
sudo youtube-dl -U

Hallo,

die neuerste Version gibt es, denke ich, immer mit: https://raw.github.com/rg3/youtube-dl/master/youtube-dl

Heißt, man kann sich die Versionsangabe u. U. sparen.

KarstenW.

(Themenstarter)
Avatar von KarstenW.

Anmeldungsdatum:
27. Juni 2011

Beiträge: 208

Hallo Yanneck

da hast Du Recht ich habe mich nur für diesen Link entschieden weil ich genau weiß das diese Datei 100% funktioniert. Im Normalfall sollte es ab dieser Version auch kein Problem mehr sein über youtube-dl -U ein Update durchzuführen. Ich hoffe das youtube nicht wieder irgendwelche gravierenden Änderungen vornimmt und die aktuelle youtube-dl lange funktioniert.

Insgesamt kann ich jedem der ein bisschen Spaß an youtube hat raten das ganze mal auszuprobieren, einfach Wahnsinn was man mit youtube-dl alles anstellen kann ☺

Gruß Karsten

Antworten |