Included enzyme package version 0.4.1 for mkv parsing.

This commit is contained in:
2018-09-15 12:12:07 +02:00
parent eb055db2fd
commit 6b9de3a975
2 changed files with 89 additions and 66 deletions

View File

@@ -1,2 +1,4 @@
guessit==2.1.4 guessit==2.1.4
tvdb_api==2.0 tvdb_api==2.0
hashids==1.2.0
enzyme>=0.4.1

View File

@@ -7,6 +7,7 @@
from guessit import guessit from guessit import guessit
from babelfish import Language, LanguageReverseError from babelfish import Language, LanguageReverseError
from hashids import Hashids
import os, errno import os, errno
import logging import logging
import tvdb_api import tvdb_api
@@ -67,7 +68,15 @@ def scan_video(path):
logging.info('Scanning video %r in %r', filename, dirpath) logging.info('Scanning video %r in %r', filename, dirpath)
# guess # guess
video = Video.fromguess(path, guessit(path)) video = Video.fromguess(path, filename, guessit(path))
# size
video.size = os.path.getsize(path)
# hash of name
hashids = Hashids(min_length=16)
hashid = hashids.encode(path)
video.name_hash = name_hash
return video return video
@@ -210,6 +219,83 @@ def save_subtitles(files, single=False, directory=None, encoding=None):
print() print()
def refine(video, episode_refiners=None, movie_refiners=None, **kwargs):
"""Refine a video using :ref:`refiners`.
.. note::
Exceptions raised in refiners are silently passed and logged.
:param video: the video to refine.
:type video: :class:`~subliminal.video.Video`
:param tuple episode_refiners: refiners to use for episodes.
:param tuple movie_refiners: refiners to use for movies.
:param \*\*kwargs: additional parameters for the :func:`~subliminal.refiners.refine` functions.
"""
refiners = ()
if isinstance(video, Episode):
refiners = episode_refiners or ('metadata')
elif isinstance(video, Movie):
refiners = movie_refiners or ('metadata')
for refiner in refiners:
logger.info('Refining video with %s', refiner)
try:
print(refiner)
refiner_manager[refiner].plugin(video, **kwargs)
except:
logger.exception('Failed to refine video')
def scan_folder(path):
videos = []
ignored_videos = []
errored_paths = []
logging.debug('Collecting path %s', path)
# non-existing
if not os.path.exists(path):
try:
video = Video.fromname(path)
except:
logging.exception('Unexpected error while collecting non-existing path %s', path)
errored_paths.append(path)
video.subtitle_languages |= set(search_external_subtitles(video.name, directory=path).values())
refine(video, episode_refiners=refiner, movie_refiners=refiner, embedded_subtitles=not force)
videos.append(video)
# directories
if os.path.isdir(path):
try:
scanned_videos = scan_videos(path)
except:
logging.exception('Unexpected error while collecting directory path %s', path)
errored_paths.append(path)
for video in scanned_videos:
video.subtitle_languages |= set(search_external_subtitles(video.name,
directory=path).values())
refine(video, episode_refiners=refiner, movie_refiners=refiner, embedded_subtitles=not force)
videos.append(video)
return videos
def main():
path = '/mnt/rescue/'
# hash_path = input('Hash: ')
# path += hash_path
# t = tvdb_api.Tvdb()
# hashList = organize_files(episodePath)
# pprint(hashList)
videos = scan_folder()
for video in videos:
pprint(video)
if __name__ == '__main__':
main()
# for hash in files: # for hash in files:
# hashIndex = [files[hash]] # hashIndex = [files[hash]]
# for hashItems in hashIndex: # for hashItems in hashIndex:
@@ -248,68 +334,3 @@ def save_subtitles(files, single=False, directory=None, encoding=None):
# break # break
# return saved_subtitles # return saved_subtitles
def main():
# episodePath = '/Volumes/media/tv/Black Mirror/Black Mirror Season 01/'
path = '/mnt/rescue/'
# hash_path = input('Hash: ')
# path += hash_path
# t = tvdb_api.Tvdb()
# hashList = organize_files(episodePath)
# pprint(hashList)
# videos = scan_videos(path)
# pprint(videos)
force = False
videos = []
ignored_videos = []
errored_paths = []
logging.debug('Collecting path %s', path)
# non-existing
if not os.path.exists(path):
try:
video = Video.fromname(path)
except:
logging.exception('Unexpected error while collecting non-existing path %s', path)
errored_paths.append(path)
if not force:
video.subtitle_languages |= set(search_external_subtitles(video.name, directory=path).values())
# refine(video, episode_refiners=refiner, movie_refiners=refiner, embedded_subtitles=not force)
videos.append(video)
# directories
if os.path.isdir(path):
try:
scanned_videos = scan_videos(path)
except:
logging.exception('Unexpected error while collecting directory path %s', path)
errored_paths.append(path)
for video in scanned_videos:
if not force:
video.subtitle_languages |= set(search_external_subtitles(video.name,
directory=path).values())
videos.append(video)
# other inputs
try:
video = scan_video(path)
except:
logging.exception('Unexpected error while collecting path %s', path)
errored_paths.append(path)
if not force:
video.subtitle_languages |= set(search_external_subtitles(video.name, directory=path).values())
videos.append(video)
for video in videos:
pprint(video)
if __name__ == '__main__':
main()