Quantcast
Channel: Kodinerds.net - Deutschsprachiges Forum zum Kodi Entertainment Center
Viewing all 87137 articles
Browse latest View live

[Vorstellung] Kodi WebView

$
0
0
______________Kodi_WebView______________

Motivation :
Spoiler anzeigen
Hallo Community,

sehr
oft und lange habe ich nach einer Weboberfläche gesucht, die mir die
Kodi SQLDatenbank grafisch Aufbereitet und in eine Webseite verpackt.
Ich
habe zwar viel gefunden und mehr probiert aber nichts was meinen
Vorstellung entsprach. Die Scripte waren zu Alt oder funktionierten
einfach nicht.

Also begann ich vor einigen Monaten im Laufe eines anderen Projekts mich mit der Kodi SQL Datenbank auseinanderzusetzen.
Ziel
war es eine Webseite zu Bauen die die Daten aus der Datenbank
automatisch holt und so Aufbereitet, das man so gut wie nichts "warten"
muss.
Und das auch noch ohne Kodi-Anbindung, so das die Seite laufen kann ohne das das Medicenter läuft.
Heute bin ich einem Punkt angekommen , wo ich euch das neue Projekt "MovieDB WebView" vorstelllen möchte.
Es befindet sich nach wie vor in der Entwicklung.


Derzeitige Features

  • MySQL und sqlite Support
  • MovieListe ( Anzahl der Filme pro Seite / Spalte anpassbar )
  • Detailansicht für Movies und Originale inkl. Sets und Links
  • SerienListe ( Anzahl der Serien pro Seite / Spalte anpassbar )
  • Detailansicht für Serien inkl. Episodenguide -> Season mit den jeweiligen Folgen
  • Manueller und Automatischer ( cron ) Download der Cover/ Serienbanner und Update der Originaldaten
  • Erweiterte Suchfunktionen (nach Titel, Drehbuch, Regisseur, Land, Darsteller, Jahr, Sets und Genre)
  • einpflegen der Originalmedien ( DVD / BluRay ... )
  • Statistiken
  • Auswahl von Spotlights auf der Startseite
  • Verleihmodul
  • Multilanguage Support
  • automatische Erstellung von Thumbs
  • Editieren von Sets (Kodi, Originale) - Anzeige der dazugehörigen Filme
  • Möglichkeit zum Bearbeiten der Kodi-Datenbank (Jahr, Laufzeit, Altersfreigabe, Studio, Drehbruch, Regisseur, Land, Genre, Rating, Vots, Plot, Tagline) und gesehen Status - Adminhinweis beachten
  • Einzel - Massivupdate der Ratings und Vots (IMDB)
  • Löschen von Filmen (inkl. Dateien) - Adminhinweis beachten
  • Entfernen von Verwaisten Einträgen aus der DB (wo die Filmdatei nicht mehr existiert) - Adminhinweis beachten

Derzeit in Entwicklung


  • Film / Serien Details editierbar 80% erledigt
  • Ausbau des Verleihmoduls + Statistiken

Kompatibilität


  • Kodi 14.x ( DB Version 90 )
  • Kodi 15.x ( DB Version 93 )
  • Kodi 16.x ( DB Version 99 )
  • Kodi 17.x ( DB Version 107 )
  • Kodi 18.x ( DB Version 112 -> 116 )
Download : KodiWebView

Vorraussetzungen :

WebServer: PHP7.x, MySql ODER sqlite
PHP Module: gd, pdo_sqlite UND pdo_mysql
Installation und Hinweise

1. Archiv entpacken und auf den Webserver laden
2. den install Ordnern Ansufen und der Installation folgen.
2.1 - Für SQL den Punkt "Verwende MySQL" auswahählen und Ausfüllen
2.2 - Wenn die KodiDatenbank als .db verwendet wird "Verwende .DB Datei" auswählen und die Datei in den Hauptordner ablegen.
2.3 - Die Einstellungen werden in einer Eigene .db abgelegt (/include/settings.db). Diese wird während der Installation automatusch erstellt.


Original Medien werden im "Adminbereich" angelegt
Um die fehlenden EInträge für die "Original Medien" nach laden zu lassen, kann man[/size]
  • im Bereich Admin auf "Manuelles Update starten" klicken
  • oder die Datei include/newest.php per cronjob automatisch im Intervall ausführen lassen

Dabei werden neue Thumbs für Filme ,Serien und Originale nachgeladen ausserdem werden die "Original Medien" aktualisiert.

Bitte beachte das das Ausführen der newest.ph sehr lange dauern kann , ich empfele php_value max_execution_time zu Ändern zB auf 999 und es ggf. mehrmals nacheinander zustarten.



Screens:

Startseite mit allen Verfügbaren Spotlights
Adminpanel [1] [2]

Verleihmodul
Globale Suche
Statistiken [1] [2]

Kodi Film Liste
Originale Film Liste
-> Kodi / Originale Film-Details [1]
- ->Bearbeitung eines Filmes

Kodi Serien-Liste 1
Kodi Serien-Liste alternative
-> Kodi Serien-Details

Genre Auswahl Liste


Bugtracker / Featurerequests :
bugtracker.redlabs.info/index.php?project=8&do=index


Telerising API - Zattoo für tvHeadend und VLC [v0.2.1 | 2020/01/12]

$
0
0
Hallo zusammen,

ich habe ein Perl-Skript entwickelt, mit dem man die Zattoo Live-Streams via tvHeadend und VLC schauen kann.

Getestet unter Linux / Debian

Benötigte zusätzliche Programme: ffmpeg, dialog, perl, perl-doc, CPAN-Module (siehe README), ggf. VLC

Features:
* Live TV mit allen unterstützten M3U-Playern (tvHeadend, VLC etc.)
* Unterstützung für Full HD-Streams (auch bei Zattoo DE, mit Abo) - Bandbreite selbst auswählbar
* Fernsehen im Ausland schauen (auch bei Zattoo CH, mit Abo)
* Unterstützung für Zattoo-Reseller wie z.B. 1&1 TV
* Dolby-Support
* Zugriff auf die PVR-Cloud von Zattoo (Download-Funktion folgt)

