DBox2Switch bei neueren yWeb

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.

BBCode ist eingeschaltet
[img] ist eingeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Ansicht erweitern Die letzten Beiträge des Themas: DBox2Switch bei neueren yWeb

Re: DBox2Switch bei neueren yWeb

von paula_p » 13 Okt 2021, 00:17

Hallo zusammen,

mal 'ne dumme Frage:
Gibt's denn sowas auch für Windows* Systeme? Ich möchte mir nicht extra ein *nix System installieren (zulegen).
Ich war bisher auch von dem Dbox2Switch begeistert. Hatte bisher TVB 3.4.4 und da hat es noch gut funktioniert.

Gruß
Paula

Re: DBox2Switch bei neueren yWeb

von andre » 02 Jan 2021, 15:37

Danke! Ich habe auch noch einmal dies und das ergänzt.

Re: DBox2Switch bei neueren yWeb

von ds10 » 02 Jan 2021, 15:20

Okay, habe den Download zum Artikel hinzugefügt.

Re: DBox2Switch bei neueren yWeb

von andre » 02 Jan 2021, 15:08

Ich bin einfach zu blöd!

SHA-512
c00cffed28e609221831ed3b862c8a371328b0c88455ed854d9b57b32a60c0964a723a546b2db46b67686819deeced8ba9b672e71324635b1310844cfb52baa6 tvb2AB.tar.gz
Dateianhänge
tvb2AB.tar.gz
(4.4 KiB) 302-mal heruntergeladen

Re: DBox2Switch bei neueren yWeb

von ds10 » 02 Jan 2021, 14:52

Hänge die tcf-Datei einfach hier im Forum an, dann kann ich die hochladen.

Re: DBox2Switch bei neueren yWeb

von andre » 02 Jan 2021, 14:24

Ich habe jetzt den Artikel Aufnahmesteuerung_-_Neutrino erstellt, aber ich darf außer Mediendateien nichts hochladen!

Re: DBox2Switch bei neueren yWeb

von ds10 » 02 Jan 2021, 10:07

Also tar- bzw. tar.gz-, zip-Dateien und auch die tcf-Dateien kann man hier direkt als Dateianhang hochladen. Noch besser wäre allerdings, wenn du einen Eintrag im Handbuch erstellen/aktualisieren würdest.

Re: DBox2Switch bei neueren yWeb

von andre » 02 Jan 2021, 09:15

Ich habe mir nun einen langgehegten Wunsch erfüllt: Aufnahme-Timer und deren Löschungen werden sowohl mit Neutrino als auch mit iCal gesynct.

Leider kann ich hier nur den Code posten und keinen Tarball, sonst hätte ich die .tcf für das Plugin "Aufnahmesteuerung" bzw. "Recording control" mit hinein gepackt und angehängt. Aus den Kommentaren kann man aber ersehen, wie man das Plugin einrichten muss.

Frohes neues Jahr!

Code: Alles auswählen

#!/bin/bash
# tvb2AB.sh
# Launcher for TV-Browser "Recording control" plugin with optional iCal support
# by andre, 2021-01-02, v3
# USE AT YOUR OWN RISK

# The Neutrino Box's IP address or DNS name (required)
box_ip="h7"
# Seconds to start recordings earlier (required; must match Neutrino's settings)
rec_corr_start="300"
# Seconds to end recordings later (required; must match Neutrino's settings)
rec_corr_end="600"
# Path to your web-browser binary (optional; leave blank if you don't want it to open)
webbrowser="/usr/bin/open"
# iCal calendar to use (optional; leave blank if you don't want iCal. If set, the calendar is created automatically if necessary)
ical_name="TV-Browser"

