diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..95aac07 --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ +addonprop=$(shell xmlstarlet sel -t -v "$(1)" addon.xml) + +ID=$(call addonprop,"/addon/@id") + +PLUGIN_FILES=addon.xml changelog.txt icon.png LICENSE.txt \ + default.py plus7.py \ + resources/settings.xml \ + resources/language/English/strings.xml \ + resources/language/German/strings.xml \ + resources/language/French/strings.xml + +install: + mkdir -p $(patsubst %,$(HOME)/.xbmc/addons/$(ID)/%,$(dir $(PLUGIN_FILES))) + for file in $(PLUGIN_FILES); do \ + dir=$(dir $$file); \ + cp -v $$file $(HOME)/.xbmc/addons/$(ID)/$$dir/$$file; \ + done + +.PHONY: install diff --git a/default.py b/default.py index 89559fb..026e141 100644 --- a/default.py +++ b/default.py @@ -1,217 +1,139 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -import urllib,urllib2,re,xbmcplugin,xbmcgui,sys,xbmcaddon +import sys +import urllib, urllib2, re +try: + import HTMLParser as htmlparser +except ImportError: + import html.parser as htmlparser +import xbmcplugin, xbmcgui, xbmcaddon +import plus7 pluginhandle = int(sys.argv[1]) settings = xbmcaddon.Addon(id='plugin.video.arte_tv') translation = settings.getLocalizedString -language="" -language=settings.getSetting("language") -if language=="": +language = "" +language = settings.getSetting("language") +if language == "": settings.openSettings() - language=settings.getSetting("language") + language = settings.getSetting("language") -if language=="0": - language="de" -elif language=="1": - language="fr" +if language == "0": + language = "de" +elif language == "1": + language = "fr" -numbers=["10","25","50","100",] -videosPerPage=numbers[int(settings.getSetting("itemsPerPage"))] +hp = htmlparser.HTMLParser() -def cleanTitle(title): - title=title.replace("<","<").replace(">",">").replace("&","&").replace("'","\\").replace("'","\\").replace(""","\"").replace("ß","ß").replace("–","-") - title=title.replace("Ä","Ä").replace("Ü","Ü").replace("Ö","Ö").replace("ä","ä").replace("ü","ü").replace("ö","ö") - title=title.strip() - return title +def escape_unicode(text): + return text.encode("utf8", "ignore") -def index(): - addDir(translation(30001),"ARTE_7","showSortList","") - addDir(translation(30002),"ALL_VIDS","listShows","") - addDir(translation(30003),"SHOWS_AZ","listShows","") - addDir(translation(30004),"EVENTS","listShows","") - addDir(translation(30005),"SEARCH","search","") - xbmcplugin.endOfDirectory(pluginhandle) - -def showSortList(url): - if url=="ARTE_7": - urlDate="http://videos.arte.tv/"+language+"/do_delegate/videos/index-3188698,view,asThumbnail.html?hash=tv/thumb/date//1/"+videosPerPage+"/" - urlTitle="http://videos.arte.tv/"+language+"/do_delegate/videos/index-3188698,view,asThumbnail.html?hash=tv/thumb/title//1/"+videosPerPage+"/" - urlRated="http://videos.arte.tv/"+language+"/do_delegate/videos/index-3188698,view,asThumbnail.html?hash=tv/thumb/popular/bestrated/1/"+videosPerPage+"/" - urlViewed="http://videos.arte.tv/"+language+"/do_delegate/videos/index-3188698,view,asThumbnail.html?hash=tv/thumb/popular/mostviewed/1/"+videosPerPage+"/" - else: - content = getUrl(url) - match=re.compile('thumbnailViewUrl: "(.+?)"', re.DOTALL).findall(content) - url="http://videos.arte.tv"+match[0] - urlTitle=url+"?hash=tv/thumb/title//1/"+videosPerPage+"/" - urlDate=url+"?hash=tv/thumb/date//1/"+videosPerPage+"/" - urlRated=url+"?hash=tv/thumb/popular/bestrated/1/"+videosPerPage+"/" - urlViewed=url+"?hash=tv/thumb/popular/mostviewed/1/"+videosPerPage+"/" - addDir(translation(30006),urlTitle,"listVideos","") - addDir(translation(30007),urlDate,"listVideos","") - addDir(translation(30008),urlRated,"listVideos","") - addDir(translation(30009),urlViewed,"listVideos","") - xbmcplugin.endOfDirectory(pluginhandle) - -def listShows(url): - if url=="ALL_VIDS": - if language=="de": - url="http://videos.arte.tv/de/videos/alleVideos" - elif language=="fr": - url="http://videos.arte.tv/fr/videos/toutesLesVideos" - elif url=="SHOWS_AZ": - if language=="de": - url="http://videos.arte.tv/de/videos/sendungen" - elif language=="fr": - url="http://videos.arte.tv/fr/videos/programmes" - elif url=="EVENTS": - url="http://videos.arte.tv/"+language+"/videos/events/index-3188672.html" - content = getUrl(url) - content = content[content.find('
'):] - content = content[:content.find('')] - spl=content.split('(.+?)<', re.DOTALL).findall(entry) - title=cleanTitle(match[0]) - match=re.compile('="(.+?)"', re.DOTALL).findall(entry) - url="http://videos.arte.tv"+match[0] - addDir(title,url,'showSortList',"") - xbmcplugin.endOfDirectory(pluginhandle) +def sorted_nicely(_list): + """ Sort the given iterable in the way that humans expect.""" + convert = lambda text: int(text) if text.isdigit() else text + alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] + return sorted(l, key = alphanum_key) -def listVideos(url): - urlMain=url - content = getUrl(url) - spl=content.split('(.+?)
', re.DOTALL).findall(entry) - date=match[0] - match=re.compile('