===========================================


Zur Installation:
  1. Benötigte Programme und Module installieren
  2. im Home-Verzeichnis den Ordner "ztvh" erstellen
  3. ZIP-Archiv herunterladen, entpacken und die Skript-Dateien im Ordner "ztvh" ablegen
  4. die Datei "userfile.json" mit Provider-Adresse (z.B. "zattoo.com"), E-Mail-Adresse und Passwort im Skriptordner "ztvh" erstellen (Anleitung: siehe README)
  5. die Berechtigungen für das Ausführen der Skripts erteilen: "sudo chmod a+x ~/ztvh/*" und "sudo chmod a+x ~/ztvh"
  6. das Skript ausführen: "cd ~/ztvh && perl zattoo.pl"


Mit der API können auch Kanallisten erzeugt werden. Der entsprechende Link zur Liste kann im TV-Client eingetragen werden. Mehr Infos gibt es in der GitHub-Anleitung.

Downloads:
github.com/sunsettrack4/telerising/releases

Source-Code:
github.com/sunsettrack4/telerising


Screenshots (Kodi):

kodinerds.net/index.php/Attach…6a055be2ad1864fa542577dbb kodinerds.net/index.php/Attach…6a055be2ad1864fa542577dbb kodinerds.net/index.php/Attach…6a055be2ad1864fa542577dbb


Ihr könnt meine Arbeit mit einer kleinen Spende unterstützen: Spendenlink (PayPal)


Danke + LG
easy4me

Nvidia Shield TV 2019 ( Erfahrungen, Einstellungen, ... )

$
0
0
so shield is angeschlossen und eigestellt. kodi ebenfalls.
kodi hab ich wie gewohnt auf 1080p gestellt und in der whitelist 1080p und 4k freigegeben, damit ich im film hin und her switchen kann zwecks upscaling.
bei 1080p übernimmt der tv das hoch skalieren und bei 4k die shield.
und jetzt beginnt das problem denn stelle ich das AI Upscaling auf Erweitert kommt die shield aus dem swichen nicht mehr heraus , geht ewig munter hin und her.
daher hab ich sie jetzt erst einmal auf optimiert gestellt, dort geht es meistens.
erster vergleich zwischen shield und tv , kaum ein unterschied. heißt im klartext die neue shield skaliert sehr viel besser als die alte.
aber das ist erst der erste eindruck muss erst in ruhe alles testen.
jetzt bleibt nur die frage wo das problem liegt mit dem ewigen hin und her switchen sobald auf erweitertes ai upscaling gestellt wird.

[HowTo] Import von Aufnahmen in neue TVHeadend-Installation (vielleicht anpinnen?)

$
0
0
Weil ich mich noch mal weiter mit der Thematik befasst habe, dachte ich, ich schreibe direkt mal ein kleines HowTo, was vielleicht angepinnt werden kann, damit andere Nutzer von meinen Erfahrungen profitieren. Sollte ich an irgendeiner Stelle etwas zu unpräzise oder falsch erklären, dann korrigiere ich das gerne :). Da je nach Installationsweise die Dateipfade unterschiedlich sein können, gebe ich die immer nur relativ an. In den Skripten müssen die Dateipfade immer auf die eigene Situation angepasst werden.


Disclaimer
Benutzung auf eigene Gefahr! Eigentlich kann nichts schlimmes passieren, ausser dass ihr euer log Verzeichnis zumüllt, wenn ihr das Skript nicht richtig anpasst, aber sicher ist sicher ;).


Das Problem
Ihr habt einen TVHeadend-Server und aus welchen Gründen auch immer, habt ihr den TVHeadend-Server neu installiert oder seid vielleicht auf eine Dockerinstallation gwechselt. Nachdem ihr alles eingerichtet habt, stellt ihr fest, die ganzen alten Aufnahmen, die vielleicht noch in /recordings waren oder die ihr dorthin zurückgesüpielt habt, tauchen nicht mehr unter Aufnahmen auf. TVHeadend bietet leider keine direkte Möglichkeit die Aufnahmen wieder zu integrieren. Wenn ihr die Aufnahmen nicht so in Kodi einbinden wollt, zeige ich euch jetzt zwei Wege, wie ihr eure Aufnahmen in eine neue TVHeadend installation integriert bekommt.


Hintergrund

Wie funktioniert das mit den Aufnahmen in TVHeadend? Wenn ihr eine Aufnahme plant, dann wird im Configordner von TVHeadend im Verzeichnis dvr/log/ eine JSON erzeugt, mit jeder Menge Infos aus dem EPG und zur Aufnahme. Diese Datei enthällt auch den Speicherort und den Dateinamen der Aufnahme und ist der Schlüssel dazu, dass ein Video bei TVHeadend als Aufnahme auftaucht. Es reicht allerdings nicht einfach diese Datei in das Verzeichnis der neuen Installation zu kopieren. Da passiert genau gar nichts, weil TVHeandend diesen Ordner anscheinend in keiner Art und Weise überwacht oder scannt.


Die Lösung

Man kann über eine API per URL Aufnahmen in TVHeadend planen. Der Clou ist, man kann auch Aufnahmen in der Vergangenheit planen und diese API nutzen, um für Videos, die in einem Verzeichnis liegen zugehörige Dateien in dvr/log/ von TVHeadend anlegen zu lassen. Das wurde im TVHeadend-Forum diskutiert und die hier vorgestellten Lösungen basieren auf Anpassungen von einem Skript des Users ullix tv tvheadend.org/boards/5/topics/28252?r=29113#message-29113.


Beide Lösungen sind in Pyhton geschrieben und sollten sowohl mit Python 2.7, als auch Python 3 funktionieren.


Lösung 1

