示例#1
0
    def add_pack(self):

        message = self.message_edit.text()
        server = self.server_edit.text()

        self.download_queue += \
            xdcc_packs_from_xdcc_message(message, server=server)
        self.refresh_download_queue()
示例#2
0
 def test_removing_packs_from_queue(self):
     self.tui.download_queue = xdcc_packs_from_xdcc_message(
         "/msg xdcc_servbot xdcc send #1-3")
     self.assertEqual(3, len(self.tui.download_queue))
     self.tui.refresh_ui()
     self.tui.download_queue_checks[0].set_state(True)
     self.tui.remove_selected_packs(None)
     self.assertEqual(2, len(self.tui.download_queue))
示例#3
0
    def test_generating_from_xdcc_message_range_with_jumps(self):

        packs = xdcc_packs_from_xdcc_message(
            "/msg xdcc_servbot xdcc send #1-100,2")
        self.assertEqual(len(packs), 50)

        i = 1
        for pack in packs:
            self.assertEqual(pack.get_packnumber(), i)
            i += 2
示例#4
0
    def test_generating_from_xdcc_message_range(self):

        packs = xdcc_packs_from_xdcc_message(
            "/msg xdcc_servbot xdcc send #1-100")
        self.assertEqual(len(packs), 100)

        for i, pack in enumerate(packs):
            self.assertEqual(pack.get_packnumber(), i + 1)
            self.assertEqual(pack.get_server().get_address(), "irc.rizon.net")
            self.assertEqual(pack.get_filepath(), os.getcwd() + os.sep)
示例#5
0
    def test_download(self):
        self.tui.download_queue = xdcc_packs_from_xdcc_message(
            "/msg xdcc_servbot xdcc send #1-3", server="irc.namibsun.net")
        self.tui.refresh_ui()
        self.tui.download(None)

        while self.tui.downloading:
            pass

        self.assertTrue(os.path.isfile("1_test.txt"))
        self.assertTrue(os.path.isfile("2_test.txt"))
        self.assertTrue(os.path.isfile("3_test.txt"))
示例#6
0
    def add_pack_manually(self, button: urwid.Button):
        """
        Adds a manually defined XDCC pack to the download queue

        :param button: The Button that called this method
        :return:       None
        """
        message = self.message_edit.get_edit_text()
        server = self.server_edit.get_edit_text()
        self.download_queue += \
            xdcc_packs_from_xdcc_message(message, server=server)
        self.refresh_ui()
示例#7
0
    def test_download_while_downloading(self):
        self.tui.download_queue = xdcc_packs_from_xdcc_message(
            "/msg xdcc_servbot xdcc send #1-3", server="irc.namibsun.net")
        self.tui.refresh_ui()
        self.tui.download(None)

        time.sleep(0.5)

        self.assertNotEqual(self.tui.download_button.get_label(), "Download")

        self.tui.download_queue = xdcc_packs_from_xdcc_message(
            "/msg Ginpachi-Sensei xdcc send #1")
        self.tui.refresh_ui()
        self.tui.download(None)

        while self.tui.downloading:
            pass

        self.assertTrue(os.path.isfile("1_test.txt"))
        self.assertTrue(os.path.isfile("2_test.txt"))
        self.assertTrue(os.path.isfile("3_test.txt"))
        self.assertFalse(os.path.isfile("Gin.txt"))
示例#8
0
    def test_generating_from_xdcc_message_single(self):

        packs = xdcc_packs_from_xdcc_message("/msg xdcc_servbot xdcc send #1",
                                             "testdir", "irc.namibsun.net")
        self.assertEqual(len(packs), 1)
        pack = packs[0]

        self.assertEqual(pack.get_packnumber(), 1)
        self.assertEqual(pack.get_bot(), "xdcc_servbot")
        self.assertEqual(pack.get_server().get_address(), "irc.namibsun.net")
        self.assertEqual(pack.get_filepath(), "testdir" + os.sep)
        self.assertTrue(
            pack.get_request_message() in "/msg xdcc_servbot xdcc send #1")
示例#9
0
    def test_download_wrong_directory(self):
        self.tui.download_queue = xdcc_packs_from_xdcc_message(
            "/msg xdcc_servbot xdcc send #1-3", server="irc.namibsun.net")

        self.assertEqual(self.tui.destination_edit.get_edit_text(),
                         os.getcwd())
        self.tui.destination_edit.set_edit_text("NotADirectory")
        self.assertEqual(self.tui.destination_edit.get_edit_text(),
                         "NotADirectory")

        self.tui.refresh_ui()
        self.tui.download(None)

        while self.tui.downloading:
            pass

        self.assertFalse(os.path.isfile("1_test.txt"))
        self.assertFalse(os.path.isfile("2_test.txt"))
        self.assertFalse(os.path.isfile("3_test.txt"))
示例#10
0
    def test_generating_invalid_xdcc_message(self):

        packs = xdcc_packs_from_xdcc_message("randomnonesense")
        self.assertEqual(len(packs), 0)
示例#11
0
def main():
    """
    Starts the main method of the program

    :return: None
    """
    try:

        parser = argparse.ArgumentParser()
        parser.add_argument("message",
                            nargs='?',
                            help="An XDCC Message. "
                            "Supports ranges (1-100) and "
                            "also ranges with steps (1-100,2)")
        parser.add_argument("-s",
                            "--server",
                            help="Specifies the IRC Server. "
                            "Defaults to irc.rizon.net")
        parser.add_argument("-d",
                            "--destination",
                            help="Specifies the target download destination. "
                            "Defaults to " + os.getcwd())
        parser.add_argument("-u", "--username", help="Specifies the username")
        parser.add_argument("-v",
                            "--verbosity",
                            type=int,
                            default=1,
                            help="Specifies the verbosity of the output "
                            "on a scale of 1-7. Default: 1")
        parser.add_argument("-g",
                            "--gui",
                            action="store_true",
                            help="Starts the XDCC Downloader GUI")
        parser.add_argument("-t",
                            "--tui",
                            action="store_true",
                            help="Starts the XDCC Downloader TUI")
        args = parser.parse_args()

        if args.message:

            destination = os.getcwd() if not args.destination \
                else args.destination

            server = "irc.rizon.net" if not args.server else args.server
            user = "******" if not args.username else args.username
            verbosity = args.verbosity

            packs = xdcc_packs_from_xdcc_message(args.message, destination,
                                                 server)

            downloader = XDCCDownloader(server, user, verbosity)
            results = downloader.download(packs)
            downloader.quit()

            max_length = max(
                map(lambda x: len(x.get_filepath()), results.keys()))
            for result in results:
                print_result = result.get_filepath().ljust(max_length) + " - "
                print_result += results[result]
                print(print_result)

        elif args.gui:  # pragma: no cover
            if start_gui is not None:
                start_gui()
            else:
                print("Error: PyQt5 not installed")

        elif args.tui:  # pragma: no cover
            XDCCDownloaderTui().start()

        else:
            print("No arguments passed. See --help for more details")
            sys.exit(0)

    except KeyboardInterrupt:
        print("Thanks for using xdcc-dl!")