Esempio n. 1
0
    def metadata(self) -> str:
        """str: the user-displayed metadata of the episode"""
        description = (helpers.html_to_plain(self.description)
                       if helpers.is_true(Config["clean_html_descriptions"])
                       else self.description)
        description = description.replace("\n", "")
        progress = helpers.seconds_to_time(self.progress /
                                           constants.MILLISECONDS_IN_SECOND)
        downloaded = ("Episode downloaded and available for offline playback."
                      if self.downloaded else "Episode not downloaded.")
        metadata = ("!cb{title}\n"
                    "{pubdate}\n\n"
                    "{link}\n\n"
                    "!cbCopyright:\n"
                    "{copyright}\n\n"
                    "!cbDownloaded:\n"
                    "{downloaded}\n\n"
                    "!cbDescription:\n"
                    "{description}\n\n"
                    "!cbTime Played:\n"
                    "{progress}\n".format(
                        title=self.title,
                        pubdate=self.pubdate,
                        link=self.link,
                        copyright=self.copyright,
                        downloaded=downloaded,
                        description=description,
                        progress=progress,
                    ))

        return metadata
Esempio n. 2
0
    def metadata(self) -> str:
        """str: the user-displayed metadata of the episode"""
        description = helpers.html_to_plain(self.description) if \
            helpers.is_true(Config["clean_html_descriptions"]) else \
            self.description
        description = description.replace('\n', '')
        downloaded = "Episode downloaded and available for offline playback." \
            if self.downloaded else "Episode not downloaded."

        return \
            "!cb{title}\n" \
            "{pubdate}\n\n" \
            "{link}\n\n" \
            "!cbCopyright:\n" \
            "{copyright}\n\n" \
            "!cbDownloaded:\n" \
            "{downloaded}\n\n" \
            "!cbDescription:\n" \
            "{description}\n".format(
                title=self.title,
                pubdate=self.pubdate,
                link=self.link,
                copyright=self.copyright,
                downloaded=downloaded,
                description=description)
Esempio n. 3
0
    def metadata(self) -> str:
        """str: the user-displayed metadata of the feed"""
        description = helpers.html_to_plain(self.description) if \
            helpers.is_true(Config["clean_html_descriptions"]) else \
            self.description
        description = description.replace('\n', '')

        return \
            f"\cb{self.title}\n" \
            f"{self.last_build_date}\n\n" \
            f"{self.link}\n\n" \
            f"\cbDescription:\n" \
            f"{description}\n\n" \
            f"\cbCopyright:\n" \
            f"{self.copyright}\n"
Esempio n. 4
0
    def metadata(self) -> str:
        """str: the user-displayed metadata of the feed"""
        description = (
            helpers.html_to_plain(self.description)
            if helpers.is_true(Config["clean_html_descriptions"])
            else self.description
        )
        description = description.replace("\n", "")

        return (
            "!cb{title}\n"
            "{last_build_date}\n\n"
            "{link}\n\n"
            "!cbCopyright:\n"
            "{copyright}\n\n"
            "!cbDescription:\n"
            "{description}\n".format(
                title=self.title,
                last_build_date=self.last_build_date,
                link=self.link,
                copyright=self.copyright,
                description=description,
            )
        )
Esempio n. 5
0
    def _draw_metadata(self, window, feed=None, episode=None) -> None:
        """Draws the metadata of the selected feed/episode onto the window.

        Exactly one of feed or episode must be specified.

        Args:
            window: the curses window which will display the metadata
            feed: (optional) the Feed whose metadata will be displayed
            episode: (optional) the Episode whose metadata will be displayed
        """
        assert window is not None
        assert feed != episode and (feed is None or episode is None)

        output_lines = []  # 2D array, each element is [attr, str]
        max_lines = window.getmaxyx()[0] - 2
        max_line_width = window.getmaxyx()[1] - 1

        # clear the window by drawing blank lines
        for y in range(2, window.getmaxyx()[0]):
            window.addstr(y, 0, " " * max_line_width)

        if feed is not None:
            # draw feed title
            self._append_metadata_lines(
                window, feed.title, output_lines, attr=curses.A_BOLD)
            # draw feed lastBuildDate
            self._append_metadata_lines(
                window, feed.last_build_date, output_lines, add_blank=True)
            # draw feed link
            self._append_metadata_lines(
                window, feed.link, output_lines, add_blank=True)
            # draw feed description
            self._append_metadata_lines(
                window, "Description:", output_lines, attr=curses.A_BOLD)
            self._append_metadata_lines(
                window,
                helpers.html_to_plain(feed.description) if
                helpers.is_true(Config["clean_html_descriptions"]) else
                feed.description, output_lines, add_blank=True)
            # draw feed copyright
            self._append_metadata_lines(
                window, "Copyright:", output_lines, attr=curses.A_BOLD)
            self._append_metadata_lines(
                window, feed.copyright, output_lines, add_blank=True)
            # draw feed number of episodes
            num_dl = sum([episode.downloaded() for
                          episode in feed.episodes])
            self._append_metadata_lines(
                window, "Episodes:", output_lines, attr=curses.A_BOLD)
            self._append_metadata_lines(
                window, "Found %d episodes (%d downloaded)" % (
                    len(feed.episodes), num_dl
                ), output_lines)
        elif episode is not None:
            # draw episode title
            self._append_metadata_lines(
                window, episode.title, output_lines, attr=curses.A_BOLD)
            # draw episode pubdate
            self._append_metadata_lines(
                window, episode.pubdate, output_lines, add_blank=True)
            # draw episode link
            self._append_metadata_lines(
                window, episode.link, output_lines, add_blank=True)
            # draw episode description
            self._append_metadata_lines(
                window, "Description:", output_lines, attr=curses.A_BOLD)
            self._append_metadata_lines(
                window,
                helpers.html_to_plain(episode.description) if
                helpers.is_true(Config["clean_html_descriptions"]) else
                episode.description, output_lines, add_blank=True)
            # draw episode copyright
            self._append_metadata_lines(
                window, "Copyright:", output_lines, attr=curses.A_BOLD)
            self._append_metadata_lines(
                window, episode.copyright, output_lines, add_blank=True)

            # draw episode downloaded
            self._append_metadata_lines(
                window, "Downloaded:", output_lines, attr=curses.A_BOLD)
            self._append_metadata_lines(
                window,
                "Episode downloaded and available for offline playback."
                if episode.downloaded() else "Episode not downloaded.",
                output_lines)

        y = 2
        for line in output_lines[:max_lines]:
            window.attrset(curses.color_pair(1))
            if line[0] != -1:
                window.attron(line[0])
            window.addstr(y, 0, line[1])
            y += 1 + line[1].count('\n')