Peter Gyger online

"Gring ache u seckle" (Quelle: A. Weyermann)

NAVIGATION - SEARCH

Calibre: Hierachien im Schlagwortbrowser

Um was geht es? Calibre ist eine populäre Software um primär E-Books zu verwalten. Die Software bietet einen leichten Zugang und viele Konfigurationsmöglichkeiten. In diesem Post geht es um eine Analyse, welche Möglichkeiten es gibt, um Hierachien bzw. Abhängigkeiten abzubilden und wie man das umsetzt. Einleitung «Hierarchien» können inhaltliche Zusammenhänge sein. Zum Beispiel die Romanserie «Perry Rhodan» (ohne Ansprch auf Vollständigkeit / korrekte Abbildung): PerryRhodan Heft Silberband Taschenbücher Atlan Heftserie Miniserie Blaue Bände Neo Hefte Trivius Eine andere Form der Hierarchie sind fachliche Zusammenhänge: Telekommunikation Technik -- Telefonleitung -- Glasfaser Swisscom Schweiz   Netzwerk Netzarchitektur Übertragungsweg Betriebssyteme -- Windows -- Linux Die Darstellung solcher Abhängigkeiten erfolgt über den Schlagwortbrowser auf der linken Seite. Dieser kann über das «Etikettensymbol» in der Statusleiste oder über das Tastaturkürzel «Shift-Alt-T» aufgerufen werden. Die Einträge im Schlagwortbrowser sind direkt mit einem existierenden Element verbunden. D.h. wenn ich Bücher in chinesischer, englischer und deutscher Sprache erfassen will, wird die Sprache erst dann angezeigt, wenn ein entsprechendes E-Book in der Sammlung existiert. Für diesen Post habe ich eine Portable Calibre Installation (V 2.83) verwendet und sechs Romane aus der Perry Rhodan Serie importiert. Im deutschen Sprachraum kennt man die «Shift» Taste als Umschalttaste und die CTRL Taste als «STRG». Details zu den sechs Romanen: Das galaktische Syndikat Griff nach der Macht Der Extraktor Sturmland Ozean der Dunkelheit Die Geister der CREST Wie die Hierarchien im in den Schlagworten aussehen, zeigt dieser Screenshot einer erfahrenen Calibre Benutzerin.     Hintergrund Mit den Elementen "Autoren" und "Sprachen" kann man in diesen Büchern keine Hierarchie bauen. "Serie" jedoch schon: 1 + 2 = Atlan 3 + 4 = Perry Rhodan Originalserie 5 + 6 = Perry Rhodan Neo Abhängige Elemente (Hierachien) werden durch einen Punkt dargestellt. Wenn man im Feld Serie die Nummer des Elementes angeben will, dann mit eckigen Klammern. Für diese sechs Bücher heisst das: 1 + 2 = PR.Atlan.Heft [1] / PR.Atlan.Heft [2] 3 + 4 = PR.Original.Heft[2840] / PR.Original.Heft[2841] 5 + 6 = PR.NEO[112] + PR.NEO[114] Sobald das eingetragen sieht man links unter Serien den Wert 3 anstatt 0. Auch optisch ist es richtig dargestellt. D.h. mit dem Element "Serien" kann der Anwender sofort das gewünschte Ergebnis erreichen. Wie sieht es mit den Schlagwörtern aus? Im Falle der sechs Romane habe ich folgende Schlagworte (Der Punkt definiert Hierarchien) gewählt: 1 + 2 = SF.PR.Atlan.Heft 3 + 4 = SF.PR.Heft 5 + 6 = SF.PR.NEO Nach dem eintragen der Schlagwörter, muss über «Einstellungen», Register «Schlagwortbrowser» die Option «Kategorien mit hierarchischen Elementen» eingestellt werden. Assoziativ entschied ich mich für den Wert «Series». Trotz Neustart von Calibre, wurden die Schlagwörter nicht eingerückt dargestellt. Nach dem lesen der Ballon Hilfe (gelb) änderte ich den Wert auf «tags». Das ergab nach einem Neustart von Calibre den gewünschten Effekt. D.h. wenn man in den Schlagwörtern, eine Hierarchie angezeigt erhalten will, braucht es A:    Schlagwörter durch Punkte getrennt B:    Option «Kategorien mit hierarchischen Elementen» mit dem Wert «tags» Calibre hat im Schlagwortbrowser mit den Menupunkten «Serie» und «Schlagwörter» effiziente Mechanismen um eine strukturierte Bibliothek aufzubauen. Das Handbuch zu Calibre zählt eine dritte Möglichkeit auf: «Untergruppen». Das erweitern des Schlagwortbrowsers um weitere Elemente vom Typ «Untergruppen» ergibt mir keinen Nutzen. Frei nach dem Motto: KISS («Keep it simple stupid»). In vielen Fällen ist der Aufbau und die Pflege von Hierarchien nicht erforderlich, da die Suche viele (SQL – Where) Parameter kennt. Z.B. kann man über die Option «Schlagwortbrowser anpassen» definieren, ob man eine «OR» (eines der gewählten Schlagwörter» oder «AND» (alle gewählten Schlagwörter) Suche haben will. Die Suchbegriffe können mit Mausklick und CTRL / SHIFT Taste als Parameter in die Suchleiste (grün) eingetragen werden: Fazit Die unglaubliche Vielfalt an Einstellungen in Calibre ist seine grosse Stärke. Der typische Nutzer der Software ist kein Informatiker. D.h. viele Effekte treten zufällig oder ungewollt auf und können Dritten schlecht erklärt («How To») werden. Dieser Post soll jedem Nutzer zeigen, wie man seine Schlagworte mit Hierarchien strukturieren kann. Das zweite Ziel ist es, auf Serien bzw. Untergruppen als zusätzliches / alternatives Ordnungselement hinzuweisen. Last but not least soll der Schluss des Postes zeigen, dass Calibre starke Suchfunktionen hat, welche ggf. eine Strukturierung überflüssig machen. Andere Möglichkeiten wie «virtuelle Bibliotheken» haben ich aus Zeitgründen nicht erwähnt.   ELEMENT Wert Erstellt 20.4.2017 Letzte Änderung 23.4.2017 ID   Kategorie HowTo Tag Calibre Autor Peter Gyger           

Powershell mit TagLib / taglib-sharp.dll nutzen

Ob man nun Go spielt, ein Sudoku löst oder mit einem Computer programmiert ist aus meiner Sicht gleichwertig. Es zählt, dass man Freude am lernen hat und sich ganz und gar auf eine Aufgabe konzentriert. Meine Begeisterung habe ich in der Programmierung mit Skripten gefunden. Aktuell Powershell, daher auch dieser Blogpost. TagLib TagLib ist eine freie Programmbibliothek zur Bearbeitung von Metainformationen in Audiodateien. Ein deutscher Wikipedia Artikel weiss mehr.  Diese Bibliothek ermöglicht u.a. den Zugriff auf Mediendateien mit MS Powershell. Für die auf dem Microsoft .NET Framework basierten Programme, heisst die Bibliothek "taglib-sharp". Hier der download über eine ZIP-Datei. In Powershell wird eine DLL wie folgt eingebunden: [Reflection.Assembly]::LoadFrom([Pfad zur DLL]) Beispiel: [Reflection.Assembly]::LoadFrom("C:\Program Files\PS1\Podcast-download\taglib-sharp.dll")   Welchen praktischen Nutzen hat das? Beispiel 1: Wir haben unsere Musik in einem Verzeichnisbaum gespeichert. Struktur: [Künstler] \ [Album]. Das "Cover" des Albums ist im Verzeichnis des Albumes mit dem Namen "folder.jpg" abgelegt. "PNG" wäre besser (Transparenz Ebenen), jedoch beherschen nicht alle Mediensoftware (Kodi / Plex / etc.) dieses Bildformat. Damit beim abspielen der einzelnen Titel, dass "Cover" angezeigt wird, muss die Datei "folder.jpg" in das entsprechende Tag der Mediendatei geschrieben werden. Tools wie "MP3TAG" sind dafür und vieles andere ideal. Jedoch geht es auch automatisch. Z.B. mit dieserm Powershell Skript. Dieses Skript liest nur Audiodateien des Formates "Flac" ein, da meine Musiksammlung keine MP3 Dateien beinhaltet. D.h. diese Zeile muss nach persönlichem Bedarf geändert / ergänzt werden. #Name:                        Musikdateien in Verzeichnisstruktur - Eigenschaft Bild - Wert zuweisen#Autor:                       Peter Gyger#Version:                     1.0#Datum der letzten Änderung:  18.04.2017#Wenn im Verzeichnis der MP3 / Flac Dateien eine Bilddatei folder.jpg existiert, wird diese den Dateien hinzugefügt. "folder.jpg" wird von Kodi automatisch erkannt.#laden der DLL[Reflection.Assembly]::LoadFrom("C:\Users\Peter\Documents\000 Peter\004 Projekt\Podcast verwalten\taglib-sharp.dll")$hieristdiemusik ="C:\Temp\000 Musik"#Mit Foreach alle Musikdaten eines Verzeichnisbaumes findenforeach ($datei in get-childitem $hieristdiemusik -Filter *.flac -recurse){    #Datei öffen    $musikdatei = [TagLib.File]::Create($datei.fullname)    #prüfen ob die Datei folder.jpg existiert    if (test-path ($datei.Directoryname+"\folder.jpg")){        #dann das bild folder.jpg der Variabeln $albumbild zuweisen        $albumbild = [taglib.picture]::createfrompath($datei.Directoryname+"\folder.jpg")        }     #Datei Eigenschaft das Bild zuweisen und speichern    $musikdatei.tag.Pictures = $albumbild    $musikdatei.save()    $albumbild = ""    $musikdatei = ""    #Anzeige in der PS Konsole, was gerade abgeschlossen wurde    write-output ($datei.FullName +" mit Bild ergänzt")} Man kopiert das Skript in eine Editor, ändert den Wert der Variable "$hieristdiemusik" auf das eigene Musikverzeichnis und speichert die Datei mit der Erweiterung ".PS1" ab. Diese kann nun auf eigenes Risiko - trotz sorgfältiger Erstellung - in der Powershell Konsole oder über Rechtsklick im Win Explorer gestartet werden. Natürlich wäre ein Befehl wie "InputBox" den man aus Basic (VBA, VB-Script, etc.) kennt praktisch. Dann müsste man nicht im Skript den Wert der Variable "$hieristdiemusik" anpassen. Diesen Befehl ("CMDLET") gibt es in Powershell nicht. Microsoft hat einen einen Artikel mit vollständigem Beispiel veröffentlicht, wie das in Powershell umgesetzt werden kann. Diesen Code kann man in ein eigenes Modul speichern und bei Bedarf in ein Powershell Skript einbinden. Im zweiten Beispiel habe ich den Code der InputBox direkt in das Skript kopiert. Das macht es einfacher das Programm zu überblicken. Das nachfolgende Programm holt MP3 Dateien ("Podcast") aus einer Website und speichert sie lokal. Das Programm fragt nach einer URL und holt danach die erreichbaren MP3 Dateien ab. Aktuell getestet und verwendet für die SRF Podcasts. Beispiele für solche URL: http://pod.drs.ch/wissenschaft_drs_2_mpx.xml http://pod.drs.ch/country_special_mpx.xml http://podcasts.srf.ch/fiori_musicali_mpx.xml http://pod.drs.ch/diskothek_im_zwei_mpx.xml http://podcasts.srf.ch/100_sekunden_wissen_mpx.xml http://podcasts.srf.ch/regionaljournal_zh_mpx.xml http://pod.drs.ch/espresso_mpx.xml   #Name:                        MP3 Dateien aus RSS Feed (Podcast) downloaden#Autor:                       Peter Gyger#Version:                     0.9#Datum der letzten Änderung:  11.02.2017[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $objForm = New-Object System.Windows.Forms.Form $objForm.Text = "Podcast Download"$objForm.Size = New-Object System.Drawing.Size(300,200) $objForm.StartPosition = "CenterScreen"$objForm.KeyPreview = $True$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")     {$x=$objTextBox.Text;$objForm.Close()}})$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")     {$objForm.Close()}})$OKButton = New-Object System.Windows.Forms.Button$OKButton.Location = New-Object System.Drawing.Size(75,120)$OKButton.Size = New-Object System.Drawing.Size(75,23)$OKButton.Text = "OK"$OKButton.Add_Click({$script:x=$objTextBox.Text;$objForm.Close()})$objForm.Controls.Add($OKButton)$CancelButton = New-Object System.Windows.Forms.Button$CancelButton.Location = New-Object System.Drawing.Size(150,120)$CancelButton.Size = New-Object System.Drawing.Size(75,23)$CancelButton.Text = "Cancel"$CancelButton.Add_Click({$objForm.Close()})$objForm.Controls.Add($CancelButton)$objLabel = New-Object System.Windows.Forms.Label$objLabel.Location = New-Object System.Drawing.Size(10,20) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Bitte den Link hier eingeben"$objForm.Controls.Add($objLabel) $objTextBox = New-Object System.Windows.Forms.TextBox $objTextBox.Location = New-Object System.Drawing.Size(10,40) $objTextBox.Size = New-Object System.Drawing.Size(260,20) $objForm.Controls.Add($objTextBox) $objForm.Topmost = $True$objForm.Add_Shown({$objForm.Activate()})[void] $objForm.ShowDialog()#write-host "x is $x"$fileURL =$x #prüfen ob eine URL eingegeben wurde. Bsp.: http://pod.drs.ch/jazz_collection_mpx.xmlif (!$fileURL) {exit}$web = New-Object System.Xml.XmlDocument$web.Load($fileURL)$fileslash = $fileURL.LastIndexOf("/") +1$fileName =$fileURL.substring($fileslash)$dirname = $fileName.substring(0,$fileName.Length -4)#Überprüfen ob das Verzeichnis c:\temp\ und Unterverzeichnis mypodcast existiertIf (!(Test-Path c:\temp)){    write-host c-temp erstellen    New-Item c:\temp -ItemType directory}If (!(Test-Path c:\temp\mypodcast)){    write-host c-temp mypodcast    New-Item c:\temp\mypodcast -ItemType directory}Set-Location c:\temp\mypodcast#Verzeichnis mit dem Namen des Podcasts erstellen$dirname = $fileName.substring(0,$fileName.Length -4)If (!(Test-Path c:\temp\mypodcast\$dirname)){    Write-Host neues verzeichnis erstellen    write-host $dirname    New-Item c:\temp\mypodcast\$dirname -ItemType directory}Set-Location c:\temp\mypodcast\$dirname # *** Teil 2 *** ##Dateien aus der Website extrahieren$max =$web.rss.channel.item.Count$webclient = New-Object System.Net.WebClient# load the TagLib# assembly into PowerShelL[Reflection.Assembly]::LoadFrom("C:\Temp\mypodcast\taglib-sharp.dll")#kalenderwoche ermitteln$kw = Get-Date -uFormat %V$kw = $kw + " - "$i = 0do {  $fileURL = $web.rss.channel.item[$i].guid  $mp3name = "c:\temp\mypodcast\$dirname\" +$kw +$web.rss.channel.item[$i].title +".mp3"   write-host c:\temp\mypodcast\$dirname\$mp3name  If (!(Test-Path c:\temp\mypodcast\$dirname\$mp3name)){    write-host $mp3name    write-host "Die Datei $mp3name wird erstellt"    $webclient.DownloadFile($fileURL,$mp3name)    #$media = [TagLib.File]::Create($mp3name)    $media = [TagLib.File]::Create($mp3name)    # set the tags     #$media.Tag.Genre = "Podcast"     $media.Tag.Album = $dirname     $media.Tag.Comment = "Neu"    $media.Save() }  $i++} while ($i -lt $max)Get-ChildItem *.mp3Set-Location c:\temp\mypodcast   Eine weiterentwickelte Version nachfolgend. Die Source URL sind im Skript definiert. Das Skript wird über den Taskmanager von Windows regelmässig angestossen und ergänzt die Podcasts um die neuen Folgen #Name:                        MP3 Dateien aus RSS Feed (Podcast) downloaden#Autor:                       Peter Gyger#Version:                     1.2#Datum der letzten Änderung:  1.05.2017#Überprüfen ob das Verzeichnis c:\temp\ und Unterverzeichnis mypodcast existiertIf (!(Test-Path c:\temp)){    write-host c-temp erstellen    New-Item c:\temp -ItemType directory}If (!(Test-Path c:\temp\mypodcast)){    write-host c-temp mypodcast    New-Item c:\temp\mypodcast -ItemType directory}Set-Location c:\temp\mypodcast# load the TagLib# assembly into PowerShelL[Reflection.Assembly]::LoadFrom("C:\Temp\mypodcast\taglib-sharp.dll") ForEach($Number in 1..20) {    $dirname = ""    $rssURL = ""    Switch ($Number) {                #DRS / SRF Feeds        1 {$rssURL ="http://pod.drs.ch/jazz_collection_mpx.xml"        $dirname = "SRF - jazz_collection"         }        2 {$rssURL ="http://pod.drs.ch/a_point_mpx.xml"            $dirname = "SRF - a_point"        }        3 {$rssURL ="http://podcasts.srf.ch/100_sekunden_wissen_mpx.xml"            $dirname = "SRF - 100_sekunden_wissen"        }        4 {$rssURL ="http://podcasts.srf.ch/digital_plus_mpx.xml"            $dirname = "SRF - digital_plus"        }        5 {$rssURL ="http://pod.drs.ch/wissenschaft_drs_2_mpx.xml"            $dirname = "SRF - wissenschaft_drs_2"        }        6 {$rssURL ="http://pod.drs.ch/country_special_mpx.xml"            $dirname = "SRF - country_special"        }        7 {$rssURL ="http://podcasts.srf.ch/fiori_musicali_mpx.xml"            $dirname = "SRF - fiori_musicali"        }        8 {$rssURL ="http://pod.drs.ch/diskothek_im_zwei_mpx.xml"         $dirname = "SRF - diskothek_im_zwei"        }        9 {$rssURL ="http://pod.drs.ch/espresso_mpx.xml"        $dirname = "SRF - espresso"         }        #Heise Feeds        10 {$rssURL ="https://www.heise.de/ct/uplink/ctuplink.rss"        $dirname = "ctuplink"        }               #diverse        14 {$rssURL ="http://www.br-online.de/podcast/cd-tipp-der-woche/cast.xml"            $dirname = "BR - Classic aktuell"        }    }    $web = New-Object System.Xml.XmlDocument    $web.Load($rssURL)    $max =$web.rss.channel.item.Count    $webclient = New-Object System.Net.WebClient     If (!(Test-Path c:\temp\mypodcast\$dirname))    {        Write-Host neues verzeichnis erstellen        write-host $dirname        New-Item c:\temp\mypodcast\$dirname -ItemType directory    }    Set-Location c:\temp\mypodcast\$dirname    write-host c:\temp\mypodcast\$dirname    $i = 0    do     {      $mp3name = ""      $mp3name =$web.rss.channel.item[$i].title +".mp3"      #Sonderzeichen die das NTFS Dateisystem nicht akzeptiert ersetzen      $mp3name = $mp3name.Replace("/","_")      $mp3name = $mp3name.Replace("\","_")      $mp3name = $mp3name.Replace("?","_")      $mp3name = $mp3name.Replace(":","_")      $mp3name = $mp3name.Replace(""" ","_")      $mp3name = "c:\temp\mypodcast\$dirname\" +$mp3name       #$mp3name = "c:\temp\mypodcast\$dirname\" +$kw +$fileURL.Substring(35)      If (!(Test-Path $mp3name))    {        #mp3 podcast?        If (!($mp3name.endswith(".mp3")))    {        write-host "keine MP3 Datei"        $mp3name        }        write-host "Die Datei $mp3name wird erstellt"        $fileURL = $web.rss.channel.item[$i].guid        $webclient.DownloadFile($fileURL,$mp3name)        #$media = [TagLib.File]::Create($mp3name)        $media = [TagLib.File]::Create($mp3name)        # set the tags         #$media.Tag.Genre = "Podcast"         #$media.Tag.Album = $dirname         $media.Tag.Comment = "Neu"        $media.Save()     }      $i++    } while ($i -lt $max)    } Die hier vorgestellten Codebeispiele in der hier genannten Version sind "Public Domain CC". Jeder darf sie verwenden und ändern.  Vielleicht entdeckt jemand ein neues, spannendes Hobby?    

Media PC MINIX NGC-1

Die Basis meiner Mediennutzung ist ein eigener Medienserver. Bis jetzt verwendete ich einen Intel NUC mit Windows. Das klappt mit Kodi (XBMC) und Calibre sehr gut. Die Hardware ist jedoch in die Jahre gekommen. Zuerst dache ich wieder an einen Intel NUC, da die aktuelle Serie eine abgespeckte Variante der Intel Kaby Lake Architektur namens "Apollo" unterstützen. Nach kurzem Vergleich war klar, der MINIX NGC-1 für weniger Geld fix fertig einsatzbereit zu kaufen war. Interessanterweise gibt es diese Hardware für "Android" und für "Windows". "Android" bzw. "Linux" ist mir für Intel HW sowie Multimedia zu arbeitsintensiv. Als Forschungsprojekt sicher spannend. Eine kurze Bildstrecke zum neuen Gerät: https://www.mycloud.ch/l/P00D24F2B5131E4134847050120A1A7DFAB5EC117FAC9678378D4CB2425206E9 Ob der Zeitpunkt der Beschaffung perfekt war, darüber lässt sich argumentieren. Am Horizont steht bereits HDMI 2.1, welches nicht Steckerkompatibel mit HDMI 2 sein soll. Und dieses Gerät hat noch HDMI 1.4. Der Arbeitsspeicher ist mit 4 GB DDR3L knapp bemessen. Und die die Windows Home Edition ist auch nicht meine erste Wahl. Nachdem ich das Gerät gestern in Betrieb genommen habe, bin ich sehr zufrieden mit dem ersten Eindruck. Mit "Net use" die Netzwerk Shares eingerichtet. Kodi und Calibre (mit Nachrichtenserver) installiert. Aus dem Windows "App" Verzeichnis die alte Kodi Konfiguration auf den neuen PC kopiert. VNC installiert. Autostart mit Autoruns optimiert. Den Standardbenutzer "NC1" - Mitglied der Administratoren Gruppe umbenannt und deaktiviert. Neue Benutzer angelegt (1x Stanard / 1x Admin). In 2 Stunden war das neue Gerät komplett betriebsbereit. Lediglich ein Detail trübt das ganze. Der Samsung TV wird von der Auflösung nicht korrekt erkannt. D.h. das Windows Bild geht über den TV hinaus. Wahrscheinlich ein Sachverhalt des Grafiktreibers oder der Einstellungen der Grafikkarte. Der alte NUC hatte das Problem nicht. In den letzten Tagen gab es viele Diskussionen zu den neuen Produkten von Swisscom, welche für April 2017 angekündigt sind: "InOne". Als "Techniker" interessieren mich Produkte eher weniger. Da meine Firma für Swisscom arbeitet, machte ich mir natürlich ein eigenes Bild davon. Mein Gramm Salz: Die Stossrichtung geht Richtung Familie / WG und Handy. Swisscom hat traditionell zwei Probleme: "Überalterung der Kunden" und die Konkurrenz im mobilen Bereich bei jungen Leuten, die oft auf günstige Angebote von Mitbewerbern aufgesprungen sind. Der Kombirabatt macht es möglich, dass der 3. bis 5 Handyvertrag (nicht alle Produkte) 40 Franken Rabatt pro Abo erhalten. Z.B. hat die Website "Dschungelkompass.ch" das so analysiert

Kodi und Musik

  Um was geht es? Wie in einem früheren Artikel geschrieben verwende ich Kodi als Mediacenter. Das Mediencenter läuft unter Windows 10 und einem IntelNUC. Dieser Artikel gibt meine Erfahrung beim Einrichten von Musik in Kodi wieder. Ich habe nicht jede Variante auf Vor und Nachteile geprüft. Dieses ist mein aktuelles «How To» wie ich es angehe. Einleitung Dieser Artikel baut auf dem Standard Skin von Kodi 16.1 («Jarvis») auf: «Confluence». Damit sollte die beste Nachvollziehbarkeit gewährt sein. Die Musikfunktion kann gut über die Tastatur gesteuert werden. Das Kodi-Wiki (Handbuch) informiert ausführlich über die Möglichkeiten von Kodi. Dieser Artikel des Wikis wurde als direktes How-To verfasst, um einen raschen Einstieg in die Nutzung von Kodi im Zusammenhang mit Musik zu ermöglichen. Kodi unterstützt eine wirklich grosse Vielfalt an Formaten und Datenträgern. Details in diesem Wiki Artikel. Das Vorgehen lässt sich auf folgende Schritte festlegen: Musikdateien (MP3 / Flac) Dateien auf ein Laufwerk (z.b. NAS) kopieren Dateien «taggen» - d.h. Metainformationen hinzufügen Verzeichnis in Kodi einbinden Informationen / Darstellung mit Kodi vervollständigen. Die Musikdateien müssen in Verzeichnissen liegen. Das oberste Verzeichnis («Root») ist der Künstler. Z.B. AC/DC oder «Alicia Keys». In diesem Ordner ist für jeden Datenträger eine Datei. Zusätzlich sollte sie noch zwei JPG Grafiken beinhalten: «fanart.jpg» und «folder.jpg». Die Rolle die diese Grafiken spielen, erläutere ich weiter unten. Die offizielle Anleitung empfiehlt zum taggen «Music Bainz» bzw. «Piccard». Ich verwende stattdessen «MP3TAG». Das Programm lernte ich vor einigen Jahren als Plugin von Foobar2000 schätzen. Foobar ist für mich noch immer der bevorzugte Audioplayer auf dem Windows Betriebssytem, wenn es nur um Musik und Funktion geht. «Kodi» spielt seine Stärken im Medienraum aus, wenn man über die einfache Funktion des Musik Hörens hinaus will… Musikdateien werden über den Menu Punkt «Music», Untermenü Punkt «Files» hinzugefügt. Die Verbindungsoptionen sind identisch mit denen von «Movies». Wenn das Verzeichnis eingelesen ist, prüfe ich über dem Untermenü punkte «Artists», »Albums» und «Songs» ob die Informationen vollständig sind. Im Falle von «Artists» sollte ein Portrait Foto rechts und ein Wallpaper im Hintergrund zu sehen sein. Wenn der Musiker wird nicht erkannt, klickt man mit der rechte Maustaste auf einen der Einträge und wählt «Query Info for all Artist». Wenn der Artist trotzdem nicht erkannt, wird kann der «Scraper» (Software zum Finden von Information) gewechselt werden. «Universal Artist Scraper» ist per default aktiv. «TheAudioDB Artist Scraper» muss nachinstalliert werden. Das wird auch über das Kontextmenu gemacht: «Change Information provider». Nach anklicken wird das Fenster «Set Content» angezeigt, wo man in rechten Spalte auf den gewünschten Scraper klickt und unten mit OK bestätigt. Dieselbe Funktion, auch wieder über rechte Maus und Kontextmenu findet man im Menu Punkt «Albums». Die Bilder zu den Künstlern können auch direkt über das Menu geändert werden. Dazu geht man über den Menu Punkt «Artist Information». Unten sind die Menu Buttons. «Get thumb» definiert das Portraitfoto und «Get fanart» das Hintergrundbild. Ein praktisches Tool für die Suche von Bildmaterial zu Medien ist das Tool «Album Art Downloader XUI 1.01». Da es sich auch in das MP3TAG Programm einbinden lässt, kann bereits beim taggen den Alben Bilder zugeordnet werden.Analog wie bei den Filmen kann man die Musikdatenbank «manuell» updaten («Pfeiltaste links» danach «Update Libary») und / oder man konfiguriert Kodi so, dass bei jedem Start der Musikordner durchsucht wird. Ich habe die Ansicht unter «System» auf Fortgeschritten geändert, damit alle Menu punkte angezeigt werden. Dazu geht man auf den Menu Punkt «System» <ENTER>, danach links auf «Music» <ENTER> und rechts die Option «Update library on startup» aktivieren. «Clean Library» sollte eingesetzt werden, wenn sich der erfasste Musikbestand ändert. D.h. Dateien gelöscht werden, andere Tags gesetzt wurden, etc. Analog Firefox sind die Addons der grosse Pluspunkt von Kodi. Wie eine Musiklösung in Kodi aussehen kann, werde ich später mit einem (tonlosen ;-) ) Video dokumentieren. Auch der Abschnitt Hintergrund muss im Moment warten.   Hintergrund Folgt später - asap Linkliste Homepage des Projektes Kodi 16.0 "Jarvis" to Bring a Much Better Music Library Music Box Addon CU_LRC_Lyrics Addon MP3 Streams addon Fazit Plex und Kodi gehören zu den populärsten Multimedia Lösungen. Dieser Artikel zeigt wie man die ersten Schritte zum Aufbau seiner Musiksammlung in Kodi geht. Andere Medien / Formate die in diese Quellen gehören sind MixCloud, Streamingdienste, Radio, Podcasts, Hörspiele, etc. Genauso wie Musikvideos. Oder den Backup nach der Installation und Konfiguration.   ELEMENT Wert Erstellt Mai 2016 Letzte Änderung Mai 2016 ID 28 Kategorie Software Tag Kodi Autor Peter Gyger           

