Esempio n. 1
0
    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
Esempio n. 2
0
    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))
Esempio n. 3
0
    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
Esempio n. 4
0
    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))
Esempio n. 5
0
 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
Esempio n. 6
0
 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)
Esempio n. 7
0
    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
Esempio n. 8
0
    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