Esempio n. 1
0
 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)
Esempio n. 2
0
    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))
Esempio n. 5
0
 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)
Esempio n. 8
0
 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"]]))
Esempio n. 9
0
 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)
     )
Esempio n. 10
0
 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)
Esempio n. 11
0
 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)
     )
Esempio n. 12
0
 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)
     )
Esempio n. 13
0
    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)
Esempio n. 14
0
 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)
     )
Esempio n. 15
0
 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))
Esempio n. 16
0
    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)