def test_same_show_name_on_each_file(self): show_source_dir = 'kung fo season 1 (1080p bd 123)/' destination_show_path = self._SHOW_DESTINATION_DIRECTORY + '/Kung Fo/Season 1/' file_name_1 = 'Kung fo S01E01 Completely Strange (1080p) (C).mkv' file_name_2 = '(C) for Audio Commentary.txt' file_name_3 = 'Kung fo S01E02 Somewhat Stranger (1080p) (C).mkv' file_handler.create_dir(destination_show_path) self._createSourceFile(show_source_dir + file_name_1) self._createSourceFile(show_source_dir + file_name_2) self._createSourceFile(show_source_dir + file_name_3) mover.move_media_by_path(self._SOURCE_DIRECTORY + show_source_dir, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self._assert_file_moved(show_source_dir + file_name_1, destination_show_path + file_name_1) self._assert_file_moved( show_source_dir + file_name_2, self._SHOW_DESTINATION_DIRECTORY + '/Kung Fo/' + file_name_2) self._assert_file_moved(show_source_dir + file_name_3, destination_show_path + file_name_3)
def test_moving_movie_in_directory(self): folder_path = self._SOURCE_DIRECTORY + '007 Going For Old Time HD-TS x264-CPG' file_handler.create_dir(folder_path) file_path = folder_path + '/007 Going For Old Time HD-TS x264-CPG.mp4' file_handler.create_file(file_path) mover.move_media_by_path(folder_path, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) file_destination_path = self._MOVIE_DESTINATION_DIRECTORY + '007 Going For Old Time HD-TS x264-CPG/007 Going For Old Time HD-TS x264-CPG.mp4' self._assert_file_moved(file_path, file_destination_path)
def test_move_movie_by_file_path(self): movie_file_name = 'Abcde Fgh ijk Wjere To Found In 2010 HD-AA x111-ABC.mkv' file_handler.create_file(self._SOURCE_DIRECTORY + '/' + movie_file_name) source_file_path = self._SOURCE_DIRECTORY + '/' + movie_file_name mover.move_media_by_path(source_file_path, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) destination_path = self._MOVIE_DESTINATION_DIRECTORY + '/' + file_handler.get_last_name_from_path(movie_file_name) + '/' + movie_file_name self._assert_file_moved(source_file_path, destination_path)
def test_moving_with_only_season(self): episode = 'Lisa.Mirrander.S02.Special.Rocked.Summer.1080p.WEB-Org.AA02.1.LKIO.mkv' self._createSourceFile(episode) mover.move_media_by_path(self._SOURCE_DIRECTORY + episode, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self._assert_file_moved( episode, self._SHOW_DESTINATION_DIRECTORY + 'Lisa Mirrander/Season 2/' + episode)
def test_moving_episode_in_season_dir(self): folder_path = 'Kan Inte/Season 3/' file_name = 'Kan Inte S03E02 Apptest' source_path = self._createSourceFile(folder_path + file_name) mover.move_media_by_path(self._SOURCE_DIRECTORY + 'Kan Inte', self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self._assert_file_moved( source_path, self._SHOW_DESTINATION_DIRECTORY + '/' + folder_path + file_name)
def __create_move_and_validate_season1_episodes(self, episodes, show_name): for episode in episodes: file_path = show_name + episode self._createSourceFile(file_path) self._set_size_in_mb(file_path, 50) mover.move_media_by_path(self._SOURCE_DIRECTORY + show_name, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self.__validate_episodes_season_1(episodes, show_name)
def test_moving_movie_with_image(self): folder_path = self._SOURCE_DIRECTORY + 'Konstig (2017) [1080p] [JKL.KL]' file_handler.create_dir(folder_path) source_file_path = folder_path + '/WWW.YTS.AG.jpg' file_handler.create_file(source_file_path) mover.move_media_by_path(folder_path, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) file_destination_path = self._MOVIE_DESTINATION_DIRECTORY + '/Konstig (2017) [1080p] [JKL.KL]/WWW.YTS.AG.jpg' self._assert_file_moved(source_file_path, file_destination_path)
def test_moving_wrong_formatted_episode_inside_right_formated_directory( self): folder_path = self._SOURCE_DIRECTORY + '/My.Stuff.Us.On.S10E09.HDTV.CCCC-ARD[axel]' source_path = self._createSourceFile( folder_path + '/my.stuff.us.on.1009.fktv-uuu[axel].mkv') mover.move_media_by_path(source_path, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self._assert_file_moved( folder_path, self._SHOW_DESTINATION_DIRECTORY + '/My Stuff Us On/Season 10/my.stuff.us.on.1009.fktv-uuu[axel].mkv')
def test_move_show_by_file_path(self): tv_show_file_name = 'Man.In.The.on.Folder.S02E03.Dead.AAA.Walking.Wrong-DL.x123.BBA.mp4' file_handler.create_file(self._SOURCE_DIRECTORY + '/' + tv_show_file_name) source_file_path = self._SOURCE_DIRECTORY + '/' + tv_show_file_name mover.move_media_by_path(source_file_path, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) destination_path = self._SHOW_DESTINATION_DIRECTORY + '/Man In The on Folder/Season 2/' + tv_show_file_name self._assert_file_moved(source_file_path, destination_path)
def test_movie_destination_no_slash_in_path(self): dir_name = 'Tah Felling Out Of hope In Valley (2019) [Converted] [movie-test-no-path]/' file_handler.create_dir(self._SOURCE_DIRECTORY + dir_name) movie_file = 'Tah.Fellingr Out Of hope In Valley.2019.1080p.Converted-[movie-test-no-path].mp4' file_handler.create_file(self._SOURCE_DIRECTORY + dir_name + movie_file) mover.move_media_by_path( self._SOURCE_DIRECTORY + dir_name, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY[:-1] ) self._assert_file_moved( self._SOURCE_DIRECTORY + dir_name + movie_file, self._MOVIE_DESTINATION_DIRECTORY + dir_name + movie_file )
def test_moving_episodes_by_file_in_directory(self): folder_path = self._SOURCE_DIRECTORY + 'hey.arnold.season1.720p.webdl' file_handler.create_dir(folder_path) source_file_path_1 = folder_path + '/hey.arnold.S09E01.SOMETHING.something-something' file_handler.create_file(source_file_path_1) source_file_path_2 = folder_path + '/hey.arnold.S09E02.SOMETHING.something-something.mp4' file_handler.create_file(source_file_path_2) mover.move_media_by_path(folder_path, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) file_destination_path = self._SHOW_DESTINATION_DIRECTORY + '/hey arnold/Season 9/hey.arnold.S09E01.SOMETHING.something-something' self._assert_file_moved(source_file_path_1, file_destination_path) file_destination_path = self._SHOW_DESTINATION_DIRECTORY + '/hey arnold/Season 9/hey.arnold.S09E02.SOMETHING.something-something.mp4' self._assert_file_moved(source_file_path_2, file_destination_path)
def test_multiple_matches(self): file_handler.create_dir(f'{self._SHOW_DESTINATION_DIRECTORY}mr test') file_handler.create_dir( f'{self._SHOW_DESTINATION_DIRECTORY}Test Test and Test') episode_name = 'Mr.Test.S07E01.REPACK.a111-AAA[a]' file_handler.create_dir(f'{self._SOURCE_DIRECTORY}{episode_name}') file_path = f'{self._SOURCE_DIRECTORY}{episode_name}/{episode_name}.mp4' file_handler.create_file(file_path) mover.move_media_by_path(self._SOURCE_DIRECTORY + episode_name, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self._assert_file_moved( file_path, f'{self._SHOW_DESTINATION_DIRECTORY}mr test/Season 7/{episode_name}.mp4' )
def move_next_path(self): if self.__created_paths_queue.is_empty(): return False path = self.__created_paths_queue.next() if self.__modified_paths_queue.in_queue(path): self.__modified_paths_queue.remove(path) return False self.__log_queue_status('Queues Before Move: Before removing path') # Remove file from queue before moving to avoid changes to file in modify queue self.__created_paths_queue.remove(path) self.__log_queue_status('Queues Before Move: after removing path') mover.move_media_by_path(path, self.__args.show_destination, self.__args.movie_destination) self.__log_queue_status('Queues After Move') return True
def test_screens_images_moved_correctly(self): show_name = 'what happens in the sun/' show_source_dir = '/What Happens in the Sun S01E01 1080p WEB H264' source_show_dir = self._SOURCE_DIRECTORY + show_source_dir file_handler.create_dir(source_show_dir) episode = '/what.happens.in.the.sun.s01e01.1080p.web.h264.mkv' file_handler.create_file(source_show_dir + episode) screen_dir = '/Screens' file_handler.create_dir(source_show_dir + screen_dir) screen_file = '/screen0001.jpg' file_handler.create_file(source_show_dir + screen_dir + screen_file) mover.move_media_by_path(source_show_dir, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self._assert_file_moved( source_show_dir + screen_dir + screen_file, self._SHOW_DESTINATION_DIRECTORY + show_name + screen_file) self.__validate_episodes_season_1([episode], show_name)
def test_moving_movie_with_sub_dir(self): class Destinations: def __init__(self, source, destination=None): self.source = source self.destination = destination if destination is not None else self.source movie_path = 'Castles.at.Sky.ghj' paths = [ Destinations(movie_path + '/Castles.at.Sky.ghj.mp4'), Destinations(movie_path + '/Castles.at.Sky.ghj.nfo'), Destinations(movie_path + '/subs/English.srt', movie_path + '/Castles.at.Sky.ghj.en.srt'), Destinations(movie_path + '/subs/Spanish.srt', movie_path + '/Castles.at.Sky.ghj.es.srt'), Destinations(movie_path + '/subs/Portuguese.srt', movie_path + '/Castles.at.Sky.ghj.pt.srt'), Destinations(movie_path + '/subs/Swedish.srt', movie_path + '/Castles.at.Sky.ghj.sv.srt'), Destinations(movie_path + '/subs/Norwegian.srt', movie_path + '/Castles.at.Sky.ghj.no.srt'), Destinations(movie_path + '/subs/Danish.srt', movie_path + '/Castles.at.Sky.ghj.da.srt'), Destinations(movie_path + '/subs/Finnish.srt', movie_path + '/Castles.at.Sky.ghj.fi.srt'), Destinations(movie_path + '/subs/Indonesian.srt', movie_path + '/Castles.at.Sky.ghj.id.srt'), Destinations(movie_path + '/subs/Spanish.srt', movie_path + '/Castles.at.Sky.ghj.id.srt'), Destinations(movie_path + '/something_else.paa') ] for path in paths: self._createSourceFile(path.source) self._set_size_in_mb(paths[0].source, 60) mover.move_media_by_path( self._SOURCE_DIRECTORY + movie_path, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY ) for path in paths: self._assert_file_moved(path.source, self._MOVIE_DESTINATION_DIRECTORY + path.destination)
def test_move_shows_into_existing_season_directory(self): file_handler.create_dir(self._SHOW_DESTINATION_DIRECTORY + '/Kontroll US/Season 7/') tv_show_file_name = 'kontroll.US.S07E02.720p.AM.SOMETING-OTHER-DEMINSION[aaa]' file_source_path = self._SOURCE_DIRECTORY + '/' + tv_show_file_name file_handler.create_file(file_source_path) # move by name mover.move_media_by_name('kontroll', self._SOURCE_DIRECTORY, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) file_destination_path = self._SHOW_DESTINATION_DIRECTORY + '/Kontroll US/Season 7/' + tv_show_file_name self._assert_file_moved(file_source_path, file_destination_path) # move by file file_handler.delete_file(file_destination_path) file_handler.create_file(file_source_path) mover.move_media_by_path(file_source_path, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self._assert_file_moved(file_source_path, file_destination_path) # Test with two letter word in the middle of file name that should not be stripped when matching file_handler.create_dir(self._SHOW_DESTINATION_DIRECTORY + '/Cool And Welcome To Earth/Season 2/') tv_show_file_name = 'Cool.And.Welcome.To.Earth.S02E02.The.Boo.720p.KOL-OL.A300.MP#.mp4' file_source_path = self._SOURCE_DIRECTORY + '/' + tv_show_file_name file_handler.create_file(file_source_path) mover.move_media_by_name('Cool And Welcome To Earth', self._SOURCE_DIRECTORY, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) file_destination_path = self._SHOW_DESTINATION_DIRECTORY + '/Cool And Welcome To Earth/Season 2/' + tv_show_file_name self._assert_file_moved(file_source_path, file_destination_path)
def test_moving_movie_with_extra_dir(self): movie_dir = 'Movie.The.Movie.1234' file_handler.create_dir(self._SOURCE_DIRECTORY + movie_dir) movie_file = movie_dir + '/Movie.The.Movie.1234.mkv' file_handler.create_file(self._SOURCE_DIRECTORY + movie_file) extras_dir = movie_dir + '/Extras' file_handler.create_dir(self._SOURCE_DIRECTORY + extras_dir) extras_file1 = extras_dir + '/Movie.The.Movie.1234.Theatrical.Trailer.mkv' file_handler.create_file(self._SOURCE_DIRECTORY + extras_file1) extras_file2 = extras_dir + '/Movie.3.Theatrical.Trailer.mkv' file_handler.create_file(self._SOURCE_DIRECTORY + extras_file2) extras_soundtrack_dir = extras_dir + '/Soundtrack Live' file_handler.create_dir(self._SOURCE_DIRECTORY + extras_soundtrack_dir) extras_soundtrack_file1 = extras_soundtrack_dir + '/Making.the.Soundtrack.mkv' file_handler.create_file(self._SOURCE_DIRECTORY + extras_soundtrack_file1) extras_soundtrack_file2 = extras_soundtrack_dir + '/original.song.mkv' file_handler.create_file(self._SOURCE_DIRECTORY + extras_soundtrack_file2) mover.move_media_by_path( self._SOURCE_DIRECTORY + movie_dir, self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY ) self._assert_file_moved(movie_file, self._MOVIE_DESTINATION_DIRECTORY + movie_file) self._assert_file_moved(extras_file1, self._MOVIE_DESTINATION_DIRECTORY + extras_file1) self._assert_file_moved(extras_file2, self._MOVIE_DESTINATION_DIRECTORY + extras_file2) self._assert_file_moved(extras_soundtrack_file1, self._MOVIE_DESTINATION_DIRECTORY + extras_soundtrack_file1) self._assert_file_moved(extras_soundtrack_file2, self._MOVIE_DESTINATION_DIRECTORY + extras_soundtrack_file2)
def test_moving_multiple_episodes_with_subtitles_and_instruction_file( self): self._createSourceFile( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV.srt' ) self._createSourceFile( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV.mkv' ) self._set_size_in_mb( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV.mkv', 60) self._createSourceFile( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV.srt' ) self._createSourceFile( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV.mkv' ) self._set_size_in_mb( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV.mkv', 61) self._createSourceFile( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV.srt' ) self._createSourceFile( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV.mkv' ) self._set_size_in_mb( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV.mkv', 62) self._createSourceFile( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Instructions.txt' ) mover.move_media_by_path( self._SOURCE_DIRECTORY + 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p', self._SHOW_DESTINATION_DIRECTORY, self._MOVIE_DESTINATION_DIRECTORY) self._assert_file_moved( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV.srt', 'show-destination/Kalla Rander, Valla Calla/Season 1/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV.en.srt' ) self._assert_file_moved( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV.mkv', 'show-destination/Kalla Rander, Valla Calla/Season 1/Kalla Rander, Valla Calla S01E01 (Generationen X) HDTV.mkv' ) self._assert_file_moved( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV.srt', 'show-destination/Kalla Rander, Valla Calla/Season 1/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV.en.srt' ) self._assert_file_moved( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV.mkv', 'show-destination/Kalla Rander, Valla Calla/Season 1/Kalla Rander, Valla Calla S01E02 (Generationen X) HDTV.mkv' ) self._assert_file_moved( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV.srt', 'show-destination/Kalla Rander, Valla Calla/Season 1/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV.en.srt' ) self._assert_file_moved( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV.mkv', 'show-destination/Kalla Rander, Valla Calla/Season 1/Kalla Rander, Valla Calla S01E03 (Generationen X) HDTV.mkv' ) self._assert_file_moved( 'Kalla Rander, Valla Calla S01 (Generationen X) HDTV 720p/Instructions.txt', 'show-destination/Kalla Rander, Valla Calla/Season 1/Instructions.txt' )