Solltet ihr noch die alte config haben, dann könnt ihr die erste Lösung nutzen, die, soweit ich das überschaue, vom Resultat her absolut identisch ist, zu der Situation vorher in eurer alten Installation. Besser kanns nicht gehen :).
1. Speichert eure alten Logs in einen Ordner /storage/log-backup/ ab.
2. Überprüft, ob der Speicherort in den Dateien richtig ist. Bei einer nativen Installation steht da zum Beispiel als Verzeichnispfad /storage/recordings/..., aber wenn ihr eine Dockerinstallation habt, steht dort als Pfad nur /recordings/... Solltet ihr von der einen zur anderen Installationsart wechseln, dann müsst ihr das entsprechend in den Dateien anpassen.
3. Speichert einfach den Code zum Beispiel im Ordner /storage unter dem Dateinamen tvh_log_import.py ab.
4. Passt die api_url an, indem ihr euren TVHeadend-Benutzernamen, -Passwort und die IP Adresse des Servers eintragt.
4. Verbindet euch per SSH mit eurem Kodirechner und führt die Datei aus mit

Quellcode

  1. #python /storage/tvh_log_import.py`

5. Fertig :).

Quellcode

  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. #This script has the purpose to import old TVHeadend recordings in a new TVHeadend installation, when old logs exist. Old logs have to be in a folder given under logdir and filename in the logfile have to match files to be imported. This is adapted from the following skript:
  4. #https://tvheadend.org/boards/5/topics/28252?r=29113#message-29113 by user ullix tv.
  5. #Variables have to be adapted to personal situation.
  6. import json, urllib, time, datetime, subprocess, os
  7. #Input variables
  8. logdir = "/storage/log-backup/"
  9. api_url = "http://user:password@IP:9981/api/dvr/entry/create?conf="
  10. #Functions
  11. def importLog(log, url):
  12. """Takes existing json log file and sends a recording timer to the server."""
  13. f = open(log,"r")
  14. mask = f.read()
  15. new_mask = json.loads(mask)
  16. api_string = url + json.dumps(new_mask)
  17. filehandle = urllib.urlopen(api_string)
  18. print "Server Answer:", filehandle.read()
  19. #Iterating through log files
  20. files = os.listdir(logdir)
  21. for log in files:
  22. importLog(logdir+log, api_url)
Alles anzeigen


Lösung 2
Solltet ihr nichts mehr außer euren Aufnahmen haben, dann könnt ihr die zweite Variante nutzen. Das Skript geht einfach euren Aufnahme Ordner durch und erzeugt aus den Informationen aus dem Dateinahmen eine sehr leere JSON. Zum erkennen, um was es geht, reicht das aber allemal und ihr könnt eure Aufnahmen wieder wie vorher abspielen. Das Skript geht davon aus, dass in eurem /recordings Ordner für jeden Film oder Serie ein Unterordner besteht. Falls das bei euch nicht der Fall ist, passt entweder die Ordnerstruktur an oder das Skript, je nachdem, was euch leichter von der Hand geht. Außerdem erwartet das Skript, dass eure Dateien am Anfang des Dateinamens einen Zeitstempel der Form YYYY-MM-DDTHH-MM haben. Hier gilt fast das gleiche wie zuvor. Solltet ihr keinen Zeitstempel haben oder das Ändern des Skriptes oder der Dateinamen ist euch zu aufwendig, dann nutzt das Skript einen Fallbackmodus und nutzt den Zeitstempel der cdate.


1. Speichert einfach den Code zum Beispiel im Ordner /storage unter dem Dateinamen tvh_rec_import.py ab.
2. Passt die api_url an, indem ihr euren TVHeadend-Benutzernamen, -Passwort und die IP Adresse des Servers eintragt.
3. Verbindet euch per SSH mit eurem Kodirechner und führt die Datei aus mit

Quellcode

  1. #python /storage/tvh_rec_import.py`
4. Fertig :).

Quellcode

  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. #This script has the purpose to import old TVHeadend recordings in a new TVHeadend installation, when no old logs exist. It scans a folder with TVHeadend recordings and sets for each file a recording timer in TVHeadend. This is adapted from the following skript:
  4. #https://tvheadend.org/boards/5/topics/28252?r=29113#message-29113 by user ullix tv.
  5. #The storage folder is expected to have subfolders for each movie or series. My recordings have a filename scheme of "YYYY-MM-DDTHH-MM-xxx.ts" because I had %FT%R in the beginning of recording string. Variables have to be adapted to personal situation and scripts need either to be adapted or filenames to be renamed.
  6. import json, urllib, time, datetime, subprocess, os
  7. #Input variables
  8. recdir = "/storage/recordings/"
  9. api_url = "http://user:password@IP:9981/api/dvr/entry/create?conf="
  10. mask = """{
  11. "enabled": true,
  12. "start": 1000,
  13. "stop": 2000,
  14. "channelname": "Imported",
  15. "title": {
  16. "ger": "my title"
  17. },
  18. "comment": "added by tvh_rec_import.py",
  19. "files": [
  20. {
  21. "filename": "/full/path/to/videofile.ts"
  22. }
  23. ]
  24. }"""
  25. mask = mask.replace("\n", "") # remove the line feeds
  26. #Functions
  27. def filedate2num(filepath):
  28. """Convert filename that starts with 'YYYY-MM-DDTHH-MM' to a unix timestamp; use cdate, i.e. last inode change time not creation, on error"""
  29. try:
  30. dt = int(time.mktime(datetime.datetime.strptime(filepath.split("/")[-1][0:15], "%Y-%m-%dT%H-%M").timetuple()))
  31. except:
  32. print "ERROR in filestr2num: file name doesn't start with 'YYYY-MM-DDTHH-MM.ts'. Use Inode Change Time instead."
  33. dt = int(os.stat(filepath).st_ctime)
  34. return dt
  35. def videoDuration(video_file_path):
  36. """Get video duration in sec from a ffprobe call, using json output"""
  37. #command is: ffprobe -loglevel quiet -print_format json -show_format /full/path/to/videofile
  38. command = ["ffprobe", "-loglevel", "quiet", "-print_format", "json", "-show_format", video_file_path]
  39. pipe = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  40. out, err = pipe.communicate()
  41. js = json.loads(out)
  42. return int(float(js['format']['duration']) + 1.)
  43. def importRecord(filepath, mask, url):
  44. """Creates a json file with the information from video file and sends a recording timer to the server."""
  45. video_start = filedate2num(filepath)
  46. new_mask = json.loads(mask)
  47. new_mask['files'][0]['filename'] = filepath[8:]
  48. new_mask['title']['ger'] = filepath.split("/")[-1][:-3]
  49. new_mask['start'] = video_start
  50. new_mask['stop'] = video_start + videoDuration(filepath)
  51. print "New File Info: \n", json.dumps(new_mask, sort_keys = True, indent = 4)
  52. api_string = url + json.dumps(new_mask)
  53. filehandle = urllib.urlopen(api_string)
  54. print "Server Answer:", filehandle.read()
  55. #Iterating through recordings folder
  56. directories = os.listdir(recdir)
  57. for folder in directories:
  58. for root, dirs, files in os.walk(recdir+folder):
  59. for filename in files:
  60. importRecord(recdir+folder+"/"+filename, mask, api_url)
