Hallo louis72! Noch aktiv?
Habe eben gelesen, daß ab Omega alte Skins
nicht mehr kompatibel sind. https://forum.kodi.tv/showthread.php…4988#pid3174988
Beabsichtigst Du, Deinen Skin anzupassen?
Hallo louis72! Noch aktiv?
Habe eben gelesen, daß ab Omega alte Skins
nicht mehr kompatibel sind. https://forum.kodi.tv/showthread.php…4988#pid3174988
Beabsichtigst Du, Deinen Skin anzupassen?
Nabend!
Ich möchte gerade eine eine externe EPG-Quelle von https://epgshare01.online/, die dort als xml.gz vorliegt, einbinden. Allerdings bekomme ich die Fehlermeldung
"The resource could not be verified.".
Also habe ich ein Script geschrieben, das die gz-Datei herunterlädt, entpackt und die entpackte xml-Datei auf einen lokalen Webserver verschiebt. Aber auch beim Versuch, diese EPG-Quelle einzubinden, erhalte ich weiterhin diese Fehlermeldung. Auch nach eingehender Inaugenscheinnahme der Datei kann ich nicht erkennen, woran es hakt. Vielleicht kann mal jemand auf die Datei schauen:
https://epgshare01.online/epgshare01/epg_ripper_DE1.xml.gz
https://epgshare01.online/epgshare01/epg_ripper_CH1.xml.gz
Ich hab das passende Gegengewicht
#EXTINF:-1 tvg-id="bild.tv" tvg-name="Springer-Hetze in HD 1" tvg-country="DE",Springer-Hetze in HD 1
pipe:///usr/bin/streamlink --stdout --default-stream best --ringbuffer-size 32M --hls-audio-select "*" https://bild.personalstream.tv/v1/master.m3u8
#EXTINF:-1 tvg-id="welt.de" tvg-name="Springer-Hetze in HD 2" tvg-country="DE",Springer-Hetze in HD 2
pipe:///usr/bin/streamlink --stdout --default-stream best --ringbuffer-size 32M --hls-audio-select "*" https://welt.personalstream.tv/v1/master.m3u8
geht das auch mit LibreElec?
Davon möchte ich doch mal ausgehen:
https://hub.docker.com/r/walt3rl/proton-privoxy/tags
Der Pfad zu den Volumes unterscheidet sich natürlich, weil Docker hier ja als addon installiert wird. Er lautet:
/storage/.kodi/userdata/addon_data/service.system.docker/docker/volumes
Ansonsten per ssh-Zugriff einrichten (mutmaßlich auf einem RasPi).
Über TVheadend kann man das auch einstellen: RE: Telerising API - Zattoo, blue TV & Sky CH für tvHeadend und VLC [Web App]
Wieder was gelernt. Allerdings muß man aber immernoch einen Proxy aufsetzen/installieren/einrichten. Da finde ich es über die Playlist aber komfortabler, als jeden betreffenden Mux zu editieren.
Ich habe lediglich erläutert, wie man es technisch bewerkstelligen kann. Es ging überhaupt nicht um die Inhalte des Beispiel-Senders. Insofern verbreite ich sicher auch keine Propaganda. Für das Beispiel war ein aus Deutschland aus welchen Gründen auch immer nicht erreichbarer, deutschsprachiger Sender/Stream beispielsweise aus Österreich mit dem im Beispiel enthaltenen Free-Account (Serverstandorte JP, NL und USA) nicht möglich. Und selbst wenn, hätte jeder Interessierte sich das auf RT zurechtbiegen können. Niemand ist gezwungen oder aufgefordert, der Anleitung zu folgen, geschweige denn RT zu komsumieren.
Ich finde es völlig daneben, aus der Anleitung einen politischen Schlagabtausch zu machen. Wer das macht, ist hier, wo es um technische Fragen geht, möglicherweise nicht richtig aufgehoben. Dafür gibt es mit Sicherheit einschlägige Foren - je nach Geschmack bzw. Meinung. Jedem seine Blase!
ZitatIcke1260 ich finde deine Anleitung wirklich interessant, könntest du diese bitte politische neutral verfassen?
darkside40 Daß Du die Anleitung interessant findest, ehrt mich - Danke! Ich lasse mich nicht in die eine oder in die andere Ecke stellen. Daß es möglicherweise ein schlechtes Beispiel ist, lasse ich dahingestellt. Daraus sollte man keine Rückschlüsse ziehen. Ich habe den Artikel um abschließende Hinweise ergänzt. Abgesehen davon werde ich nichts ändern.
Ich zeige hier mal anhand des in der EU nicht empfangbaren Senders RT deutsch, wie man Zensur oder Geoblocking umgeht.
Was man braucht:
- Rechentechnik (Odroid/RasPi/RockPi) mit Betriebssystem (CoreELEC/Ubuntu)
- einen ProtonVPN-Account: https://protonvpn.com
- SSH
- Docker
- TVHeadend-Server: https://hub.docker.com/r/linuxserver/tvheadend
- Streamlink: https://cgomesu.com/blog/Tvhlink/ und: https://streamlink.github.io/cli.html
- Privoxy: https://github.com/walterl/proton-privoxy und: https://www.privoxy.org/user-manual/
Auf die Installation von Betriebssystem, SSH und Docker gehe ich nicht ein.
Zunächst legt man, sofern nicht schon vorhanden, ein ProtonVPN-Konto an. Das darf ruhig zunächst ein Free-Account sein, bei dem Server in Japan, in den Niederlanden und in den USA verfügbar sind. Dort findet man unter https://account.protonvpn.com/account#openvpn die später benötigten OpenVPN-Zugangsdaten.
Dann gehts zu den Containern. Für TVH muß man zusätzlich zum /config- und zum /recordings-Verzeichnis das Verzeichnis /custom-cont-init.d mappen. Vorbereitend erstellt man also entsprechende Volumes:
Die Volumes befinden sich standardmäßig in Pfad /var/lib/docker/volumes
Im Volume "tvhcustom", also im Verzeichnis /var/lib/docker/volumes/tvhcustom/_data legt man die Datei streamlink_for_tvh_container.sh mit folgendem Inhalt an:
#!/usr/bin/env sh
###########################################################################################
# Script to install and upgrade Streamlink on the TVHeadend LinuxServer.io docker container
###########################################################################################
# How-To:
# 1. Copy 'streamlink_for_tvh_container.sh' to /custom-cont-init.d
# (see https://www.linuxserver.io/blog/2019-09-14-customizing-our-containers)
# 2. Start/Restart the tvheadend container
###########################################################################################
# Author: cgomesu
# Repo: https://github.com/cgomesu/tvhlink
###########################################################################################
# Notes
# - System-wide Python3 pkgs now managed by APK. 'testing' repo of the 'edge' branch seems
# to be pretty quick with release updates.
# - PEP 668 in Python 3.11 disables global pip3 install
# - Linuxserver.io changed location of custom scripts dir from /config/custom-cont-init.d
# to /custom-cont-init.d
# - Python 3.10.1 (edge branch) changes Python pkg directory
# - LinuxServer image comes with Python3 and the community repo source enabled
# - Streamlink 3.0.0 introduces lxml>=4.6.4 and <5.0 requirement
# - Streamlink 3.0.0 introduces pycountry and pycrypto dependencies
# - Keep this script POSIX sh compliant for compatibility
# - Use shellcheck
###########################################################################################
# Additional info
#
# Base image URL target:
# ghcr.io/linuxserver/tvheadend
#
# Script installs or upgrades the following pkg:
# python3, streamlink
#
# Tested images (tvheadend:latest):
# arm64:
# sha256:f14ee2a6c645286078c755a16a055f93860ceeb65d5e3f54ab61168e6b70b20b
###########################################################################################
# apk variables
APK_BRANCH='edge'
APK_MAIN="http://dl-cdn.alpinelinux.org/alpine/${APK_BRANCH:-edge}/main"
APK_COMMUNITY="http://dl-cdn.alpinelinux.org/alpine/${APK_BRANCH:-edge}/community"
APK_TESTING="http://dl-cdn.alpinelinux.org/alpine/${APK_BRANCH:-edge}/testing"
# takes msg ($1) and status ($2) as args
end () {
echo '***********************************************'
echo '* Finished Streamlink install/upgrade script'
echo "* Message: $1"
echo '***********************************************'
exit "$2"
}
# takes message ($1) and level ($2) as args
message () {
echo "[TVHlink] [$2] $1"
}
start () {
echo '***********************************************'
echo '****** Streamlink install/upgrade script ******'
echo '***********************************************'
echo 'Author: cgomesu'
echo 'Repo: https://github.com/cgomesu/tvhlink'
echo '***********************************************'
}
#takes a python3 pkg as argument ($1)
check_py3_pkg_exist () {
if python3 -c "import $1" > /dev/null 2>&1; then return 0; else return 1; fi
}
# checks user is root
check_root () {
if [ "$(id -u)" -eq 0 ]; then return 0; else return 1; fi
}
streamlink_apk () {
if ! apk add --upgrade -U -X "$APK_MAIN" -X "$APK_COMMUNITY" -X "$APK_TESTING" streamlink; then
end 'APK: Critical error. Unable install required packages. Check previous messages.' 1
fi
}
python3_remove_all () {
message 'APK: Python3 packages are now going to be managed by APK instead of PIP.' 'warning'
apk del --no-cache streamlink py3-lxml py3-requests py3-pip python3
}
############
# main logic
start
trap "end 'Received a signal to stop' 1" INT HUP TERM
if ! check_root; then end 'User is not root. This script needs root permission.' 1; fi
# for backward compatibility, let APK manage Python3 pkgs
# see https://github.com/cgomesu/tvhlink/issues/21
if check_py3_pkg_exist pip; then python3_remove_all; fi
message 'Installing/upgrading Streamlink...' 'info'
streamlink_apk
# EOF
message "Streamlink version: $(streamlink --version)." 'info'
end 'Reached EOF without critical errors.' 0
Alles anzeigen
Dieses Script ausführbar machen und den TVH-Container starten:
docker run -dit -p 9981:9981 -p 9982:9982 -h tvh --name tvh --restart unless-stopped -e PUID=1000 -e PGID=1000 -e TZ=Europe/Berlin -v tvhcustom:/custom-cont-init.d -v tvhconfig:/config -v tvhrecord:/recordings --network bridge linuxserver/tvheadend:latest
Danach startet man den VPN-Proxy:
docker run -d --device=/dev/net/tun --cap-add=NET_ADMIN -v /etc/localtime:/etc/localtime:ro -p 8888:8080 -e HOST_NETWORK="{DEINE_NETZWERKADRESSE}" -e PVPN_CMD_ARGS="connect --cc US" -e PVPN_TIER=0 -e PVPN_USERNAME={DEIN_PROTONVPN-USERNAME} -e PVPN_PASSWORD={DEIN_PROTONVPN-PASSWORT} --name privoxy-us walt3rl/proton-privoxy
{DEINE_NETZWERKADRESSE} ist z.B. 192.168.0.0/24 (wenn der Router unter 192.168.0.1 erreichbar ist)
Sollte es nicht notwendig sein, daß der Proxy aus dem gesamten LAN erreichbar ist, kann man die HOST_NETWORK-Variable weg lassen.
{DEIN_PROTONVPN-USERNAME} kopiert man von https://account.protonvpn.com/account#openvpn - z.B.: 1MdMap3saJKokA1nJ
{DEIN_PROTONVPN-PASSWORT} kopiert man von https://account.protonvpn.com/account#openvpn - z.B.: SkX3625DrEcKbve5WgjU9AXs8rhBpTab
Die Variable PVPN_CMD_ARGS in diesem Beispiel sorgt dafür, daß der Proxy eine Verbindung zu einem Server in den USA herstellt. Möglich mit einem Free-Account sind also auch "connect --cc NL" oder "connect --cc JP".
Die Variable PVPN_TIER enthält die Angabe, um welche Art von Konto es sich handelt (0=Free). Kann man alles auf https://github.com/walterl/proton-privoxy nachlesen.
Zuguterletzt wird die Playlist für TVH ergänzt oder angelegt. Der Eintrag für den o.g. Sender sieht z.B. so aus:
#EXTINF:-1 tvg-id="rt.de" tvg-name="RT deutsch" tvg-country="DE",RT deutsch
pipe:///usr/bin/streamlink --stdout --default-stream best --ringbuffer-size 32M --hls-audio-select "*" --http-proxy "http://192.168.0.26:8888" URL zur M3U8
IP-Adresse muß selbstverständlich angepaßt werden.
Man kann den VPN-Proxy-Container auch mehrmals (je nachdem wie viele unterschiedliche Serverman braucht) starten - dann mit anderem Namen (z.B. privoxy-nl), anderen Variablen (z.B. connect --cc NL), anderem Port-Mapping (z.B. -p 8887:8080).
Auf TVH gehe ich wie gesagt nicht ein. Läuft jedoch wie geschmiert!
Ich weise darauf hin, daß es sich hier lediglich um eine technische Anleitung handelt.
Niemand ist gezwungen oder aufgefordert, der Anleitung zu folgen, geschweige denn RT zu komsumieren.
Ich verwahre mich ausdrücklich vor Unterstellungen hinsichtlich meiner Sympathien und meines Weltbildes.
Ich benutze Docker in CoreELEC auf einem Odroid N2.
Habe ich auch so. Habe auch takealug/new-telerising-api:latest gezogen und beim Start auch die in Deinem vorangegangenen Post beschriebene Fehlermeldung. Der Container läuft aber trotzdem. Bis telerising dann erreichbar ist, dauert es (zumindest bei mir) wegen dem Update 7,5 min
DeBaschdi nimmt direkt das von easy4me bereitgestellte Binary für die jeweilige Architektur aus dessen öffentlichem Repo. Für arm64 wird dabei ebenfalls die arm32/armhf binary genommen. Ergo müsste in diesem Fall das Problem irgendwo bei easy liegen. Vermutung, da ich das auch gerade bei meinem minimal Docker durch hab:
Easy baut jetzt auf einem Bullseye basierenden Debian/Raspbian, und das läuft dann nicht auf einem Buster basierenden Debian/Raspbian weil Bullseye eine neuere GLIBC Version mitbringt
Daß die Ursache am bzw im Container liegt, hab ich auch angenommen. Die Pfade im Log sind ja Container-intern.
Jetzt hab ich nach etwas Bastelei Deinen Container auf meinem N2 (CoreELEC) ans Laufen bekommen.
Hallo und Juten Tach!
Seit dem Update von API v0.10.1 auf API v0.10.3 (API v0.10.2 ist mir entgangen) befindet sich mein Container in einer Update-Schleife. Das Log sieht so aus:
...
2023-06-05T09:54:06.732737000Z ###############################################################################
2023-06-05T09:54:06.732996000Z # If u Like my Work, please Donate https://paypal.me/DeBaschdi Thank You ! :) #
2023-06-05T09:54:06.733228000Z ###############################################################################
2023-06-05T09:54:06.735143000Z ##################################
2023-06-05T09:54:06.735687000Z # Image Version 0.0.2 #
2023-06-05T09:54:06.736306000Z # Running The NEW Telerising API #
2023-06-05T09:54:06.737157000Z ##################################
2023-06-05T09:54:06.749605000Z ./api: /lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.29' not found (required by ./api)
2023-06-05T09:54:06.750531000Z ./api: /lib/arm-linux-gnueabihf/libpthread.so.0: version `GLIBC_2.30' not found (required by ./api)
2023-06-05T09:54:08.216754000Z Updating the NEW Telerising-API
2023-06-05T09:54:08.226785000Z Cloning into '/telerising/telerising'...
...
Alles anzeigen
Das Problem läßt sich auf einem Odroid N2 mit CoreELEC, einem RockPi mit Ubuntu und einem RasPi mit Raspbian reproduzieren.
Wie läßt sich das Problem mit den Bibliotheken (libm.so und libpthread.so) beheben?
Ist denn das Verzeichnis "custom-cont-init.d" im Wurzelverzeichnis Deines Containers vorhanden? (Es darf oder soll ja nicht mehr im Verzeichnis /config liegen)
Bekommst Du so raus (ssh):
icke1260@ubuntu-nas:~$ docker exec -it tvh /bin/bash
root@tvh:/# ls
app custom-services.d etc libexec picons run tmp
bin defaults home media proc sbin usr
config dev init mnt recordings srv var
custom-cont-init.d docker-mods lib opt root sys
root@tvh:/#
Da mein TVHeadend-Container "tvh" heißt, müßtest Du "tvh" durch den Namen Deines TVH-Containers ersetzen. Wenn das Verzeichnis nicht vorhanden ist, kannst Du das ja in Deinem Host-Verzeichnis "docker/TV Headend/config" anlegen, das Script reinpacken und ausführbar machen und dann ins Wurzelverzeichnis des Containers kopieren:
Hab den Weg im IPTV Simple als SMB Freigabe den Weg im Netzwerk ist. Und eben auch wenn ich die IP eintrage passiert nichts.
Wenn Deine epg.xml innerhalb einer SMB-Freigabe auf einem Rechner irgendwo in Deinem LAN liegt, kannst ja nur Du den Pfad kennen. Die Freigabe verbindest Du im KODI-Dateimanager und in den IPTV-Simple-Client-Einstellungen wählst Du "Lokaler Dateipfad" und wählst dann den Pfad zu Deiner epg.xml aus. Genauso wenn die Datei auf dem selben Rechner liegt.
Ich halte allerdings die Variante über "Dateipfad im Netz (Internetadresse)" für weniger aufwändig, denn das easyepg-Addon oder der -Container, mithin der Webserver auf Port 4000, läuft ja im allgemeinen immer. Und wenn Du easyepg übers WebUI konfigurierst, weißt Du doch zwangsläufig die Adresse (steht oben in der Adressleiste Deines Browsers). Die kannst Du auf einfach kopieren ("Copy link") - guckst Du:
Und solltest Du mehrere KODI-Clients haben, die diese epg.xml verwenden sollen, empfehle ich TVHeadend. Einmal eingerichtet, hast von allen TVH-Clients das gleiche TV- und EPG-Erlebnis. Wenn Du am Simple-Client hängst, könntest Du sogar den in Verbindung mit TVHeadend nutzen. Aber das führt jetzt zu weit.
Gehts um easyepg als Addon? Und den IPTV-Simple-Client?
Wenn ja und ja hinterlegst Du in dessen Einstellungen den URL zum EPG, also wenn das ein und derselbe Rechner ist:
Oder wenn es unterschiedliche Rechner in Deinem LAN sind mit der IP oder dem Netzwerknamen des Rechners, auf dem easyepg läuft, z.B.:
Oder den absoluten Pfad zum EPG, aber empfehlenswerter is der URL.
Guten Abend!
Möchte mal ein Problem schildern, das offenbar auf Unfussy zurückgeht. Denn in z.B. Estuary verhält sich mein CoreELEC "artgerecht".
Also wenn ich im TV-Fullscreen bin und "OK" oder "Info" auf der Fernbedienung drücke, komme ich bei Unfussy da nicht mehr raus bzw nur über ssh (kodi-send). Diese Ansicht (Includes_PVR.xml):
Meine IR-Signale werden nicht mehr verarbeitet. Bei Estuary siehts aus, wie es aussehen soll:
CoreELEC-WZ:~ # irw
160 0 KEY_OK devinput
9e 0 KEY_BACK devinput
166 0 KEY_INFO devinput
9e 0 KEY_BACK devinput
Bei Unfussy leider so:
oder so:
Nichts geht mehr - nicht "zurück", nicht "OK", nicht "rechts", nicht "links" ...
Geht es nur mir so? Oder kann jemand dieses Verhalten bestätigen? Und wie kann das Problem behoben werden?
... Einem Laien aber sowas zu empfehlen halte ich für gefährlich.
Jm2c
Ist doch lediglich eine Antwort und keine Empfehlung. Wenn es nur um die Installation und den Gebrauch von Streamlink geht, ist das Sicherheitsrisiko ziemlich überschaubar.
Da es ja um einen RasPi geht, wären ja auch Raspian, Debian, Ubuntu ... Varianten, auf denen KODI, der vom Fragenden benötigte PVR-Client und streamlink einfach per apt-get zu installieren sind.
Und nach nochmaliger Suche, hab ich noch das Matrix-Addon gefunden:
https://github.com/jairoxyz/script.module.streamlink_matrix
Ist auch nur eine Antwort und keine Empfehlung
Eigentlich halte ich das gar nicht für ein KODI-Problem, auch nicht für ein LibreELEC-Problem, sondern eher für eins Deiner Probleme. Wenn Du zu faul bist, eine Suchmaschine zu benutzen und Dir trotzdem eine Lösung präsentiert wird, brauchst Du hier nicht rummotzen "So Befehle wie installentware, opkg oder pip3 gibt es bei Libreelec nicht". Dir ist doch niemand ne Antwort schuldig.
Das funktioniert unter LibreELEC weitestgehend, wie oben beschrieben. Hat mir ne Suchmaschine verraten. Du würdest staunen!
Man kannentware unter LibreELEC wie folgt installieren:
https://www.artembutusov.com/libreelec-entware-ng-installation/
Wenn Du dann Entware (das ist ein Paketmanager) hast, kannst Du der obigen Anleitung folgend pip (das ist auch ein Paketmanager) installieren und hiernach mit pip streamlink. Reihenfolge einhalten!
Bei CoreELEC kann man entware installieren. Vielleicht geht das LibreELEC auch?!
Wenn das geht, kannste pip installieren.
Und danach kannste mittels pip Streamlink installieren.
Also ich hab kein LibreELEC und es dementsprechend nicht getestet. Aber möglicherweise ist das´n Ansatz - Versuch macht kluch
Bei CoreELEC gehts. Eben probiert:
CoreELEC:~ # streamlink
[cli][info] streamlink is running as root! Be careful!
usage: streamlink [OPTIONS] <URL> [STREAM]
Use -h/--help to see the available options or read the manual at https://streamlink.github.io
streamlink ist dann im Ordner
/storage/.opt/bin
habe eben mal nach gefragt. Döner hat schon die letzten zwei Jahre bei uns im die 6€ gekostet.
Deshalb hab ick neulich mal´n Eisbeen bestellt. Fand er nicht lustig
Mann - bist Du schnell!
Ich habe mich nochmal mit dem Thema EPG-Daten in bunt befasst und die Genres.xml nochmals angepasst.
Die Abdeckung entspricht ca. 90 %
Es ist -glaub ich- nicht der richtige Ansatz, neue Genres zu erfinden. In diese Datei hatte ich (keine Ahnung wann) alle EIT-Genres eingepflegt.
Vielmehr muß man die Genre-Kreationen der Sender und anderen EPG-Quellen den "genormten" Genres zuordnen. Dazu hat @DeBaschdi seinerzeit auch das entsprechende Werkzeug veröffentlicht: genremapper.pl
Dieses Script verarbeitet Deine EPG-Datei zu einer EPG-Datei mit EIT-konformen Genres.