def add_date_properties(self): try: try: year, month, day = self.item_information['info'].get( 'aired', '0000-00-00').split('-') except ValueError: year, month, day = self.item_information['info'].get( 'aired', '00/00/0000').split('/') self.setProperty('item.info.aired.year', year) self.setProperty('item.info.aired.month', month) self.setProperty('item.info.aired.day', day) except ValueError: pass if 'aired' in self.item_information['info']: aired_date = self.item_information['info']['aired'] aired_date = tools.parse_datetime(aired_date) aired_date = aired_date.strftime(xbmc.getRegion('dateshort')) self.item_information['info']['aired'] = aired_date if 'premiered' in self.item_information['info']: premiered = self.item_information['info']['premiered'] premiered = tools.parse_datetime(premiered) premiered = premiered.strftime(xbmc.getRegion('dateshort')) self.item_information['info']['premiered'] = premiered
def add_date_properties(self): info = deepcopy(self.item_information['info']) media_type = info.get("mediatype", None) if media_type in [g.MEDIA_SHOW, g.MEDIA_SEASON, g.MEDIA_EPISODE]: # Convert dates to localtime for display g.convert_info_dates(info) try: year, month, day = self.item_information['info'].get( 'aired', '0000-00-00').split('-') self.setProperty('item.info.aired.year', year) self.setProperty('item.info.aired.month', month) self.setProperty('item.info.aired.day', day) except ValueError: pass if 'aired' in info: aired_date = info['aired'] aired_date = tools.parse_datetime(aired_date, g.DATE_TIME_FORMAT) aired_date = aired_date.strftime(xbmc.getRegion('dateshort')) try: aired_date = aired_date[:10] except IndexError: aired_date = "TBA" self.setProperty('item.info.aired', g.UNICODE(aired_date)) if 'premiered' in info: premiered = info['premiered'] premiered = tools.parse_datetime(premiered, g.DATE_TIME_FORMAT) premiered = premiered.strftime(xbmc.getRegion('dateshort')) try: premiered = premiered[:10] except IndexError: premiered = "TBA" self.setProperty('item.info.premiered', g.UNICODE(premiered))
def is_aired(self, info): """ Confirms supplied item has aired based on meta :param info: Meta of item :return: Bool, True if object has aired else False """ air_date = info.get("aired", info.get("premiered")) if not air_date: return False if int(air_date[:4]) < 1970: return True time_format = g.DATE_TIME_FORMAT if len(air_date) == 10: time_format = g.DATE_FORMAT if self.date_delay: air_date = tools.parse_datetime(air_date, time_format, False) air_date += datetime.timedelta(days=1) else: air_date = tools.parse_datetime(air_date, time_format, False) if air_date >= datetime.datetime.utcnow(): return False else: return True
def add_date_properties(self): try: try: year, month, day = self.item_information['info'].get( 'aired', '0000-00-00').split('-') except ValueError: year, month, day = self.item_information['info'].get( 'aired', '00/00/0000').split('/') self.setProperty('item.info.aired.year', year) self.setProperty('item.info.aired.month', month) self.setProperty('item.info.aired.day', day) except ValueError: pass if 'aired' in self.item_information['info']: aired_date = self.item_information['info']['aired'] aired_date = tools.parse_datetime(aired_date, g.DATE_TIME_FORMAT) aired_date = aired_date.strftime(xbmc.getRegion('dateshort')) try: aired_date = aired_date[:10] except IndexError: aired_date = "TBA" self.setProperty('item.info.aired', str(aired_date)) if 'premiered' in self.item_information['info']: premiered = self.item_information['info']['premiered'] premiered = tools.parse_datetime(premiered, g.DATE_TIME_FORMAT) premiered = premiered.strftime(xbmc.getRegion('dateshort')) try: premiered = premiered[:10] except IndexError: premiered = "TBA" self.setProperty('item.info.premiered', str(premiered))
def requires_update(self, new_date, old_date): if tools.parse_datetime(new_date, tools.DATE_FORMAT, False) > tools.parse_datetime( old_date, "%Y-%m-%dT%H:%M:%S", False): return True else: return False
def shows_years(self, year=None): if year is None: current_year = int( tools.parse_datetime(datetime.datetime.today().strftime( g.DATE_FORMAT)).year) all_years = reversed( [year for year in range(1900, current_year + 1)]) menu_items = [] for year in all_years: menu_items.append( g.add_directory_item(g.UNICODE(year), action="showYears", action_args=year, bulk_add=True)) xbmcplugin.addDirectoryItems(g.PLUGIN_HANDLE, menu_items, len(menu_items)) g.close_directory(g.CONTENT_SHOW) else: trakt_list = self.shows_database.extract_trakt_page( "shows/popular", years=year, page=g.PAGE, extended="full", hide_watched=False) self.list_builder.show_list_builder(trakt_list)
def _post_process(self, item, prepend_date=False, mixed_list=False): if not item: return name = g.decode_py2(item.get("info", {}).get("title")) if not name: g.log("Item has no title: {}".format(item), "error") if (not item["info"]["mediatype"] == "list" and not self.hide_unaired and not self.is_aired(item["info"])): name = g.color_string(tools.italic_string(name), "red") if item["info"]["mediatype"] == "episode": if self.title_appends_mixed and mixed_list: name = self._handle_episode_title_appending( name, item, self.title_appends_mixed) elif self.title_appends_general and not mixed_list: name = self._handle_episode_title_appending( name, item, self.title_appends_general) if item["info"][ "mediatype"] == "list" and self.list_title_appends == "1": name += " - {}".format( g.color_string(g.encode_py2(item["info"]["username"]))) if not item["info"]["mediatype"] == "list" and prepend_date: release_day = tools.parse_datetime(item["info"]["aired"][:10]) if release_day: release_day = release_day.strftime("%d %b") name = "[{}] {}".format(release_day, g.encode_py2(name)) item.update({"name": name}) item["info"]["title"] = name return item
def _post_process(self, item, prepend_date=False, mixed_list=False): if not item: return if self.show_original_title and item.get("info", {}).get("originaltitle"): name = item.get("info", {}).get("originaltitle") else: name = item.get("info", {}).get("title") if not name: g.log("Item has no title: {}".format(item), "error") if (not item["info"]["mediatype"] == "list" and not self.hide_unaired and not self.is_aired(item)): name = g.color_string(tools.italic_string(name), "red") if item["info"]["mediatype"] == "episode": if self.title_appends_mixed and mixed_list: name = self._handle_episode_title_appending( name, item, self.title_appends_mixed) elif self.title_appends_general and not mixed_list: name = self._handle_episode_title_appending( name, item, self.title_appends_general) if item["info"]["mediatype"] == "list" and self.list_title_appends == 1: name += " - {}".format(g.color_string(item["info"]["username"])) if not item["info"]["mediatype"] == "list" and prepend_date: release_date = g.utc_to_local( item.get("air_date", item["info"].get("aired", None))) if release_date: release_day = tools.parse_datetime( release_date, g.DATE_TIME_FORMAT, date_only=False).strftime("{} @ {}".format( "%a %d %b", g.KODI_TIME_NO_SECONDS_FORMAT)) name = "[{}] {}".format(release_day, name) item.update({"name": name}) item["info"]["title"] = name return item