示例#1
0
def alexa_play_next_episode(slots):
    heard_show = str(slots['Show']['value']).lower().translate(
        None, string.punctuation)

    print('Trying to play the next episode of %s' % (heard_show))
    sys.stdout.flush()

    shows = kodi.GetTvShows()
    if 'result' in shows and 'tvshows' in shows['result']:
        shows_array = shows['result']['tvshows']

        located = kodi.matchHeard(heard_show, shows_array)

        if located:
            next_episode = kodi.GetNextUnwatchedEpisode(located['tvshowid'])

            if next_episode:
                kodi.ClearVideoPlaylist()
                kodi.PrepEpisodePlayList(next_episode)

                kodi.StartVideoPlaylist()
                return build_alexa_response('Playing next episode of %s' %
                                            (heard_show))
            else:
                return build_alexa_response('No new episodes for %s' %
                                            (heard_show))
        else:
            return build_alexa_response('Could not find %s' % (heard_show))
    else:
        return build_alexa_response('Could not find %s' % (heard_show))
示例#2
0
def alexa_play_newest_episode(slots):
    heard_show = str(slots['Show']['value']).lower().translate(
        None, string.punctuation)

    print('Trying to play the newest episode of %s' % (heard_show))
    sys.stdout.flush()

    shows = kodi.GetTvShows()
    if 'result' in shows and 'tvshows' in shows['result']:
        shows_array = shows['result']['tvshows']

        located = kodi.matchHeard(heard_show, shows_array)

        if located:
            episode_result = kodi.GetNewestEpisodeFromShow(located['tvshowid'])

            if episode_result:
                kodi.ClearVideoPlaylist()
                kodi.PrepEpisodePlayList(episode_result)
                kodi.StartVideoPlaylist()

                return build_alexa_response('Playing latest episode of %s' %
                                            (heard_show))

            else:
                return build_alexa_response(
                    'Could not find newest episode of %s' % (heard_show))
        else:
            return build_alexa_response('Could not find %s' % (heard_show))
    else:
        return build_alexa_response('Error parsing results.')
示例#3
0
def alexa_play_episode(slots):
  heard_show = str(slots['Show']['value']).lower().translate(None, string.punctuation)

  card_title = 'Playing an episode of %s' % (heard_show)
  print card_title
  sys.stdout.flush()

  shows = kodi.GetTvShows()
  if 'result' in shows and 'tvshows' in shows['result']:
    shows_array = shows['result']['tvshows']

    heard_season = slots['Season']['value']
    heard_episode = slots['Episode']['value']

    located = kodi.matchHeard(heard_show, shows_array)

    if located:
      episode_result = kodi.GetSpecificEpisode(located['tvshowid'], heard_season, heard_episode)

      if episode_result:
        kodi.ClearVideoPlaylist()
        kodi.PrepEpisodePlayList(episode_result)
        kodi.StartVideoPlaylist()

        return build_alexa_response('Playing season %s episode %s of %s' % (heard_season, heard_episode, heard_show), card_title)

      else:
        return build_alexa_response('Could not find season %s episode %s of %s' % (heard_season, heard_episode, heard_show), card_title)
    else:
      return build_alexa_response('Could not find a show named %s' % (heard_show), card_title)
  else:
    return build_alexa_response('Error parsing results', card_title)
示例#4
0
def alexa_play_newest_episode(slots):
  heard_show = str(slots['Show']['value']).lower().translate(None, string.punctuation)

  card_title = 'Playing the newest episode of %s' % (heard_show)
  print card_title
  sys.stdout.flush()

  shows = kodi.GetTvShows()
  if 'result' in shows and 'tvshows' in shows['result']:
    shows_array = shows['result']['tvshows']

    located = kodi.matchHeard(heard_show, shows_array)

    if located:
      episode = kodi.GetNewestEpisodeFromShow(located['tvshowid'])

      if episode:
        episode_details = kodi.GetEpisodeDetails(episode)['result']['episodedetails']

        kodi.ClearVideoPlaylist()
        kodi.PrepEpisodePlayList(episode)
        kodi.StartVideoPlaylist()

        return build_alexa_response('Playing season %d episode %d of %s' % (episode_details['season'], episode_details['episode'], heard_show), card_title)
      else:
        return build_alexa_response('No new episodes for %s' % (heard_show), card_title)
    else:
      return build_alexa_response('Could not find %s' % (heard_show), card_title)
  else:
    return build_alexa_response('Error parsing results', card_title)