Alles anzeigen

Shield 2015 Netzwerk Problem

$
0
0
Hallo,

meine Shield ist über das Netzwerk mit dem Laptop verbunden (Lan) .
Ich kopiere gerne Dateien über das Netzwerk direkt zu der Shield auf einer angeschlossenen Festplatte.
Die Geschwindigkeit ist gut,doch es kommt immer mal wieder vor das der Windows Kopiervorgang auf 0mb Datenrate absinkt und
die Datei nicht kopiert werden konnte.Wenn ich auf Vorgang wiederholen klicke dann geht es ohne Probleme.
Wenn ich dann wieder eine neue Datei wähle hängt es wieder und ich muss auf Kopiervorgang wiederholen klicken.Woran kann das liegen?Während des Kopiervorgang tritt der Fehler nicht auf nur am Anfang

SmartHome - Erfahrungen und verwendete Geräte

$
0
0
Hallo zusammen,

da ich zuhause etwas am umbauen bin, kam auch wieder das Thema SmartHome auf. Akut benötigt wird ein neuer Rolladen, der dann auch gleich mit Motor und Funk ausgestattet werden soll.
Jetzt hab' ich natürlich die Qual der Wahl ... da ich irgendwann möglichst vieles abdecken möchte (Rolläden, Licht, Heizung, Fenster, Türen, Alarmsystem...) sollte das Funkprotokoll auf jeden Fall verschlüsselt sein, also entweder

- WLAN
- Bluetooth
- DECT
- EnOcean
- Z-Wave
- ZigBee (nutzt z.B. auch Philips Hue)

Da es meines Wissens keine WLAN, Bluetooth oder DECT Jalousieaktoren gibt, bleiben die drei letztgenannten.
Jedes dieser Systeme hat seine Vorteile:

- EnOcean: Batterielose Taster und Sensoren (spart etliche Euro an Batterien, die im Laufe der Zeit anfallen - die für meine FS-20 Schalter kosten z.B. pro Jahr/Schalter knapp 10€)
- Z-Wave: Großes, preisgünstiges Angebot an Aktoren und Sensoren
- ZigBee: Einfache Integration von Leuchten ohne neue Verkabelung

Langer Rede kurzer Sinn: ich möchte an Schaltern und Sensoren nach Möglichkeit EnOcean, an Beleuchtung teilweise ZigBee (Osram Lightify oder Philips Hue) und für den Rest Z-Wave verwenden.
Da man die unterschiedlichen Systeme nicht direkt miteinander verbinden kann, bleibt nur der Weg über eine Zentrale.
Die Preisgünstigste Variante wäre meinen Server mittels OpenHAB, einem EnOcean USB 300 Stick, einem Z-Wave USB Stick und der Philips Hue Bridge in eine Zentrale zu verwandeln.
Preislich läge ich dann bei ca. 140€ müsste aber alles scripten und ZigBee wäre auf die Hue beschränkt.

Wenn ich nicht scripten möchte, sondern eine komfortable Oberfläche haben will müsste ich zu einem der folgenden Systeme greifen:

- Zipabox mit EnOcean und ZigBee Modul, Preis ca. 330€. Allerdings scheint das System und vor Allem die Software ziemlich buggy zu sein.
- Ixergy WiButler, ca. 600€ (inkl. Installation durch einen Monteur vor Ort) - ist mir persönlich zu teuer, soll aber demnächst eine DIY Variante geben, bin mal auf den Preis gespannt.
- Homee mit Z-Wave und EnOcean Modul (ZigBee kommt demnächst). Der Preis liegt bei ca. 300€ (das ZigBee Modul wird wohl um die 100€ kosten - komplett also 400€).

Mein Favorit wäre momentan der Homee (oder erst mal mit EnOcean/Z-Wave und OpenHAB rumspielen, das wären knapp 80€ für die USB Sticks).

Nutzt jemand von euch eines der genannten Systeme und weiß positives oder negatives dazu zu berichten ?

update:

Der WiButler scheidet aus mehreren Gründen aus

- aktuell nicht über Internet erreichbar
- 2 Zugriffsebenen: Benutzer und Admin (in der Regel der Handwerksbetrieb, der das System eingerichtet hat - oder man verliert die Gewährleistung)
- daher viele Komponenten nur über den Handwerker und die damit verbundenen Kosten zu beziehen/integrieren

update 2:

Auch die Zipabox hat sich nach ausgiebigem Googeln ins Aus geschossen:

