diff --git a/addon.xml b/addon.xml index 03f8f3c..4aefde4 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/changelog.txt b/changelog.txt index 89dc2bc..e2af1cb 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,7 @@ +0.2.0 + - Add support for Pasch-TV + - Add support for Netzprediger + 0.1.1 - Fix date parsing issue occurring on some platforms diff --git a/resources/language/English/strings.xml b/resources/language/English/strings.xml index 40b86a3..05b5f70 100644 --- a/resources/language/English/strings.xml +++ b/resources/language/English/strings.xml @@ -41,6 +41,16 @@ Germany Massengeschmack-TV is the satirical answer to all the scripted reality shows on the major TV networks. Obviously inspired by “The Office” and “Stromberg”, the series depicts the daily routine at the Alsterfilm studio.[CR][CR]Additionally to the comedy series, certain videos and uncategorized extras about the Massengeschmack network are published under the label “Massengeschmack-TV“, too. + Pasch-TV + Let's Play, Board Game + Germany + Pasch-TV is a magazine in which Holger and guests try one new board game release each episode. + + Netzprediger + Internet, Media + Germany + Netzprediger is an online magazine about the Internet with all its bright and dark sides: fun, fraud, absurdities and much more, uncovered by moderator Nils Beckmann. + All Episodes diff --git a/resources/language/German/strings.xml b/resources/language/German/strings.xml index 1cb9a6e..4b78044 100644 --- a/resources/language/German/strings.xml +++ b/resources/language/German/strings.xml @@ -41,6 +41,16 @@ Deutschland Massengeschmack-TV ist die satirische Antwort auf all die Scripted-Reality-Formate der großen Fernsehsender. Offensichtlich inspiriert von „The Office“ und „Stromberg“, stellt die Serie den Alltag im Alsterfilm-Studio dar.[CR][CR]Zusätzlich zum Comedy-Format werden diverse Videos und unkategorisierte Extras zum Massengeschmack-Portal ebenfalls unter dem Label „Massengeschmack-TV“ veröffentlicht. + Pasch-TV + Let's Play, Brettspiele + Deutschland + Pasch-TV ist ein Magazin, in dem Holger zusammen mit Gästen pro Folge eine Brettspiel-Neuerscheinung ausprobiert. + + Netzprediger + Internet, Medien + Deutschland + Netzprediger ist ein Online-Magazin über das Internet mit all seinen hellen und dunklen Seiten: Spaß, Betrug und Absurditäten, aufgedeckt von Moderator Nils Beckmann. + Alle Folgen diff --git a/resources/lib/datasource.py b/resources/lib/datasource.py index 01fb87e..2b5efde 100644 --- a/resources/lib/datasource.py +++ b/resources/lib/datasource.py @@ -80,6 +80,24 @@ def getListItems(self): ADDON_BASE_PATH + '/resources/media/fanart-' + MGTVDataSource.module + '.jpg', MGTVDataSource.showMetaData ), + # Pasch-TV + ListItem( + PaschTVDataSource.id, + ADDON.getLocalizedString(30240), + resources.lib.assembleListURL(PaschTVDataSource.module), + ADDON_BASE_PATH + '/resources/media/banner-' + PaschTVDataSource.module + '.png', + ADDON_BASE_PATH + '/resources/media/fanart-' + PaschTVDataSource.module + '.jpg', + PaschTVDataSource.showMetaData + ), + # Netzprediger + ListItem( + NetzpredigerDataSource.id, + ADDON.getLocalizedString(30250), + resources.lib.assembleListURL(NetzpredigerDataSource.module), + ADDON_BASE_PATH + '/resources/media/banner-' + NetzpredigerDataSource.module + '.png', + ADDON_BASE_PATH + '/resources/media/fanart-' + NetzpredigerDataSource.module + '.jpg', + NetzpredigerDataSource.showMetaData + ), ] def getContentMode(self): @@ -204,7 +222,7 @@ def getListItems(self): i['title'], resources.lib.assemblePlayURL(i['url'], i['title'], iconimage, metaData, streamInfo), iconimage, - ADDON_BASE_PATH + '/resources/media/fanart-fktv.jpg', + ADDON_BASE_PATH + '/resources/media/fanart-' + self.module + '.jpg', metaData, streamInfo, False @@ -375,7 +393,7 @@ def getListItems(self): i['title'], resources.lib.assemblePlayURL(i['url'], i['title'], iconimage, metaData, streamInfo), iconimage, - ADDON_BASE_PATH + '/resources/media/fanart-ptv.jpg', + ADDON_BASE_PATH + '/resources/media/fanart-' + self.module + '.jpg', metaData, streamInfo, False @@ -461,7 +479,7 @@ def getListItems(self): i['title'], resources.lib.assemblePlayURL(i['url'], i['title'], iconimage, metaData, streamInfo), iconimage, - ADDON_BASE_PATH + '/resources/media/fanart-ps.jpg', + ADDON_BASE_PATH + '/resources/media/fanart-' + self.module + '.jpg', metaData, streamInfo, False @@ -554,7 +572,7 @@ def getListItems(self): i['title'], resources.lib.assemblePlayURL(i['url'], i['title'], iconimage, metaData, streamInfo), iconimage, - ADDON_BASE_PATH + '/resources/media/fanart-mgtv.jpg', + ADDON_BASE_PATH + '/resources/media/fanart-' + self.module + '.jpg', metaData, streamInfo, False @@ -615,6 +633,162 @@ def __getBaseList(self): ) ] +class PaschTVDataSource(DataSource): + id = 4 + module = 'paschtv' + showMetaData = { + 'Title' : ADDON.getLocalizedString(30240), + 'Director' :'Holger Kreymeier,', + 'Genre' : ADDON.getLocalizedString(30241), + 'Premiered':'10.10.2013', + 'Country' : ADDON.getLocalizedString(30242), + 'Plot' : ADDON.getLocalizedString(30243) + } + + def __init__(self): + self.__urls = { + 'hd' : { + 'all' : DataSource._buildFeedURL(self, [1], 'hd'), + }, + 'mobile' : { + 'all' : DataSource._buildFeedURL(self, [1], 'mobile'), + }, + 'audio' : { + 'all' : DataSource._buildFeedURL(self, [1], 'audio'), + } + } + + def getListItems(self): + audioOnly = ADDON.getSetting('content.audioOnly') + + quality = None + if 'true' == audioOnly: + quality = 'audio' + else: + if 0 == int(ADDON.getSetting('content.quality')): + quality = 'hd' + else: + quality = 'mobile' + + data = resources.lib.parseRSSFeed(self.__urls[quality]['all'], True) + listItems = [] + + for i in data: + iconimage = self.__getThumbnailURL(i['guid']) + date = resources.lib.parseUTCDateString(i['pubdate']).strftime('%d.%m.%Y') + metaData = { + 'Title' : i['title'], + 'Genre' : ADDON.getLocalizedString(30241), + 'Date' : date, + 'Premiered' : date, + 'Country' : ADDON.getLocalizedString(30242), + 'Plot' : i['description'], + 'Duration' : int(i['duration']) / 60 + } + streamInfo = { + 'duration' : i['duration'] + } + + listItems.append( + ListItem( + self.id, + i['title'], + resources.lib.assemblePlayURL(i['url'], i['title'], iconimage, metaData, streamInfo), + iconimage, + ADDON_BASE_PATH + '/resources/media/fanart-' + self.module + '.jpg', + metaData, + streamInfo, + False + ) + ) + + return listItems + + def getContentMode(self): + return 'episodes' + + def __getThumbnailURL(self, guid): + return 'http://massengeschmack.tv/img/mag/' + guid + '.jpg' + +class NetzpredigerDataSource(DataSource): + id = 5 + module = 'netzprediger' + showMetaData = { + 'Title' : ADDON.getLocalizedString(30250), + 'Director' :'Holger Kreymeier,', + 'Genre' : ADDON.getLocalizedString(30251), + 'Premiered':'10.10.2013', + 'Country' : ADDON.getLocalizedString(30252), + 'Plot' : ADDON.getLocalizedString(30253) + } + + def __init__(self): + self.__urls = { + 'hd' : { + 'all' : DataSource._buildFeedURL(self, [1], 'hd'), + }, + 'mobile' : { + 'all' : DataSource._buildFeedURL(self, [1], 'mobile'), + }, + 'audio' : { + 'all' : DataSource._buildFeedURL(self, [1], 'audio'), + } + } + + def getListItems(self): + audioOnly = ADDON.getSetting('content.audioOnly') + + quality = None + if 'true' == audioOnly: + quality = 'audio' + else: + if 0 == int(ADDON.getSetting('content.quality')): + quality = 'hd' + else: + quality = 'mobile' + + data = resources.lib.parseRSSFeed(self.__urls[quality]['all'], True) + listItems = [] + + for i in data: + iconimage = self.__getThumbnailURL(i['guid']) + date = resources.lib.parseUTCDateString(i['pubdate']).strftime('%d.%m.%Y') + metaData = { + 'Title' : i['title'], + 'Genre' : ADDON.getLocalizedString(30251), + 'Date' : date, + 'Premiered' : date, + 'Country' : ADDON.getLocalizedString(30252), + 'Plot' : i['description'], + 'Duration' : int(i['duration']) / 60 + } + streamInfo = { + 'duration' : i['duration'] + } + + listItems.append( + ListItem( + self.id, + i['title'], + resources.lib.assemblePlayURL(i['url'], i['title'], iconimage, metaData, streamInfo), + iconimage, + ADDON_BASE_PATH + '/resources/media/fanart-' + self.module + '.jpg', + metaData, + streamInfo, + False + ) + ) + + return listItems + + def getContentMode(self): + return 'episodes' + + def __getThumbnailURL(self, guid): + name = guid[:12] + episode = guid[13:] + return 'http://massengeschmack.tv/img/mag/' + name + episode + '.jpg' + def createDataSource(module=''): """ @@ -622,7 +796,7 @@ def createDataSource(module=''): If left empty, an overview data source will be generated. @type module: str - @keyword module: the magazine name (fktv, ptv, ps, mgtv, ...) + @keyword module: the magazine name (fktv, ptv, ps, mgtv, paschtv, netzprediger) @return: DataSource instance """ if 'fktv' == module: @@ -633,5 +807,9 @@ def createDataSource(module=''): return PSDataSource() elif 'mgtv' == module: return MGTVDataSource() + elif 'paschtv' == module: + return PaschTVDataSource() + elif 'netzprediger' == module: + return NetzpredigerDataSource() else: return DataSource() \ No newline at end of file diff --git a/resources/media/banner-netzprediger.png b/resources/media/banner-netzprediger.png new file mode 100644 index 0000000..78c7285 Binary files /dev/null and b/resources/media/banner-netzprediger.png differ diff --git a/resources/media/banner-paschtv.png b/resources/media/banner-paschtv.png new file mode 100644 index 0000000..7a49510 Binary files /dev/null and b/resources/media/banner-paschtv.png differ diff --git a/resources/media/fanart-netzprediger.jpg b/resources/media/fanart-netzprediger.jpg new file mode 100644 index 0000000..7cd6095 Binary files /dev/null and b/resources/media/fanart-netzprediger.jpg differ diff --git a/resources/media/fanart-paschtv.jpg b/resources/media/fanart-paschtv.jpg new file mode 100644 index 0000000..d0e1621 Binary files /dev/null and b/resources/media/fanart-paschtv.jpg differ