Windows 10 als MediaCenter einrichten

Um was geht es?    Einleitung    Hintergrund    Fazit   Um was geht es? Wenn man ein MediaCenter wie Kodi verwenden will, ist die Linux Distribution «OpenElec» eine gute Wahl. Dieser Artikel geht der Frage nach, wie man das mit Windows 10 praktisch umsetzt. D.h. die ersten Schritte in Windows 10 – das konfigurieren. Einleitung Der Artikel baut auf einem Intel Nuc mit Windows 10 Pro ohne Active Directory Integration auf. Ziel ist es, dass innerhalb eines LANs die Nutzung verschiedener Medien (E-Book, Musik, etc.) über verschiedene Geräte möglich ist. Der Artikel ist der zweite in der Serie MediaCenter. Hintergrund Der Benutzer wurde als klassischer Windows Benutzer eröffnet. Die Vorteile eines OneDriver (Outlook.com) Benutzers kommen in diesem Szenario nicht zum tragen. Zuerst die Datenschutz Einstellungen überprüfen und ggf. anpassen:       ÿ + i - danach «Datenschutz»   Details hat Microsoft hier erklärt. Falls gewisse Einstellungen ausgegraut sind, bzw. ein Text wie «… von Ihrer Organisation verwaltet» kann dieser Fachartikel von Günter Born weiterhelfen.   Die C'T Artikel zum Thema Datenschutz wurden in diesem Sonderheft zusammengefasst. Grundlageninformationen für den mündigen Bürger gibt es gratis auch hier. Danach das automatische Update verzögern:ÿ + i - danach «Update und Sicherheit»   Im Menu Punkt «Update» auf «erweiterte Einstellungen» gehen.   Das aktivieren des Menu Punktes «Upgrade zurückstellen» soll gemäss nicht bestätigen Informationen im Netz die Updates um 4 Monate verzögern. Sicherheitsupdates seien davon nicht betroffen.   Diese Einstellungen kann man nur mit der Pro und Enterprise Version machen.   Danach Programme installieren / deinstallieren. Das geht am einfachsten mit Powershell.   Powershell muss zuerst «scharf» gestellt werden. D.h. die «ExecutionPolicy» muss auf «Remote Signed» gestellt werden.   Unten sind die zwei Befehle zur überprüfung und ggf. Einstellung aufgelistet Generell angemerkt sei, dass diese Beispiele mit der Version 5 (Standard in Win 10) erstellt wurden. Die Version der eigenen Powershell Installation zu prüfen und falls noch nie gemacht die Hilfe zu updaten kann man über zwei (sprechende) Befehle erreichen:   Liste der installierten Apps anzeigen und die Liste in einer Textdatei speichern PS > get-appxpackage | select name, packagefullname | tee-Object -file c:\projekt\mediapc\app-list.txt Nun sollen die für diesen nicht Benutzer nicht erwünschten Apps entfernt werden.   Das Muster sieht so aus: Get-AppxPackage *nameeinerapp* | Remove-AppxPackage   Mit der erstellen Textliste kann man nun die Apps über den Prompt löschen. Oder man öffnet mit Notepad die erstellte Textdatei. Dieses ergänzt man pro app mit dem obigen Beispiel. Danach die Textdatei mit der Erweiterung «.ps» speichern und und ausführen. PS >   Nach den Apps folgen die Applikationen. (Vor-) installierte entfernen und neue installieren. Mit Powershell 5 wurde das «OneGet-Framework» integriert. Das entspricht einer Paketverwaltung, wie es die Linux Benutzer mit APT kennen. Mit dem cmdlet «get-package» erhält man eine Liste der installierten Programme.   Natürlich könnte man diese in eine Datei umleiten. Der Befehl dazu sieht so aus:   PS > get-package | Out-File c:\projekt\mediapc\progs.txt Über den Namen eines Programmes (Paketes) kann es deinstalliert werden.   Zu beachten ist, dass Leerzeichen in einem Programnamen mit Anführungs- und Schlusszeichen gekapselt werden müssen.   Was indirekt hier auch zu sehen ist, dass Powershell viele der bekannten Linux Kommandos wie «ls» oder «cat» versteht… In den Tests gab es auch einzelne Programme die eine Bestätigung der Deinstallation verlangten.   Abhängig von der MSI Programmierung wird das wohl dann und wann auftreten Die Installation der von mir gewünschten Programme erfolgt nun in einem Schritt.   Den Namen der Programme sind nicht immer sprechend. Dazu geht man auf die Site des Paketanbieters.   Oder in Powershell mit «find-package» anzeigen lassen.     Sehr beliebt unter Windows ist «Chocolatey». https://chocolatey.org/packages   Nein, ich sage das nicht als Schweizer. Ich kenne belgische Schokolade, welche mir besser als die einheimischen Fabrikate gemundet hat :-p     Die Programme die zusätzlich installiert werden: Kodi Calibre Video Lan Client Sumatra PDF Reader MP3Tag Album Art Download XUI FileZilla Client Putty Chrome Firefox Network Adapter Driver for Windows® 10   Mit den Diensten von Windows kann mit Powershell ebenso effizient arbeiten. D.h. gezielt Dienste deaktivieren, konfigurieren, etc. Ich habe hier bewusst die Apps nicht vollständig deinstalliert und nur für den Benutzer ausgeblendet. Zu einem späteren Zeitpunkt prüfe ich, ob das für die Auslastung des PC s eine Rolle spielt.   Fazit Mit diesen Schritten sind die ersten Grundlagen für den Win 10 MediaPC gelegt. Weitere folgen asap. Ich kenne Powershell seit der Version 1, als man zu einem Kürsli nach Wallisellen gehen konnte. Die Entwicklung bis jetzt zur Version 5 beindruckt mich. Trotz der zusätzlichen Lernkurve, zwinge ich mich die vertrauten Pfade von Batch und WSH zu verlassen. Einfach nur um zu prüfen, was mir Powershell für Möglichkeiten gibt….     ELEMENT Wert Erstellt 3.1.2016 Letzte Änderung 6.1.2016 ID 000016 Kategorie MediaPC Tag   Autor Peter Gyger           