- einige Services (Messaging, Philips Hue, Sonos...) nur mit monatlicher/jährlicher Subscription oder hohen Einmalkosten (jeweils ca. 60€) erhältlich
- ungewiß, ob Standardservices nicht auch irgendwann kostenpflichtig werden

Entertain / MagentaTV / PVR.iptvsimple > 2020.01.10

$
0
0
Hallo!

Ich bin seit 2017 Entertain-Kunde und konnte bis zum 10.01.2020 prima mit PVR.iptvsimple die (alten) TV-Streams in Kodi gucken. Nach Abschaltung der alten Multicastadressen habe ich ein Problem:
Gibt es zur Zeit eine Möglichkeit mit PVR.iptvsimple auch die neuen Adressen zu nutzen? Bzw. ohne Einrichtung eines separaten Servers? - Oder muss ich den Umweg über TVHeadEnd gehen? Aufnahmen werden nicht benötigt - ich möchte eigentlich nur die Möglichkeit haben, zu gucken ... (Ich würde mir gern das Einrichten von TVHeadEnd sparen.). Am PC mit VLC habe ich keine Probleme. Ich nutze Kodi allerdings auf Pi's, S905- und S912-Boxen.

Ich habe bisher die verschiedensten Multicastadresslisten von IPTV.blog - allerdings ohne Erfolg - getestet.

[HowTo] Import von Aufnahmen in neue TVHeadend-Installation

$
0
0
Weil ich mich noch mal weiter mit der Thematik befasst habe, dachte ich, ich schreibe direkt mal ein kleines HowTo, was vielleicht angepinnt werden kann, damit andere Nutzer von meinen Erfahrungen profitieren. Sollte ich an irgendeiner Stelle etwas zu unpräzise oder falsch erklären, dann korrigiere ich das gerne :). Da je nach Installationsweise die Dateipfade unterschiedlich sein können, gebe ich die immer nur relativ an. In den Skripten müssen die Dateipfade immer auf die eigene Situation angepasst werden.


Disclaimer
Benutzung auf eigene Gefahr! Eigentlich kann nichts schlimmes passieren, ausser dass ihr euer log Verzeichnis zumüllt, wenn ihr das Skript nicht richtig anpasst, aber sicher ist sicher ;).


Das Problem
Ihr habt einen TVHeadend-Server und aus welchen Gründen auch immer, habt ihr den TVHeadend-Server neu installiert oder seid vielleicht auf eine Dockerinstallation gwechselt. Nachdem ihr alles eingerichtet habt, stellt ihr fest, die ganzen alten Aufnahmen, die vielleicht noch in /recordings waren oder die ihr dorthin zurückgesüpielt habt, tauchen nicht mehr unter Aufnahmen auf. TVHeadend bietet leider keine direkte Möglichkeit die Aufnahmen wieder zu integrieren. Wenn ihr die Aufnahmen nicht so in Kodi einbinden wollt, zeige ich euch jetzt zwei Wege, wie ihr eure Aufnahmen in eine neue TVHeadend installation integriert bekommt.


Hintergrund

Wie funktioniert das mit den Aufnahmen in TVHeadend? Wenn ihr eine Aufnahme plant, dann wird im Configordner von TVHeadend im Verzeichnis dvr/log/ eine JSON erzeugt, mit jeder Menge Infos aus dem EPG und zur Aufnahme. Diese Datei enthällt auch den Speicherort und den Dateinamen der Aufnahme und ist der Schlüssel dazu, dass ein Video bei TVHeadend als Aufnahme auftaucht. Es reicht allerdings nicht einfach diese Datei in das Verzeichnis der neuen Installation zu kopieren. Da passiert genau gar nichts, weil TVHeandend diesen Ordner anscheinend in keiner Art und Weise überwacht oder scannt.


Die Lösung

Man kann über eine API per URL Aufnahmen in TVHeadend planen. Der Clou ist, man kann auch Aufnahmen in der Vergangenheit planen und diese API nutzen, um für Videos, die in einem Verzeichnis liegen zugehörige Dateien in dvr/log/ von TVHeadend anlegen zu lassen. Das wurde im TVHeadend-Forum diskutiert und die hier vorgestellten Lösungen basieren auf Anpassungen von einem Skript des Users ullix tv tvheadend.org/boards/5/topics/28252?r=29113#message-29113.


Beide Lösungen sind in Pyhton geschrieben und sollten sowohl mit Python 2.7, als auch Python 3 funktionieren.


Lösung 1

Solltet ihr noch die alte config haben, dann könnt ihr die erste Lösung nutzen, die, soweit ich das überschaue, vom Resultat her absolut identisch ist, zu der Situation vorher in eurer alten Installation. Besser kanns nicht gehen :).
1. Speichert eure alten Logs in einen Ordner /storage/log-backup/ ab.
2. Überprüft, ob der Speicherort in den Dateien richtig ist. Bei einer nativen Installation steht da zum Beispiel als Verzeichnispfad /storage/recordings/..., aber wenn ihr eine Dockerinstallation habt, steht dort als Pfad nur /recordings/... Solltet ihr von der einen zur anderen Installationsart wechseln, dann müsst ihr das entsprechend in den Dateien anpassen.
3. Speichert einfach den Code zum Beispiel im Ordner /storage unter dem Dateinamen tvh_log_import.py ab.
4. Passt die api_url an, indem ihr euren TVHeadend-Benutzernamen, -Passwort und die IP Adresse des Servers eintragt.
4. Verbindet euch per SSH mit eurem Kodirechner und führt die Datei aus mit

Quellcode

  1. #python /storage/tvh_log_import.py`

5. Fertig :).

