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()
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))
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
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)
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"))
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()
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"))
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")
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"))
def test_generating_invalid_xdcc_message(self): packs = xdcc_packs_from_xdcc_message("randomnonesense") self.assertEqual(len(packs), 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!")