Menetapkan Screen Saver ke Kodi
Proyek ini dirancang untuk membuat screen saver
"Mempesona" dengan jumlah kode sumber minimal dalam Python. Proyek ini adalah plugin paling sederhana untuk pusat multimedia Kodi.
Proyek ini menunjukkan bagaimana Anda dapat membuat screen saver yang sangat indah yang sepenuhnya didasarkan pada karya komunitas "OpenSource". Proyek integrasi, ini adalah contoh penulisan dua komponen independen, yang masing-masing membutuhkan sekitar 80 baris kode. Komponen pertama adalah generator konten, skrip shell, komponen kedua adalah plugin Kodi multimedia center, yang bertanggung jawab untuk menampilkan konten.
Dan akhirnya, jika Anda seorang programmer dan menggunakan sistem kontrol versi Git, Anda dapat memvisualisasikan pekerjaan Anda, menulisnya ke file video dan menikmati hasilnya di layar TV atau komputer, bersandar di kursi Anda dengan secangkir kopi. Dan pada malam musim gugur yang dingin, Anda dapat tidur dengan tenang di bawah screensaver, tanpa lupa mematikan timer perangkat di Kodi.
Pembukaan
Anda dapat melihat tiga hal tanpa henti:
bagaimana api membakar, bagaimana air mengalir dan bagaimana orang lain bekerja.Karena plugin ini ditulis untuk "Kodi Multimedia Center", maka saya akan memvisualisasikan karya tim super "Kodi Programmers".
Menggunakan plugin di Kodi
Pusat Multimedia Kodi adalah program yang sangat kuat dan fleksibel, bekerja bersama dengan pustaka eksternal ffmpeg, untuk mendekode file audio dan video.
Untuk membuat aplikasi pihak ketiga, Kodi menggunakan mekanisme ekstensi "addons" atau hanya plug-in. Untuk membuat plugin sendiri, saya perlu beberapa keterampilan dan sedikit pengetahuan tentang bahasa pemrograman Python.
Mekanisme plugin Kodi sangat fleksibel dan nyaman. Python adalah bahasa yang ditafsirkan, yang berarti bahwa saya tidak perlu mengkompilasi apa pun, mengompilasinya menjadi paket perangkat lunak terpisah, menderita dengan membangun file seperti "makefile", dll.
Untuk distribusi final plugin Kodi, cukup masukkan dalam arsip Zip, amati beberapa aturan pada struktur direktori. Dengan memiliki arsip Zip terakhir, dapat diinstal pada perangkat apa pun di mana Kodi bekerja: komputer, tablet, dan akhirnya TV (artinya sekelompok TV + satu-pelat), menetapkan arsip sebagai sumber plug-in.
Struktur plugin Kodi
βββ screensaver.kodi.universe
βββ README.md
βββ addon.xml
βββ changelog.txt
βββ create.sh
βββ fanart.jpg
βββ icon.png
βββ sumber daya
β βββ bahasa
β β βββ Bahasa Inggris
β β β βββ strings.po
β β βββ Bahasa Rusia
β β βββ strings.po
β βββ settings.xml
β βββ kulit
β βββ default
β βββ 720p
β β βββ kodi-universe.xml
β βββ 1080i
β β βββ kodi-universe.xml
β βββ media
β βββ black.jpg
β βββ buran.jpg
β βββ kodi-universe.mkv
βββ screensaver.py
- README.md - file opsional, berisi deskripsi proyek untuk github.com
- addon.
- changelog.txt - file opsional dengan daftar perubahan proyek
- create.sh adalah file opsional, skrip bash dirancang untuk membuat screensaver arsip Zip (a) dan menghasilkan file video dari sejarah Git menggunakan alat Gource, file tersebut tidak memiliki hubungan dengan plugin Kodi itu sendiri, perlu untuk distribusi plugin yang nyaman. Ini sepenuhnya otonom, mis. hanya memiliki file ini, Anda selalu dapat membuat arsip Zip lengkap dari plugin (jika Anda memiliki koneksi Internet).
- fanart.jpg - gambar latar plugin
- icon.png - ikon utama
- sumber daya - direktori dengan sumber daya plugin
- screensaver.py - file utama plugin, berisi semua kode sumber untuk plugin dengan Python, nama file bisa apa saja, yang utama adalah bahwa nama ini ditulis dalam file addon.xml
Deskripsi sumber daya plugin
Direktori sumber daya berisi file-file berikut:
- language / English / strings.po - string antarmuka plugin asli dalam bahasa Inggris
- bahasa / Rusia / strings.po - terjemahan ke dalam bahasa Rusia, file tersebut termasuk dalam mekanisme standar Kodi untuk menerjemahkan konten ke dalam bahasa nasional negara, bagian awal file berisi header teks standar dari beberapa baris (contohnya dapat ditemukan di situs web kodi.wiki , bagian plugins) , lalu ada umpan baris yang terdiri dari tiga bidang:
- msgctxt - tautan ke nomor baris unik
- msgstr " pengidentifikasi string teks asli dalam bahasa Inggris
- msgstr - terjemahan nilai msgid ke bahasa nasional, dalam hal ini, ke dalam bahasa Rusia (direktori bahasa Rusia)
- settings.xml - file utama pengaturan plugin, menjelaskan menu grafis dari properti plugin, parameter string yang dapat diubah, di mana:
- pengidentifikasi sumber daya id - teks
- label - label numerik unik untuk bidang teks (sesuai dengan bidang msgctxt dalam file terjemahan strings.po)
- tipe - tipe sumber daya yang telah ditentukan (semua tipe yang mungkin dijelaskan di situs web kodi.wiki , bagian plugin)
- default - nilai default parameter (Anda dapat mengatur ulang parameter ke nilai ini menggunakan menu Kodi dengan nama yang sama)
- resources / skins / default / 1080i / kodi-universe.xml - file konfigurasi xml
- resources / skins / default / 720p / kodi-universe.xml - file konfigurasi xml yang menggambarkan lokasi kontrol plug-in (kontrol), geometri, ukuran keseluruhan, posisi elemen, jenis visibilitas, dll. Nama konfigurasi ditentukan tergantung pada mode adaptor video (misalnya, 1080i atau 720p)
isi bahasa Rusia / 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 " "
isi dari 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>
Sumber daya media dari plugin:- resources / skins / default / media / black.jpg - latar belakang hitam yang mengisi layar sebelum memulai video
- resources / skins / default / media / buran.jpg - gambar futuristik dari pesawat ruang angkasa "Buran, di sayap Mimpi"
- resources / skins / default / media / kodi-universe.mkv - file video utama yang diputar secara siklis oleh plugin hingga acara kebangkitan
File konfigurasi root plugin - addon.xml
Addon.xml - adalah file konfigurasi utama plugin, dari mana Kodi mengambil semua informasi yang diperlukan untuk meluncurkan plugin dan mengintegrasikannya ke pusat multimedia.
konten addon.xml <?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>
Parameter utama plugin adalah:
- Bagian Addon
- id - pengidentifikasi teks unik plugin
- nama - nama plugin
- versi - versi plugin
- provider-name - nama penyedia plugin
- Membutuhkan bagian - dependensi
pada bagian ini, modul tempat operasi plug-in ini bergantung
- Bagian ekstensi - ekstensi
di bagian ini (mungkin ada beberapa), jenis plugin ditunjukkan,
titik masuk utama ke plugin:
point = "xbmc.ui.screensaver" library = "screensaver.py"
dalam kasus kami, plugin adalah "Screen Saver" yang dikirimkannya
kontrol dengan memanggil skrip python yang disebut "screensaver.py"
point = "xbmc.addon.metadata" juga dapat ditentukan di bagian ekstensi
dengan jenis platform tempat plugin dapat bekerja, nama dan deskripsi plugin
dalam bahasa / bahasa tertentu, serta jenis plugin LICENSE
Jumlah total metadata yang dapat ditentukan di bagian ekstensi ini bisa
Anda dapat menemukan informasi yang cukup besar dan lebih rinci di situs web
kodi.tv
Implementasi plugin
Karena plugin harus sangat sederhana dan mudah, dalam implementasinya saya akan membatasi diri pada satu file sumber utama screensaver.py yang terletak di direktori root screensaver (a)
Agar skrip python dipanggil, saya mendaftarkannya di file addon.xml, lihat bagian di atas
Bahasa pemrograman Python cukup fleksibel, memungkinkan Anda untuk melakukan tindakan yang sama dalam beberapa cara, dan untuk kejelasan, saya akan menggunakan pendekatan berorientasi objek dengan kelas.
Screensaver kelas (xbmcgui.WindowXMLDialog)
Kelas utama screen saver
API Python Kodi mencakup beberapa modul inti:
xbmc, xbmcgui, xbmcplugin, xbmcaddon, dan xbmcvfs . Untuk bekerja dengan GUI Kodi, saya akan menggunakan modul xbmcgui. Modul ini berisi kelas yang bertanggung jawab untuk elemen antarmuka yang berbeda.
Untuk membuat kotak dialog plugin dengan antarmuka yang dijelaskan dalam file konfigurasi xml,
digunakan kelas
xbmcgui. WindowsXMLDialogkonten kodi-universe.xml <?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>
File XML konfigurasi menjelaskan dua elemen kontrol:
Yang pertama dengan pengenal -
1 , adalah gambar latar belakang - "Badai salju, pada sayap Mimpi", dengan ukuran tertentu, sejajar dengan tengah layar.
Elemen kedua dengan pengidentifikasi -
2 , adalah jendela untuk memutar Video, dengan tanda visibilitas dan dimensi geometris tertentu.
Kelas Screensaver mewarisi dari kelas WindowXMLDialog, dan memiliki tiga metode:
- Metode constructor __init__ dipanggil secara otomatis ketika objek dibuat
- OnInit - metode inisialisasi grafis, dipanggil sebelum tampilan jendela pertama
- Metode onAction adalah metode pemrosesan peristiwa yang dipanggil saat peristiwa tertentu terjadi, dalam hal ini, saat peristiwa pencerahan terjadi, mis. mengklik tombol mouse, keyboard, menggerakkan pointer mouse atau kedatangan acara apa pun dari panel kontrol.
Kelas Screensaver menggunakan dua kelas pembantu:
- Kelas BsPlayer - diwarisi dari standar XBMC video player kelas xbmc.Player , kelas berisi tiga metode:
- Metode constructor __init__ dipanggil secara otomatis ketika objek dibuat
- Mengganti metode mulai video onPlayBackStarted
- Mengganti metode akhir video onPlayBackStopped
Catatan: karena saya mendefinisikan ulang metode menghentikan pemutaran dan itu kosong,
maka aturan akan berfungsi: Jangan Berhenti Ayo Pergi
- Kelas BsPlaylist - kelas daftar yang dirancang untuk mengembalikan objek xbmc.PlayList
kelas berisi dua metode:
- Metode constructor __init__ dipanggil secara otomatis ketika objek dibuat
- Metode getPlaylist untuk menentukan daftar putar menggunakan daftar XBMC standar - xbmc.PlayList
Algoritma umum Screensaver (a) adalah sebagai berikut:
- Ketika peristiwa panggilan Screensaver terjadi (a) - ketidakaktifan pengguna untuk jumlah menit yang ditentukan dan tidak adanya pemutaran video / audio aktif, Kodi mentransfer kontrol ke skrip screensaver.py
- Berdasarkan file konfigurasi xml, jendela grafis utama plugin dibuat. Ketika jendela grafis diinisialisasi, sumber daya string pengaturan plug-in dimuat (menu adalah "pengaturan").
Jika file video tidak ditentukan
__addon __. getSetting ("videofile")itu diisi dengan parameter default
video_url = def_video_url__addon __. setSetting ("videofile", video_url)jika tidak ada bendera - βnonaktifkan pemutaran videoβ
__addon __. getSetting ("not-video")gambar futuristik "Badai salju di sayap Mimpi" ditampilkan selama dua detik
xbmc.sleep (2000)lebih jauh dengan pengidentifikasi kontrol 1, gambar latar belakang hitam diatur
self.getControl (1) .setImage ("black.jpg")dan kemudian pemutar video XBMC dimulai dengan daftar putar file tunggal
self.player.play (self.vpl, windowed = True)File video diputar dalam lingkaran hingga saat itu tiba
acara bangun yaitu setiap tindakan pengguna aktif
Membuat visualisasi untuk plugin Kodi di Ubuntu
Catatan:
Semua instruksi yang dijelaskan di bawah ini akan saya jalankan di bawah sistem operasi Linux, yaitu distribusi UbuntuDimungkinkan juga untuk melakukan langkah-langkah yang dijelaskan di bawah ini dalam sistem operasi yang kompatibel dengan Debian - syarat utama untuk peluncuran adalah keberadaan manajer paket
Apt dalam sistem, mis. seorang manajer yang memungkinkan Anda untuk menginstal perangkat lunak
Deb dalam sistem. Tentu saja, Anda dapat melakukan langkah-langkah berikut pada sistem Linux apa pun, tetapi ini akan membutuhkan tindakan tambahan dari Anda dan dimungkinkan untuk mengubah urutan beberapa perintah (sebagai contoh: menginstal paket RPM bukan Deb, dll.)
Gource adalah proyek yang sangat menarik dan mempesona.
Gource dinamai setelah sumber yaitu kode sumber + G (Grafik). Aplikasi ini memungkinkan Anda untuk memvisualisasikan sejarah perubahan dalam sistem kontrol versi. Gource secara alami memahami Git, untuk sistem lain seperti SVN, Mercurial ada konverter yang memungkinkan Anda untuk mengubah basis penyimpanan ke dalam Format Git.
Gource -
menjadikan sangat indah dengan OpenGL, dan memiliki sejumlah besar parameter untuk kerjanya. Alat yang luar biasa ampuh ini untuk menghasilkan visualisasi "Mempesona" yang akan saya gunakan.
Untuk membuat visualisasi, saya perlu beberapa urutan perintah yang dijelaskan dalam skrip
bashUntuk menghasilkan video, saya memerlukan dua program utama:
Gource - untuk membuat file video sumber untuk sejarah Git dari setiap proyek yang ditentukan
FFmpeg - perpustakaan untuk encoding dan decoding video dan audio
Script untuk menghasilkan file video plugin
Skrip harus dijalankan sebagai pengguna biasa, tetapi selama startup skrip membutuhkan instalasi program
git zip ffmpeg gource berikutJika tidak ada, skrip akan mencoba menginstalnya menggunakan
perintah eskalasi hak istimewa -
sudo .
Singkatnya, skrip melakukan hal berikut:
Opsi Gource
- 01 - mode kamera melacak mode kamera
(melacak pengguna aktif saat ini)
- 02 - berhenti-posisi 1,0 posisi akhir
(mengatur posisi akhir untuk pemutaran, berkisar 0,0 hingga 1,0)
- 03 --detik-per-hari 1 jumlah hari per video kedua
(parameter menentukan berapa banyak pekerjaan yang akan Anda lihat dalam interval satu detik video)
- 04 --git-cabang asal / master proyek kerja cabang
- 05 - stop -at-end stop setelah git log selesai
- 06 --multi-sampling smoothing memungkinkan
- 07 - menyembunyikan nama file menghapus nama file
- 08 - pengguna highlight menyoroti nama pengguna
- 09 - file -idle-time 13 downtime untuk file
(jumlah waktu setelah mana nama file dihapus dari tampilan)
- 10 --max-files 0 jumlah maksimum file
(nilai 0 menghilangkan batas jumlah nama file yang ditampilkan)
- 11 - menyembunyikan tanggal menghapus tanggal di mana frame saat ini ditampilkan
- 12 - judul Kodi nama yang muncul di sudut kiri bawah video
- 13 --bloom-multiplier 1.0 mengontrol efek "light bloom" menggunakan jari-jari.
- 14 - intensitas mekar 1.0 mengontrol efek "mekar cahaya" menggunakan intensitas.
- 15 - output -framerate 30 frame output per detik
- 16 --output-ppm-stream name nama file output dalam format PPM
catatan: beberapa parameter mungkin saling eksklusif,
Daftar parameter lengkap dapat ditemukan di
sini .
Video tutorial singkat untuk Screensaver (a)
1) Unduh proyek dari github: git clone https://github.com/berserktv/screensaver.kodi.universe.git
2) Hasilkan video dan buat arsip Zip dari plugin: cd screensaver.kodi.universe chmod u+x create.sh ./create.sh
3) Waktu pembuatan video dan penggunaan ruang disk kosong: . - 20 Gource (PPM) MKV FFmpeg. ( h.264) , Git XBMC (Kodi) 700 . PPM 10 ( FullHD, 30 ).
4) Instal screensaver di Kodi "" Kodi ( ) Kodi - "" => " " => " Zip " , Kodi Universe Screensaver(), . Settings ( ) => " " => ""