示例#5
0
def alexa_new_show_inquiry(slots):
  heard_show = str(slots['Show']['value']).lower().translate(None, string.punctuation)

  card_title = "Looking for new episodes of %s" % (heard_show)
  print card_title
  sys.stdout.flush()

  shows = kodi.GetTvShows()
  if 'result' in shows and 'tvshows' in shows['result']:
    shows_array = shows['result']['tvshows']

    located = kodi.matchHeard(heard_show, shows_array)

    if located:
      episodes_result = kodi.GetUnwatchedEpisodesFromShow(located['tvshowid'])

      if not 'episodes' in episodes_result['result']:
        num_of_unwatched = 0

      else:
        num_of_unwatched = len(episodes_result['result']['episodes'])

      if num_of_unwatched > 0:
        if num_of_unwatched == 1:
          return build_alexa_response("There is one unseen episode of %(real_show)s." % {'real_show': heard_show}, card_title)
        else:
          return build_alexa_response("There are %(num)d episodes of  %(real_show)s." % {'real_show': heard_show, 'num': num_of_unwatched}, card_title)

      else:
        return build_alexa_response("There are no unseen episodes of %(real_show)s." % {'real_show': heard_show}, card_title)
    else:
      return build_alexa_response('Could not find %s' % (heard_show), card_title)
  else:
    return build_alexa_response('Error parsing results', card_title)
示例#6
0
def alexa_play_newest_episode(slots):
  heard_show = str(slots['Show']['value']).lower().translate(None, string.punctuation)

  card_title = 'Playing the newest episode of %s' % (heard_show)
  print card_title
  sys.stdout.flush()

  shows = kodi.GetTvShows()
  if 'result' in shows and 'tvshows' in shows['result']:
    shows_array = shows['result']['tvshows']

    located = kodi.matchHeard(heard_show, shows_array)

    if located:
      episode_id = kodi.GetNewestEpisodeFromShow(located['tvshowid'])

      if episode_id:
        episode_details = kodi.GetEpisodeDetails(episode_id)

        if episode_details['resume']['position'] > 0:
          action = 'Resuming'
        else:
          action = 'Playing'

        kodi.PlayEpisode(episode_id)

        return build_alexa_response('%s season %d episode %d of %s' % (action, episode_details['season'], episode_details['episode'], heard_show), card_title)
      else:
        return build_alexa_response('No new episodes for %s' % (heard_show), card_title)
    else:
      return build_alexa_response('Could not find %s' % (heard_show), card_title)
  else:
    return build_alexa_response('Error parsing results', card_title)
示例#7
0
def alexa_play_episode(slots):
  heard_show = str(slots['Show']['value']).lower().translate(None, string.punctuation)

  card_title = 'Playing an episode of %s' % (heard_show)
  print card_title
  sys.stdout.flush()

  shows = kodi.GetTvShows()
  if 'result' in shows and 'tvshows' in shows['result']:
    shows_array = shows['result']['tvshows']

    heard_season = slots['Season']['value']
    heard_episode = slots['Episode']['value']

    located = kodi.matchHeard(heard_show, shows_array)

    if located:
      episode_id = kodi.GetSpecificEpisode(located['tvshowid'], heard_season, heard_episode)

      if episode_id:
        if kodi.GetEpisodeDetails(episode_id)['resume']['position'] > 0:
          action = 'Resuming'
        else:
          action = 'Playing'

        kodi.PlayEpisode(episode_id)

        return build_alexa_response('%s season %s episode %s of %s' % (action, heard_season, heard_episode, heard_show), card_title)

      else:
        return build_alexa_response('Could not find season %s episode %s of %s' % (heard_season, heard_episode, heard_show), card_title)
    else:
      return build_alexa_response('Could not find a show named %s' % (heard_show), card_title)
  else:
    return build_alexa_response('Error parsing results', card_title)
示例#8
0
def alexa_play_random_episode(slots):
  heard_show = str(slots['Show']['value']).lower().translate(None, string.punctuation)

  card_title = 'Playing a random episode of %s' % (heard_show)
  print card_title
  sys.stdout.flush()

  shows = kodi.GetTvShows()
  if 'result' in shows and 'tvshows' in shows['result']:
    shows_array = shows['result']['tvshows']

    located = kodi.matchHeard(heard_show, shows_array)

    if located:
      episodes_result = kodi.GetUnwatchedEpisodesFromShow(located['tvshowid'])

      if not 'episodes' in episodes_result['result']:
        # Fall back to all episodes if no unwatched available
        episodes_result = kodi.GetEpisodesFromShow(located['tvshowid'])

      episodes_array = []

      for episode in episodes_result['result']['episodes']:
        episodes_array.append(episode['episodeid'])

      episode_id = random.choice(episodes_array)
      episode_details = kodi.GetEpisodeDetails(episode_id)

      kodi.PlayEpisode(episode_id, False)

      return build_alexa_response('Playing season %d episode %d of %s' % (episode_details['season'], episode_details['episode'], heard_show), card_title)
    else:
      return build_alexa_response('Could not find a show named %s' % (heard_show), card_title)
  else:
    return build_alexa_response('Error parsing results', card_title)
