Converter: Subtitle, Serien- und Episodennummer, FSK mit und ohne EPGShare

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • @vuplus851130
      Sieht irgendwie nach einem Fehler in der Image.py aus.
      Weiß nicht was du da und mit welchem Tool angepasst hast oder einen kopie/paste Fehler drinnen hast.
      Kopier dir den Inhalt nochmal neu aus dem GIT und dann in die .py
      Skin: [ linearFHD ] - [ iFlatFHD ] - Anpassungen: [ linearFHD ] - [ iFlatFHD ]
    • Ja, dachte ich ja auch, aber wenn ich das </widget> so eintrage wie Du es beschreibst, bleibt die Box hängen. Ich blick da nicht mehr durch. Irgendetwas übersehe ich......
      "Wozu Socken, sie schaffen nur Löcher"
      A. Einstein

      Kein Support via E-Mail! No email support!
    • ich hab die jetzt manuell angepasst stand irgend n quatsch drinne.
      aber die box crasht immer noch

      wo muss jetzt genau welche datei rein
      und muss noch irendetwas gemacht werden??

      so sieht die datei bei mir aus

      Quellcode: MetrixReloadedEventImage.py

      1. # -*- coding: utf-8 -*-
      2. import json
      3. import os
      4. import time
      5. import base64
      6. import re
      7. import urllib
      8. import skin
      9. from Components.config import config
      10. from Components.Sources.Event import Event
      11. from enigma import eLabel, ePixmap, ePoint, eSize, eTimer, eWidget, loadJPG, loadPNG
      12. from Renderer import Renderer
      13. from skin import parseColor, parseFont
      14. from twisted.web.client import downloadPage, getPage
      15. from Components.Sources.ExtEvent import ExtEvent
      16. from Components.Sources.ServiceEvent import ServiceEvent
      17. from Tools.MetrixReloadedHelper import getDataFromDatabase, getExtraData, getDefaultImage, getEventImage, getEpgShareImagePath, getChannelName, createPosterPaths, isOnlineMode, isDownloadPoster, getPosterDircetory, initializeLog
      18. from Components.Converter.MetrixReloadedExtEventEPG import MetrixReloadedExtEventEPG
      19. import logging
      20. class MetrixReloadedEventImage(Renderer):
      21. DOWNOAD_IMAGE = "DOWNOAD_IMAGE"
      22. SHOW_IMAGE = "SHOW_IMAGE"
      23. DOWNLOAD_POSTER_INFOS = "DOWNLOAD_POSTER_INFOS"
      24. DOWNLOAD_POSTER_SERIES = "DOWNLOAD_POSTER_SERIES"
      25. DOWNLOAD_POSTER_MOVIE = "DOWNLOAD_POSTER_MOVIE"
      26. IMAGE = "Image"
      27. POSTER = "Poster"
      28. tmDbApiKey = "8789cfd3fbab7dccf1269c3d7d867aff"
      29. def __init__(self):
      30. Renderer.__init__(self)
      31. # Log initialisieren
      32. self.log = initializeLog("MetrixReloadedEventImage")
      33. self.logPrefix = ""
      34. self.eventid = None
      35. self.downloads = []
      36. self.name = ''
      37. self.id = None
      38. self.picname = ''
      39. self.imageheight = 0
      40. self.smallptr = False
      41. self.labeltop = 0
      42. self.scaletype = 2
      43. self.imageType = self.IMAGE
      44. self.WCover = self.HCover = self.TCover = self.LCover = self.WPreview = self.HPreview = self.TPreview = self.LPreview = 0
      45. return
      46. GUI_WIDGET = eWidget
      47. def applySkin(self, desktop, screen):
      48. if (isinstance(screen.skinName, str)):
      49. self.screenName = screen.skinName
      50. else:
      51. self.screenName = ', '.join(screen.skinName)
      52. if self.skinAttributes:
      53. attribs = []
      54. for attrib, value in self.skinAttributes:
      55. if attrib == 'size':
      56. attribs.append((attrib, value))
      57. x, y = value.split(',')
      58. self.WCover, self.HCover = int(x), int(y)
      59. self.labeltop = int(self.HCover * 0.64)
      60. elif attrib == 'foregroundColor':
      61. self.fg = parseColor(str(value))
      62. elif attrib == 'scale':
      63. self.scaletype = int(value)
      64. elif attrib == 'backgroundColor':
      65. attribs.append((attrib, value))
      66. self.bg = parseColor(str(value))
      67. elif attrib == 'imageType':
      68. self.imageType = value
      69. else:
      70. attribs.append((attrib, value))
      71. self.skinAttributes = attribs
      72. self.image.resize(eSize(self.WCover, self.HCover))
      73. self.labelheight = self.HCover - (10 + self.labeltop)
      74. self.text.resize(
      75. eSize(self.WCover, self.HCover - (10 + self.labeltop)))
      76. self.test_label.resize(
      77. eSize(self.WCover, self.HCover - (10 + self.labeltop)))
      78. self.text.move(ePoint(0, self.labeltop + 10))
      79. self.text.setVAlign(eLabel.alignTop)
      80. self.test_label.setVAlign(eLabel.alignTop)
      81. self.text.setHAlign(eLabel.alignCenter)
      82. self.test_label.setHAlign(eLabel.alignCenter)
      83. self.test_label.setNoWrap(0)
      84. self.test_label.hide()
      85. self.text.setBackgroundColor(self.bg)
      86. self.text.setForegroundColor(self.fg)
      87. self.text.setTransparent(1)
      88. ret = Renderer.applySkin(self, desktop, screen)
      89. return ret
      90. def changed(self, what):
      91. try:
      92. if not self.instance:
      93. return
      94. # self.hideimage()
      95. if hasattr(self.source, 'getEvent'):
      96. # source is 'extEventInfo'
      97. event = self.source.getEvent()
      98. else:
      99. # source is 'ServiceEvent' / 'ExtEvent'
      100. event = self.source.event
      101. # Prüfen ob event tuple ist
      102. if (isinstance(event, tuple)):
      103. event = event[0]
      104. if event is None:
      105. self.hideimage()
      106. self.eventid = None
      107. self.instance.hide()
      108. return
      109. if what[0] == self.CHANGED_CLEAR:
      110. self.hideimage()
      111. self.eventid = None
      112. if what[0] != self.CHANGED_CLEAR:
      113. self.logPrefix = "[%s, %s, %s] " % (self.screenName, type(
      114. self.source).__name__, getChannelName(self.source))
      115. if event:
      116. if hasattr(self.source, 'getEvent'):
      117. eventid = self.source.getEventId()
      118. else:
      119. eventid = event.getEventId()
      120. self.smallptr = False
      121. startTime = event.getBeginTime()
      122. title = event.getEventName()
      123. # Default Image aus Folder 'Default' über Title
      124. defaultImage = getDefaultImage(self, title)
      125. if (defaultImage != None and self.imageType == self.IMAGE):
      126. self.log.debug(
      127. "%schanged: load default image for '%s'", self.logPrefix, title)
      128. self.smallptr = True
      129. self.image.setPixmap(loadJPG(defaultImage))
      130. self.image.setScale(self.scaletype)
      131. self.showimage()
      132. return
      133. # ExtraDaten aus db holen
      134. values = self.deserializeJson(
      135. getExtraData(self.source, self.log, self.logPrefix))
      136. try:
      137. if(self.imageType == self.IMAGE):
      138. if(values != None and len(values) > 0 and eventid):
      139. # EpgShare Daten sind vorhanden
      140. if eventid != self.eventid:
      141. self.id = str(values['id'])
      142. sizedImage = getEventImage(self,
      143. startTime, self.id, self.log, self.logPrefix, True)
      144. if (sizedImage != None):
      145. # Image mit size des Widgets laden, sofern verfügbar
      146. self.log.debug(
      147. "%schanged: load local image for '%s' (size: %sx%s)", self.logPrefix, title, self.WCover, self.HCover)
      148. self.image.setPixmap(
      149. loadJPG(sizedImage))
      150. self.image.setScale(self.scaletype)
      151. self.showimage()
      152. return
      153. else:
      154. # Image downloaden
      155. if(isOnlineMode()):
      156. self.downloadImage(
      157. str(values['id']), int(startTime), event)
      158. # Bild bis Download abgeschlossen ist
      159. self.showSmallImage(
      160. startTime, self.id)
      161. else:
      162. self.showSmallImage(
      163. startTime, self.id)
      164. self.log.debug(
      165. "%schanged: image: online mode is deactivated", self.logPrefix)
      166. else:
      167. self.hideimage()
      168. elif(self.imageType == self.POSTER):
      169. if(isOnlineMode()):
      170. if(isDownloadPoster()):
      171. if(values != None and len(values) > 0 and eventid):
      172. # EpgShareDaten vorhanden
      173. url = str(values['search'])
      174. genre = str(values['categoryName'])
      175. year = str(values['year'])
      176. if (url != '' and genre != ''):
      177. if url.startswith('http://api.themoviedb.org'):
      178. # language und jahr anhängen
      179. if year != None and year != '':
      180. url += '&year=%s' % year
      181. url += '&language=de'
      182. self.downloadPosterInfos(
      183. url, genre, event, event.getEventName(), values)
      184. else:
      185. # keine url und genre in EpgShare Daten vorhanden -> MetrixReloadedExtEventEpg parser benutzen
      186. self.useMetrixReloadedExtEventEpg(
      187. values, event, event.getEventName())
      188. else:
      189. # keine EpgShare Daten vorhanden -> MetrixReloadedExtEventEpg parser benutzen
      190. self.useMetrixReloadedExtEventEpg(
      191. values, event, event.getEventName())
      192. else:
      193. self.log.debug(
      194. "%schanged: poster: download posters is deactivated", self.logPrefix)
      195. self.hideimage()
      196. else:
      197. self.log.debug(
      198. "%schanged: poster: online mode is deactivated", self.logPrefix)
      199. self.hideimage()
      200. else:
      201. self.log.warn(
      202. "%schanged: imageType '%s' is unknown!", self.logPrefix, self.imageType)
      203. self.hideimage()
      204. except Exception as e:
      205. self.log.exception(
      206. "%schanged (1): %s", self.logPrefix, str(e))
      207. self.hideimage()
      208. else:
      209. self.hideimage()
      210. except Exception as e:
      211. self.log.exception("%schanged: %s", self.logPrefix, str(e))
      212. self.hideimage()
      213. return
      214. def GUIcreate(self, parent):
      215. self.instance = eWidget(parent)
      216. self.image = ePixmap(self.instance)
      217. self.text = eLabel(self.instance)
      218. self.test_label = eLabel(self.instance)
      219. def showimage(self):
      220. self.instance.show()
      221. self.image.show()
      222. def hideimage(self):
      223. self.labelheight = self.HCover
      224. self.image.hide()
      225. self.text.resize(eSize(self.WCover, self.HCover))
      226. self.text.move(ePoint(0, 0))
      227. def onShow(self):
      228. self.suspended = False
      229. def onHide(self):
      230. self.suspended = True
      231. def useMetrixReloadedExtEventEpg(self, values, event, title, genre=None):
      232. if(genre == None):
      233. # Prüfen ob wir eine Serie sind
      234. episodeNum = MetrixReloadedExtEventEPG(
      235. "EpisodeNum").getEpisodeNum("EpisodeNum", event, values)
      236. if(episodeNum != None):
      237. genre = 'Serien'
      238. self.log.debug("%suseMetrixReloadedExtEventEpg: 'EpisodeNum' exist for '%s' -> using tvdb.com" %
      239. (self.logPrefix, event.getEventName()))
      240. # Genre holen und in 'Serie' oder 'Spielfilm' umwandeln
      241. if(genre == None):
      242. genre = MetrixReloadedExtEventEPG(
      243. "Genre").getGenre("Genre", values, event)
      244. if(genre != None):
      245. self.log.debug("genre: " + genre)
      246. if('serie' in genre.lower() or 'soap' in genre.lower() or 'reihe' in genre.lower()):
      247. self.log.debug("%suseMetrixReloadedExtEventEpg: genre '%s' exist for '%s' -> using tvdb.com" %
      248. (self.logPrefix, genre, event.getEventName()))
      249. genre = 'Serien'
      250. else:
      251. self.log.debug("%suseMetrixReloadedExtEventEpg: genre '%s' exist for '%s' -> using themoviedb.org" %
      252. (self.logPrefix, genre, event.getEventName()))
      253. genre = 'Spielfilm'
      254. else:
      255. # mit tmdb probieren
      256. genre = 'Spielfilm'
      257. if(genre != None):
      258. url = None
      259. # url bauen
      260. if(genre == 'Serien'):
      261. url = "http://thetvdb.com/api/GetSeries.php?seriesname=%s&language=de" % (
      262. urllib.quote(title))
      263. else:
      264. url = "http://api.themoviedb.org/3/search/movie?api_key=%s&query=%s&language=de" % (
      265. self.tmDbApiKey, urllib.quote(title))
      266. # schauen ob Jahr verfügbar
      267. year = MetrixReloadedExtEventEPG(
      268. "Year").getYear("Year", values, event)
      269. if(year != None):
      270. url += '&primary_release_year=%s&year=%s' % (year, year)
      271. self.downloadPosterInfos(url, genre, event, title, values)
      272. else:
      273. self.log.debug("%suseMetrixReloadedExtEventEpg: poster lookup: no url or genre avaiable for '%s'" % (
      274. self.logPrefix, event.getEventName()))
      275. self.hideimage()
      276. def downloadPosterInfos(self, url, genre, event, title, values):
      277. if(isOnlineMode()):
      278. if(url != None):
      279. self.log.debug("%sdownloadPoster: searching online poster for '%s', url: %s",
      280. self.logPrefix, event.getEventName(), url)
      281. getPage(url).addCallback(self.responsePosterInfo, self.DOWNLOAD_POSTER_INFOS,
      282. genre, title, values, event).addErrback(self.reponsePosterError, self.DOWNLOAD_POSTER_INFOS)
      283. else:
      284. self.log.warn("%sdownloadPoster: no url for '%s'",
      285. self.logPrefix, event.getEventName())
      286. def responsePosterInfo(self, data, response, genre, title, values, event):
      287. if (response == self.DOWNLOAD_POSTER_INFOS):
      288. if (genre == 'Serien' or genre == 'Reportage'):
      289. seriesId = re.findall('<seriesid>(.*?)</seriesid>', data, re.I)
      290. if seriesId:
      291. self.downloadPoster(
      292. str(seriesId[0]), self.DOWNLOAD_POSTER_SERIES)
      293. else:
      294. self.log.debug(
      295. "%sresponsePosterInfos: no infos found on tvdb.com for '%s'", self.logPrefix, title)
      296. self.hideimage()
      297. elif genre == 'Spielfilm':
      298. jsonData = json.loads(data)
      299. if(jsonData['results']):
      300. movieId = str(jsonData['results'][0]['id'])
      301. moviePosterPath = str(
      302. jsonData['results'][0]['poster_path'])
      303. if moviePosterPath and movieId:
      304. self.log.debug(
      305. "%sresponsePosterInfos: movieId '%s'", self.logPrefix, movieId)
      306. self.downloadPoster(
      307. movieId, self.DOWNLOAD_POSTER_MOVIE, moviePosterPath)
      308. else:
      309. self.log.debug(
      310. "%sresponsePosterInfos: no infos found on themoviedb.org for '%s', retry with tvdb.com", self.logPrefix, title)
      311. # Nochmal mit tvdb.com probieren
      312. self.useMetrixReloadedExtEventEpg(
      313. values, event, event.getEventName(), 'Serien')
      314. self.hideimage()
      315. else:
      316. self.log.debug(
      317. "%sresponsePosterInfos: no infos found on themoviedb.org for '%s', retry with tvdb.com", self.logPrefix, title)
      318. # Nochmal mit tvdb.com probieren
      319. self.useMetrixReloadedExtEventEpg(
      320. values, event, event.getEventName(), 'Serien')
      321. self.hideimage()
      322. def downloadPoster(self, id, posterTyp, moviePosterPath=None):
      323. if(posterTyp == self.DOWNLOAD_POSTER_SERIES):
      324. posterFileName = os.path.join(getPosterDircetory() + 'series/', id + ".jpg")
      325. # Prüfen ob bereits herunter geladen
      326. if (os.path.exists(posterFileName)):
      327. self.log.debug(
      328. "%sdownloadPoster: poster for seriesId '%s' exist local", self.logPrefix, id)
      329. self.image.setPixmap(loadJPG(posterFileName))
      330. self.image.setScale(self.scaletype)
      331. self.showimage()
      332. else:
      333. posterUrl = 'https://www.thetvdb.com/banners/posters/%s-1.jpg' % id
      334. self.log.debug(
      335. "%sdownloadPoster: download poster for seriesId '%s', url: %s", self.logPrefix, id, posterUrl)
      336. downloadPage(posterUrl, posterFileName).addCallback(self.responsePosterDownload, self.DOWNLOAD_POSTER_SERIES,
      337. id, posterFileName).addErrback(self.reponsePosterError, self.DOWNLOAD_POSTER_SERIES)
      338. elif(posterTyp == self.DOWNLOAD_POSTER_MOVIE):
      339. posterFileName = os.path.join(getPosterDircetory() + 'movies/', id + ".jpg")
      340. # Prüfen ob bereits herunter geladen
      341. if (os.path.exists(posterFileName)):
      342. self.log.debug(
      343. "%sdownloadPoster: poster for movieId '%s' exist local", self.logPrefix, id)
      344. self.image.setPixmap(loadJPG(posterFileName))
      345. self.image.setScale(self.scaletype)
      346. self.showimage()
      347. else:
      348. posterUrl = 'http://image.tmdb.org/t/p/w500%s' % moviePosterPath
      349. self.log.debug(
      350. "%sdownloadPoster: download poster for movieId '%s', url: %s", self.logPrefix, id, posterUrl)
      351. downloadPage(posterUrl, posterFileName).addCallback(self.responsePosterDownload, self.DOWNLOAD_POSTER_MOVIE,
      352. id, posterFileName).addErrback(self.reponsePosterError, self.DOWNLOAD_POSTER_MOVIE)
      353. def responsePosterDownload(self, data, response, id, posterFileName):
      354. if (response == self.DOWNLOAD_POSTER_SERIES):
      355. self.log.debug(
      356. "%sresponsePoster: download poster for seriesId '%s' successful", self.logPrefix, id)
      357. if (response == self.DOWNLOAD_POSTER_MOVIE):
      358. self.log.debug(
      359. "%sresponsePoster: download poster for movieId '%s' successful", self.logPrefix, id)
      360. if(response == self.DOWNLOAD_POSTER_SERIES or response == self.DOWNLOAD_POSTER_MOVIE):
      361. if (os.path.exists(posterFileName)):
      362. self.image.setPixmap(loadJPG(posterFileName))
      363. self.image.setScale(self.scaletype)
      364. self.showimage()
      365. def downloadImage(self, eventId, startTime, event):
      366. self.log.debug("%sdownloadImage: searching online image for '%s'",
      367. self.logPrefix, event.getEventName())
      368. url = 'http://capi.tvmovie.de/v1/broadcast/%s?fields=images.id,previewImage.id' % str(
      369. eventId)
      370. getPage(url).addCallback(self.response, self.DOWNOAD_IMAGE, eventId, startTime,
      371. event).addErrback(self.responseError, self.DOWNOAD_IMAGE, startTime)
      372. def response(self, data, response, eventId, startTime, event):
      373. # Antwort für Async Task
      374. size = '_%s_%s' % (str(self.WCover), str(self.HCover))
      375. path = os.path.join(getEpgShareImagePath(self), str(
      376. time.strftime('%D', time.localtime(startTime))).replace('/', '.'))
      377. imageFileName = '%s/%s%s.jpg' % (path, eventId, size)
      378. if (response == self.DOWNOAD_IMAGE):
      379. # Image downloaden
      380. try:
      381. values = self.deserializeJson(data)
      382. if(values != None and len(values) > 0):
      383. # Images sind verfügbar
      384. url = None
      385. if 'previewImage' in values:
      386. url = str(values['previewImage']['id'])
      387. elif 'images' in values:
      388. url = str(values['images'][0]['id'])
      389. if (url != None):
      390. # Images sind zum download verfügbar
      391. url = 'http://images.tvmovie.de/%sx%s/Center/%s' % (
      392. str(self.WCover), str(self.HCover), url)
      393. # Image downloaden
      394. self.log.debug("%schanged: download image for '%s' (size: %sx%s)",
      395. self.logPrefix, event.getEventName(), self.WCover, self.HCover)
      396. downloadPage(url, imageFileName).addCallback(
      397. self.response, self.SHOW_IMAGE, eventId, startTime, event).addErrback(self.responseError, response, startTime)
      398. else:
      399. # Kein Bild zum donwload vorhanden, auf Platte zurück greifen
      400. self.log.debug(
      401. "%schanged: no online image exist for '%s'", self.logPrefix, event.getEventName())
      402. self.showSmallImage(startTime, eventId)
      403. # TODO: Hier noch als alternative wenn Daten nicht vefügbar sind, smallImage von Platte laden
      404. except Exception as e:
      405. self.log.exception(
      406. "%sresponse: [%s] %s", self.logPrefix, response, str(e))
      407. self.hideimage()
      408. if (response == self.SHOW_IMAGE):
      409. # Image wurde heruntergeladen -> anzeigen
      410. try:
      411. if (os.path.exists(imageFileName)):
      412. if (eventId == self.id):
      413. self.log.debug("%schanged: load downloaded image for '%s' (size: %sx%s)",
      414. self.logPrefix, event.getEventName(), self.WCover, self.HCover)
      415. self.image.setPixmap(loadJPG(imageFileName))
      416. self.image.setScale(self.scaletype)
      417. self.showimage()
      418. else:
      419. # Kein Bild vorhanden, auf Platte zurück greifen
      420. self.showSmallImage(startTime, eventId)
      421. except Exception as e:
      422. self.log.exception(
      423. "%sresponse: [%s] %s", self.logPrefix, response, str(e))
      424. self.hideimage()
      425. def responseError(self, e, response, startTime):
      426. self.log.exception(
      427. "%sresponse: [%s] %s", self.logPrefix, response, str(e))
      428. self.showSmallImage(startTime, self.id)
      429. def reponsePosterError(self, e, response):
      430. self.log.exception(
      431. "%sresponse: [%s] %s", self.logPrefix, response, str(e))
      432. self.hideimage()
      433. def showSmallImage(self, startTime, eventId):
      434. smallImage = getEventImage(
      435. self, startTime, eventId, self.log, self.logPrefix)
      436. if (smallImage != None):
      437. # Bild bis Download abgeschlossen ist
      438. self.image.setPixmap(loadJPG(smallImage))
      439. self.image.setScale(self.scaletype)
      440. self.showimage()
      441. else:
      442. self.hideimage()
      443. def deserializeJson(self, data):
      444. # Daten aus DB deserializieren
      445. try:
      446. if str(data) != '':
      447. return json.loads(data)
      448. except Exception as e:
      449. self.log.exception("%sdeserializeJson: %s", self.logPrefix, str(e))
      450. return None
      Alles anzeigen


      meine converter sind wie folgt:

      im ordner "Converter" sind
      MetrixReloadedExtEventEPG.py
      MetrixReloadedExtEventEPG_Genre.json

      im ordner "Tools" ist:
      MetrixReloadedHelper.py

      im ordner "Renderer" ist:
      MetrixReloadedEventImage.py

      in meiner IB hab ich das so eingebaut

      <widget backgroundColor="background" foregroundColor="foreground" position="30,293" size="350,492" scale="3" render="MetrixReloadedEventImage" imageType="Poster" source="session.extEvent_Now" transparent="1" zPosition="3" />

      hab ich irgendetwas vergessen?
      Dateien

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von vuplus851130 ()

    • @vuplus851130
      laut deiner log hast du irgendwas an den Dateien geändert oder lädst sie falsch herunter. Am besten MetrixReloaded skin installieren, wenn du nciht wirklich weißt was du da machst

      Quellcode

      1. File "/usr/lib/enigma2/python/Components/Renderer/MetrixReloadedEventImage.py", line 534
      2. return None
      3. SyntaxError: 'return' outside function
      4. (PyObject_CallObject(<bound method Session.processDelay of <__main__.Session instance at 0x9625cf08>>,()) failed)
      5. ]]>
    • habs hinbekommen lag wohl an der helper datei.

      den text den ich markiert habe, möchte ich nur angezeigt haben, wenn ein cover angezeigt wird.
      lässt sich das umsetzen?



      <!-- Cover Anzeige jetzt -->
      <widget backgroundColor="background" foregroundColor="foreground" position="30,340" size="250,392" scale="3" render="MetrixReloadedEventImage" imageType="Poster" source="session.extEvent_Now" transparent="1" zPosition="3" />
      <eLabel backgroundColor="transparent" foregroundColor="foreground2" font="Regular; 36" halign="center" position="30,800" size="150,40" text="Jetzt" transparent="1" zPosition="8" />
      <!-- Cover Anzeige Jetzt END -->
      <!-- Cover Anzeige Gleich -->
      <widget backgroundColor="background" foregroundColor="foreground" position="1600,340" size="250,392" scale="3" render="MetrixReloadedEventImage" imageType="Poster" source="session.extEvent_Next" transparent="1" zPosition="3" />
      <eLabel backgroundColor="transparent" foregroundColor="foreground2" font="Regular; 36" halign="center" position="1660,730" size="150,40" text="Gleich" transparent="1" zPosition="8" />
      <!-- Cover Anzeige Gleich END -->
    • So habe es nach zig Versuchen geschafft. Bei mir geht es nur so, wenn ich den Code exakt an diese Stelle setze:

      Spoiler anzeigen
      <widget source="session.extEvent_Now" backgroundColor="background" font="Regular; 20" foregroundColor="#AEAEAE" halign="left" position="575,914"
      render="VRunningText" options="movetype=running,startpoint=0,direction=left,steptime=50,repeat=5,startdelay=1500,always=0" size="904,26" zPosition="8" transparent="1" valign="top">
      <convert type="MetrixReloadedExtEventEPG">Genre, Country, Year, ParentalRating(FSK: ), Rating(IMDB: ), EpisodeNum, Subtitle(10)</convert>
      </widget>
      <widget backgroundColor="background" foregroundColor="foreground" position="30,500" size="230,323" scale="3"
      render="MetrixReloadedEventImage" imageType="Poster" source="session.extEvent_Now" transparent="1" zPosition="3" />
      <widget source="session.extEvent_Next" backgroundColor="background" font="Regular; 20" foregroundColor="#AEAEAE" halign="left" position="575,990"
      render="VRunningText" options="movetype=running,startpoint=0,direction=left,steptime=50,repeat=5,startdelay=1500,always=0" size="904,24" zPosition="8" transparent="1" valign="top">
      <convert type="MetrixReloadedExtEventEPG">Genre, Country, Year, ParentalRating(FSK: ), Rating(IMDB: ), EpisodeNum, Subtitle(10)</convert>
      </widget>


      Der Code allen eintragen und mit </widget> sozusagen abschließen, funktioniert in diesem Skinpart nicht. Jetzt ist das Ergebnis so, wie ich es haben will:
      1_0_19_EF75_3F9_1_C00000_0_0_0.jpg


      Eine Frage noch zu den Quellen der Cover. kann die im Connverter umgestellt werden? Ich habe gesehen, dass er zig "ausländische" Cover nimmt. Oder kann man das irgendwie priorisieren?
      "Wozu Socken, sie schaffen nur Löcher"
      A. Einstein

      Kein Support via E-Mail! No email support!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hgdo ()

    • Converter sucht nach deutschen covern.
      Wenn ihr Beispiele habt wo das nicht geht, dann bitte posten.
      Am besten davor noch mit den quellen Home :: TheTVDB und The Movie Database (TMDb) abgleichen, ob es da z.b. nur spanische cover gibt, dann kann er auch keine deutschen finden ;)

      Hab nochmal ein bissle optimiert, um den traffic zu reduzieren und ein paar kleinere Bugs gefixt.

      Update der folgenden Datien im Repo:


      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von scrounger ()

    • mit diesen Dateien crasht es wieder!


      ich hab das per copy and Paste mit notepad kopiert.
      kann man die py dateien auch irgendwie laden?

      GitHub - Scrounger/MetrixReloaded: MetrixReloaded ist ein HD Skin für VU+ Receiver mit VTI Image

      komisch wenn ich die converter hierüber über den grünen Button lade, crasht es nicht.
      sind die daten unterschiedlich?

      aber dieses Paket ist ja auch immer aktuell gehalten oder?

      Die simpsons (Pro 7)
      ein käfig voller helden (Kabel1)
      die wilden 70er (CCentral)
      buffy
      ...
      bei ziemlich allen serien deren Original aus USA stammt,
      werden US Cover geladen
      Dateien

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von vuplus851130 ()

    • vuplus851130 schrieb:

      ich hab das per copy and Paste mit notepad kopiert.
      Nimm einen Unix-kompatiblen Editor z.B. Notepad++
      ✂ - - - - - - - - - - - - - - - - - - - - - - - - - -
      Dumm wird man nicht, dumm bleibt man
    • meine Frage aus Post 145 lässt sich das irgendwie umsetzen?

      und ist es irgendwie möglich das sich die Erweiterte Sendungs Beschreibung, FSK Grafik, Sterne Grafik... automatisch aktualisieren,
      so wie die einfache Sendungsbeschreibung ?
      man muss immer hin und her zappen, damit sich das aktualisiert.
    • Deswegen habe ich ja geschrieben, dass Ihr zunächst mal prüfen sollte, ob es bei den Quellen (Home :: TheTVDB und The Movie Database (TMDb) ) überhaupt nen deutsches Cover gibt.

      z.B. gibt es für mc leods töchter bei
      • tmdb nur englisch -> Link
      • tvdb keine cover -> Link


      Da wird es dann ein bissle schwierig nen deutsches Cover zu bekommen ;)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hgdo ()

    • Bin sehr erstaunt, das auch viele Kinderserien-Cover angezeigt werden. Meine Kinder waren sehr erfreut :) .

      Was mir aufgefallen ist, das "Men in Black 2" nicht gefunden wurde.

      Spoiler anzeigen


      2019-05-29 20:05:12,068 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] getDataFromDatabase: ref: 1:0:19:6B:C:85:C00000:0:0:0:, eventId: 12350
      2019-05-29 20:05:12,071 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] useMetrixReloadedExtEventEpg: genre 'Science-Fiction-Komödie' exist for 'Men in Black 2' -> using themoviedb.org
      2019-05-29 20:05:12,072 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] downloadPoster: searching online infos for 'Men in Black 2', url: movie?api_key=8789cfd3fbab7dccf1269c3d7d867aff&query=Men in Black 2&language=de&primary_release_year=2001&year=2001&language=de
      2019-05-29 20:05:12,659 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] responsePosterInfos: no infos found on themoviedb.org for 'Men in Black 2', retry with tvdb.com
      2019-05-29 20:05:12,660 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] downloadPoster: searching online infos for 'Men in Black 2', url: GetSeries.php?seriesname=Men in Black 2&language=de
      2019-05-29 20:05:12,752 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] responsePosterInfos: no infos found on tvdb.com for 'Men in Black 2'
      2019-05-29 20:05:14,214 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] getDataFromDatabase: ref: 1:0:19:6B:C:85:C00000:0:0:0:, eventId: 12350
      2019-05-29 20:05:14,217 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] useMetrixReloadedExtEventEpg: genre 'Science-Fiction-Komödie' exist for 'Men in Black 2' -> using themoviedb.org
      2019-05-29 20:05:14,218 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] downloadPoster: searching online infos for 'Men in Black 2', url: movie?api_key=8789cfd3fbab7dccf1269c3d7d867aff&query=Men in Black 2&language=de&primary_release_year=2001&year=2001&language=de
      2019-05-29 20:05:14,792 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] responsePosterInfos: no infos found on themoviedb.org for 'Men in Black 2', retry with tvdb.com
      2019-05-29 20:05:14,792 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] downloadPoster: searching online infos for 'Men in Black 2', url: GetSeries.php?seriesname=Men in Black 2&language=de
      2019-05-29 20:05:14,868 - MetrixReloadedEventImage: [DEBUG] [InfoBar, extEventInfo, Sky Cinema Hits HD] responsePosterInfos: no infos found on tvdb.com for 'Men in Black 2'



      mfg stub