ubuntuusers.de

Tv-Browser Aufnahme Plugin

Status: Ungelöst | Ubuntu-Version: Ubuntu 9.04 (Jaunty Jackalope)
Antworten |

berndd

Anmeldungsdatum:
24. März 2007

Beiträge: 944

Hallo,

habe früher immer Aufnahmen direkt aus Tv-Browser angelegt. Dafür habe ich das Kaffeine-Plugin benutzt. Unter Jaunty läßt sich aber das nötige Paket python-dcop nicht installieren.

Als Alternative ist auch eine Aufnahme mit config-crontab möglich. Die Aufnahmen werden dann direkt in die Crontab geschrieben. Dazu muss das Modul config-crontab installiert werden. Habe aber keine Ahnung wie man das macht. (dh-make-perl erstellt einen Ordner mit Namen Debian, mit den darin enthaltenen Dateien kann ich aber überhaupt nichts anfangen) Kann mir das jemand bitte erklären.

Hier ist der Artikel von Tv-Brower: http://mszet.de/tv-browser.html und hier kann man config-crontab runterladen. http://search.cpan.org/~scottw/Config-Crontab-1.20/

Gruß

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Wohnort: Bremen

Hi!

Das ist ja extrem genial! Direkte Programmierung aus dem TV-Browser heraus! Hab's allerdings noch nicht ganz raus.

Aber zur vorbereitung erst mal dieses herunterladen: http://search.cpan.org/~scottw/Config-Crontab-1.30/

Das Archiv entpacken, dann im Terminal in den entstandenen Ordner wechseln, und dort nacheinander

   perl Makefile.PL
   make
   make test
   sudo checkstall

ausführen; bei checkinstall noch eine Beschreibung angeben, z.B. "Config-Crontab". Damit wird das ganze als .deb gebaut und installiert (hat den Vorteil, dass du es dann einfacher wieder deinstallieren kannst, falls das nötig sein sollte.) dh-perl-make brauchst du dafür eigentlich nicht.

Ich bastele noch an der Einstellung im tvbrowser.pl-Skript für das Aufnahmeprogramm; das bekomme ich aber hoffentlich auch noch hin. Werde wohl ein kleines Skript bauen, das die Aufnahme mit mplayer (mit -dumpstream -dumpfile "Aufnahmetitel.ts" o.ä.) speichert; starten kann ich sie schon, da muss ich nur noch ein wenig basteln , damit die Aufnahme nach Ablauf der Sendungsdauer auch wieder beendet wird... Sollte aber machbar sein; schau morgen noch mal drauf.

so long
hank

berndd

(Themenstarter)

Anmeldungsdatum:
24. März 2007

Beiträge: 944

Hallo,

checkinstall bricht mit folgendem Fehler ab. Was kann man tun.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern: 




Installing with make...Installing with install...

====================== Installations-Ergebnisse ==========================
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/usr/local/man/man3'
mkdir /usr/local/man: File exists at /usr/share/perl/5.10/ExtUtils/Install.pm line 479

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 at -e line 1
make: *** [pure_site_install] Fehler 17

**** Installation fehlgeschlagen. Breche Paket-Erzeugung ab.

Räume auf...OK

Gruß

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Wohnort: Bremen

Hi!

Versuchst du, eine Vorgabe versuchst bei dem Aufruf zu ändern?

Sonst versuche statt

sudo checkinstall

mal

sudo make install

Dann wird zwar kein Paket erstellt, aber das macht nicht so viel.

Dgf. danach noch mal sudo checkunstall, wenn es doch ein Paket werden soll.

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Wohnort: Bremen

Hi!

Ich fand das Ganze so genial, dass ich gleich einen Wiki-Artikel dazu gebaut habe: Skripte/DVB-T-Aufnahmen aus dem TV-Browser starten !

Ich hoffe, da hab' ich alles verständlich und nachvollziehbar beschrieben. ☺

so long
hank

berndd

(Themenstarter)

Anmeldungsdatum:
24. März 2007

Beiträge: 944

Hallo,