Quellcode

  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. #This script has the purpose to import old TVHeadend recordings in a new TVHeadend installation, when old logs exist. Old logs have to be in a folder given under logdir and filename in the logfile have to match files to be imported. This is adapted from the following skript:
  4. #https://tvheadend.org/boards/5/topics/28252?r=29113#message-29113 by user ullix tv.
  5. #Variables have to be adapted to personal situation.
  6. import json, urllib, time, datetime, subprocess, os
  7. #Input variables
  8. logdir = "/storage/log-backup/"
  9. api_url = "http://user:password@IP:9981/api/dvr/entry/create?conf="
  10. #Functions
  11. def importLog(log, url):
  12. """Takes existing json log file and sends a recording timer to the server."""
  13. f = open(log,"r")
  14. mask = f.read()
  15. new_mask = json.loads(mask)
  16. api_string = url + json.dumps(new_mask)
  17. filehandle = urllib.urlopen(api_string)
  18. print "Server Answer:", filehandle.read()
  19. #Iterating through log files
  20. files = os.listdir(logdir)
  21. for log in files:
  22. importLog(logdir+log, api_url)
Alles anzeigen


Lösung 2
Solltet ihr nichts mehr außer euren Aufnahmen haben, dann könnt ihr die zweite Variante nutzen. Das Skript geht einfach euren Aufnahme Ordner durch und erzeugt aus den Informationen aus dem Dateinahmen eine sehr leere JSON. Zum erkennen, um was es geht, reicht das aber allemal und ihr könnt eure Aufnahmen wieder wie vorher abspielen. Das Skript geht davon aus, dass in eurem /recordings Ordner für jeden Film oder Serie ein Unterordner besteht. Falls das bei euch nicht der Fall ist, passt entweder die Ordnerstruktur an oder das Skript, je nachdem, was euch leichter von der Hand geht. Außerdem erwartet das Skript, dass eure Dateien am Anfang des Dateinamens einen Zeitstempel der Form YYYY-MM-DDTHH-MM haben. Hier gilt fast das gleiche wie zuvor. Solltet ihr keinen Zeitstempel haben oder das Ändern des Skriptes oder der Dateinamen ist euch zu aufwendig, dann nutzt das Skript einen Fallbackmodus und nutzt den Zeitstempel der cdate.


1. Speichert einfach den Code zum Beispiel im Ordner /storage unter dem Dateinamen tvh_rec_import.py ab.
2. Passt die api_url an, indem ihr euren TVHeadend-Benutzernamen, -Passwort und die IP Adresse des Servers eintragt.
3. Verbindet euch per SSH mit eurem Kodirechner und führt die Datei aus mit

Quellcode

  1. #python /storage/tvh_rec_import.py`
4. Fertig :).

Quellcode

  1. #!/usr/bin/env python3
  2. # -*- coding: UTF-8 -*-
  3. #This script has the purpose to import old TVHeadend recordings in a new TVHeadend installation, when no old logs exist. It scans a folder with TVHeadend recordings and sets for each file a recording timer in TVHeadend. This is adapted from the following skript:
  4. #https://tvheadend.org/boards/5/topics/28252?r=29113#message-29113 by user ullix tv.
  5. #The storage folder is expected to have subfolders for each movie or series. My recordings have a filename scheme of "YYYY-MM-DDTHH-MM-xxx.ts" because I had %FT%R in the beginning of recording string. Variables have to be adapted to personal situation and scripts need either to be adapted or filenames to be renamed.
  6. import json, urllib, time, datetime, subprocess, os
  7. #Input variables
  8. recdir = "/storage/recordings/"
  9. api_url = "http://user:password@IP:9981/api/dvr/entry/create?conf="
  10. mask = """{
  11. "enabled": true,
  12. "start": 1000,
  13. "stop": 2000,
  14. "channelname": "Imported",
  15. "title": {
  16. "ger": "my title"
  17. },
  18. "comment": "added by tvh_rec_import.py",
  19. "files": [
  20. {
  21. "filename": "/full/path/to/videofile.ts"
  22. }
  23. ]
  24. }"""
  25. mask = mask.replace("\n", "") # remove the line feeds
  26. #Functions
  27. def filedate2num(filepath):
  28. """Convert filename that starts with 'YYYY-MM-DDTHH-MM' to a unix timestamp; use cdate, i.e. last inode change time not creation, on error"""
  29. try:
  30. dt = int(time.mktime(datetime.datetime.strptime(filepath.split("/")[-1][0:15], "%Y-%m-%dT%H-%M").timetuple()))
  31. except:
  32. print "ERROR in filestr2num: file name doesn't start with 'YYYY-MM-DDTHH-MM.ts'. Use Inode Change Time instead."
  33. dt = int(os.stat(filepath).st_ctime)
  34. return dt
  35. def videoDuration(video_file_path):
  36. """Get video duration in sec from a ffprobe call, using json output"""
  37. #command is: ffprobe -loglevel quiet -print_format json -show_format /full/path/to/videofile
  38. command = ["ffprobe", "-loglevel", "quiet", "-print_format", "json", "-show_format", video_file_path]
  39. pipe = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  40. out, err = pipe.communicate()
  41. js = json.loads(out)
  42. return int(float(js['format']['duration']) + 1.)
  43. def importRecord(filepath, mask, url):
  44. """Creates a json file with the information from video file and sends a recording timer to the server."""
  45. video_start = filedate2num(filepath)
  46. new_mask = json.loads(mask)
  47. new_mask['files'][0]['filename'] = filepath[8:]
  48. new_mask['title']['ger'] = filepath.split("/")[-1][:-3]
  49. new_mask['start'] = video_start
  50. new_mask['stop'] = video_start + videoDuration(filepath)
  51. print "New File Info: \n", json.dumps(new_mask, sort_keys = True, indent = 4)
  52. api_string = url + json.dumps(new_mask)
  53. filehandle = urllib.urlopen(api_string)
  54. print "Server Answer:", filehandle.read()
  55. #Iterating through recordings folder
  56. directories = os.listdir(recdir)
  57. for folder in directories:
  58. for root, dirs, files in os.walk(recdir+folder):
  59. for filename in files:
  60. importRecord(recdir+folder+"/"+filename, mask, api_url)
Alles anzeigen

[Release] TVNow (RTL,Watchbox,Vox,NTV,NOWUS,RTL2,Nitro,...)

