Exemple #1
0
    def files_deduplication(self, path):
        """ Deduplication algorithm for video files"""
        def files_deletion(path, files):

            deep_path = path + "/" + files

            if os.path.isdir(deep_path):
                shutil.rmtree(deep_path)
            else:
                os.remove(deep_path)

        def deduplication_resolution(file_resolution_1, file_resolution_2,
                                     files_number):
            """ Local algorithm of deduplication for video resolution """

            if file_resolution_1 != None and file_resolution_2 != None:
                if file_resolution_1 == file_resolution_2:
                    files_deletion(path, files[i2])
                    self.count_duplicate += 1
                    files_number -= 1
                elif file_resolution_1 == "1080p" and file_resolution_2 == "720p":
                    files_deletion(path, files[i2])
                    self.count_duplicate += 1
                    files_number -= 1
                elif file_resolution_1 == "720p" and file_resolution_2 == "1080p":
                    files_deletion(path, files[i1])
                    self.count_duplicate += 1
                    files_number -= 1
                elif file_resolution_1 == "720p" and file_resolution_2 == "480p":
                    files_deletion(path, files[i2])
                    self.count_duplicate += 1
                    files_number -= 1
                elif file_resolution_1 == "480p" and file_resolution_2 == "720p":
                    files_deletion(path, files[i1])
                    self.count_duplicate += 1
                    files_number -= 1
                elif file_resolution_1 == "480p" and file_resolution_2 == "1080p":
                    files_deletion(path, files[i1])
                    self.count_duplicate += 1
                    files_number -= 1
                elif file_resolution_1 == "1080p" and file_resolution_2 == "480p":
                    files_deletion(path, files[i2])
                    self.count_duplicate += 1
                    files_number -= 1
            elif file_resolution_1 == "720p" and file_resolution_2 == None:
                files_deletion(path, files[i2])
                self.count_duplicate += 1
                files_number -= 1
            elif file_resolution_1 == "1080p" and file_resolution_2 == None:
                files_deletion(path, files[i2])
                self.count_duplicate += 1
                files_number -= 1
            elif file_resolution_1 == "480p" and file_resolution_2 == None:
                files_deletion(path, files[i2])
                self.count_duplicate += 1
                files_number -= 1
            elif file_resolution_1 == None and file_resolution_2 == "720p":
                files_deletion(path, files[i1])
                self.count_duplicate += 1
                files_number -= 1
            elif file_resolution_1 == None and file_resolution_2 == "1080p":
                files_deletion(path, files[i1])
                self.count_duplicate += 1
                files_number -= 1
            elif file_resolution_1 == None and file_resolution_2 == "480p":
                files_deletion(path, files[i1])
                self.count_duplicate += 1
                files_number -= 1
            elif file_resolution_1 == None and file_resolution_2 == None:
                files_deletion(path, files[i2])
                self.count_duplicate += 1
                files_number -= 1

        Files = ManageFiles()
        video = Video()

        files = Files.list_files(path)

        i1 = 0

        files_number = (len(files) - 1)

        while i1 < files_number:

            if video.check(path, files[i1]):

                serie_title_1 = video.extract_metadata(
                    files[i1])["type"]["serie"][1]["title"]
                serie_season_1 = video.extract_metadata(
                    files[i1])["type"]["serie"][2]["season"]
                serie_episode_1 = video.extract_metadata(
                    files[i1])["type"]["serie"][3]["episode"]
                serie_resolution_1 = video.extract_metadata(
                    files[i1])["type"]["serie"][5]["resolution"]

                film_title_1 = video.extract_metadata(
                    files[i1])["type"]["film"][1]["title"]
                film_resolution_1 = video.extract_metadata(
                    files[i1])["type"]["film"][3]["resolution"]

                if video.is_serie:

                    i2 = i1 + 1

                    while i2 <= files_number:

                        serie_title_2 = video.extract_metadata(
                            files[i2])["type"]["serie"][1]["title"]
                        serie_season_2 = video.extract_metadata(
                            files[i2])["type"]["serie"][2]["season"]
                        serie_episode_2 = video.extract_metadata(
                            files[i2])["type"]["serie"][3]["episode"]
                        serie_resolution_2 = video.extract_metadata(
                            files[i2])["type"]["serie"][5]["resolution"]

                        if serie_title_1 == serie_title_2:
                            if serie_season_1 == serie_season_2:
                                if serie_episode_1 == serie_episode_2:
                                    deduplication_resolution(
                                        serie_resolution_1, serie_resolution_2,
                                        files_number)

                        i2 += 1

                else:

                    i2 = i1 + 1

                    while i2 <= files_number:

                        film_title_2 = video.extract_metadata(
                            files[i2])["type"]["film"][1]["title"]
                        film_resolution_2 = video.extract_metadata(
                            files[i2])["type"]["film"][3]["resolution"]

                        if film_title_1 == film_title_2:
                            deduplication_resolution(film_resolution_1,
                                                     film_resolution_2,
                                                     files_number)

                        i2 += 1

            i1 += 1