danke. Hat nun auch bei mir funktioniert. Es ging mit der 1.20 Version von config-crontab. Vielleicht noch interessant: Config-Crontab ließ sich erst installieren, nachdem ich den fehlerhaften Link "man" im Verzeichnis /usr/local gelöscht habe (keine Ahnung wo der herkommt)

Gruß

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Wohnort: Bremen

Hi!

Ist ja seltsam - bei mir gab's mit 1.30 keinerlei Probleme, Standard-Jaunty, 32-bit.

Das ganze ginge auch ohne Crontab::Config, bastele gerade noch an einem Skript bzw. den Parameter-Einstellung im Aufnahme-Plugin, aber mit Crontab::Config ist es doch wesentlich eleganter...

Bei dir geht es jetzt, ich schließe daraus, dass der Artikel soweit verständlich ist? Oder wie hast du die Aufnahme geregelt?

so long
hank

berndd

(Themenstarter)

Anmeldungsdatum:
24. März 2007

Beiträge: 944

Hallo,

das Wiki ist verständlich und praktikabel. Habe die Schritte genau befolgt. Vielleicht wär noch ein Hinweis darauf, dass man in der tvbrowserAufnahme.sh den Aufnahme-Ordner anpassen muss. Ansonsten gut erklärt.

Gruß

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Wohnort: Bremen

Hi!

berndd schrieb:

das Wiki ist verständlich und praktikabel. Habe die Schritte genau befolgt. Vielleicht wär noch ein Hinweis darauf, dass man in der tvbrowserAufnahme.sh den Aufnahme-Ordner anpassen muss. Ansonsten gut erklärt.

Danke! ☺

Hab' das Skript dem Hinweis entsprechend gleich angepasst, jetzt ist standardmäßig ~/Videos vorgesehen.

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Wohnort: Bremen

Hi!

Hab' das Perskript noch etwas "aufgebohrt"; jetzt wird eine Zenity-Abfrage vorgeschaltet, ob die Sendung aufgezeichnet, gleichzeitig auch mit angeschaut oder nur angeschaut werden soll. Dafür sind allerdings vier Skripte nötig (wenn man die Zenity-Abfrage in das Perlskript bekommen könnte, wäre es etwas einfacher, kann ich aber nicht...):

1) das Select.sh-Skript, übernimmt die Variablen aus dem TV-Browser-Plugin und legt fest, welche Aufnahme-Variante gewählt wird:

 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
#!/bin/bash
# Skript um Aufnahmen aus dem TV-Browser zu starten, gleichzeitig mitzuschauen, oder auch nur zu schauen.
# Autor Heinrich Schwietering (c) 2009 
#
# Im TV-Browser-Plugin für die Aufnahme muss als Applikation "/bin/bash" eingetragen werden, bei den
# Parametern für "Aufnehmen": 
# /pfad/zum/Select.sh {leadingZero(start_minute, "2")} {leadingZero(start_hour, "2")} {leadingZero(start_day, "2")} 
# {leadingZero(start_month, "2")} [*{isset(channel_name_external_quiet,channel_name)}*]  {length_minutes} {urlencode(title, "utf-8")} record

MINUTE=${1}
HOUR=${2}
DAY=${3}
MONTH=${4}
SENDER=${5}
DAUER=${6}
VERZ=$HOME/.tvbrowser

# Routine, um den Titel ohne "seltsame" Zeichen und mit Leerstellen zubekommen
TITEL=$(echo ${7} | tr '+' ' ' | /bin/echo -e $(sed 's/%/\\x/g'))
if [ ${8} == "record" ]; then
# Zenity-Aufruf, um Auswahl festzulegen
zenity --help > /dev/null || { echo "Fehler: Du benötigst \"zenity\" um dieses Script nutzen zu können." && exit 1 ; }
test ! -e $VERZ/Auswahl.lst && zenity --error --text "$VERZ/Auswahl.lst wurde nicht gefunden!" && exit 1
AUSWAHL=`cat ~/.tvbrowser/Auswahl.lst | zenity --list --title "Aufnehmen, Ansehen, Beides?" --column "Auswahl:"` || exit 0
test "$AUSWAHL" || { zenity --error --text "Es wurde keine Auswahl getroffen!" && exit 1 ; }