$
0
0
Hallo,
Nachdem ich drauf aufmerksam gemacht wurde das RTL , nun möglich ist zu schauen Über Kodi>=17. (Danke an dieser Stelle nochmal)

Hab ich angefangen ein Neues Plugin zu schreiben. Da ich wie bei Pro7 schon mit Bromix Code nicht so richtig zurecht komme.

Die Erste Entwicklung ist nun im Repo. Es spielt alle freien Videos Ab.

Nicht geht:
Viel

Was bis RTL was ändert nicht geht, sind US Serien,da die Verschlüsselt sind, aber die Verschlüsselung noch nicht Aktiviert ist

Neues Plugin RTLNOW

rsync und Namensauflösung

$
0
0
Hallo

Da es hier ja auch ein OMV Forum gibt hab ich mal ne Frage zu rsync. Habe zwei OMV Server, sagen wir mal die heißen NAS1 & NAS2. Ich will ein freigegebenes Verzeichnis (quelle) von NAS1 holen (Pull) und in ein ebenfalls freigegebenes Verzeichnis auf NAS2 (ziel) schieben.

Also den rsync Job auf NAS2 angelegt. Dort habe ich unter dem Punkt Quellserver diesen Eintrag gemacht:
root@NAS1::quelle

Und das funktioniert nicht. Nach stundenlangen testen und googlen nach der Lösung in verschiedenen Tutorials im Web hab ich das Problem gefunden. Man darf den Quellserver nicht als Label, also Rechnernamen, eintragen, sondern dieser MUSS als IP eingetragen werden.
Und nur so funktioniert es:
root@192.168.123.123::quelle

Aber nach verschiedenen Anleitungen im Netz kann man sehr wohl mit rsync den Servernamen benutzen, aber anscheinend nicht mit dem rsync - Plugin von OMV. Die Namensauflösung funktioniert, wenn ich im Browser
"http://nas1.local"
eintrage, funktioniert es ja auch.

Ok, es funktioniert ja jetzt, aber ich gebe eigentlich immer bei Freigaben und SSH Verbindungen oder ähnliches gerne das Label ein und benutze nicht die IP. Diese kann sich ändern, das Label (normalerweise) nicht. Ja, ich weis, in der FritzBox kann man auch anhaken das dem Rechner immer die gleiche IP zugewiesen wird. Trotzdem ....

Ist das ein Bug von OMV ? Kann man da was machen ?

Ember Media Manager 1.4.8.0 Alpha - Diskussionsthread

$
0
0
Bitte Diskussionen zur Alpha und selber kompilierten Versionen mit aktuellen GitHub stand hier führen.

Aktuelle Alpha 23.3 x64 vom 07.03.2017: Link
Aktuelle Alpha 23.3 x86 vom 07.03.2017: Link
Commits (Changelog): Link

Daily Builds von Komplex: Link


Hinweise: Link


HowTo: HowTo compile the latest version of Ember from SourceCode

Tutorial zur neuen Version: Ember Media Manager 1.4.8.0 Alpha - Tutorial

Wer bis jetzt noch nicht involviert war:
- Es gibt vorerst kein Changelog oder Hinweise zu neuen Einstellungen. Ihr solltet auf jeden Fall immer die Einstellungen überprüfen und im Notfall hier nachfragen.
- Die aktuellen Alpha's können die Einstellungen und Datenbanken alter 1.4.x Versionen lesen.

thetvdb baut um

$
0
0
Moin,

seit gestern Abend funktioniert die API Schnittstelle von thetvdb nicht mehr. Der Grund ist ein Umbau an der Schnittelle, wenn ich richtig informiert wurde.
Ich bin gespannt ob es ein Update geben wird.

Wilmaa unter kodi keine Aufnahme?

$
0
0
Kann man unter kodi nicht von wilmaa aufnehmen?

Magenta TV, neue Senderlisten, Kodi

$
0
0
Guten Morgen in die Runde, ich hab da mal eine Frage.
Ich habe MagentaTV und mir mit dem Raspberry und Kodi eingerichtet. (Live TV mit TV Headend). Funktioniere auch bis vorgestern hervoragend. Seid gestern hat die Telekom die alten Listen aber abgeschaltet.
Daher hatte ich zum testen, in TV Headend eine neue Adresse z.B ZDF HD eingegben. Leider hat das nicht funktioniert.
Hat jemand von Euch das auch schon getestet ? Muss ich Kodi evt neu aufsetzen? Oder hab ich einfach etwas "falsch? gemacht?

P.S.
Ich hatte auch eine neue Streamadresse zum testen, im VLC Player eingeben, da bekam ich aber auch kein Bild.(Die Adressen habe ich vom IPTV Blog)

Ich Danke schonmal im voraus für Eure Hilfe!

MfG
helfko62

Welche HDD bzw. Externe Festplatte, Streamplayer, Kodi VS Plex, NAS

$
0
0
Guten Morgen,

Welche HDD bzw. Externe Festplatte könnt ihr empfehlen? 4-6 TB. Dort sollen die ganzen Filme/Serien und PC Games drauf.

Ich habe bisher nur Erfahrung mit Kodi (Streaming), ist Plex besser? (Kostenlose Version)

Ebenso habe ich hier den Amazon Fire TV 4K Stick, ein Raspberry Pi 4 Modell B, 4GB RAM und halt der Fernseher/TV selber - Philips 70 PUS 7304/4 wo Android 9.0 als OS/Betriebssystem installiert ist (wo ich über Adblink/Google Play Store Kodi sowie Plex usw. auch holen kann und funktioniert)

Welches von den Geräten wäre dafür am besten geeignet?
Also für das abspielen von 4K/UHD Material mit HDR10+/Dolby Vision sowie Dolby Atmos Filme und Serien?
Meine Idee ist es die externe Festplatte dann ins Netzwerk anzuhängen und dann über dem Fernseher und PC Zugriff zu haben und somit bequem über dem PC die Filme auf die Festplatte zu kopieren und dann über den Fernseher abzuspielen.