### No configuration below this line
# The parameters "actors" and "description" cause trouble and are left out
# "Recording control" plugin's "Parameter for recording"
# "<TVB2AB_action>ADD</TVB2AB_action><TVB2AB_channel_name>{channel_name}</TVB2AB_channel_name><TVB2AB_end_unix>{end_unix}</TVB2AB_end_unix><TVB2AB_episode>{episode}</TVB2AB_episode><TVB2AB_episode_number>{episode_number}</TVB2AB_episode_number><TVB2AB_genre>{genre}</TVB2AB_genre><TVB2AB_length_minutes>{length_minutes}</TVB2AB_length_minutes><TVB2AB_origin>{origin}</TVB2AB_origin><TVB2AB_original_episode>{original_episode}</TVB2AB_original_episode><TVB2AB_original_title>{original_title}</TVB2AB_original_title><TVB2AB_production_year>{production_year}</TVB2AB_production_year><TVB2AB_season_number>{season_number}</TVB2AB_season_number><TVB2AB_start_unix>{start_unix}</TVB2AB_start_unix><TVB2AB_title>{title}</TVB2AB_title><TVB2AB_url>{url}</TVB2AB_url>"
# "Recording control" plugin's "Parameter for deletion"
# "<TVB2AB_action>DEL</TVB2AB_action><TVB2AB_channel_name>{channel_name}</TVB2AB_channel_name><TVB2AB_end_unix>{end_unix}</TVB2AB_end_unix><TVB2AB_episode>{episode}</TVB2AB_episode><TVB2AB_episode_number>{episode_number}</TVB2AB_episode_number><TVB2AB_genre>{genre}</TVB2AB_genre><TVB2AB_length_minutes>{length_minutes}</TVB2AB_length_minutes><TVB2AB_origin>{origin}</TVB2AB_origin><TVB2AB_original_episode>{original_episode}</TVB2AB_original_episode><TVB2AB_original_title>{original_title}</TVB2AB_original_title><TVB2AB_production_year>{production_year}</TVB2AB_production_year><TVB2AB_season_number>{season_number}</TVB2AB_season_number><TVB2AB_start_unix>{start_unix}</TVB2AB_start_unix><TVB2AB_title>{title}</TVB2AB_title><TVB2AB_url>{url}</TVB2AB_url>"

func_epochtoas () {
	epochtoas=$( date -j -R -r "$1" )
	echo "${epochtoas}"
}

func_pingneutrino () {
	if ! ping -c1 ${box_ip} ; then
		echo "${box_ip} unavailable; exiting" 
		exit 1
	fi
}

func_webbrowser () {
	if [ "${webbrowser}" != "" ] ; then
		func_pingneutrino
		"${webbrowser}" "$1"
	fi
}

if [ "$1" = "" ] ; then
  echo "Usage: $0 URL"
	exit 1
else
  tvb=$1 
	func_pingneutrino
fi

# pass1
eval $(
	# The parameters "actors" and "description" cause trouble and are left out
	for param in action channel_name episode end_unix episode_number genre length_minutes origin original_episode original_title production_year season_number start_unix title url ; do
		value=$( echo "${tvb}" | tr '\n' ' ' | sed -e 's@</TVB2AB_'${param}'>.*@@' -e 's@.*<TVB2AB_'${param}'>@@' )
		echo "${param}=\"${value}\""
done
)

# plausability check
if [ "${start_unix}" = "" ] || [ "${end_unix}" = "" ] || [ "${start_unix}" = "${end_unix}" ] ; then
  echo "Invalid start_unix or end_unix date; exiting."
  exit 1
fi 

if [ "${ical_name}" != "" ] ; then
	# iCal entry
	ical_start=$( func_epochtoas "${start_unix}" )
	ical_end=$( func_epochtoas "${end_unix}" )
	ical_summary="${title} - ${channel_name}"
	ical_description="Genre: ${genre}
	Origin: ${origin}
	Length (mins.): ${length_minutes}
	Original Title: ${original_title}
	Production Date: ${production_year}
	Season: ${season_number}
	Epsisode Number: ${episode_number}
	Episode: ${episode}
	Original Episode: ${original_episode}"
	#Actors: ${actors}"
	#Description: ${description}
	#Short Info: ${short_info}
	ical_url=${url}
	#echo "ical_name ${ical_name}"
	#echo "ical_start ${ical_start}"
	#echo "ical_end ${ical_end}"
	#echo "ical_summary ${ical_summary}"
	#echo "ical_description ${ical_description}"
	#echo "ical_url ${ical_url}"
