Der Vollständigkeit halber noch eine kleine Korrektur…
Exakt wäre: Das große Rennen rund um die Welt (The Great Race)
Da wir momentan in den 60igern sind… Peter F. darf noch einmal.
Der Vollständigkeit halber noch eine kleine Korrektur…
Exakt wäre: Das große Rennen rund um die Welt (The Great Race)
Da wir momentan in den 60igern sind… Peter F. darf noch einmal.
Hab ich schon nach dem ersten Bild erkannt...
"Das große Rennen"
Einer meiner Lieblingsfilme.
Hallo @diver100,
die Variablen:...
- IncludesMediaFlagsVideoSource (vorhanden)
- MovieCase (neu!)
- MovieCase(n) (neu!)
... müssen in der Datei: ...\Kodi\addons\skin.transparency\1080p\Includes_Variables.xml angepasst/eingefügt werden.
Die Dateien DialogVideoInfo.xml, View-Slide.xml und View-Fanart.xml müssen natürlich auch stimmen (siehe Beitrag #6).
Im Prinzip ist es natürlich möglich einer DVD ein 4K-Cover "zu verpassen" aber genau das versucht man ja zu verhindern mit den Variablen.
Die nfo Datei (streamdetails-Infos) für einen 3D Blu-ray Film sollte aussehen wie im Beitrag #4.
Meine streamdetails-Infos in der fake nfo Datei für 4K sehen so aus:
...
<fileinfo>
<streamdetails>
<audio>
<channels>8</channels>
<codec>dtshd_ma</codec>
<language>eng</language>
<longlanguage>English</longlanguage>
<bitrate>640</bitrate>
</audio>
<subtitle>
<language>deu</language>
<longlanguage>German</longlanguage>
</subtitle>
<video>
<aspect>2.394</aspect>
<codec>h264</codec>
<durationinseconds>9720</durationinseconds>
<height>1716</height>
<scantype>Progressive</scantype>
<width>4096</width>
<bitrate />
<multiView_Count />
<stereomode />
<encodedSettings />
</video>
</streamdetails>
</fileinfo>
...
Alles anzeigen
Hoffe ich konnte alle Unklarheiten ausräumen.
Gruß und schönen 3. Advent!
Hallo @Hocico, Hallo @diver100,
in den Variablen 'IncludesMediaFlagsVideoSource', 'MovieCase' und 'MovieCase(0)' waren noch Fehler. Habe den code jetzt in #16 nochmal angepasst.
Wenn man ein Dateiformat (.3d.iso) hinzufügt, sollte man es besser zweimal überprüfen.
Was wird wie angezeigt (für '.3d.iso' angepasst):
Dateiendung | Auflösung | Width | Height | flag | case
--------------------------------------------------------------
.blu-ray.iso | 1080p | 1920 | 1080 | Blu-ray | Blu-ray
.3d.sbs.disc | 1080p | 1920 | 1080 | 3D | 3D Blu-ray
.3d.iso | 1080p | 1920 | 1080 | 3D | 3D Blu-ray
[xattach=38618]3D flag case | Ansicht: Seite[/xattach]
[xattach=38619]4K flag case | Ansicht: Seite[/xattach]
Hallo @diver100,
1. Problem: 3D flag und case wird nicht angezeigt
Mein setting ist nur auf Dateiendung '.3d.sbs.disc' ausgelegt (siehe Tabelle 'Was wird wie angezeigt:' in #12).
Du musst die Zeile 1 bis 5 (... String.EndsWith(ListItem.Filename,.3d.iso) ...) in der Variable 'IncludesMediaFlagsVideoSource' ...
...
<variable name="IncludesMediaFlagsVideoSource">
<value condition="String.EndsWith(ListItem.Filename,.rec) | String.EndsWith(ListItem.Filename,.sdtv.ts) | String.EndsWith(ListItem.Filename,.sdtv.mp4) | String.EndsWith(ListItem.Filename,.mpg) | String.EndsWith(ListItem.Filename,.avi) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.3d.iso) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.blu-ray.iso) + !String.EndsWith(ListItem.Filename,.mov) + !String.IsEqual(ListItem.Filename,VIDEO_TS.IFO)] + [Container.Content(Episodes) | Container.Content(MusicVideos)] + [String.IsEqual(ListItem.VideoResolution,480) | String.IsEqual(ListItem.VideoResolution,540) | String.IsEqual(ListItem.VideoResolution,576)]]">flags/movies/source/sdtv.png</value>
<value condition="String.EndsWith(ListItem.Filename,.hdtv.ts) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) +!String.EndsWith(ListItem.Filename,.3d.iso) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.blu-ray.iso) + !String.EndsWith(ListItem.Filename,.mov) + !String.IsEqual(ListItem.Filename,VIDEO_TS.IFO)] + [Container.Content(Episodes) | Container.Content(MusicVideos)] + [String.IsEqual(ListItem.VideoResolution,720) | String.IsEqual(ListItem.VideoResolution,1080)]]">flags/movies/source/hdtv.png</value>
<value condition="String.IsEqual(ListItem.Filename,VIDEO_TS.IFO) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.3d.iso) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.blu-ray.iso) + !String.EndsWith(ListItem.Filename,.mov)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + [String.IsEqual(ListItem.VideoResolution,480) | String.IsEqual(ListItem.VideoResolution,540) | String.IsEqual(ListItem.VideoResolution,576)]]">flags/movies/source/dvd.png</value>
<value condition="String.IsEqual(ListItem.Filename,index.bdmv) | String.EndsWith(ListItem.Filename,.blu-ray.mp4) | String.EndsWith(ListItem.Filename,.blu-ray.mkv) | String.EndsWith(ListItem.Filename,.blu-ray.iso) | String.EndsWith(ListItem.Filename,.mov) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.3d.iso) + !String.EndsWith(ListItem.Filename,.blu-ray.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,1080)]">flags/movies/source/bluray.png</value>
<value condition="String.EndsWith(ListItem.Filename,.3d.sbs.disc) | String.EndsWith(ListItem.Filename,.3d.iso) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.blu-ray.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,1080)]">osd-3d-nofocus.png</value>
</variable>
...
..., die Zeile 1 bis 5 in Variable 'MovieCase' ...
...
<variable name="MovieCase">
<value condition="String.EndsWith(ListItem.Filename,.rec) | String.EndsWith(ListItem.Filename,.sdtv.ts) | String.EndsWith(ListItem.Filename,.hdtv.ts) | String.EndsWith(ListItem.Filename,.sdtv.mp4) | String.EndsWith(ListItem.Filename,.mpg) | String.EndsWith(ListItem.Filename,.avi) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.3d.iso) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.blu-ray.iso) + !String.EndsWith(ListItem.Filename,.mov) + !String.IsEqual(ListItem.Filename,VIDEO_TS.IFO)] + [Container.Content(Episodes) | Container.Content(MusicVideos)] + [String.IsEqual(ListItem.VideoResolution,480) | String.IsEqual(ListItem.VideoResolution,540) | String.IsEqual(ListItem.VideoResolution,576)]]">case-tv.png</value>
<value condition="String.IsEqual(ListItem.Filename,VIDEO_TS.IFO) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.3d.iso) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.blu-ray.iso) + !String.EndsWith(ListItem.Filename,.mov)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + [String.IsEqual(ListItem.VideoResolution,480) | String.IsEqual(ListItem.VideoResolution,540) | String.IsEqual(ListItem.VideoResolution,576)]]">case576.png</value>
<value condition="String.IsEqual(ListItem.Filename,index.bdmv) | String.EndsWith(ListItem.Filename,.blu-ray.mp4) | String.EndsWith(ListItem.Filename,.blu-ray.mkv) | String.EndsWith(ListItem.Filename,.blu-ray.disc) | String.EndsWith(ListItem.Filename,.blu-ray.iso) | String.EndsWith(ListItem.Filename,.mov) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.3d.iso)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,1080)]">case1080.png</value>
<value condition="String.EndsWith(ListItem.Filename,.3d.sbs.disc) | String.EndsWith(ListItem.Filename,.3d.iso) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,1080)]">case1080-3D.png</value>
<value condition="String.EndsWith(ListItem.Filename,.4K.mkv) | String.EndsWith(ListItem.Filename,.4K.disc) | [[Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,2160)]">case4K.png</value>
</variable>
...
... und die Zeile 1 bis 5 in Variable 'MovieCase(n)' anpassen:
...
<variable name="MovieCase(0)">
<value condition="String.EndsWith(ListItem(0).Filename,.rec) | String.EndsWith(ListItem(0).Filename,.sdtv.ts) | String.EndsWith(ListItem(0).Filename,.hdtv.ts) | String.EndsWith(ListItem(0).Filename,.sdtv.mp4) | String.EndsWith(ListItem(0).Filename,.mpg) | String.EndsWith(ListItem(0).Filename,.avi) | [[!String.EndsWith(ListItem(0).Filename,.4K.mkv) + !String.EndsWith(ListItem(0).Filename,.4K.disc) + !String.EndsWith(ListItem(0).Filename,.3d.sbs.disc) + !String.EndsWith(ListItem(0).Filename,.3d.iso) + !String.EndsWith(ListItem(0).Filename,.blu-ray.disc) + !String.IsEqual(ListItem(0).Filename,index.bdmv) + !String.EndsWith(ListItem(0).Filename,.blu-ray.mp4) + !String.EndsWith(ListItem(0).Filename,.blu-ray.mkv) + !String.EndsWith(ListItem(0).Filename,.blu-ray.iso) + !String.EndsWith(ListItem(0).Filename,.mov) + !String.IsEqual(ListItem(0).Filename,VIDEO_TS.IFO)] + [Container.Content(Episodes) | Container.Content(MusicVideos)] + [String.IsEqual(ListItem(0).VideoResolution,480) | String.IsEqual(ListItem(0).VideoResolution,540) | String.IsEqual(ListItem(0).VideoResolution,576)]]">case-tv.png</value>
<value condition="String.IsEqual(ListItem(0).Filename,VIDEO_TS.IFO) | [[!String.EndsWith(ListItem(0).Filename,.4K.mkv) + !String.EndsWith(ListItem(0).Filename,.4K.disc) + !String.EndsWith(ListItem(0).Filename,.3d.sbs.disc) + !String.EndsWith(ListItem(0).Filename,.3d.iso) + !String.EndsWith(ListItem(0).Filename,.blu-ray.disc) + !String.IsEqual(ListItem(0).Filename,index.bdmv) + !String.EndsWith(ListItem(0).Filename,.blu-ray.mp4) + !String.EndsWith(ListItem(0).Filename,.blu-ray.mkv) + !String.EndsWith(ListItem(0).Filename,.blu-ray.iso) + !String.EndsWith(ListItem(0).Filename,.mov)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + [String.IsEqual(ListItem(0).VideoResolution,480) | String.IsEqual(ListItem(0).VideoResolution,540) | String.IsEqual(ListItem(0).VideoResolution,576)]]">case576.png</value>
<value condition="String.IsEqual(ListItem(0).Filename,index.bdmv) | String.EndsWith(ListItem(0).Filename,.blu-ray.mp4) | String.EndsWith(ListItem(0).Filename,.blu-ray.mkv) | String.EndsWith(ListItem(0).Filename,.blu-ray.disc) | String.EndsWith(ListItem(0).Filename,.blu-ray.iso) | String.EndsWith(ListItem(0).Filename,.mov) | [[!String.EndsWith(ListItem(0).Filename,.4K.mkv) + !String.EndsWith(ListItem(0).Filename,.4K.disc) + !String.EndsWith(ListItem(0).Filename,.3d.sbs.disc) + !String.EndsWith(ListItem(0).Filename,.3d.iso)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem(0).VideoResolution,1080)]">case1080.png</value>
<value condition="String.EndsWith(ListItem(0).Filename,.3d.sbs.disc) | String.EndsWith(ListItem(0).Filename,.3d.iso) | [[!String.EndsWith(ListItem(0).Filename,.4K.mkv) + !String.EndsWith(ListItem(0).Filename,.4K.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem(0).VideoResolution,1080)]">case1080-3D.png</value>
<value condition="String.EndsWith(ListItem(0).Filename,.4K.mkv) | String.EndsWith(ListItem(0).Filename,.4K.disc) | [[Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem(0).VideoResolution,2160)]">case4K.png</value>
</variable>
...
Deine Filmdatei muss folgende Endung haben: '.3d.iso'. Dann sollte es gehen.
Und man muss die Ansicht 'Seite' (View-Slide.xml) verwenden. In der Ansicht 'Symbole' werden nicht alle cases richtig angezeigt.
2. Problem: Atmos und DTS:X flags
Das wird bisher von Transparency nicht unterstützt. Man könnte flags aus anderen Skins nehmen aber vom Format würden sie sicherlich abweichen.
Die Variable 'IncludesMediaFlagsVideoSource' müsste dann natürlich auch angepasst werden.
Leider sieht es in Sachen flag und case in Transparency immer noch bescheiden aus. Für 3D gibt es ein flag aber kein case und für 4K gibt es ein case aber kein flag.
Das vorhandene 4K case: case4K.png
... ist nur ein Blu-ray case mit einem 4K icon auf der rechten Seite. Man könnte vielleicht ein DVD case nehmen und ein '4K ULTRA HD' logo rüberlegen.
Leia v18.x benötigt jetzt ein paar Anpassungen weil einige infobools entfernt wurden:
infobool alt | infobool neu
------------------------------
StringCompare() | String.Contains() / String.IsEqual() / String.EndsWith()
SubString() | String.Contains() / String.IsEqual() / String.EndsWith()
Im Zuge dessen hab ich auch Fehler (DVD case wird im Film-Info-Fenster falsch angezeigt) entfernt und Dateiendungen angepasst.
Achtung:
Variablen wurden umbenannt (CaseCover fand ich irgendwie doppelt gemoppelt).
Wenn die neuen Variablen übernommen werden, muss man auch die DialogVideoInfo.xml, View-Slide.xml und View-Fanart.xml dementsprechend anpassen.
vorher | nachher
----------------------------------------
MovieCaseCover-DialogVideoInfo | MovieCase
MovieCaseCover(-8) | MovieCase(-8)
usw. | usw.
MovieCaseCover(0) | MovieCase(0)
usw. | usw.
MovieCaseCover(8) | MovieCase(8)
Was wird wie angezeigt:
Dateiendung | Auflösung | Width | Height | flag | case
-----------------------------------------------------------
.rec | 576i | 720 | 576 | sdtv | TV
.hdtv.ts | 720p | 1280 | 720 | hdtv | TV
.hdtv.ts | 1080i | 1920 | 1080 | hdtv | TV
.sdtv.ts | 576i | 720 | 576 | sdtv | TV
.sdtv.mp4 | 576i | 720 | 576 | sdtv | TV
.mpg | 576i | 720 | 576 | sdtv | TV
.avi | 480i | 720 | <576 | sdtv | TV
VIDEO_TS.IFO | 576i | 720 | 576 | DVD | DVD
.iso | 1080p | 1920 | 1080 | Blu-ray | Blu-ray
.ISO | 1080p | 1920 | 1080 | Blu-ray | Blu-ray
.blu-ray.mkv | 720p | 1280 | <1080 | Blu-ray | Blu-ray
.blu-ray.mkv | 1080p | 1920 | 1080 | Blu-ray | Blu-ray
.blu-ray.mp4 | 1080p | 1920 | 1080 | Blu-ray | Blu-ray
index.bdmv | 1080p | 1920 | 1080 | Blu-ray | Blu-ray
.blu-ray.disc | 1080p | 1920 | 1080 | disc | Blu-ray
.mov | 1080p | 1920 | 1080 | Blu-ray | Blu-ray
.3d.sbs.disc | 1080p | 1920 | 1080 | 3D | 3D Blu-ray
.4K.mkv | 2160p | >3840 | <2160 | disc | 4K
.4K.mkv | 2160p | 3840 | 2160 | disc | 4K
.4K.disc | 2160p | 3840 | 2160 | disc | 4K
Alles anzeigen
Als flag für die 4K.mkv-Dateien hab ich die 'disc' gewählt, weil es nichts anderes gab.
Folgender code in ...\Kodi\addons\skin.transparency\1080p\Includes_Variables.xml
... wurde unter Kodi v18.4 Leia | Transparency! 11.0.8 getestet.
Die vorhandene Variable 'IncludesMediaFlagsVideoSource' wurde angepasst:
1. Zeile: SD TV flag: 576i (720x576)
2. Zeile: HD TV flag: 720p (1280x720)/1080i (1920x1080)
3. Zeile: DVD flag: 576i (720x576)
4. Zeile: Blu-ray flag: 1080p (1920x1080)
5. Zeile: Blu-ray 3D flag: 1080p (1920x1080)
... alles andere erhält das 'disc' flag.
...
<variable name="IncludesMediaFlagsVideoSource">
<value condition="String.EndsWith(ListItem.Filename,.rec) | String.EndsWith(ListItem.Filename,.sdtv.ts) | String.EndsWith(ListItem.Filename,.sdtv.mp4) | String.EndsWith(ListItem.Filename,.mpg) | String.EndsWith(ListItem.Filename,.avi) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.iso) + !String.EndsWith(ListItem.Filename,.mov) + !String.IsEqual(ListItem.Filename,VIDEO_TS.IFO)] + [Container.Content(Episodes) | Container.Content(MusicVideos)] + [String.IsEqual(ListItem.VideoResolution,480) | String.IsEqual(ListItem.VideoResolution,540) | String.IsEqual(ListItem.VideoResolution,576)]]">flags/movies/source/sdtv.png</value>
<value condition="String.EndsWith(ListItem.Filename,.hdtv.ts) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.iso) + !String.EndsWith(ListItem.Filename,.mov) + !String.IsEqual(ListItem.Filename,VIDEO_TS.IFO)] + [Container.Content(Episodes) | Container.Content(MusicVideos)] + [String.IsEqual(ListItem.VideoResolution,720) | String.IsEqual(ListItem.VideoResolution,1080)]]">flags/movies/source/hdtv.png</value>
<value condition="String.IsEqual(ListItem.Filename,VIDEO_TS.IFO) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.iso) + !String.EndsWith(ListItem.Filename,.mov)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + [String.IsEqual(ListItem.VideoResolution,480) | String.IsEqual(ListItem.VideoResolution,540) | String.IsEqual(ListItem.VideoResolution,576)]]">flags/movies/source/dvd.png</value>
<value condition="String.IsEqual(ListItem.Filename,index.bdmv) | String.EndsWith(ListItem.Filename,.blu-ray.mp4) | String.EndsWith(ListItem.Filename,.blu-ray.mkv) | String.EndsWith(ListItem.Filename,.iso) | String.EndsWith(ListItem.Filename,.mov) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.blu-ray.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,1080)]">flags/movies/source/bluray.png</value>
<value condition="String.EndsWith(ListItem.Filename,.3d.sbs.disc) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.blu-ray.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,1080)]">osd-3d-nofocus.png</value>
</variable>
...
Die neue Variable 'MovieCase':
1. Zeile: TV case: 576i (720x576)/720p (1280x720)/1080i (1920x1080)
2. Zeile: DVD case: 576i (720x576)
3. Zeile: Blu-ray case: 1080p (1920x1080)
4. Zeile: Blu-ray 3D case: 1080p (1920x1080)
5. Zeile: 4K Ultra HD case: 2160p (3840 x 2160)
... alles andere erhält das gelbe set case.
...
<variable name="MovieCase">
<value condition="String.EndsWith(ListItem.Filename,.rec) | String.EndsWith(ListItem.Filename,.sdtv.ts) | String.EndsWith(ListItem.Filename,.hdtv.ts) | String.EndsWith(ListItem.Filename,.sdtv.mp4) | String.EndsWith(ListItem.Filename,.mpg) | String.EndsWith(ListItem.Filename,.avi) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.iso) + !String.EndsWith(ListItem.Filename,.mov) + !String.IsEqual(ListItem.Filename,VIDEO_TS.IFO)] + [Container.Content(Episodes) | Container.Content(MusicVideos)] + [String.IsEqual(ListItem.VideoResolution,480) | String.IsEqual(ListItem.VideoResolution,540) | String.IsEqual(ListItem.VideoResolution,576)]]">case-tv.png</value>
<value condition="String.IsEqual(ListItem.Filename,VIDEO_TS.IFO) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc) + !String.EndsWith(ListItem.Filename,.blu-ray.disc) + !String.IsEqual(ListItem.Filename,index.bdmv) + !String.EndsWith(ListItem.Filename,.blu-ray.mp4) + !String.EndsWith(ListItem.Filename,.blu-ray.mkv) + !String.EndsWith(ListItem.Filename,.iso) + !String.EndsWith(ListItem.Filename,.mov)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + [String.IsEqual(ListItem.VideoResolution,480) | String.IsEqual(ListItem.VideoResolution,540) | String.IsEqual(ListItem.VideoResolution,576)]]">case576.png</value>
<value condition="String.IsEqual(ListItem.Filename,index.bdmv) | String.EndsWith(ListItem.Filename,.blu-ray.mp4) | String.EndsWith(ListItem.Filename,.blu-ray.mkv) | String.EndsWith(ListItem.Filename,.blu-ray.disc) | String.EndsWith(ListItem.Filename,.iso) | String.EndsWith(ListItem.Filename,.mov) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc) + !String.EndsWith(ListItem.Filename,.3d.sbs.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,1080)]">case1080.png</value>
<value condition="String.EndsWith(ListItem.Filename,.3d.sbs.disc) | [[!String.EndsWith(ListItem.Filename,.4K.mkv) + !String.EndsWith(ListItem.Filename,.4K.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,1080)]">case1080-3D.png</value>
<value condition="String.EndsWith(ListItem.Filename,.4K.mkv) | String.EndsWith(ListItem.Filename,.4K.disc) | [[Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem.VideoResolution,2160)]">case4K.png</value>
</variable>
...
Die neue Variable 'MovieCase(n)' ist identisch zu 'MovieCase'. Der einzige Unterschied ist die Nummer (n):
'MovieCase': "... ListItem. ..."
'MovieCase(n)': "... ListItem(n). ..."
...
<variable name="MovieCase(0)">
<value condition="String.EndsWith(ListItem(0).Filename,.rec) | String.EndsWith(ListItem(0).Filename,.sdtv.ts) | String.EndsWith(ListItem(0).Filename,.hdtv.ts) | String.EndsWith(ListItem(0).Filename,.sdtv.mp4) | String.EndsWith(ListItem(0).Filename,.mpg) | String.EndsWith(ListItem(0).Filename,.avi) | [[!String.EndsWith(ListItem(0).Filename,.4K.mkv) + !String.EndsWith(ListItem(0).Filename,.4K.disc) + !String.EndsWith(ListItem(0).Filename,.3d.sbs.disc) + !String.EndsWith(ListItem(0).Filename,.blu-ray.disc) + !String.IsEqual(ListItem(0).Filename,index.bdmv) + !String.EndsWith(ListItem(0).Filename,.blu-ray.mp4) + !String.EndsWith(ListItem(0).Filename,.blu-ray.mkv) + !String.EndsWith(ListItem(0).Filename,.iso) + !String.EndsWith(ListItem(0).Filename,.mov) + !String.IsEqual(ListItem(0).Filename,VIDEO_TS.IFO)] + [Container.Content(Episodes) | Container.Content(MusicVideos)] + [String.IsEqual(ListItem(0).VideoResolution,480) | String.IsEqual(ListItem(0).VideoResolution,540) | String.IsEqual(ListItem(0).VideoResolution,576)]]">case-tv.png</value>
<value condition="String.IsEqual(ListItem(0).Filename,VIDEO_TS.IFO) | [[!String.EndsWith(ListItem(0).Filename,.4K.mkv) + !String.EndsWith(ListItem(0).Filename,.4K.disc) + !String.EndsWith(ListItem(0).Filename,.3d.sbs.disc) + !String.EndsWith(ListItem(0).Filename,.blu-ray.disc) + !String.IsEqual(ListItem(0).Filename,index.bdmv) + !String.EndsWith(ListItem(0).Filename,.blu-ray.mp4) + !String.EndsWith(ListItem(0).Filename,.blu-ray.mkv) + !String.EndsWith(ListItem(0).Filename,.iso) + !String.EndsWith(ListItem(0).Filename,.mov)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + [String.IsEqual(ListItem(0).VideoResolution,480) | String.IsEqual(ListItem(0).VideoResolution,540) | String.IsEqual(ListItem(0).VideoResolution,576)]]">case576.png</value>
<value condition="String.IsEqual(ListItem(0).Filename,index.bdmv) | String.EndsWith(ListItem(0).Filename,.blu-ray.mp4) | String.EndsWith(ListItem(0).Filename,.blu-ray.mkv) | String.EndsWith(ListItem(0).Filename,.blu-ray.disc) | String.EndsWith(ListItem(0).Filename,.iso) | String.EndsWith(ListItem(0).Filename,.mov) | [[!String.EndsWith(ListItem(0).Filename,.4K.mkv) + !String.EndsWith(ListItem(0).Filename,.4K.disc) + !String.EndsWith(ListItem(0).Filename,.3d.sbs.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem(0).VideoResolution,1080)]">case1080.png</value>
<value condition="String.EndsWith(ListItem(0).Filename,.3d.sbs.disc) | [[!String.EndsWith(ListItem(0).Filename,.4K.mkv) + !String.EndsWith(ListItem(0).Filename,.4K.disc)] + [Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem(0).VideoResolution,1080)]">case1080-3D.png</value>
<value condition="String.EndsWith(ListItem(0).Filename,.4K.mkv) | String.EndsWith(ListItem(0).Filename,.4K.disc) | [[Container.Content(Movies) | Window.IsVisible(VideoPlaylist)] + String.IsEqual(ListItem(0).VideoResolution,2160)]">case4K.png</value>
</variable>
...
Meine Antwort #2 hätte ich auch editieren können aber um zu vermeiden, dass einige jetzt die [definition='2','1']advancedsettings[/definition].xml wegen DVDs bearbeiten, möchte ich die Sache richtigstellen.
Beim weiteren Testen ist mir aufgefallen, die Ursache waren nicht gelöschte Einträge in der Datenbank!
Ein Eintrag in der [definition='2','1']advancedsettings[/definition].xml für DVDs ist NICHT notwendig!
Hintergrund:
Im DVD-Testfilm wurde die Videodatei mit DVD-Dateien ausgetauscht. Diese Art von Manipulation verträgt Kodi überhaupt nicht.
Film oder Quelle löschen hilft dann nicht mehr. Es bleiben selbst in der Tabelle movie Einträge zurück.
Das hat dann zur falschen Anzeige bei DVDs geführt.
Lösung:
Quelle entfernen, Kodi schließen und die zwei Datenbankdateien:
- MyVideos116.db
- Textures13.db (nicht sicher, hab sie aber vorsichtshalber gelöscht)
... löschen. Danach wird die Datenbank 100% sauber aufgebaut.
Mit diesem Eintrag in der [definition='2','1']advancedsettings[/definition].xml hat es jetzt geklappt:
...
<folderstacking>
<!-- <cd/dvd/disk/disc> <0-N> -->
<regexp>((cd|dvd|dis[ck])[0-9]+)$</regexp>
</folderstacking>
...
Diese Einstellungen wurden genutzt:
---- Inhalt festlegen ----
- Dieser Ordner beinhaltet [Filme]
- Bitte Informationsquelle auswählen [Local information only]
---- Inhalt-Scanning-Einstellungen ----
- Filme liegen in getrennten Ordnern, die dem Filmtitel entsprechen [x]
- Rekursives Scannen [ ]
- Ordner enthält ein einziges Video [ ]
- Pfad von Aktualisierungen der Bibliothek ausschließen [ ]
- Medien > Videos > Dateien > Geteilte Videostücke verknüpfen [ ]
Leider gibt es keinen Verweis im Wiki: Naming video files/Movies
... dass man anscheinend seit "Leia" unbedingt diesen Eintrag in der [definition='2','1']advancedsettings[/definition].xml haben muss. Es steht etwas von "...enable Recursive lookup..." was aber gar nicht notwendig ist.
Für Kodi Anfänger dürfte das ziemlich frustrierend sein, wenn sie auf dieses Problem stoßen.
Hallo liebe Community,
zum Glück bin ich mit der Live Umgebung noch nicht nach "Leia" gewechselt, da ich jetzt auf ein Problem in der Testumgebung gestoßen bin.
DVDs (mit VIDEO_TS Dateien) lassen sich nicht mehr richtig einlesen. Der Film erscheint dann in der Bibliothek mehrmals (je nach Anzahl der VIDEO_TS Dateien).
- beim Einlesen wurde "Rekursives Scannen" -> aktiviert.
- Medien > Videos > Dateien > Geteilte Videostücke verknüpfen -> aktiviert
- Die Quelle wurde jedesmal gelöscht und wieder neu eingelesen.
Zwei Ordnerstrukturen wurden getestet unter Kodi 18.4 ohne Erfolg:
1. <Filmname (YYYY)> (Filmordner)
--> VIDEO_TS.IFO (und alle anderen DVD Dateien)
--> VIDEO_TS.nfo
--> poster.jpg
--> fanart.jpg
--> VIDEO_TS-trailer.avi
--> .actors (Unterordner von Filmordner)
--> --> Vorname_Nachname.jpg
--> extrafanart (Unterordner von Filmordner)
--> --> fanart1.jpg
--> --> fanart2.jpg
2. <Filmname (YYYY)> (Filmordner)
--> poster.jpg
--> fanart.jpg
--> VIDEO_TS (Unterordner von Filmordner)
--> --> VIDEO_TS.IFO (und alle anderen DVD Dateien)
--> --> VIDEO_TS.nfo
--> --> VIDEO_TS-trailer.avi
--> --> .actors (Unterordner von VIDEO_TS)
--> --> --> Vorname_Nachname.jpg
--> --> extrafanart (Unterordner von VIDEO_TS)
--> --> --> fanart1.jpg
--> --> --> fanart2.jpg
Bei Blue-ray Dateien mit BDMV Ordner gibt es merkwürdigerweise keine Probleme.
Als Lösung die DVDs in eine mkv/iso zu packen ist ein No-Go für mich. Die Zeit und Lust hab ich nicht.
Ist das (immer noch) ein Bug? Gibt es vielleicht einen workaround via [definition='2','1']advancedsettings[/definition].xml? Oder hab ich einfach ein neues setting übersehen?
SkyBird1980 war schneller.
Genau das wollte ich auch schreiben.
Wenn man 5672 Filme hat und das SELECT Ergebnis spuckt 173.420 Einträge (Filme) aus sollte man stutzig werden.
Wobei bei mir funktioniert es auch gar nicht. Mein Ergebnis (ohne "WHERE movie.idFile = files.idFile") ist null.
Das kann mit dem 'playcountminimumpercent' zusammenhängen. Der default Wert ist sehr gering, so dass ich es bei mir auf 90% gesetzt habe.
[definition='2','1']advancedsettings[/definition].xml
<[definition='2','1']advancedsettings[/definition]>
<video>
<playcountminimumpercent>90</playcountminimumpercent>
</video>
</[definition='2','1']advancedsettings[/definition]>
Sobald ein Video angespielt wird erscheint ein Eintrag unter 'files.lastPlayed'.
Der Eintrag '1' wird dann erst ab 90% unter 'files.playCount' gesetzt.
Das kann bedeuten, dass einige Filme wurden gestartet aber nicht zu Ende gesehen oder es wurde schnell wieder abgebrochen.
Natürlich könnte man auch nach 'files.lastPlayed' filtern:
Hallo @helmuel,
die View z.B. 'Filme_gesehen' könnte so aussehen:
DROP VIEW IF EXISTS Filme_gesehen;
CREATE VIEW Filme_gesehen AS
SELECT movie.c22 AS Pfad, movie.c00 AS Filmtitel, files.playCount AS gesehen
FROM movie, files
WHERE movie.idFile = files.idFile
AND files.playCount >= 1;
Diesen SQL Befehl einfach unter dem tab 'SQL ausführen' eingeben und laufen lassen.
Das müsste 'Runaway Train' sein (Deutscher Titel: 'Express in die Hölle').
Falls richtig, geb ich weiter.
Hier ist noch der code von den statischen FSK-icons, falls du es für andere Anpassungen benötigst.
Wie unter #4 vermutet, scheint es mit "substring" nicht mehr zu funktionieren und man muss "String.Contains" verwenden.
...\AppData\Roaming\Kodi\addons\skin.confluence\720p\ViewsVideoLibrary.xml.xml
...
<control type="image">
<visible>String.Contains(ListItem.Mpaa,Germany:12)</visible>
<left>423</left>
<top>290</top>
<width>50</width>
<aspectratio>keep</aspectratio>
<texture>special://skin/media/flagging/ratings/fsk_12.png</texture>
</control>
...
...\AppData\Roaming\Kodi\addons\skin.confluence\720p\DialogVideoInfo.xml
...
<control type="image">
<visible>String.Contains(ListItem.Mpaa,Germany:12)</visible>
<left>590</left>
<top>275</top>
<width>50</width>
<aspectratio>keep</aspectratio>
<texture>special://skin/media/flagging/ratings/fsk_12.png</texture>
</control>
...
Punkt 4:
Also das Feld Originaltitel wird nicht angezeigt. Scheint alles okay zu sein.
Punkt 5 (FSK icon in Serienübersicht):
FSK icon sollte mit der Vorgehensweise aus #10 auch funktionieren. Code muss dann halt unter Serien eingebaut werden.
Punkt 6 (FSK icon in Serieninformationen):
- FSK icon sollte mit der Vorgehensweise aus #10 auch funktionieren. Code muss dann halt unter Serieninfo eingebaut werden.
- mit meiner Testserie werden nur 6 Felder angezeigt. Aber der Platz sollte auch für 8 Felder locker ausreichen, sodass 'Bewertung' nicht in die Inhaltsbeschreibung rutscht.
Gruß
Hallo @guenniguenzelsen,
habe erstmal versucht die statische Anordnung der FSK icons anzupassen und ohne deine alte DialogVideoInfo.xml aus #5 hätte ich das nie geschafft.
Danach hab ich wie immer mit "trial and error" etwas dynamisches versucht und hatte Glück.
Folgender code wurde unter Kodi 18.3 (Confluence 4.6.3) getestet.
Zuerst die 5 Zeilen für "fsk_<x>" in der Variable "rating" anlegen.
...\AppData\Roaming\Kodi\addons\skin.confluence\720p\Includes.xml
...
<variable name="rating">
<value condition="String.Contains(listitem.mpaa,Rated G)">mpaa_general</value>
<value condition="String.Contains(listitem.mpaa,Rated PG-13)">mpaa_pg13</value>
<value condition="String.Contains(listitem.mpaa,Rated PG)">mpaa_pg</value>
<value condition="String.Contains(Listitem.mpaa,Rated R)">mpaa_restricted</value>
<value condition="String.Contains(Listitem.mpaa,Rated NC)">mpaa_nc17</value>
<value condition="String.Contains(Listitem.mpaa,Rated NR)">mpaa_notrated</value>
<value condition="String.Contains(Listitem.mpaa,Not Rated)">mpaa_notrated</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:0)">fsk_0</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:6)">fsk_6</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:12)">fsk_12</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:16)">fsk_16</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:18)">fsk_18</value>
</variable>
...
Alles anzeigen
Punkt 2 (FSK icon in Filmübersicht [Ansicht: Medieninformationen 2]):
Zeile "VideoMPAAFlaggingConditions" anlegen.
...\AppData\Roaming\Kodi\addons\skin.confluence\720p\ViewsVideoLibrary.xml.xml
...
<control type="grouplist">
<description>Media Codec Flagging Images</description>
<left>0</left>
<top>365</top>
<width>530</width>
<align>center</align>
<itemgap>2</itemgap>
<orientation>horizontal</orientation>
<include>VideoCodecFlaggingConditions</include>
<include>AudioCodecFlaggingConditions</include>
<include>AudioChannelsFlaggingConditions</include>
<include>AspectCodecFlaggingConditions</include>
<include>VideoStereoscopicsFlaggingConditions</include>
<include>VideoTypeHackFlaggingConditions</include>
<include>VideoMPAAFlaggingConditions</include> <!-- neue Zeile [Zeilennummer: 1182] fuer dynamische FSK icons -->
</control>
...
Alles anzeigen
Punkt 3 (FSK icon in Filminformationen):
Zeile "VideoMPAAFlaggingConditions" anlegen.
...\AppData\Roaming\Kodi\addons\skin.confluence\720p\DialogVideoInfo.xml
...
<control type="grouplist">
<description>Media Codec Flagging Images</description>
<left>200</left>
<top>480</top>
<width>600</width>
<align>left</align>
<itemgap>2</itemgap>
<orientation>horizontal</orientation>
<include>VisibleFadeEffect</include>
<visible>!Control.IsVisible(50) + [String.IsEqual(ListItem.DBTYPE,movie) | String.IsEqual(ListItem.DBTYPE,episode) | String.IsEqual(ListItem.DBTYPE,musicvideo)]</visible>
<include>VideoCodecFlaggingConditions</include>
<include>AudioCodecFlaggingConditions</include>
<include>AudioChannelsFlaggingConditions</include>
<include>AspectCodecFlaggingConditions</include>
<include>VideoStereoscopicsFlaggingConditions</include>
<include>VideoTypeHackFlaggingConditions</include>
<include>VideoMPAAFlaggingConditions</include> <!-- neue Zeile fuer dynamische FSK icons -->
</control>
...
Alles anzeigen
Schon lustig die Anpassungen für das dynamische sind nur ein Bruchteil gegenüber der statischen Anordnung.
Hallo @Hocico,
hab die Ursache gefunden. "substring" scheint in der Includes_Variables.xml nicht mehr zu funktionieren, nutze jetzt "String.Contains".
Folgender code wurde unter Kodi 18.3 (Transparency! 11.0.8) getestet.
...\AppData\Roaming\Kodi\addons\skin.transparency\1080p\Includes_Variables.xml
...
<variable name="IncludesMediaFlagsVideoRatingColors">
<value condition="String.IsEmpty(ListItem.Mpaa)">white</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:0 | String.Contains(ListItem.Mpaa,Germany:o.Al.)">white</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:6)">ColFSK6</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:12)">ColFSK12</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:16)">ColFSK16</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:18)">ColFSK18</value>
</variable>
<variable name="IncludesMediaFlagsVideoRating">
<value condition="String.Contains(ListItem.Mpaa,Germany:0) | String.Contains(ListItem.Mpaa,Germany:o.Al.)">flags/movies/rating/fsk0.png</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:6)">flags/movies/rating/fsk6.png</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:12)">flags/movies/rating/fsk12.png</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:16)">flags/movies/rating/fsk16.png</value>
<value condition="String.Contains(ListItem.Mpaa,Germany:18)">flags/movies/rating/fsk18.png</value>
</variable>
...
Alles anzeigen
Die USA ratings wurden entfernt, da ich sowieso keine Filme/Trailer mit diesem rating habe.
Die Zeile ...
... nutze ich für Trailer die noch kein rating (not rated) haben, dann wird "NR" angezeigt.
Weiterhin viel Spaß mit den bunten FSK flags.
Hallo @guenniguenzelsen,
Zu Punkt 2 und 6:
kann es sein, daß du folgendes nutzt?:
Beim Skin Transparency musste ich jetzt "String.Contains" verwenden:
Hallo @Hocico,
Sorry das ich mich erst jetzt melde.
Werde meine Testumgebung auf Kodi 18 wechseln und dann mal kucken.
Zitat von PonyriemenDann wäre ein Beamer, der weiter weg hängt, ... vielleicht ein Plan.
Aber ich dachte du willst keinen Stress mit den langen Kabeln. Das HDMI Signal kann man vielleicht via Funk übertragen aber es bleibt immer noch der Stromkabel.
Hast du dir den LG mal angekuckt, der ist nicht größer als ein Karton für Kinderschuhe. Preislich sind sie (LED Beamer) auch nicht viel teurer als ein guter TV (okay es fehlt natürlich noch eine vernünftige Leinwand)
Die LED Beamer gibt es auch zum an die Decke hängen.
Zitat von Ponyriemen... das Bild würde ich auch nicht grösser als 1,5m in der Diagonale ziehen
Aber wenn bei dir bei 1,5 m Diagonale (60'') Schluss ist, macht ein Beamer sowieso keinen Sinn.