Пример #1
0
    def show_all(self):
        item_index = None
        while item_index is None:
            channel = self.select_channel("List")
            if channel is not None:
                paginator = Paginator(channel.items)

                while True:
                    # TODO: Replace with cli.py
                    for i, item in enumerate(paginator.get_current_page()):
                        print(
                            f"  {i+paginator.current_min}) {item.title} ({item.enclosure.url}) Downloaded={item.downloaded}"
                        )

                    item_index = input(f"{channel.title}> ")
                    if item_index == "n":
                        self.paginator_next(paginator)
                    elif item_index == "p":
                        self.paginator_prev(paginator)
                    elif item_index == "q":
                        item_index = None
                        break
                    else:
                        print("Invalid Command!")
            else:
                break
Пример #2
0
    def select_item_indexes(self, channel, purpose):
        items = channel.items
        paginator = Paginator(items)

        # TODO: Can you do this without cont?
        cont = True
        while cont:
            # TODO: Replace with cli.py
            cont = False
            for i, item in enumerate(paginator.get_current_page()):
                print(
                    f"  {i+paginator.current_min}) {item.title} ({item.enclosure.url}) Downloaded={item.downloaded}"
                )

            item_indexes = input(f"Which Items do you want {purpose}? ")
            if item_indexes == "n":
                self.paginator_next(paginator)
            elif item_indexes == "p":
                self.paginator_prev(paginator)
            elif item_indexes == "q":
                item_indexes = None
                break
            else:
                try:
                    item_indexes = list(map(int, item_indexes.split(" ")))
                except ValueError:
                    print("Invalid Input!")
                    cont = True
                    continue

                for i in item_indexes:
                    if i > len(channel.items) or i < 0:
                        print(
                            f"Options must be between {0} and {len(channel.items)-1}"
                        )
                        cont = True
                        break

                if cont:
                    continue

                return item_indexes
Пример #3
0
    def select_channel(self, purpose):
        channels = list(self.manager.channels.values())
        paginator = Paginator(channels)

        if len(channels) == 0:
            print("No Podcasts Available Yet!")
            return

        while True:
            for i, channel in enumerate(paginator.get_current_page()):
                print(f"{i+paginator.current_min}) {channel.title}")

            # TODO: Replace with cli.py
            channel_index = input(
                f"Which Channel do you want to {purpose} from? ")
            if channel_index == "n":
                self.paginator_next(paginator)
            elif channel_index == "p":
                self.paginator_prev(paginator)
            elif channel_index == "q":
                channel_index = None
                break
            else:
                try:
                    channel_index = int(channel_index)
                except ValueError:
                    print("Invalid Input!")
                    continue

                if channel_index > len(
                        self.manager.channels.keys()) or channel_index < 0:
                    print(
                        f"Option must be between {0} and {len(self.manager.channels.keys())}"
                    )
                    continue

                return self.manager.channels[self.manager.title_to_url[
                    channels[channel_index].title]]