Kodi einen Bildschirmschoner zuweisen
Das Projekt wurde entwickelt, um einen
"bezaubernden" Bildschirmschoner mit einer minimalen Menge an Quellcode in Python zu erstellen. Das Projekt ist das einfachste Plugin fĂŒr das Multimedia Center Kodi.
Das Projekt zeigt, wie Sie einen sehr schönen Bildschirmschoner erstellen können, der vollstĂ€ndig auf der Arbeit der "OpenSource" -Community basiert. Als Integrationsprojekt ist dies ein Beispiel fĂŒr das Schreiben von zwei unabhĂ€ngigen Komponenten, von denen jede etwa 80 Codezeilen benötigt. Die erste Komponente ist ein Inhaltsgenerator, ein Shell-Skript, die zweite Komponente ist ein Kodi Multimedia Center-Plugin, das fĂŒr die Anzeige von Inhalten verantwortlich ist.
Und schlieĂlich können Sie als Programmierer und mit dem Git-Versionskontrollsystem Ihre Arbeit visualisieren, in eine Videodatei schreiben und das Ergebnis auf einem Fernseher oder Computerbildschirm genieĂen, indem Sie sich mit einer Tasse Kaffee in Ihrem Stuhl zurĂŒcklehnen. Und an kĂŒhlen Herbstabenden können Sie beruhigend unter Ihrem Bildschirmschoner schlafen, ohne zu vergessen, den Timer des GerĂ€ts in Kodi auszuschalten.
PrÀambel
Sie können drei Dinge endlos betrachten:
wie Feuer brennt, wie Wasser flieĂt und wie andere Menschen arbeiten.Da das Plugin fĂŒr das âKodi Multimedia Centerâ geschrieben wurde, werde ich die Arbeit des Superteams der âKodi Programmersâ visualisieren.
Verwenden von Plugins in Kodi
Das Kodi Multimedia Center ist ein sehr leistungsfÀhiges und flexibles Programm, das in Verbindung mit der externen Bibliothek ffmpeg Audio- und Videodateien dekodiert.
Um eine Drittanbieteranwendung zu erstellen, verwendet Kodi den Erweiterungsmechanismus âAddonsâ oder einfach Plug-Ins. Um mein eigenes Plugin zu erstellen, benötige ich einige Kenntnisse und ein wenig Kenntnisse der Programmiersprache Python.
Der Kodi-Plugin-Mechanismus ist Ă€uĂerst flexibel und bequem. Python ist eine interpretierte Sprache, was bedeutet, dass ich nichts kompilieren, in ein separates Softwarepaket kompilieren, unter Build-Dateien wie "Makefile" usw. leiden muss.
FĂŒr die endgĂŒltige Verteilung des Kodi-Plugins packen Sie es einfach in das Zip-Archiv und beachten Sie dabei einige Regeln fĂŒr die Verzeichnisstruktur. Mit dem endgĂŒltigen Zip-Archiv kann es auf jedem GerĂ€t installiert werden, auf dem Kodi arbeitet: einem Computer, einem Tablet und schlieĂlich einem Fernseher (dh einer Reihe von Fernsehern + Einzelplatten), wobei das Archiv als Plug-In-Quelle angegeben wird.
Kodi Plugin Struktur
âââ screenaver.kodi.universe
âââ README.md
âââ addon.xml
âââ changelog.txt
âââ create.sh
âââ fanart.jpg
âââ icon.png
âââ Ressourcen
â â Sprache
â â â Englisch
â â â â strings.po
â â â Russisch
â â â strings.po
â â settings.xml
â â Skins
â â Standard
â â 720p
â â â kodi-universe.xml
â â 1080i
â â â kodi-universe.xml
â â Medien
â â black.jpg
â â buran.jpg
â â kodi-Universe.mkv
âââ Bildschirmschoner.py
- README.md - optionale Datei, enthĂ€lt eine Beschreibung des Projekts fĂŒr github.com
- addon.xml - Eine Datei mit einer Beschreibung des Plugins, die den Plugin-Typ, die Codierung, die Version, die AbhÀngigkeiten, den Autorennamen usw. enthÀlt.
- changelog.txt - eine optionale Datei mit einer Liste von ProjektÀnderungen
- create.sh ist eine optionale Datei. Ein Bash-Skript dient zum Erstellen eines Bildschirmschoners fĂŒr das Zip-Archiv (a) und zum Generieren einer Videodatei aus dem Git-Verlauf mit dem Gource-Tool. Die Datei hat keine Beziehung zum Kodi-Plugin selbst. Sie ist fĂŒr die bequeme Verteilung des Plugins erforderlich. Es ist vollstĂ€ndig autonom, d.h. Wenn Sie nur diese Datei haben, können Sie jederzeit ein vollstĂ€ndiges Zip-Archiv des Plugins erstellen (wenn Sie ĂŒber eine Internetverbindung verfĂŒgen).
- fanart.jpg - Plugin Hintergrundbild
- icon.png - das Hauptsymbol
- resources - Verzeichnis mit Plugin-Ressourcen
- screenaver.py - Die Hauptdatei des Plugins enthĂ€lt den gesamten Quellcode fĂŒr das Plugin in Python. Der Dateiname kann beliebig sein. Hauptsache, dieser Name wird in die Datei addon.xml geschrieben
Beschreibung der Plugin-Ressourcen
Das Ressourcenverzeichnis enthÀlt die folgenden Dateien:
- language / English / strings.po - Original-Plugin-Interface-Strings in Englisch
- language / Russian / strings.po - Ăbersetzung ins Russische, die Datei ist im Kodi-Standardmechanismus fĂŒr die Ăbersetzung von Inhalten in die Landessprachen enthalten, der Anfang der Datei enthĂ€lt einen mehrzeiligen Standardtext-Header (ein Beispiel finden Sie auf der Website kodi.wiki , Abschnitt Plugins). Dann gibt es ZeilenvorschĂŒbe, die aus drei Feldern bestehen:
- msgctxt - Link zu einer eindeutigen Zeilennummer
- msgid - Original-Textzeichenfolgen- ID in Englisch
- msgstr - Ăbersetzung des msgid- Werts in die Landessprache, in diesem Fall ins Russische (russisches Verzeichnis)
- settings.xml - Die Hauptdatei der Plugin-Einstellungen beschreibt das grafische MenĂŒ der Plugin-Eigenschaften, deren Zeichenfolgenparameter geĂ€ndert werden können, wobei:
- id - Kennung der Textressource
- label - eine eindeutige numerische Bezeichnung fĂŒr das Textfeld (entspricht dem msgctxt-Feld in der Datei strings.po der Ăbersetzungen)
- Typ - Ein vordefinierter Ressourcentyp (alle möglichen Typen sind auf der Website kodi.wiki , Abschnitt Plugins, beschrieben.)
- Standard - Der Standardwert des Parameters (Sie können den Parameter ĂŒber das gleichnamige Kodi-MenĂŒ auf diesen Wert zurĂŒcksetzen.)
- resources / skins / default / 1080i / kodi-universe.xml - XML-Konfigurationsdatei
- resources / skins / default / 720p / kodi-universe.xml - XML-Konfigurationsdatei, die den Speicherort der Plug-In-Steuerelemente (Steuerelemente), ihre Geometrie, GesamtgröĂen, Position der Elemente, Art der Sichtbarkeit usw. beschreibt. Der Konfigurationsname wird abhĂ€ngig vom Modus des Videoadapters festgelegt (z. B. 1080i oder 720p).
Inhalt von Russian / strings.po# Kodi Media Center language file # Addon Name: Screensaver Kodi Universe # Addon id: screensaver.kodi.universe # Addon Provider: berserktv msgid "" msgstr "" "Project-Id-Version: Kodi Addons\n" "Report-Msgid-Bugs-To: alanwww1@kodi.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: English \ (http://www.transifex.com/projects/p/xbmc-addons/language/en/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#32001" msgid "Screensaver" msgstr " " msgctxt "#32002" msgid "Video file" msgstr "" msgctxt "#32003" msgid "Not Video" msgstr " "
Inhalt von settings.xml <?xml version="1.0" encoding="utf-8" standalone="yes"?> <settings height="800"> <category label="32001"> <setting id="videofile" label="32002" type="video"/> <setting id="not-video" type="bool" \ label="32003" default="false"/> </category> </settings>
Medienressourcen des Plugins:- resources / skins / default / media / black.jpg - schwarzer Hintergrund, der den Bildschirm ausfĂŒllt, bevor das Video gestartet wird
- resources / skins / default / media / buran.jpg - futuristisches Bild des Raumschiffs "Buran, auf den FlĂŒgeln eines Traums"
- resources / skins / default / media / kodi-Universe.mkv - die Hauptvideodatei, die vom Plugin bis zum Aufwecken zyklisch abgespielt wird
Plugin-Stammkonfigurationsdatei - addon.xml
Addon.xml - ist die Hauptkonfigurationsdatei des Plugins, aus der Kodi alle erforderlichen Informationen entnimmt, um das Plugin zu starten und in das Multimedia Center zu integrieren.
addon.xml Inhalt <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="screensaver.kodi.universe" name="Kodi Universe" \ version="0.1.2" provider-name="berserktv"> <requires> <import addon="xbmc.python" version="2.7"/> </requires> <extension point="xbmc.ui.screensaver" library="screensaver.py" /> <extension point="xbmc.addon.metadata"> <platform>all</platform> <source>https://github.com/berserktv/screensaver.kodi.universe </source> <summary lang="en">Kodi Universe</summary> <summary lang="ru"> </summary> <description lang="en">Screensaver - Kodi Universe </description> <description lang="ru"> - </description> <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license> </extension> </addon>
Die Hauptparameter des Plugins sind:
- Addon Abschnitt
- id - eindeutige Textkennung des Plugins
- name - Name des Plugins
- version - Plugin Version
- Anbietername - Name des Anbieters des Plugins
- Benötigt AbschnittsabhÀngigkeiten
In diesem Abschnitt werden die Module beschrieben, von denen der Betrieb dieses Plug-Ins abhÀngt
- Erweiterungsabschnitt - Erweiterungen
In diesem Abschnitt (es kann mehrere geben) wird der Typ des Plugins angegeben.
Haupteinstiegspunkt zum Plugin:
point = "xbmc.ui.screensaver" library = "screenaver.py"
In unserem Fall ist das Plugin der âBildschirmschonerâ, an den es ĂŒbertragen wird
Steuerung durch Aufrufen eines Python-Skripts mit dem Namen "screenaver.py"
point = "xbmc.addon.metadata" kann auch im Abschnitt "Erweiterungen" angegeben werden
mit der Art der Plattform, auf der das Plugin arbeiten kann, dem Namen und der Beschreibung des Plugins
in einer bestimmten Sprache / Sprachen sowie der Art des LIZENZ-Plugins
Die Gesamtmenge an Metadaten, die in diesem Erweiterungsabschnitt angegeben werden kann, kann sein
Auf der Website finden Sie ausreichend groĂe und detailliertere Informationen
kodi.tv
Plugin Implementierung
Da das Plugin extrem einfach und unkompliziert sein sollte, beschrÀnke ich mich bei seiner Implementierung auf eine Hauptquelldatei screenaver.py im Stammverzeichnis von screenaver (a)
Damit das Python-Skript aufgerufen werden kann, habe ich es in der Datei addon.xml registriert (siehe Abschnitt oben)
Die Programmiersprache Python ist sehr flexibel. Sie ermöglicht es Ihnen, dieselbe Aktion auf verschiedene Arten auszufĂŒhren. Aus GrĂŒnden der Ăbersichtlichkeit werde ich den objektorientierten Ansatz fĂŒr Klassen verwenden.
Bildschirmschoner.py Inhalt Klasse Bildschirmschoner (xbmcgui.WindowXMLDialog)
Die Hauptklasse des Bildschirmschoners
Die Python Kodi-API enthÀlt mehrere Kernmodule:
xbmc, xbmcgui, xbmcplugin, xbmcaddon und xbmcvfs . Um mit der Kodi-BenutzeroberflĂ€che zu arbeiten, verwende ich das xbmcgui-Modul. Dieses Modul enthĂ€lt Klassen, die fĂŒr verschiedene Schnittstellenelemente verantwortlich sind.
Um ein Plugin-Dialogfeld mit der in der XML-Konfigurationsdatei beschriebenen Schnittstelle zu erstellen, wird die Klasse
xbmcgui verwendet. WindowsXMLDialogkodi-universe.xml Inhalt <?xml version="1.0" encoding="utf-8" standalone="yes"?> <window type="window"> <controls> <control type="image" id="1"> <description>Background image</description> <posx>0</posx> <posy>0</posy> <colordiffuse>FF555555</colordiffuse> <aspectratio scalediffuse="false" align="center" \ aligny="center">scale</aspectratio> <width>1920</width> <height>1080</height> <texture>buran.jpg</texture> </control> <control type="videowindow" id="2"> <description>VideoWindow</description> <posx>0</posx> <posy>0</posy> <width>1920</width> <height>1080</height> <visible>true</visible> </control> </controls> </window>
Die Konfigurations-XML-Datei beschreibt zwei Steuerelemente:
Das erste mit der Kennung -
1 ist ein Hintergrundbild - "Schneesturm auf den FlĂŒgeln eines Traums" in bestimmten GröĂen, ausgerichtet auf die Mitte des Bildschirms.
Das zweite Element mit der Kennung -
2 ist ein Fenster zum Abspielen des Videos mit einem Zeichen der Sichtbarkeit und bestimmten geometrischen Abmessungen.
Die Screensaver-Klasse erbt von der WindowXMLDialog-Klasse und verfĂŒgt ĂŒber drei Methoden:
- Die Konstruktormethode __init__ wird beim Erstellen des Objekts automatisch aufgerufen
- OnInit - grafische Initialisierungsmethode, die vor der ersten Fensteranzeige aufgerufen wird
- Die onAction- Methode ist eine Ereignisverarbeitungsmethode, die aufgerufen wird, wenn bestimmte Ereignisse auftreten, in diesem Fall, wenn ein Aufweckereignis auftritt, d. H. Klicken Sie mit der Maustaste, der Tastatur, dem Bewegen des Mauszeigers oder dem Eintreffen eines Ereignisses ĂŒber das Bedienfeld.
Die Bildschirmschoner-Klasse verwendet zwei Hilfsklassen:
- Klasse BsPlayer - Die Klasse wurde von der Standard-XBMC-Video-Player-Klasse xbmc.Player geerbt und enthÀlt drei Methoden:
- Die Konstruktormethode __init__ wird beim Erstellen des Objekts automatisch aufgerufen
- Ăberschreiben der Videostartmethode onPlayBackStarted
- Ăberschreiben der onPlayBackStopped- Videoendmethode
Hinweis: Da ich die Methode zum Stoppen der Wiedergabe neu definiert habe und sie leer ist,
dann funktioniert die Regel: Hör nicht auf, lass uns gehen
- Klasse BsPlaylist - Eine Listenklasse, die ein xbmc.PlayList- Objekt zurĂŒckgibt
Die Klasse enthÀlt zwei Methoden:
- Die Konstruktormethode __init__ wird beim Erstellen des Objekts automatisch aufgerufen
- Die Methode getPlaylist zum Definieren einer Wiedergabeliste mithilfe der Standard-XBMC-Liste - xbmc.PlayList
Der allgemeine Algorithmus von Screensaver (a) lautet wie folgt:
- Wenn das Screensaver-Aufrufereignis eintritt (a) - die InaktivitĂ€t des Benutzers fĂŒr die angegebene Anzahl von Minuten und das Fehlen einer aktiven Video- / Audiowiedergabe - ĂŒbertrĂ€gt Kodi die Steuerung an das Skript screenaver.py
- Basierend auf der XML-Konfigurationsdatei wird das Hauptgrafikfenster des Plugins erstellt. Wenn das grafische Fenster initialisiert wird, werden die Zeichenfolgenressourcen der Plugin-Einstellungen geladen (das MenĂŒ lautet "Einstellungen").
Wenn die Videodatei nicht angegeben ist
__addon __. getSetting ("Videofile")Es wird mit einem Standardparameter gefĂŒllt
video_url = def_video_url__addon __. setSetting ("videofile", video_url)Wenn es kein Flag gibt - "Videowiedergabe deaktivieren"
__addon __. getSetting ("Nicht-Video")Das futuristische Bild âSchneesturm auf den FlĂŒgeln des Traumsâ wird zwei Sekunden lang gezeigt
xbmc.sleep (2000)ferner wird durch die Kennung von Steuerung 1 ein schwarzes Hintergrundbild eingestellt
self.getControl (1) .setImage ("black.jpg")AnschlieĂend startet der XBMC-Videoplayer mit einer Wiedergabeliste mit nur einer Datei
self.player.play (self.vpl, windowed = True)Die Videodatei wird bis zu dem Moment im Kreis abgespielt
Wachereignis, d.h. jede aktive Benutzeraktion
Erstellen von Visualisierungen fĂŒr das Kodi-Plugin in Ubuntu
Hinweis:
Alle unten beschriebenen Anweisungen werden unter dem Linux-Betriebssystem ausgefĂŒhrt, nĂ€mlich der Ubuntu-DistributionEs ist auch möglich, die unten beschriebenen Schritte in einem Debian-kompatiblen Betriebssystem auszufĂŒhren - die Hauptbedingung fĂŒr den Start ist das Vorhandensein des
Apt- Paketmanagers im System, d. H. Ein Manager, mit dem Sie
Deb- Software im System installieren können. NatĂŒrlich können Sie die folgenden Schritte auf jedem Linux-System ausfĂŒhren, dies erfordert jedoch zusĂ€tzliche Schritte, und die Reihenfolge einiger Befehle kann sich Ă€ndern (Beispiel: Installieren von RPM-Paketen anstelle von Deb usw.)
Gource ist ein sehr interessantes und faszinierendes Projekt.
Die Quelle ist nach der Quelle benannt, d.h. Quellcode + G (Grafik). Mit dieser Anwendung können Sie den Ănderungsverlauf im Versionskontrollsystem visualisieren. Gource versteht Git von Haus aus. FĂŒr andere Systeme wie SVN und Mercurial gibt es Konverter, mit denen Sie die Speicherbasis in das Git-Format konvertieren können.
Gource -
macht mit OpenGL unglaublich schön und hat eine groĂe Anzahl von Parametern fĂŒr seine Arbeit. Dieses unglaublich leistungsstarke Tool zum Generieren einer "bezaubernden" Visualisierung werde ich verwenden.
Um eine Visualisierung zu erstellen, benötige ich eine Folge von Befehlen, die in einem
Bash- Skript beschrieben sind
Um das Video zu generieren, benötige ich zwei Hauptprogramme:
Gource - um die
Quellvideodatei fĂŒr den Git-Verlauf eines bestimmten Projekts zu erstellen
FFmpeg - eine Bibliothek zum Codieren und Decodieren von Video und Audio
Skript zum Generieren einer Plugin-Videodatei
Das Skript sollte als normaler Benutzer ausgefĂŒhrt werden, aber wĂ€hrend des Starts erfordert das Skript die Installation der folgenden
git zip ffmpeg-QuellprogrammeWenn sie fehlen, versucht das Skript, sie mit dem Höhenbefehl
sudo zu installieren.
Kurz gesagt, das Skript fĂŒhrt Folgendes aus:
Quellenoptionen
- 01 - Kameramodus Track- Kameramodus
(verfolgt aktuell aktive Benutzer)
- 02 - Stoppposition 1.0 Endposition
(Legt die Endposition fĂŒr die Wiedergabe fest und reicht von 0,0 bis 1,0)
- 03 - Sekunden pro Tag 1 Anzahl Tage pro Sekunde Video
(Der Parameter bestimmt, wie viel Arbeit Sie im Intervall von einer Sekunde des Videos sehen werden.)
- 04 --git-branch origin / master project work branch
- 05 - Stopp am Ende nach Beendigung des Git-Protokolls
- 06 - Multi-Sampling- GlÀttungsfreigabe
- 07 --hide-filenames entfernt Dateinamen
- 08 --highlight-Benutzer markieren Benutzernamen
- 09 --Datei-Leerlaufzeit 13 Ausfallzeit fĂŒr Datei
(die Zeitspanne, nach der der Dateiname von der Anzeige entfernt wird)
- 10 --max-files 0 maximale Anzahl von Dateien
(Der Wert 0 hebt die Begrenzung der Anzahl der angezeigten Dateinamen auf.)
- 11 - Datum ausblenden Entfernen Sie das Datum, fĂŒr das der aktuelle Frame angezeigt wird
- 12 - Titel Kodi der Name, der in der unteren linken Ecke des Videos angezeigt wird
- 13 --bloom-multiplier 1.0 steuert den Effekt der " LichtblĂŒte " anhand des Radius.
- 14 - BlĂŒtenintensitĂ€t 1.0 steuert den Effekt der "LichtblĂŒte" unter Verwendung der IntensitĂ€t.
- 15 - Ausgabe-Framerate 30 Ausgabebilder pro Sekunde
- 16 --output-ppm-stream name Name der Ausgabedatei im PPM-Format
Hinweis: Einige Parameter können sich gegenseitig ausschlieĂen.
Eine vollstÀndige Liste der Parameter finden Sie
hier .
Kurzes Video-Tutorial fĂŒr Screensaver (a)
1) Laden Sie das Projekt von github herunter: git clone https://github.com/berserktv/screensaver.kodi.universe.git
2) Generiere ein Video und erstelle ein Zip-Archiv des Plugins: cd screensaver.kodi.universe chmod u+x create.sh ./create.sh
3) Zeit fĂŒr die Videoerzeugung und Nutzung des freien Speicherplatzes: . - 20 Gource (PPM) MKV FFmpeg. ( h.264) , Git XBMC (Kodi) 700 . PPM 10 ( FullHD, 30 ).
4) Installieren Sie den Bildschirmschoner in Kodi "" Kodi ( ) Kodi - "" => " " => " Zip " , Kodi Universe Screensaver(), . Settings ( ) => " " => ""