Hatte ich kurz überlegt, ja. Aber ich denke, dass das aus Gründen der Abwärtskompatibilität genau nicht gemacht wurde bei der Einführung der Video Library Tags in 12.0 Frodo. Man müsste sonst irgendwie die Datenbank updaten beim Versionssprung, da in das eine table am besten genau mittendrin, um die Ordnung zu erhalten, eine Spalte eingefügt werden muss.
Was meinst du?
Beiträge von nsty
-
-
Da ich nirgendwo eine Lösung für mein Problem gefunden habe, habe ich mich über mehrere Tage in den XBMC Quelltext eingelesen und schließlich eine Lösung gefunden, die ich hier teilen möchte. Vielleicht kann es ja jemand auch noch gebrauchen.
Die Lösung ist allgemein ziemlich "quick and dirty", auch weil ich vorher noch nie C-artig programmiert habe.
Vor dem Start von XBMC muss unbedingt die Videodatenbank gelöscht werden, da sich die Einträge in der neuen Datenbank um eine Spalte verschieben werden. Dazu später mehr.
Deshalb ein Backup der Datenbank machen. Zum Beispiel mit "Videodatenbank exportieren..."/"Separat" einfach die .nfo Dateien im jeweiligen Film-Ordner erstellen lassen. Habe ich sowieso, da ich meine Datenbank mit Mediaelch verwalte.
Dann in einen leeren Ordner wechseln und
Codegit init && git remote add -t Frodo -f origin git://github.com/xbmc/xbmc.git && git checkout Frodo
ausführen.
Damit wird der Ordner für git initialisiert, der Frodo Branch markiert und heruntergeladen. (ca. 340 MB bei mir)In diesem Ordner jetzt auch weiterarbeiten.
In ./xbmc/GUIInfoManager.cpp die neue property für das ListItem festlegen.
Dazu die const infomap listitem_labels[] erweitern.suchen nach:
erweitern zu:Die Methode CGUIInfoManager::GetItemLabel erweitern für Zugriff auf die neue ListItem property
suchen nach:PHP
Alles anzeigencase LISTITEM_DBID: if (item->HasVideoInfoTag()) { CStdString dbid; dbid.Format("%i", item->GetVideoInfoTag()->m_iDbId); return dbid; } if (item->HasMusicInfoTag()) { CStdString dbid; dbid.Format("%i", item->GetMusicInfoTag()->GetDatabaseId()); return dbid; } break; } return ""; }
erweitern zu:PHP
Alles anzeigencase LISTITEM_DBID: if (item->HasVideoInfoTag()) { CStdString dbid; dbid.Format("%i", item->GetVideoInfoTag()->m_iDbId); return dbid; } if (item->HasMusicInfoTag()) { CStdString dbid; dbid.Format("%i", item->GetMusicInfoTag()->GetDatabaseId()); return dbid; } break; case 35199://++bea start if (item->HasVideoInfoTag()) { return StringUtils::Join(item->GetVideoInfoTag()->m_tags, g_advancedSettings.m_videoItemSeparator); } break;//++bea end } return ""; }
--------
In ./xbmc/video/VideoDatabase.h
suchen nach:
ersetzen durch:und suchen nach:
erweitern zu:PHPVIDEODB_ID_BASEPATH = 22, VIDEODB_ID_PARENTPATHID = 23, VIDEODB_ID_TAGS = 24,//++bea VIDEODB_ID_MAX } VIDEODB_IDS;
und direkt darunter die DbMovieOffsets[] erweitern, suchen
PHP{ VIDEODB_TYPE_STRING, my_offsetof(CVideoInfoTag,m_basePath) }, { VIDEODB_TYPE_INT, my_offsetof(CVideoInfoTag,m_parentPathID) } };
erweitern zuPHP{ VIDEODB_TYPE_STRING, my_offsetof(CVideoInfoTag,m_basePath) }, { VIDEODB_TYPE_INT, my_offsetof(CVideoInfoTag,m_parentPathID) }, { VIDEODB_TYPE_STRINGARRAY, my_offsetof(CVideoInfoTag,m_tags) }//++bea };
Fertig mit der Anpassung der Quelltexte. Jetzt zur Installation.
In ./docs/ findet man die Installationsanleitungen, z.B. für Ubuntu in README.ubuntu. Bitte diese beachten.Beispiel für Ubuntu 12.10:
Codesudo apt-get install git-core build-essential gawk pmount libtool nasm yasm automake cmake gperf zip unzip bison libsdl-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libfribidi-dev liblzo2-dev libfreetype6-dev libsqlite3-dev libogg-dev libasound2-dev python-sqlite libglew-dev libcurl3 libcurl4-gnutls-dev libxrandr-dev libxrender-dev libmad0-dev libogg-dev libvorbisenc2 libsmbclient-dev libmysqlclient-dev libpcre3-dev libdbus-1-dev libhal-dev libhal-storage-dev libjasper-dev libfontconfig-dev libbz2-dev libboost-dev libenca-dev libxt-dev libxmu-dev libpng-dev libjpeg-dev libpulse-dev mesa-utils libcdio-dev libsamplerate-dev libmpeg3-dev libflac-dev libiso9660-dev libass-dev libssl-dev fp-compiler gdc libmpeg2-4-dev libmicrohttpd-dev libmodplug-dev libssh-dev gettext cvs python-dev libyajl-dev libboost-thread-dev libplist-dev libusb-dev libudev-dev libtinyxml-dev libcap-dev curl swig default-jre libtiff-dev autopoint libltdl-dev libtag1-dev
ausführen um die packages für das Kompilieren von XBMC unter Ubuntu 12.10 zu installieren.
Statt "make" kann man "make -j2" für einen dualcore verwenden, um das Kompilieren zu beschleunigen.
Das Kompilieren kann etwas dauern, je nachdem wie schnell der Rechner ist. Dann ist XBMC installiert.Vor dem Start von XBMC muss unbedingt die Videodatenbank gelöscht werden, da sich die Einträge in der neuen Datenbank um eine Spalte verschieben werden. (Backup gemacht?!)
Dazu einfach in ~/.xbmc/userdata/Database/ die Datei MyVideos75.db löschen, wobei die Zahl anders sein kann.
--------
In ~/.xbmc/addons/skin.confluence/720p/IncludesCodecFlagging.xml vor dem Endtag "</includes>" am Ende der Datei diesen include einfügen[expander]
Code
Alles anzeigen<include name="LanguageFlaggingConditions"> <control type="image"> <description>Language Icon</description> <width>65</width> <height>35</height> <aspectratio align="right">keep</aspectratio> <texture>flagging/language/de.png</texture> <visible>substring(ListItem.Tags,Deutsch)<!--|substring(ListItem.AudioLanguage,ger)|substring(ListItem.AudioLanguage,deu)--></visible> </control> <control type="image"> <description>Language Icon</description> <width>65</width> <height>35</height> <aspectratio align="right">keep</aspectratio> <texture>flagging/language/en.png</texture> <visible>substring(ListItem.Tags,English)</visible> </control> <control type="image"> <description>Language Icon</description> <width>65</width> <height>35</height> <aspectratio align="right">keep</aspectratio> <texture>flagging/language/pl.png</texture> <visible>substring(ListItem.Tags,Polskie)</visible> </control> <control type="image"> <description>Language Icon</description> <width>65</width> <height>35</height> <aspectratio align="right">keep</aspectratio> <texture>flagging/language/ru.png</texture> <visible>substring(ListItem.Tags,Russian)</visible> </control> <control type="image"> <description>Language Icon</description> <width>65</width> <height>35</height> <aspectratio align="right">keep</aspectratio> <texture>flagging/language/fr.png</texture> <visible>substring(ListItem.Tags,French)</visible> </control> <control type="image"> <description>Language Icon</description> <width>65</width> <height>35</height> <aspectratio align="right">keep</aspectratio> <texture>flagging/language/it.png</texture> <visible>substring(ListItem.Tags,Italian)</visible> </control> <control type="image"> <description>Language Icon</description> <width>65</width> <height>35</height> <aspectratio align="right">keep</aspectratio> <texture>flagging/language/sp.png</texture> <visible>substring(ListItem.Tags,Spanish)</visible> </control> </include>
[/expander]
Ich habe den include einfach in die VideoCodecFlaggingConditions eingefügt, dann werden die Flaggen immer mit den Codecs zusammen angezeigt.
Von
zuCode<include name="VideoCodecFlaggingConditions"> <include>LanguageFlaggingConditions</include> <control type="image">
ändern.
Falls die Datei oder das gesamte Skin "skin.confluence" nicht existiert, kann es aus den Quelltexten entnommen (./addons/) und anschließend bearbeitet werden.In ~/.xbmc/addons/skin.confluence/media/flagging/ muss jetzt noch ein "language" Ordner erstellt werden mit den Flaggenbildern drin, die in der IncludesCodecFlagging.xml definiert wurden.
Ich werde meine Flaggen hier anhängen, falls sie jemand verwenden möchte.
Mit
kann nun das Mediencenter gestartet werden. Nach einem Neustart ist es auch im Unity-Starter bei mir. -
Hallo,
ich würde gerne die neuen Video Library Tags in Frodo dazu verwenden, Filme nach Sprachen zu ordnen.
Bis jetzt habe ich im Skin-Ordner in .../720p/IncludesCodecFlagging.xml folgenden Code eingefügt.Code
Alles anzeigen<include name="VideoCodecFlaggingConditions"> <control type="image"> <description>Language Icon</description> <width>64</width> <height>35</height> <aspectratio>keep</aspectratio> <texture>flagging/language/de.png</texture> <visible>substring(ListItem.FileNameAndPath,deutsch)</visible> </control> <control type="image"> <description>Language Icon</description> <width>64</width> <height>35</height> <aspectratio>keep</aspectratio> <texture>flagging/language/en.png</texture> <visible>substring(ListItem.FileNameAndPath,english)</visible> </control> <control type="image"> <description>Language Icon</description> <width>64</width> <height>35</height> <aspectratio>keep</aspectratio> <texture>flagging/language/pl.png</texture> <visible>substring(ListItem.FileNameAndPath,polskie)</visible> </control> [...] </include>
Und dann noch die entsprechenden Bilder der Flaggen in .../media/flagging/language/ geschoben.
Um das Schema zu verwenden müsste ich die jeweiligen Filme jetzt
entweder durch die Tags "deutsch", "english", "polskie", "francais", ...
im Dateinamen ergänzen, oder alle deutschsprachigen Filme in einen
Ordner "deutsch" schieben. Letzteres würde bei mehrsprachigen Filmen
aber unübersichtlich.Eigentlich wollte ich dazu statt der Umbenennung die neuen Video
Library Tags verwenden, damit ich im XBMC auch einfacher nach Sprachen
sortieren kann. Also in meinen .nfo Dateien steht dann z.B.
und dann sollen eben die deutsche und die britische Flagge neben dem
Film angezeigt werden. Das Sortieren nach den Tags klappt wunderbar,
aber ich habe keine Ahnung wie ich an die Tags aus der Datenbank
rankomme.Stell mir da irgendwas in der Art vor:
Allerdings habe ich in der Documentation nichts in der Art gefunden.