Windows Netzlaufwerke (NAS)

Um was geht es?    Einleitung    Hintergrund    Fazit   Um was geht es? Der aktuelle Stand der Home NAS ist ausgereift. Die Einbindung in ein Windows wird oft mit Assistenten. Auf dieses Thema wird hier mit einem QNAP (Version 4.2) und Windows 10 genauer eingegangen. Dieser Schritt ist nach der Installation von Windows 10 auf dem Media PC der zweite Schritt zum Mediacenter. Andere Lösungen wie «OpenElec» werden in diesem Artikel nicht berücksichtigt. Einleitung Ziel dieses Artikels ist zu dokumentieren, wie die Einbindung zweier NAS Freigaben auf dem Windows Computer realisiert wurde. Grundsätzlich eine einfache Sache, sollte man meinen. Auf dem NAS zwei Freigaben erstellen, danach in Windows über «Net Use» oder den «WindowDs Explorer» als Netzlaufwerke definieren. Persönlich schätze ich es sehr, wenn man auch die einfachen Dinge sorgfältig dokumentiert. Als Einsteiger bin ich zu oft vor irgend einem trivialen Problem gestanden, dass mich Tage gekostet hat… Hintergrund Szenario:    Der Client (Windows Computer) hat im LAN die IP Adresse 192.168.1.150. Das NAS hat im LAN die IP Adresse 192.168.1.220. Die NAS Freigaben heissen «adam» und «eva». Permanentes Mounten der Freigabe «adam» als Laufwerk «Z:» «CMD»        «net use z: \\192.168.1.220/adam /persistent:yes»    «net use z: \\192.168.1.220/eva /persistent:yes» «Powershell»    «New-SmbMapping -LocalPath k: -RemotePath z: \\192.168.1.220/adam «New-SmbMapping -LocalPath k: -RemotePath z: \\192.168.1.220/eva Der Befehl kann jeweils mit den Anmeldedaten: «CMD»        net use z: \\192.168.1.220/adam /user:admin /persistent:yes «Powershell»    «New-SmbMapping -LocalPath k: -RemotePath z: \\192.168.1.220/adam -user Acon -password P@ssw0rd -SaveCredentials Vereinzelt und nicht reproduzierbar traten ein Windows System Fehler 1219 auf. Sowohl in Win 8.1 als auch Win 10. Eine oft zu lesende Empfehlung ist, mit «net use * /del» zuerst alle Mappings zu löschen. Was anscheinend oft nicht hilft. Der einfachste Workaround ist, den einen der zwei Shares über den NETBIOS Namen zu mappen. Beispielsweise heisst der NAS Sever «Schatzchistli», dann wäre der entsprechende «Net Use» Befehl: «net use z: \\Schatzchistli\adam» bzw. «eva» aus dem Beispiel oben. Im NAS findet man den Namen des (Samba-) Servers fast immer auf Annhieb. So sieht es aktuell in einem QNAP aus: Zu empfehlen ist, dass im NAS die Workgroup (Arbeitsgruppe) analog den anderen Netzwerkgeräten im LAN konfiguriert ist.   Ein typisches Problem seit Windows 8.x ist, dass die Netzlaufwerke nach dem Start des Betriebssystemes sich nicht automatisch verbinden. Und das ist kein Darstellungsfehler im Windows Explorer. Der Zugriff ist definitiv nicht möglich: Die Registry Einträge für die Netzlaufwerke sind auch vorhanden: Erst nachdem man im Windows Explorer die einzelnen Netzlaufwerke anklickt, wird die Verbindung aktiviert. Folgender Tipp konnte das Problem nicht lösen: Registry - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System – neuen Schlüssel eintragen «EnableLinkedConnections» , Typ «DWord» mit dem Wert «1». Die aktuelle Lösungen für dieses Problem: Windowstask: Mit dem Start von Windows einen Befehl (Batch, Powershell, WSH) auslösen, der die Netzlaufwerke löscht und danach neu verbindet. In einer ruhigen Stunde werde ich nach einer besseren Lösung Ausschau halten.   Fazit Mit dieser Anleitung sollte man über Laufwerksbezeichnungen auf sein NAS zu zugreifen. Sei es als Backup Medium, Dateiablage oder wie hier geplant als Medienserver.     ELEMENT Wert Erstellt 27.12.2015 Letzte Änderung   ID 00015 Kategorie MediaPC Tag Netzwerk Autor Peter Gyger