Ejemplo n.º 1
0
    def match(self, movie_file_path):
        (file_path, file_name) = os.path.split(movie_file_path)

        movie = None

        # if there is disc information embedded in the name, 
        #   we want to know about it no matter which way we match
        disc_num = self.get_disc(file_name)

        # see if the file name has an imdb id...the fastest of matches
        imdb_id = self.get_imdb_id(file_name)
        if imdb_id is not None:
            movie = self.database.get_movie(imdb_id)
            if movie is not None:
                self.database.add_movie(movie)

        # if that didn't work, try to harvest the name and year via
        #   regular expressions and do an imdb lookup with the info
        if movie is None:
            name = self.get_name(file_name)
            year = self.get_year(file_name)

            if name is not None:
                to_lookup = name.strip()
                if year is not None:
                    to_lookup += " (%i)" % (year, )

                movie = self.moviedb.lookup_movie(name)
                if movie is not None:
                    self.database.add_movie(movie)

        # if all of our matching magic fails, let imdb try to figure
        #   it out from the file name (with the ext removed)
        if movie is None:
            (file, extension) = utility.split_file_name(file_name)

            movie = self.moviedb.lookup_movie(name)
            if movie is not None:
                self.database.add_movie(movie)

        if movie is None:
            return None
        else:
            return (file_name, movie, disc_num)
Ejemplo n.º 2
0
def multi_thread_download(url, file_name=None, overwrite=False, thread_num=4):
	if thread_num == 1:
		single_thread_download(url, file_name, overwrite)
	elif thread_num > 1:
		# 如果文件名为空,则从 URL 中获取文件名
		if file_name is None:
			file_name = url.rpartition('/')[-1]
		# 潜在 bug:如果不覆盖己有文件,而已有文件不完整(eg. 没下载全),会有潜在影响
		if os.path.exists(file_name) and (not overwrite):
			return
		target_size = get_file_size(url)
		if (target_size < 0):
			print("multi_thread_download(): get_file_size() error!\n")
			return
		ranges = split_file_size(target_size, thread_num)
		thread_group = []
		for i in range(thread_num):
			# print(i, '\t', ranges[i][0], ',', ranges[i][1])
			t = threading.Thread(target=sub_thread_download, name="thread%d" % i, args=(url, split_file_name(file_name, i), ranges[i][0], ranges[i][1]))
			t.start()
			thread_group.append(t)
		for t in thread_group:
			t.join()
		append_file(file_name, thread_num, False)
Ejemplo n.º 3
0
 def get_movie_library_file_name(self, file_name, movie, disc):
     (file, extension) = utility.split_file_name(file_name)
     if disc is None:
         return MOVIE_FILE_NAME % (movie.title, movie.movie_year, movie.id, extension)
     else:
         return MOVIE_WITH_DISC_FILE_NAME % (movie.title, movie.movie_year, disc, movie.id, extension)
Ejemplo n.º 4
0
 def get_series_library_file_name(self, file_name, episode):
     (file, extension) = utility.split_file_name(file_name)
     split_title = [w.strip().lower() for w in episode.series.title.split(' ')]
     return SERIES_FILE_NAME % ('_'.join(split_title), episode.season_number, episode.episode_number, extension)