Ein NAS kostet ja 400€+, macht deshalb nicht wirklich Sinn. Zahle für Backup/meine eigenen Dateien 5€ im Jahr für OneDrive mit 1TB Speicher und Synchronisation etc.

Transcoding in Ubuntu

$
0
0
Hallo Leute,

bei mir läuft der Emby Server auf einer Ubuntu Maschine. Mein Problem ist wenn ich per Browseranwendung Videomaterial auf einem Client abspiele hängt sich die Wiedergabe gerne beim vor oder zurückspulen auf. Mir wurde gesagt ich solle doch mal das Transcoding aktivieren. Kodi über native Pfade funktioniert tadellos.

Das herzstück ist ein i5-6500 der ist auch beim abspielen meistens zu 99% ausgelastet. An andere Stelle habe ich nun gelesen Transcoding funktioniert garnicht von Haus aus in Ubuntu. Es gibt die möglichkeit Intel Quick-Sync über die iGPU zu nutzen. Das soll aber eine absolute Katastrophe sein was die Installation angeht. Mit einer Nvidia GPU soll das ganze viel einfacher sein.

Jetzt meine Frage: Denkt ihr mit einer zusätzlichen GPU schaffe ich eine Entlastung der CPU und erhalte eine bessere Wiedergabe? Wenn ja, welche Dimension würdet ihr empfelen. ich dachte an eine GTX 1050TI mit gemoddetem Treiber. So soll man die Streambeschränkung (2 gleichzeitig) aufheben können. Habe gelesen es muss nicht unbedingt eine 2080 sein. Für Transcoding sollte schon eine schwächere reichen.

Danke Leute

Ober- zu Tischfräse

$
0
0
Ich habe letztes Jahr endlich meine Oberfräse zur Tischfräse umgebaut.
Bzw ist die jetzt für beides da.

Das ist so umgesetzt, dass ich die Einlegeplatte tauschen kann. Hier ist jetzt die normale Arbeitsplatte eingelegt.
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3

Das Profil ist einfaches Alu
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3



Die Schienen inkl Schrauben und Drehknöppe gibt es als Set bei Amazon:
amazon.de/dp/B01N7TJERD/ref=cm…other_apa_i_U2fUDbNSHSCPX

kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3


Wichtig war, erst den Rand zu fräsen und danach das Loch in der Mitte zu sägen. Sonst hat man keine Auflage für die Fräse.
Präzision ist hier das A und O. Also viele Anlagen bauen.
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3


Die Einlegeplatte für die Fräse:
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3


Als Korb dient der schwenkbare, der bei der Fräse dabei war:
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3



kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3


Für die Aussparung habe ich mir eine Vorlage gedruckt. Der Offset der Kopierhülse sowie des Fräskopfs muss dabei berücksichtigt werden.
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3


Die Schienen sind ganz leicht unter Tischhöhe. Die Einlage ist bündig.
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3


Ich habe noch Linien eingeritz, die exakt die Mitte des Fräskopfs treffen. Das ist dann "Normal Null" beim messen.
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3


Aussparung für den Kopf und Bohrstaub. Läßt sich je nach Job ganz gut seitlich raussaugen.
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3



Und das habe ich als erstes gebaut. Ein Messgerät. Gedacht für die viel zu schnell wachsenden Füße von unserem Junior. Ja, total über. Schon klar. Aber ich wollte dringendst etwas damit herstellen:
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3

kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3

kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3

kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3

Alles im allem eine sehr gute Sache, wo die jetzt im Tisch ist.
Ist aber auch mehr Arbeit als gedacht. Wenn es auch letzten Endes nur um exakte Anlagen geht. Aber die müssen passen, wenn es ordentlich werden soll.

Der "Ratet diesen Film"-Thread[Volume 7]

$
0
0
So, das hat sich nun erklärt - es ging @te36 um die Zuordnung der Screenshots zum richtigen Film.
Zur Lösung: 2 war der Original Terminator 1 war Terminator Genesys.
Problem war halt das er den Spielmodi nicht erklärt hat. Sowas kann man gerne machen wenn man es dann halt aber auch sagt.
Das nehm ich dann gerne in die Regeln noch mit auf.

Weiter gehts hiermit:
kodinerds.net/index.php/Attach…6b3d447d16da7b80e5a4a7ba3

Fitness und Kraftsport-Ecke [Fachsimpeln über Sport und Ernährung]

$
0
0
Wer sind die Fitness und Kraftsport-Nerds unter uns?

Dachte, ich wag mal den Versuch eines weiteren Laber-Threads. Ich bin selbst (nach jahrelanger Bewegungslosigkeit und Couchlebens) ab Februar 2020 immerhin schon 12 Monate am Sporttreiben. Bin behutsam angefangen, mittlerweile nimmt es nerdige Ausmaße an:

Im Moment mache ich alle zwei Tage ein einstündiges Kraft-Workout zuhause, an den Tagen dazwischen gehe ich etwas joggen 25min. Also tatsächlich mal in einen echten Flow gekommen, der nicht nach 1-4 Wochen wieder abbricht, sondern drangeblieben und es fühlt sich wirklich wie eine positive Lebensumstellung an - durch die Effekte, die sich eben dann irgendwann ergeben: Fühle mich fitter, sehe besser aus und ernähre mich bewusster.

Wie siehts bei euch aus? Wer drückt was, wer läuft Marathon? *P

Zeigt her eure Visualisierung !!!

$
0
0
Hallo Com,

ich dachte mir, man könnte hier vllt einen Art Sammelthread machen, indem die Leute ihre Visualisierung für FHEM zeigen können. So könnten sich andere Leute inspirieren lassen, Anregungen holen und Beispiele sehen, wie es aussehen kann und was man damit so alles machen kann.

Grüße,
Viewing all 87137 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>