示例#9
0
def alexa_pick_random_episode(slots):
  heard_show = str(slots['Show']['value']).lower().translate(None, string.punctuation)
  
  print('Trying to play a random episode of %s' % (heard_show))
  sys.stdout.flush()
  
  shows = kodi.GetTvShows()
  if 'result' in shows and 'tvshows' in shows['result']:
    shows_array = shows['result']['tvshows']
    
    located = kodi.matchHeard(heard_show, shows_array)
    
    if located:
      episodes_result = kodi.GetUnwatchedEpisodesFromShow(located['tvshowid'])
      
      if not 'episodes' in episodes_result['result']:
        episodes_result = kodi.GetEpisodesFromShow(located['tvshowid'])

      episodes_array = []

      for episode in episodes_result['result']['episodes']:
        episodes_array.append(episode['episodeid'])

      kodi.ClearVideoPlaylist()
      kodi.PrepEpisodePlayList(random.choice(episodes_array))

      kodi.StartVideoPlaylist()
      
      return build_alexa_response('Playing a random episode of %s' % (heard_show))
    else:
      return build_alexa_response('Could not find %s' % (heard_show))
  else:
    return build_alexa_response('Could not find %s' % (heard_show))
示例#10
0
        name_stripped = kodi.sanitize_name(v['label'], True)
        all.append(name)
        all.append(name_stripped)

cleaned = list(set(all))
cleaned = filter(None, cleaned)
random.shuffle(cleaned)
cleaned = cleaned[:300]

gfile = open('MOVIES', 'w')
for a in cleaned:
    gfile.write("%s\n" % a)
gfile.close()

# Generate SHOWS Slot
retrieved = kodi.GetTvShows()

all = []

if 'result' in retrieved and 'tvshows' in retrieved['result']:
    for v in retrieved['result']['tvshows']:
        name = kodi.sanitize_name(v['label'])
        name_stripped = kodi.sanitize_name(v['label'], True)
        all.append(name)
        all.append(name_stripped)

cleaned = list(set(all))
cleaned = filter(None, cleaned)
random.shuffle(cleaned)
cleaned = cleaned[:300]
示例#11
0
def alexa_play_next_episode(slots):
    shows = kodi.GetTvShows()
    shows_array = shows['result']['tvshows']
    
    heard_show =  str(slots['Show']['value']).lower().translate(None, string.punctuation)
    located = None
    
    for show in shows_array:
        ascii_name = show['label'].encode('ascii', 'replace')
        show_name = str(ascii_name).lower().translate(None, string.punctuation)
        if show_name == heard_show:
            located = show_name
            show_id = show['tvshowid']
            break
            
    if not located:
        # Try an exact match after removing any leading "the"
        heard_minus_the = remove_the(heard_show)
        for show in shows_array:
            ascii_name = show['label'].encode('ascii', 'replace')
            show_name = str(ascii_name).lower().translate(None, string.punctuation)
            if remove_the(show_name) == heard_minus_the:
                located = show_name
                show_id = show['tvshowid']
                break
                
    if not located:
        #Try removing everthing in parenthesis for shows that might have (2009) or (US)
        for show in shows_array:
            ascii_name = show['label'].encode('ascii', 'replace')
            removed_paren = re.sub(r'\([^)]*\)', '', ascii_name).rstrip()
            show_name = str(removed_paren).lower().translate(None, string.punctuation)
            if show_name == heard_show:
                located = show_name
                show_id = show['tvshowid']
                break
                
    if not located:
        # Last resort -- take out some useless words and see if we have a show with
        # any of the remaining words in common
        heard_list = set([x for x in heard_show.split() if x not in STOPWORDS])
        for show in shows_array:
            show_list = set(show['label'].split())
            if heard_list & show_list:
                located = show
                show_id = show['tvshowid']
                break
                
    if located:
        next_episode = kodi.GetNextUnwatchedEpisode(show_id)
        
        if next_episode:
          kodi.ClearVideoPlaylist()
          kodi.PrepEpisodePlayList(next_episode)

          kodi.StartVideoPlaylist()
          return build_alexa_response('Playing next episode of %s' % (located))
        else:
          return build_alexa_response('No new episodes for %s' % (heard_show))          
    else:
        return build_alexa_response('Could not find %s' % (heard_show))