def test_single_video_name(self): create_test_directory( TestGetVideos.test_dir_structure1, parent_dir=TestGetVideos.test_dir, ) videos = get_videos("file5.mkv") self.assertDictEqual(videos, TestGetVideos.desired_result5)
def test_assign_downloader(self): print("=================================") print("=== Test unexisted downloader ===") print("=================================") dir_structure = { "the.expanse.s01e01.mkv": None, } create_test_directory(dir_structure, TestMain.test_dir) args = TestMain.build_args({ "name": TestMain.test_dir, "downloader": "unexisted_downloader" }) with self.assertRaises(SystemExit) as cm: GetSubtitles(**args).start() self.assertEqual(cm.exception.code, 1) print("===============================") print("=== Test existed downloader ===") print("===============================") args = TestMain.build_args({ "name": TestMain.test_dir, "downloader": "zimuku" }) result = GetSubtitles(**args).start() self.assertEqual(result["success"], 1) self.assertTrue( path.exists(path.join(TestMain.test_dir, "the.expanse.s01e01.ass")))
def test_invalid_store_path(self): create_test_directory( TestGetVideos.test_dir_structure1, parent_dir=TestGetVideos.test_dir, ) videos = get_videos( TestGetVideos.test_dir, store_path=path.join(TestGetVideos.test_dir, "unexisted_dir"), ) self.assertDictEqual(videos, (TestGetVideos.desired_result1))
def test_store_path(self): create_test_directory( TestGetVideos.test_dir_structure2, parent_dir=TestGetVideos.test_dir, ) videos = get_videos( TestGetVideos.test_dir, store_path=path.join(TestGetVideos.test_dir, "storepath"), ) self.assertDictEqual(videos, (TestGetVideos.desired_result6))
def test_store_path(self): create_test_directory( TestGetVideos.test_dir_structure2, parent_dir=TestGetVideos.test_dir, ) get_videos = get_function( sub_path=path.join(TestGetVideos.test_dir, "storepath")) videos = get_videos(TestGetVideos.test_dir) videos = videos_to_dict(videos) self.assertDictEqual(videos, (TestGetVideos.desired_result6))
def test_absolute_video_path(self): create_test_directory( TestGetVideos.test_dir_structure1, parent_dir=TestGetVideos.test_dir, ) videos = get_videos(path.join(TestGetVideos.test_dir, "sub1", "file1.mkv")) self.assertDictEqual(videos, TestGetVideos.desired_result2) videos = get_videos(path.join(TestGetVideos.test_dir, "file5.mkv")) self.assertDictEqual(videos, TestGetVideos.desired_result3) videos = get_videos(path.join(TestGetVideos.test_dir, "file6.mkv")) self.assertDictEqual(videos, TestGetVideos.desired_result4)
def test_directory_with_identifier(self): create_test_directory( TestGetVideos.test_dir_structure1, parent_dir=TestGetVideos.test_dir, ) desired_result = copy.deepcopy(TestGetVideos.desired_result1) desired_result["file1.mkv"]["has_subtitle"] = False desired_result["file4.mkv"]["has_subtitle"] = True desired_result["file6.mkv"]["has_subtitle"] = True videos = get_videos(TestGetVideos.test_dir, identifier=".zh") self.assertDictEqual(videos, desired_result)
def test_choose_subtitle(self, mock_input): create_test_directory( TestProcessArchive.test_dir_structure, parent_dir=TestProcessArchive.test_dir, ) with open(path.join(assets_path, "archive.zip"), "rb") as f: data = f.read() err, subnames = process_archive( "sub1.mkv", TestProcessArchive.test_video_info, data, ".zip", choose=True, ) self.assertEqual((err, subnames), ("", [["dir1/sub1.ass", ".ass"]]))
def test_save_both_subtitles_fail(self): create_test_directory( TestProcessArchive.test_dir_structure, parent_dir=TestProcessArchive.test_dir, ) with open(path.join(assets_path, "archive.zip"), "rb") as f: data = f.read() err, subnames = process_archive( "sub1.mkv", TestProcessArchive.test_video_info, data, ".zip", both=True, ) self.assertTrue( "sub1.ass" in os.listdir(TestProcessArchive.test_dir) and "sub1.srt" not in os.listdir(TestProcessArchive.test_dir) )
def test_save_archive(self): print("============================") print("=== Test save the archive===") print("============================") dir_structure = { "the.flash.s01e01.mkv": None, } create_test_directory(dir_structure, TestMain.test_dir) args = TestMain.build_args({"name": TestMain.test_dir, "more": True}) result = GetSubtitles(**args).start() self.assertTrue(result["success"], 1) files = os.listdir(TestMain.test_dir) types = set([path.splitext(file)[1] for file in files]) self.assertTrue(".rar" in types or ".zip" in types or ".7z" in types)
def test_save_both_subtitles_success(self): create_test_directory( TestProcessArchive.test_dir_structure, parent_dir=TestProcessArchive.test_dir, ) with open(path.join(assets_path, "archive.zip"), "rb") as f: data = f.read() test_video = Video(path.join(TestProcessArchive.test_dir, "sub.mkv")) process_archive = get_function(both=True) err, subnames = process_archive(test_video, data, ".zip") self.assertTrue( "sub.ass" in os.listdir(TestProcessArchive.test_dir) and "sub.srt" in os.listdir(TestProcessArchive.test_dir) )
def test_delete_existed_subtitles(self): dir_structure = copy.copy(TestProcessArchive.test_dir_structure) dir_structure["sub1.ass"] = None dir_structure["sub1.srt"] = None create_test_directory( dir_structure, parent_dir=TestProcessArchive.test_dir, ) with open(path.join(assets_path, "archive.zip"), "rb") as f: data = f.read() err, subnames = process_archive( "sub1.mkv", TestProcessArchive.test_video_info, data, ".zip", both=True, ) self.assertTrue( "sub1.ass" in os.listdir(TestProcessArchive.test_dir) and "sub1.srt" not in os.listdir(TestProcessArchive.test_dir) )
def test_directory(self): """ 1. test -p """ print("===============================") print("=== Test external directory ===") print("===============================") dir_structure = { "the.flash.s01e01.mkv": None, "the.flash.s01e01.ass": None, "subdir": [], } create_test_directory(dir_structure, TestMain.test_dir) args = TestMain.build_args({ "name": TestMain.test_dir, "sub_path": path.join(TestMain.test_dir, "subdir"), }) result = GetSubtitles(**args).start() self.assertEqual(result["success"], 1) statinfo = os.stat(path.join(TestMain.test_dir, "the.flash.s01e01.ass")) self.assertEqual(statinfo.st_size, 0) statinfo = os.stat( path.join(TestMain.test_dir, "subdir", "the.flash.s01e01.ass")) self.assertNotEqual(statinfo.st_size, 0) shutil.rmtree(TestMain.test_dir) dir_structure = { "the.flash.s01e01.mkv": None, "subdir": ["the.flash.s01e01.ass"], } create_test_directory(dir_structure, TestMain.test_dir) args = TestMain.build_args({ "name": TestMain.test_dir, "sub_path": path.join(TestMain.test_dir, "subdir"), }) result = GetSubtitles(**args).start() self.assertEqual(result["success"], 1) statinfo = os.stat( path.join(TestMain.test_dir, "subdir", "the.flash.s01e01.ass")) self.assertEqual(statinfo.st_size, 0) shutil.rmtree(TestMain.test_dir)
def test_identifier(self): dir_structure = copy.copy(TestProcessArchive.test_dir_structure) dir_structure["sub1.ass"] = None dir_structure["sub1.zh.srt"] = None create_test_directory( dir_structure, parent_dir=TestProcessArchive.test_dir, ) with open(path.join(assets_path, "archive.zip"), "rb") as f: data = f.read() process_archive = get_function() test_video = Video( path.join(TestProcessArchive.test_dir, "sub1.mkv"), identifier=".zh" ) err, subnames = process_archive(test_video, data, ".zip") self.assertTrue( "sub1.ass" in os.listdir(TestProcessArchive.test_dir) and "sub1.zh.ass" in os.listdir(TestProcessArchive.test_dir) and "sub1.zh.srt" not in os.listdir(TestProcessArchive.test_dir) )
def test_download_subtitles(self): print("===============================") print("=== Test download subtitles ===") print("===============================") # zimuku should have subtitle results for this video video_name, video_type = ( "Young.Sheldon.S03E15.1080p.WEB.x264-XLF[rarbg]", ".mkv", ) dir_structure = {video_name + video_type: None} create_test_directory(dir_structure, TestMain.test_dir) args = TestMain.build_args({ "name": TestMain.test_dir, "downloader": "zimuku" }) result = GetSubtitles(**args).start() self.assertTrue(result["success"], 1) files = os.listdir(TestMain.test_dir) possible_subs = [video_name + sub_type for sub_type in SUB_FORMATS] self.assertTrue(set(files).intersection(possible_subs))
def test_override_subtitles(self): """ 1. test not override existed subtitles 2. test override existed subtitles 3. test 1 and 2 with '--plex' """ print("===========================================") print("=== Test not override existed subtitles ===") print("===========================================") dir_structure = { "the.flash.s01e01.mkv": None, "the.flash.s01e01.ass": None, "the.flash.s01e01.zh.ass": None, } create_test_directory(dir_structure, TestMain.test_dir) args = TestMain.build_args({"name": TestMain.test_dir}) result = GetSubtitles(**args).start() self.assertEqual(result["success"], 1) statinfo = os.stat(path.join(TestMain.test_dir, "the.flash.s01e01.ass")) self.assertEqual(statinfo.st_size, 0) print("=======================================") print("=== Test override existed subtitles ===") print("=======================================") args = TestMain.build_args({"name": TestMain.test_dir, "over": True}) result = GetSubtitles(**args).start() self.assertEqual(result["success"], 1) statinfo = os.stat(path.join(TestMain.test_dir, "the.flash.s01e01.ass")) self.assertNotEqual(statinfo.st_size, 0) statinfo = os.stat( path.join(TestMain.test_dir, "the.flash.s01e01.zh.ass")) self.assertEqual(statinfo.st_size, 0) shutil.rmtree(TestMain.test_dir) print("======================================================") print("=== Test not override existed subtitles (with .zh) ===") print("======================================================") dir_structure = { "the.flash.s01e01.mkv": None, "the.flash.s01e01.zh.ass": None, } create_test_directory(dir_structure, TestMain.test_dir) args = TestMain.build_args({"name": TestMain.test_dir, "plex": True}) result = GetSubtitles(**args).start() self.assertEqual(result["success"], 1) statinfo = os.stat( path.join(TestMain.test_dir, "the.flash.s01e01.zh.ass")) self.assertEqual(statinfo.st_size, 0) print("=====================================================") print("=== Test not override existed subtitles (with .zh)===") print("=====================================================") args = TestMain.build_args({ "name": TestMain.test_dir, "plex": True, "over": True }) result = GetSubtitles(**args).start() self.assertEqual(result["success"], 1) statinfo = os.stat( path.join(TestMain.test_dir, "the.flash.s01e01.zh.ass")) self.assertNotEqual(statinfo.st_size, 0) shutil.rmtree(TestMain.test_dir)