The branch, frodo has been updated via e315111438551d0228426cba32470275939dafd2 (commit) from 116335be9afd0e76406ecde9a188df39c3000d9c (commit)
- Log ----------------------------------------------------------------- http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=e315111438551d0228426cba32470275939dafd2 commit e315111438551d0228426cba32470275939dafd2 Author: Martijn Kaijser <mcm.kaij...@gmail.com> Date: Tue Mar 4 18:33:52 2014 +0100 [screensaver.randomtrailers] 1.1.13 diff --git a/screensaver.randomtrailers/addon.xml b/screensaver.randomtrailers/addon.xml index e5a7e48..9bf93b4 100644 --- a/screensaver.randomtrailers/addon.xml +++ b/screensaver.randomtrailers/addon.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <addon id="screensaver.randomtrailers" name="Random Trailers" - version="1.1.10" + version="1.1.13" provider-name="kzeleny"> <requires> <import addon="xbmc.python" version="2.1.0"/> diff --git a/screensaver.randomtrailers/changelog.txt b/screensaver.randomtrailers/changelog.txt index d65a068..0587649 100644 --- a/screensaver.randomtrailers/changelog.txt +++ b/screensaver.randomtrailers/changelog.txt @@ -1,3 +1,12 @@ +v.1.1.13 (March 03,2014) + - updated filter feature to filter by rating limit for all trailers (perviously only iTunes trailers were filtered) + +v.1.1.12 (February 12,2014) +- added feature to play trailers in groups of n with x amount of delay between groups. + +v.1.1.11 (February 10,2014) +- added feature to filter tmdb trailers by New DVD Releases + v.1.10 (February, 07, 2014) - fixed issue playing library trailers @@ -14,7 +23,7 @@ v.1.1.7 (January, 5, 2014) : -moved hide info option from library to general settings v.1.1.6 (December 31,2013) : -- added feature to select tyep fo traielrs form iTunes, Coming Soon, Just Added, Most Popular, Exclusive and All +- added feature to select type of trailers form iTunes, Coming Soon, Just Added, Most Popular, Exclusive and All v.1.1.5 (Decembeor 30,2013) : - added feature to filter iTunes trailers. you can filter by selected genre(s), and by rating limit. so only play family movies that are rated G for example. diff --git a/screensaver.randomtrailers/default.py b/screensaver.randomtrailers/default.py index 6c0efa5..f4b802c 100644 --- a/screensaver.randomtrailers/default.py +++ b/screensaver.randomtrailers/default.py @@ -128,15 +128,15 @@ def checkRating(rating): if do_nr == 'true':nr='NR' if rating_limit=='0':passed=True if rating_limit=='1': - rating_limit=['G',nr,nyr] + rating_limit=('G',nr,nyr) if rating_limit=='2': - rating_limit=['G','PG',nr,nyr] + rating_limit=('G','PG',nr,nyr) if rating_limit=='3': - rating_limit=['G','PG','PG-13',nr,nyr] + rating_limit=('G','PG','PG-13',nr,nyr) if rating_limit=='4': - rating_limit=['G','PG','PG-13','R',nr,nyr] + rating_limit=('G','PG','PG-13','R',nr,nyr) if rating_limit=='5': - rating_limit=['G','PG','PG-13','R','NC-17',nr,nyr] + rating_limit=('G','PG','PG-13','R','NC-17','NC17',nr,nyr) if rating in rating_limit:passed=True return passed @@ -316,7 +316,9 @@ def getLibraryTrailers(genre): for trailer in tmp_trailers: trailer['source'] = 'library' trailer['type'] = 'Trailer' - lib_trailers.append(trailer) + mpaa=get_mpaa(trailer) + if checkRating(mpaa): + lib_trailers.append(trailer) return lib_trailers def getFolderTrailers(path): @@ -348,7 +350,9 @@ def getTmdbTrailers(): if addon.getSetting("tmdb_source") == '1':source='top_rated' if addon.getSetting("tmdb_source") == '2':source='upcoming' if addon.getSetting("tmdb_source") == '3':source='now_playing' - if addon.getSetting("tmdb_source") == '4': + if addon.getSetting("tmdb_source") == '4':source='dvd' + if addon.getSetting("tmdb_source") == '5':source='all' + if source=='all': data = {} data['api_key'] = '99e8b7beac187a857152f57d67495cf4' url_values = urllib.urlencode(data) @@ -363,6 +367,31 @@ def getTmdbTrailers(): id=id+1 dict={'trailer':'tmdb','id': id} tmdbTrailers.append(dict) + elif source=='dvd': + data={} + data['apikey']='99dgtphe3c29y85m2g8dmdmt' + data['country'] = 'us' + url_values = urllib.urlencode(data) + url = 'http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/new_releases.json' + full_url = url + '?' + url_values + req = urllib2.Request(full_url) + response = urllib2.urlopen(req).read() + infostring = json.loads(response) + for movie in infostring['movies']: + data={} + data['api_key']='99e8b7beac187a857152f57d67495cf4' + data['query']=movie['title'] + data['year']=movie['year'] + url_values = urllib.urlencode(data) + url = 'https://api.themoviedb.org/3/search/movie' + full_url = url + '?' + url_values + req = urllib2.Request(full_url) + infostring = urllib2.urlopen(req).read() + infostring = json.loads(infostring) + for m in infostring['results']: + id=m['id'] + dict={'trailer':'tmdb','id': id} + tmdbTrailers.append(dict) else: page=0 for i in range(0,5): @@ -383,6 +412,26 @@ def getTmdbTrailers(): tmdbTrailers.append(dict) return tmdbTrailers +def search_tmdb(title,year): + id='' + data = {} + data['api_key'] = '99e8b7beac187a857152f57d67495cf4' + data['page']='1' + data['query']=query + data['language']='en' + url_values = urllib.urlencode(data) + url = 'https://api.themoviedb.org/3/search/movie' + full_url = url + '?' + url_values + req = urllib2.Request(full_url) + infostring = urllib2.urlopen(req).read() + infostring = json.loads(infostring) + results=infostring['results'] + for movie in results: + if movie['year']==year: + id=movie['id'] + break + return id + def getTmdbTrailer(movieId): trailer_url='' type='' @@ -412,6 +461,7 @@ def getTmdbTrailer(movieId): for c in countries: if c['iso_3166_1'] =='US': mpaa=c['certification'] + if mpaa=='':mpaa='NR' year=movieString['release_date'][:-6] fanart=image_base_url + 'w300'+str(movieString['backdrop_path']) thumbnail=image_base_url + 'w342'+str(movieString['poster_path']) @@ -442,7 +492,9 @@ def getTmdbTrailer(movieId): for s in movieString['spoken_languages']: if s['name']=='English': addMovie=True - if movieString['adult']=='true':AddMovie = False + if movieString['adult']=='true':addMovie = False + xbmc.log('Rating=' + mpaa) + addMovie = checkRating(mpaa) if not addMovie: dictInfo = {'title':'','trailer': '','year':0,'studio':[],'mpaa':'','file':'','thumbnail':'','fanart':'','director':[],'writer':[],'plot':'','cast':'','runtime':0,'genre':[],'source': 'tmdb','type':''} else: @@ -474,14 +526,17 @@ class trailerWindow(xbmcgui.WindowXMLDialog): played=[] played.append(trailer["number"]) if trailer['trailer']=='tmdb': - if addon.getSetting('tmdb_source') == '4': + if addon.getSetting('tmdb_source') == '5': dp=xbmcgui.DialogProgress() dp.create('Random Trailers','Please wait while we get a random trailer from themoviedb...') gotTrailer=False searchCount=0 while not gotTrailer: searchCount=searchCount+1 - trailer=getTmdbTrailer(trailer['id']) + try: + trailer=getTmdbTrailer(trailer['id']) + except: + trailer['trailer']='' if trailer['trailer'] != '': gotTrailer=True else: @@ -500,6 +555,11 @@ class trailerWindow(xbmcgui.WindowXMLDialog): else: trailer=getTmdbTrailer(trailer['id']) source=trailer['source'] + if source=='library': + if trailer['trailer']=='': #no trailer search tmdb for one + id=search_tmdb(trailer['title'],trailer['year']) + if id!='': + trailer['trailer']=getTmdbTrailer(id) lastPlay = True if 'lastplayed' in trailer: if not trailer["lastplayed"] =='' and hide_watched == 'true': @@ -513,10 +573,13 @@ class trailerWindow(xbmcgui.WindowXMLDialog): else: lastPlay = False if source == 'iTunes': - content = opener.open(trailer['trailer']).read() - match = re.compile('<a class="movieLink" href="(.+?)"', re.DOTALL).findall(content) - urlTemp = match[0] - url = urlTemp[:urlTemp.find("?")].replace("480p", "h"+quality)+"|User-Agent=iTunes/9.1.1" + try: + content = opener.open(trailer['trailer']).read() + match = re.compile('<a class="movieLink" href="(.+?)"', re.DOTALL).findall(content) + urlTemp = match[0] + url = urlTemp[:urlTemp.find("?")].replace("480p", "h"+quality)+"|User-Agent=iTunes/9.1.1" + except: + url='' else: url = trailer['trailer'].encode('ascii', 'ignore') if trailer["trailer"] != '' and lastPlay: @@ -566,7 +629,7 @@ class trailerWindow(xbmcgui.WindowXMLDialog): global source global trailer movie_file='' - + xbmc.log(str(action.getId())) if action == ACTION_Q: strCouchPotato='plugin://plugin.video.couchpotato_manager/movies/add?title='+trailer['title'] xbmc.executebuiltin('XBMC.RunPlugin('+strCouchPotato+')') @@ -745,7 +808,7 @@ class infoWindow(xbmcgui.WindowXMLDialog): xbmc.Player().stop() exit_requested=True self.close() - + def playTrailers(): global exit_requested global movie_file @@ -756,6 +819,11 @@ def playTrailers(): DO_CURTIANS = addon.getSetting('do_animation') DO_EXIT = addon.getSetting('do_exit') NUMBER_TRAILERS = int(addon.getSetting('number_trailers')) + GROUP_TRAILERS = False + if addon.getSetting('group_trailers')=='true':GROUP_TRAILERS = True + GROUP_NUMBER = int(addon.getSetting('group_number')) + GROUP_COUNT=GROUP_NUMBER + GROUP_DELAY = (int(addon.getSetting('group_delay')) * 60) * 1000 if DO_CURTIANS == 'true': xbmc.Player().play(open_curtain_path) while xbmc.Player().isPlaying(): @@ -764,14 +832,30 @@ def playTrailers(): while not exit_requested: if NUMBER_TRAILERS == 0: while not exit_requested and not xbmc.abortRequested: + if GROUP_TRAILERS: + GROUP_COUNT=GROUP_COUNT - 1 mytrailerWindow = trailerWindow('script-trailerwindow.xml', addon_path,'default',) mytrailerWindow.doModal() del mytrailerWindow + if GROUP_TRAILERS and GROUP_COUNT==0: + GROUP_COUNT=GROUP_NUMBER + i = GROUP_DELAY + while i > 0 and not exit_requested and not xbmc.abortRequested: + xbmc.sleep(500) + i=i-500 else: while NUMBER_TRAILERS > 0: + if GROUP_TRAILERS: + GROUP_COUNT=GROUP_COUNT - 1 mytrailerWindow = trailerWindow('script-trailerwindow.xml', addon_path,'default',) mytrailerWindow.doModal() del mytrailerWindow + if GROUP_TRAILERS and GROUP_COUNT==0: + GROUP_COUNT=GROUP_NUMBER + i = GROUP_DELAY + while i > 0 and not exit_requested and not xbmc.abortRequested: + xbmc.sleep(500) + i=i-500 if exit_requested: break if not exit_requested: @@ -781,7 +865,32 @@ def playTrailers(): xbmc.sleep(250) exit_requested=True -if not xbmc.Player().isPlaying(): +def check_for_xsqueeze(): + KEYMAPDESTFILE = os.path.join(xbmc.translatePath('special://userdata/keymaps'), "xsqueeze.xml") + if os.path.isfile(KEYMAPDESTFILE): + return True + else: + return False + +def get_mpaa(trailer): + Rating='NR' + if trailer["mpaa"].startswith('G'): Rating='G' + if trailer["mpaa"] == ('G'): Rating='G' + if trailer["mpaa"].startswith('Rated G'): Rating='G' + if trailer["mpaa"].startswith('PG '): Rating='PG' + if trailer["mpaa"] == ('PG'): Rating='PG' + if trailer["mpaa"].startswith('Rated PG'): Rating='PG' + if trailer["mpaa"].startswith('PG-13 '): Rating='PG-13' + if trailer["mpaa"] == ('PG-13'): Rating='PG-13' + if trailer["mpaa"].startswith('Rated PG-13'): Rating='PG-13' + if trailer["mpaa"].startswith('R '): Rating='R' + if trailer["mpaa"] == ('R'): Rating='R' + if trailer["mpaa"].startswith('Rated R'): Rating='R' + if trailer["mpaa"].startswith('NC17'): Rating='NC17' + if trailer["mpaa"].startswith('Rated NC17'): 'NC17' + return Rating + +if not xbmc.Player().isPlaying() and not check_for_xsqueeze(): bs = blankWindow('script-BlankWindow.xml', addon_path,'default',) bs.show() trailers = [] diff --git a/screensaver.randomtrailers/resources/language/English/strings.xml b/screensaver.randomtrailers/resources/language/English/strings.xml index 11b5692..009b1a9 100644 --- a/screensaver.randomtrailers/resources/language/English/strings.xml +++ b/screensaver.randomtrailers/resources/language/English/strings.xml @@ -53,6 +53,10 @@ <string id="32049">Upcoming</string> <string id="32050">Now Playing</string> <string id="32051">All</string> + <string id="32052">New DVD Releases</string> + <string id="32053">Play Trailers in Groups</string> + <string id="32054">Number of Trailers in Each Group</string> + <string id="32055">Minutes Between Groups</string> <string id="32102">Genres</string> <string id="32100">Select Genre</string> <string id="32101">Do you want to select a genre to watch?</string> diff --git a/screensaver.randomtrailers/resources/settings.xml b/screensaver.randomtrailers/resources/settings.xml index f818e09..3218f57 100644 --- a/screensaver.randomtrailers/resources/settings.xml +++ b/screensaver.randomtrailers/resources/settings.xml @@ -1,56 +1,59 @@ <?xml version="1.0" encoding="utf-8"?> <settings> - <category label="32016"> - <setting label="32026" type="lsep"/> - <setting id="number_trailers" type="number" label="32000" default="10" /> - <setting id="do_animation" type="bool" label="32001" default="true" /> - <setting id="hide_title" type="bool" label="32008" defalt="false"/> - <setting id="hide_info" type="bool" label="32003" default="false" /> - <setting id="do_volume" type="bool" label="32006" default="false" /> - <setting id="volume" label="32011" type="number" enable = "eq(-1,true)" default="100" /> - <setting id="do_fullscreen" type="bool" label="32007" default="false" /> - </category> - <category label="32015"> - <setting label="32012" type="lsep"/> - <setting id="do_library" type="bool" label="32021" default="true" /> - <setting id="do_genre" type="bool" enable = "eq(-1,true)" label="32002" default="false" /> - <setting id="hide_watched" type="bool" enable = "eq(-2,true)" label="32004" default="false" /> - <setting id="watched_days" type="number" enable="eq(-1,true)" label="32005" default="365" /> - </category> - <category label="32045"> - <setting label="32046" type ="sep" /> - <setting id="do_tmdb" type="bool" label="32044" default="true" /> - <setting id="tmdb_source" label="32043" type="enum" enable="eq(-1,true)" default="0" lvalues="32047|32048|32049|32050|32051" /> - </category> - <category label="32025"> - <setting label="32013" type="lsep"/> - <setting id="do_itunes" type="bool" label="32023" default="true" /> - <setting id="quality" type="enum" enable ="eq(-1,true)" label="32014" values="480p|720p|1080p" default="0"/> - <setting id="trailer_type" type="enum" enable="eq(-2,true)" label="32043" values="Coming Soon|Just Added|Popular|Exclusive|All" default="4" /> - <setting id="do_clips" type="bool" enable = "eq(-3,true)" label="32018" default="true" /> - <setting id="do_featurettes" type="bool" enable = "eq(-4,true)" label="32019" default="true" /> - <setting id="rating_limit" type="enum" enable = "eq(-5,true)" label="32040" default="0" values="None|G|PG|PG-13|R|NC-17" /> - <setting id="do_notyetrated" type="bool" enable = "!eq(-1,0)" label="32041" default="false" /> - <setting id="do_nr" type="bool" enable = "!eq(-2,0)" label="32042" default="false" /> - <setting label="32102" type="lsep"/> - <setting id="g_action" type="bool" enable="eq(-9,true)" label="32028" default="true"/> - <setting id="g_comedy" type="bool" enable="eq(-10,true)" label="32029" default="true"/> - <setting id="g_docu" type="bool" enable="eq(-11,true)" label="32030" default="true"/> - <setting id="g_drama" type="bool" enable="eq(-12,true)" label="32031" default="true"/> - <setting id="g_family" type="bool" enable="eq(-13,true)" label="32032" default="true"/> - <setting id="g_fantasy" type="bool" enable="eq(-14,true)" label="32033" default="true"/> - <setting id="g_foreign" type="bool" enable="eq(-15,true)" label="32034" default="true"/> - <setting id="g_horror" type="bool" enable="eq(-16,true)" label="32035" default="true"/> - <setting id="g_musical" type="bool" enable="eq(-17,true)" label="32036" default="true"/> - <setting id="g_romance" type="bool" enable="eq(-18,true)" label="32037" default="true"/> - <setting id="g_scifi" type="bool" enable="eq(-19,true)" label="32038" default="true"/> - <setting id="g_thriller" type="bool" enable="eq(-20,true)" label="32039" default="true"/> - </category> - <category label="32024"> - <setting label="32009" type="lsep"/> - <setting id="do_folder" type="bool" label="32022" default="false" /> - <setting id="path" type="folder" enable="eq(-1,true)" label="32010" default="" /> - </category> + <category label="32016"> + <setting label="32026" type="lsep"/> + <setting id="number_trailers" type="number" label="32000" default="10" /> + <setting id="rating_limit" type="enum" label="32040" default="0" values="None|G|PG|PG-13|R|NC-17" /> + <setting id="do_notyetrated" type="bool" enable = "!eq(-1,0)" label="32041" default="false" /> + <setting id="do_nr" type="bool" enable = "!eq(-2,0)" label="32042" default="false" /> + <setting id="group_trailers" type="bool" label="32053" default="false" /> + <setting id="group_number" type="number" enable="eq(-1,true)" label="32054" default="5" /> + <setting id="group_delay" type="number" enable="eq(-2,true)" label="32055" default="10" /> + <setting id="do_animation" type="bool" label="32001" default="true" /> + <setting id="hide_title" type="bool" label="32008" defalt="false"/> + <setting id="hide_info" type="bool" label="32003" default="false" /> + <setting id="do_volume" type="bool" label="32006" default="false" /> + <setting id="volume" label="32011" type="number" enable = "eq(-1,true)" default="100" /> + <setting id="do_fullscreen" type="bool" label="32007" default="false" /> + </category> + <category label="32015"> + <setting label="32012" type="lsep"/> + <setting id="do_library" type="bool" label="32021" default="true" /> + <setting id="do_genre" type="bool" enable = "eq(-1,true)" label="32002" default="false" /> + <setting id="hide_watched" type="bool" enable = "eq(-2,true)" label="32004" default="false" /> + <setting id="watched_days" type="number" enable="eq(-1,true)" label="32005" default="365" /> + </category> + <category label="32045"> + <setting label="32046" type ="sep" /> + <setting id="do_tmdb" type="bool" label="32044" default="true" /> + <setting id="tmdb_source" label="32043" type="enum" enable="eq(-1,true)" default="0" lvalues="32047|32048|32049|32050|32052|32051" /> + </category> + <category label="32025"> + <setting label="32013" type="lsep"/> + <setting id="do_itunes" type="bool" label="32023" default="true" /> + <setting id="quality" type="enum" enable ="eq(-1,true)" label="32014" values="480p|720p|1080p" default="0"/> + <setting id="trailer_type" type="enum" enable="eq(-2,true)" label="32043" values="Coming Soon|Just Added|Popular|Exclusive|All" default="4" /> + <setting id="do_clips" type="bool" enable = "eq(-3,true)" label="32018" default="true" /> + <setting id="do_featurettes" type="bool" enable = "eq(-4,true)" label="32019" default="true" /> + <setting label="32102" type="lsep"/> + <setting id="g_action" type="bool" enable="eq(-9,true)" label="32028" default="true"/> + <setting id="g_comedy" type="bool" enable="eq(-10,true)" label="32029" default="true"/> + <setting id="g_docu" type="bool" enable="eq(-11,true)" label="32030" default="true"/> + <setting id="g_drama" type="bool" enable="eq(-12,true)" label="32031" default="true"/> + <setting id="g_family" type="bool" enable="eq(-13,true)" label="32032" default="true"/> + <setting id="g_fantasy" type="bool" enable="eq(-14,true)" label="32033" default="true"/> + <setting id="g_foreign" type="bool" enable="eq(-15,true)" label="32034" default="true"/> + <setting id="g_horror" type="bool" enable="eq(-16,true)" label="32035" default="true"/> + <setting id="g_musical" type="bool" enable="eq(-17,true)" label="32036" default="true"/> + <setting id="g_romance" type="bool" enable="eq(-18,true)" label="32037" default="true"/> + <setting id="g_scifi" type="bool" enable="eq(-19,true)" label="32038" default="true"/> + <setting id="g_thriller" type="bool" enable="eq(-20,true)" label="32039" default="true"/> + </category> + <category label="32024"> + <setting label="32009" type="lsep"/> + <setting id="do_folder" type="bool" label="32022" default="false" /> + <setting id="path" type="folder" enable="eq(-1,true)" label="32010" default="" /> + </category> </settings> diff --git a/screensaver.randomtrailers/resources/skins/default/720p/script-BlankWindow.xml b/screensaver.randomtrailers/resources/skins/default/720p/script-BlankWindow.xml index fc1aaa0..eb41f3c 100644 --- a/screensaver.randomtrailers/resources/skins/default/720p/script-BlankWindow.xml +++ b/screensaver.randomtrailers/resources/skins/default/720p/script-BlankWindow.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <window type="window"> - + <zorder>99999</zorder> </window> ----------------------------------------------------------------------- Summary of changes: screensaver.randomtrailers/addon.xml | 2 +- screensaver.randomtrailers/changelog.txt | 11 ++- screensaver.randomtrailers/default.py | 143 +++++++++++++++++--- .../resources/language/English/strings.xml | 4 + screensaver.randomtrailers/resources/settings.xml | 105 ++++++++------- .../skins/default/720p/script-BlankWindow.xml | 2 +- .../{ => skins}/language/English/strings.xml | 4 + 7 files changed, 200 insertions(+), 71 deletions(-) copy screensaver.randomtrailers/resources/{ => skins}/language/English/strings.xml (93%) hooks/post-receive -- Scripts ------------------------------------------------------------------------------ Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce. With Perforce, you get hassle-free workflows. Merge that actually works. Faster operations. Version large binaries. Built-in WAN optimization and the freedom to use Git, Perforce or both. Make the move to Perforce. http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk _______________________________________________ Xbmc-addons mailing list Xbmc-addons@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xbmc-addons