#if [ "${7}" == "Aufnehmen" ]; then
# CRONTAB ERSTELLEN; über das tvbrowser.pl, Aufruf des Unterskripts zu Aufnahme
/Pfad/zum/tvbrowserSelect.pl record $MINUTE $HOUR $DAY $MONTH $SENDER $DAUER "$TITEL" $AUSWAHL
echo $AUSWAHL &> $VERZ/"$MINUTE-$HOUR-$DAY-$MONTH-$TITEL".txt
else
if [ -a $VERZ/"$MINUTE-$HOUR-$DAY-$MONTH-$TITEL".txt ]; then
AUSWAHL=`cat $VERZ/"$MINUTE-$HOUR-$DAY-$MONTH-$TITEL.txt"` 
/Pfad/zum/tvbrowserSelect.pl delete $MINUTE $HOUR $DAY $MONTH $SENDER $DAUER "$TITEL" $AUSWAHL
rm $VERZ/"$MINUTE-$HOUR-$DAY-$MONTH-$TITEL".txt
fi
fi
exit

2) das tvbrowserSelect.pl Perlskript, es wird benötigt, um die eigentlichen Crontab-Einträge zu erstellen bzw. zu löschen

 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
#!/usr/bin/perl
 
use warnings;
use strict;
use Config::Crontab;

# Argumente richten: [* *] ist Quoting
my (@temp, $temp, $st);
foreach (@ARGV) {
     if ($st) { $temp .= " " . $_; if (/\*\]$/) { $st = 0; push(@temp, $temp); }}
     else { if (/^\[\*/ && !/\*\]$/) { $st = 1; $temp = $_; } else { push(@temp, $_); }}
}
@ARGV = (); foreach (@temp) { if (/^\[\*(.*)\*\]$/) { $_ = $1; } push(@ARGV, $_); }
 
# Argumente Prüfen
my ($flag, $minute, $hour, $day, $month, $sender, $length, $title, $selection) = @ARGV;
if ($#ARGV != 8) {
     print("\nUngültige Anzahl von Argumenten:\n\n",
           "   Syntax: $0 record|delete <minute> <hour> <day> <month> <sender> <length> <title> <selection>\n",
	   "   Aufruf: $0 ",join(" ", @temp), "\n"
	   );
     exit(1);	   
}
$title =~ s/"/\\"/g;
# Dieser Befehl wird in die Crontab eingetragen.
my $command = "/Pfad/zum/Auswahl.sh $sender \"$title\" $length $selection";
# Crontab bearbeiten
my $ct = new Config::Crontab;
$ct->strict(0);
$ct->read;
 
if ($flag eq "record") {
     my @comments = $ct->select( -type => 'comment', -data_re => '^##\s*TV-Browser');
     my $block;
     if (!@comments) {
          $block = new Config::Crontab::Block;
          $block->last(new Config::Crontab::Comment(-data => '## TV-Browser <do not edit this>'));
     } else {
          $block = $ct->block(pop(@comments));
     }
     $block->last(new Config::Crontab::Event(
          -minute => $minute, -hour => $hour, -dom => $day, -month => $month, -dow => '*', -command => $command
     ));          
     $ct->last($block);
} elsif ($flag eq "delete") {
     my @comments = $ct->select( -type => 'comment', -data_re => '^##\s*TV-Browser');
     foreach (@comments) {
          my $block = $ct->block($_);
          my @events = $block->select( -type => 'event', 
               -minute => $minute, -hour => $hour, -dom => $day, -month => $month, -dow => '*', -command => $command
          );          
          foreach (@events) { $block->remove($_); }               
     }
}
$ct->write;
 
exit 0;

3). das eigentliche Auswahl.sh-Skript, mit dem die mplayer-Anwendungen gestartet werden

 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
#!/bin/bash
# SKRIPT für die Aufname mit Select.sh erstellte jobs aus dem tvbrowser heraus