Exemple #2
0
    def files_sorting(self, path, path_dest=None):
        """ Algorithm to clean and sort video files """
        def moving_to(path,
                      specific_series_folder,
                      main_serie_folder,
                      files,
                      path_dest=None):

            if path_dest != None:
                if os.path.exists(path_dest + specific_series_folder):
                    if os.path.exists(path_dest + main_serie_folder +
                                      specific_series_folder):
                        if not data_files.list_files(path_dest +
                                                     specific_series_folder):
                            shutil.rmtree(path_dest + specific_series_folder)
                        else:
                            if os.path.exists(path + specific_series_folder):
                                if not data_files.list_files(
                                        path + specific_series_folder):
                                    shutil.rmtree(path +
                                                  specific_series_folder)
                                else:
                                    shutil.move(path + specific_series_folder,
                                                path_dest + main_serie_folder)
                                    shutil.move(
                                        path + files,
                                        path_dest + main_serie_folder +
                                        specific_series_folder)
                                    self.count_video_files += 1
                            else:
                                shutil.move(
                                    path + files, path_dest +
                                    main_serie_folder + specific_series_folder)
                                self.count_video_files += 1
                    else:
                        if not data_files.list_files(path_dest +
                                                     specific_series_folder):
                            shutil.rmtree(path_dest + specific_series_folder)
                        else:
                            shutil.move(path + files,
                                        path_dest + specific_series_folder)
                            shutil.move(path_dest + specific_series_folder,
                                        path_dest + main_serie_folder)
                            self.count_video_files += 1
                else:
                    if os.path.exists(path_dest + main_serie_folder +
                                      specific_series_folder):
                        if os.path.exists(path + specific_series_folder):
                            if not data_files.list_files(
                                    path + specific_series_folder):
                                shutil.rmtree(path + specific_series_folder)
                            else:
                                shutil.move(path + specific_series_folder,
                                            path_dest + main_serie_folder)
                                shutil.move(
                                    path + files, path_dest +
                                    main_serie_folder + specific_series_folder)
                                self.count_video_files += 1
                        else:
                            shutil.move(
                                path + files, path_dest + main_serie_folder +
                                specific_series_folder)
                            self.count_video_files += 1
                    else:
                        if os.path.exists(path + specific_series_folder):
                            if not data_files.list_files(
                                    path + specific_series_folder):
                                shutil.rmtree(path + specific_series_folder)
                            else:
                                shutil.move(path + specific_series_folder,
                                            path_dest + main_serie_folder)
                                shutil.move(
                                    path + files, path_dest +
                                    main_serie_folder + specific_series_folder)
                                self.count_video_files += 1
                        else:
                            os.mkdir(path_dest + main_serie_folder +
                                     specific_series_folder)
                            shutil.move(
                                path + files, path_dest + main_serie_folder +
                                specific_series_folder)
                            self.count_video_files += 1
            else:
                if os.path.exists(path + specific_series_folder):
                    if os.path.exists(path + main_serie_folder +
                                      specific_series_folder):
                        if not data_files.list_files(path +
                                                     specific_series_folder):
                            shutil.rmtree(path + specific_series_folder)
                        else:
                            shutil.move(path + specific_series_folder,
                                        path + main_serie_folder)
                            shutil.move(
                                path + files, path + main_serie_folder +
                                specific_series_folder)
                            self.count_video_files += 1
                    else:
                        if not data_files.list_files(path +
                                                     specific_series_folder):
                            shutil.rmtree(path + specific_series_folder)
                        else:
                            shutil.move(path + files,
                                        path + specific_series_folder)
                            shutil.move(
                                path + specific_series_folder, path +
                                main_serie_folder + specific_series_folder)
                            self.count_video_files += 1
                else:
                    if os.path.exists(path + main_serie_folder +
                                      specific_series_folder):
                        shutil.move(
                            path + files,
                            path + main_serie_folder + specific_series_folder)
                        self.count_video_files += 1
                    else:
                        os.mkdir(path + main_serie_folder +
                                 specific_series_folder)
                        shutil.move(
                            path + files,
                            path + main_serie_folder + specific_series_folder)
                        self.count_video_files += 1

        data_files = ManageFiles()
        video = Video()

        list_files_in_dir = data_files.list_files(path)

        for files in list_files_in_dir:

            data_files.split_files(files)

            if video.check(path, files):

                video.extract_metadata(files)

                if path_dest != None:

                    if video.is_video:

                        if video.is_serie:

                            specific_series_folder = "/" + video.title + "_season_" + str(
                                video.season)
                            main_serie_folder = "/Series"

                            if os.path.exists(path_dest + main_serie_folder):
                                moving_to(path, specific_series_folder,
                                          main_serie_folder, files, path_dest)
                            else:
                                os.mkdir(path_dest + main_serie_folder)
                                moving_to(path, specific_series_folder,
                                          main_serie_folder, files, path_dest)
                        else:
                            folder_title = "/Films"
                            divers_movies_folder = path_dest + folder_title

                            if os.path.exists(divers_movies_folder):
                                shutil.move(path + "/" + files,
                                            divers_movies_folder + "/" + files)
                                self.count_video_files += 1
                            else:
                                os.mkdir(divers_movies_folder)
                                shutil.move(path + "/" + files,
                                            divers_movies_folder + "/" + files)
                                self.count_video_files += 1
                else:

                    if video.is_video:

                        if video.is_serie:

                            specific_series_folder = "/" + video.title + "_season_" + str(
                                video.season)
                            main_serie_folder = "/Series"

                            if os.path.exists(path + main_serie_folder):
                                moving_to(path, specific_series_folder,
                                          main_serie_folder, files)
                            else:
                                os.mkdir(path + main_serie_folder)
                                moving_to(path, specific_series_folder,
                                          main_serie_folder, files)
                        else:

                            divers_movies_folder = path + "/Films"

                            if os.path.exists(divers_movies_folder):
                                shutil.move(path + "/" + files,
                                            divers_movies_folder + "/" + files)
                                self.count_video_files += 1
                            else:
                                os.mkdir(divers_movies_folder)
                                shutil.move(path + "/" + files,
                                            divers_movies_folder + "/" + files)
                                self.count_video_files += 1