fi

if [ "${action}" = "ADD" ] ; then
	# Neutrino timer
	func_pingneutrino
	list=$( curl -s "http://${box_ip}/control/channellist" )
	# Get the first matching channel id
	channel_id=$( echo "${list}" | grep "${channel_name}$" | head -n 1 | sed -e "s@ .*@@" )
	# Prepare Neutrino timer
	tvb2dbox="http://${box_ip}/control/timer?action=new&alarm=${start_unix}&announce=${start_unix}&channel_id=${channel_id}&rs=1&stop=${end_unix}"
	# Create Neutrino timer
	func_pingneutrino
	curl -s "${tvb2dbox}"
	func_webbrowser "http://${box_ip}/Y_Timer_List.yhtm" 
	if [ "${ical_name}" != "" ] ; then
		# Create ical event
		osascript -e "
			set ical_calendar to \"${ical_name}\"
			set ical_start to date (\"${ical_start}\" as string)
			set ical_end to date (\"${ical_end}\" as string)
			set ical_summary to \"${ical_summary}\"
			set ical_description to \"${ical_description}\"
			set ical_url to \"${ical_url}\"
			tell application \"Calendar\"
				try
					set theCalendarName to \"${ical_name}\"
					set theCalendar to first calendar where its name = theCalendarName
				on error
					set theNewCalendar to make new calendar with properties {name:theCalendarName, description:\"${ical_name}\"}
				end try
				tell calendar \"${ical_name}\"
					make new event with properties {summary:ical_summary, start date:ical_start, end date:ical_end, description:ical_description, url:ical_url}
				end tell
			end tell
		"
	fi
fi

if [ "${action}" = "DEL" ] ; then
	# Neutrino timer
	#echo "You need to remove The Neutrino timer manually."
	#echo "I will try to open your web-browser for you."
	del_start=$(( ${start_unix} - ${rec_corr_start} ))
	del_end=$(( ${end_unix} + ${rec_corr_end} ))
	func_pingneutrino
	curl -s "http://${box_ip}/control/timer" | grep "${del_start}" | grep "${del_end}" | grep "${channel_name}" | sed -e "s@ .*@@" | while read timer ; do 
		func_pingneutrino
		curl -s "http://${box_ip}/fb/timer.dbox2?action=remove&id=${timer}"
	done
	func_webbrowser "http://${box_ip}/Y_Timer_List.yhtm"
	if [ "${ical_name}" != "" ] ; then
		# Remove ical event
		# exec need for TV-Browser timing
		( exec osascript -e "
			set ical_calendar to \"${ical_name}\"
			set ical_start to date (\"${ical_start}\" as string)
			set ical_end to date (\"${ical_end}\" as string)
			set ical_summary to \"${ical_summary}\"
			set ical_description to \"${ical_description}\"
			set ical_url to \"${ical_url}\"
			tell application \"Calendar\"
					try
						set theCalendarName to \"${ical_name}\"
						set theCalendar to first calendar where its name = theCalendarName
					on error
						set theNewCalendar to make new calendar with properties {name:theCalendarName, description:\"${ical_name}\"}
					end try
					tell calendar \"${ical_name}\"
						try
						set ical_remove to events whose (start date is ical_start and end date is ical_end and summary is ical_summary )
							repeat with ical_event in ical_remove
								delete ical_event
							end repeat
						end try
					end tell
				end tell 
			"
		) & disown 
	fi
fi

Re: DBox2Switch bei neueren yWeb

von andre » 31 Dez 2020, 10:00

Inzwischen hatte ich das Capture Plugin auch gefunden, es heißt bei mir "Recording control" und ist wirklich toll.

Neue Version des Scripts:

Code: Alles auswählen

#!/bin/bash
# tvb2dbox.sh
# Use the TV-Browser plugin "Switch" to create a Neutrino recording timer
# by andre, 2020-12-31, v6
# USE AT YOUR OWN RISK

# Set the Neutrino box IP address or DNS name
box_ip="h7"

### No configuration below this line
if [ "$1" = "" ] ; then
  echo "Usage: $0 URL"
	echo "Use the TV-Browser plugin \"Switch\" to create a Neutrino recording timer."
	echo ""
	echo "All of the following conditions must be met:"
	echo " - The Switch plugin's \"External application\" is set to: $0"
	echo " - The Switch plugin's \"Application/Parameters\" is enclosed in double quotes:"
	echo "   \"http://${box_ip}/control/timer?action=new&alarm={start_unix}&announce={start_unix}&channel_id={channel_name}&rs=1&stop={end_unix}\""
	echo " - The Switch plugin's \"Channels\" and Neutrino's \"Favorites\" match 100 % (for every channel you want to record)"
	echo "   (Cf. \"TV-Browser: Graphical Settings: Configure selected channels\")"
	echo " - You have set up \"box_ip\" within this script correctly." 
	echo "   (Use a text editor w/ *nix line-breaks for that.)"
	echo "To check, point your web-browser to: http://${box_ip}/Y_Timer_List.yhtm"
	exit 1
else
  tvb=$1
fi
# Extract the channel name
name=$( echo ${tvb} | sed -e "s@.*channel_id=\(.*\).rs=.*stop=.*@\1@" ) 
# Get the channel list
list=$( curl -s "http://${box_ip}/control/channellist" )
# Get the first matching channel id
eval channel=$( echo "${list}" | while read entry ; do 
	c_id=$( echo ${entry} | sed -e "s@ .*@@" )
	c_name=$( echo ${entry} | sed -e "s@${c_id} \(.*\)@\1@" )
	if [ "${c_name}" = "${name}" ] ; then
		echo "${c_id}"
		break
	else
		continue
	fi
done
)
# Replace the channel name by the channel id and remove the enclosing quotes
dbox=$( echo ${tvb} | sed -e "s@${name}@${channel}@" -e 's@^"@@' -e 's@"$@@' )
# Set the timer
curl --silent "${dbox}"
Eine Möglichkeit zum Entfernen des Timers habe ich leider noch nicht gefunden.

Neue Screenshots:
Dateianhänge
Screen Shot 2020-12-31 at 09.50.51.png
Screen Shot 2020-12-31 at 09.50.51.png (892.61 KiB) 8258 mal betrachtet
Screen Shot 2020-12-31 at 09.50.38.png
Screen Shot 2020-12-31 at 09.50.38.png (610.2 KiB) 8258 mal betrachtet
Screen Shot 2020-12-31 at 09.53.05.png
Screen Shot 2020-12-31 at 09.53.05.png (236.88 KiB) 8258 mal betrachtet

Re: DBox2Switch bei neueren yWeb

von ds10 » 31 Dez 2020, 09:55

Das CapturePlugin heißt Aufnahmesteuerung.

Re: DBox2Switch bei neueren yWeb

von andre » 30 Dez 2020, 22:15

Vielen Dank!

Irgendwie finde ich das Capture-Plugin selbst aber nicht... :oops:

... dafür dein Switch Plugin, und damit habe ich's ans Laufen gebracht. Leider ist damit nur ein einziger Befehl möglich.

Jedenfalls habe ich die vorhandenen Quellen durchgesehen, vereinfacht und dergestalt verbessert, dass man die IDs nicht mehr selber heraussuchen muss.

Code: Alles auswählen

#!/bin/bash
# tvb2dbox.sh
# Use the TV-Browser plugin "Switch" to create a Neutrino recording timer
# by andre, 2020-12-30, v4

# The matching plugin setting must be enclosed in double quotes:
# "http://${box_ip}/control/timer?action=new&alarm={start_unix}&announce={start_unix}&channel_id={channel_name}&rs=1&stop={end_unix}"
#
# For his to work, make sure the following conditions are met: 
# - There is a corresponding Neutrino "Favorite", as they lead the list
# - TV-Browser: Graphical Settings: Configure selected channels 
# 	exactly matches the Neutrino Favorite's name in a case-sensitive manner
#
# Configure the Neutrino box IP address
box_ip="h7"

### No configuration below this line
if [ "$1" = "" ] ; then
  echo "Usage: $0 <url>"
	exit 1
else
  tvb=$1
fi
# Extract the channel name
name=$( echo ${tvb} | sed -e "s@.*channel_id=\(.*\).rs=.*stop=.*@\1@" ) 
# Get the channel list
list=$( curl -s "http://${box_ip}/control/channellist" )
# Get the first matching channel id
eval channel=$( echo "${list}" | while read entry ; do 
	c_id=$( echo ${entry} | sed -e "s@ .*@@" )
	c_name=$( echo ${entry} | sed -e "s@${c_id} \(.*\)@\1@" )
	if [ "${c_name}" = "${name}" ] ; then
		echo "${c_id}"
		break
	else
		continue
	fi
done
)
# Replace the channel name by the channel id
dbox=$( echo ${tvb} | sed -e "s@${name}@${channel}@" -e 's@^"@@' -e 's@"$@@' )
# Set the timer
curl --silent "${dbox}"
Dateianhänge
Screen Shot 2020-12-30 at 22.12.55.png
Screen Shot 2020-12-30 at 22.12.55.png (1.29 MiB) 8282 mal betrachtet
Screen Shot 2020-12-30 at 22.12.10.png
Screen Shot 2020-12-30 at 22.12.10.png (91.38 KiB) 8282 mal betrachtet

Re: DBox2Switch bei neueren yWeb

von ds10 » 30 Dez 2020, 14:53

Der Standardtreiber der Aufnahmesteuerung erlaubt direkt URLs aufzurufen, da braucht man kein externes Programm.
Beispiele für die Einrichtung findest du unter: Unterstützte Hard- und Software

Re: DBox2Switch bei neueren yWeb

von andre » 30 Dez 2020, 14:08

Der Receiver ist eine 4K-fähige Zgemma H7C mit Keywelt-Image V4.12b1 vom Juli 2020.

Mit Neutrino* kann man über ein Web-Interface interagieren. Hier ist ein Beipiel für einen API-Call zum Erstellen einer Aufnahme:

Mit Unix epoch
>>>http://box_ip/control/timer?action=new&alarm=1034309576&stop=1034284376&announce=1034309576&type=1&rep=1&channel_id=16dcb
ok

Eher Klartext
>>>http://box_ip/control/timer?action=new&alDate=24.01.2006&alTime=20.00&stTime=20.15&channel_name=Das%20Erste&update=1
ok

Löschen der Aufnahme habe ich nicht gefunden, jedoch könnte ich mich da schlau machen. Die URL könnte ich durch curl oder wget aufrufen lassen.

Kann TV-B entsprechende Daten an das Capture Plugin übergeben, und könntet ihr mir vielleicht eine kleine Starthilfe bzw. Dokumentation dazu geben?

Re: DBox2Switch bei neueren yWeb

von Agrivaine » 30 Dez 2020, 13:24

Ist der Receiver so alt wie das Plugin? Bspw. umschalten und Aufnahmeprogrammierung würde auch über das CapturePlugin funktionieren.

Re: DBox2Switch bei neueren yWeb

von ds10 » 30 Dez 2020, 12:49

Der Fehler kann nur im Quellcode des Plugins beseitigt werden, da es einfach so alt ist, dass es Methoden benutzt, die es mittlerweile nicht mehr in TV-Browser gibt.

Nach oben