### KONFIGURATION - DATEN FÜR AUFNAHME
TVREC=/usr/bin/mplayer
TVPLAY=/usr/bin/gnome-mplayer
DATE=`/bin/date '+%d.%m.%Y-%H.%M'`
DAY=`date '+%d'`
MONTH=`date '+%m'`
HOUR=`date '+%H'`
MINUTE=`date '+%M'`
VERZ=$HOME/.tvbrowser
VIDEO=$HOME/Videos
TITEL=${2}
SENDER=${1}
DAUER=($((${3}*60)))

# REINE AUFNAHME
if [ "${4}" = "Aufnehmen" ]; then
# Aufnahme starten
DISPLAY=:0.0 $TVREC dvb://$SENDER -dumpstream -dumpfile "$VIDEO/$SENDER-\"$TITEL\"-$DATE.ts" &
# Aufnahme beenden
sleep $DAUER
killall $TVREC
fi

# NUR ANSEHEN
if [ "${4}" = "Ansehen" ]; then
# Aufnahme starten
DISPLAY=:0.0 $TVPLAY dvb://$SENDER --fullscreen &
sleep 1
# Beenden
sleep $DAUER
killall $TVPLAY
fi

# "TIME_SHIFT"
if [ "${4}" = "Beides" ]; then
# Aufnahme starten
DISPLAY=:0.0 $TVREC dvb://$SENDER -dumpstream -dumpfile "$VIDEO/$SENDER-\"$TITEL\"-$DATE.ts" &
sleep 1
DISPLAY=:0.0 $TVPLAY $VIDEO/*-$DATE.ts --fullscreen &
# Aufnahme beenden
sleep $DAUER
killall $TVREC
fi

/Pfad/zum/tvbrowserSelect.pl delete $MINUTE $HOUR $DAY $MONTH $SENDER ${3} "$TITEL" ${4}
rm $VERZ/"$MINUTE-$HOUR-$DAY-$MONTH-$TITEL".txt
fi
exit 

4). noch ein kleines Löschen.sh-Skript, um die Löschanweisungen aus dem TV-Browser heraus an das Perlskript zu leiten:

 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
#!/bin/bash
# Skript um Aufnahmen aus dem TV-Browser zu starten, gleichzeitig mitzuschauen, oder auch nur zu schauen.
#  - Unterskript zum Löschen von Aufnahmezeiten im TV-Browser
# Autor Heinrich Schwietering (c) 2009 
#
# Im TV-Browser-Plugin für die Aufnahme muss als Applikation "/bin/bash" eingetragen werden, bei den
# Parametern für "Löschen": 
# /pfad/zum/Löschen.sh {leadingZero(start_minute, "2")} {leadingZero(start_hour, "2")} {leadingZero(start_day, "2")} 
# {leadingZero(start_month, "2")} [*{isset(channel_name_external_quiet,channel_name)}*] {length_minutes} {urlencode(title, "utf-8")}

MINUTE=${1}
HOUR=${2}
DAY=${3}
MONTH=${4}
SENDER=${5}
DAUER=${6}

# Routine, um den Titel ohne "seltsame" Zeichen und mit Leerstellen zubekommen
TITEL=$(echo ${7} | tr '+' ' ' | /bin/echo -e $(sed 's/%/\\x/g'))

# CRONTAB LÖSCHEN
/Pfad/zum/tvbrowserSelect.pl delete $MINUTE $HOUR $DAY $MONTH $SENDER $DAUER "$TITEL" Aufnehmen
/Pfad/zum/tvbrowserSelect.pl delete $MINUTE $HOUR $DAY $MONTH $SENDER $DAUER "$TITEL" Ansehen
/Pfad/zum/tvbrowserSelect.pl delete $MINUTE $HOUR $DAY $MONTH $SENDER $DAUER "$TITEL" Beides
exit

Dazu wird die im Wiki beschriebene Auswahl.lst für die Zenity-Abfrage benötigt. Die Pfade in den Skripten müssen natürlich noch angepasst werden.

So kann man auch mit dem Perlskript den Funktionsumfang der ersten im Wiki beschriebenen Methode erreichen.

so long
hank

Antworten |