-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
72 lines (56 loc) · 2.29 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import logging
import sys
from plexapi.server import PlexServer
import configparser
import pymongo
from providers import anidb
from plex import Plex
from cache import Cache
from models import AniDBTitle
config_parser = configparser.ConfigParser(interpolation=None)
config_parser.read('settings.ini')
db_client = pymongo.MongoClient(config_parser.get('AniDB', 'cache_mongodb'))
db = db_client['plextags']
anime_cache = Cache(db)
allowed_language_codes = ['en', 'ja', 'x-jat']
logger = logging.getLogger("plex-anime-tags")
def setup_logger():
formatter = logging.Formatter('%(asctime)s %(message)s')
handler = logging.FileHandler('failed-lookup.log')
handler.setFormatter(formatter)
logger.addHandler(handler)
logging.getLogger().addHandler(logging.StreamHandler(sys.stdout))
logger.setLevel(logging.INFO)
if __name__ == '__main__':
config_parser.read('settings.ini')
plex = PlexServer(config_parser.get('Plex', 'url'), config_parser.get('Plex', 'token'))
plex_interface = Plex()
min_weight = int(config_parser.get('AniDB', 'min_tag_weight'))
setup_logger()
titles = []
anime_library = plex.library.section(config_parser.get('Plex', 'anime_library'))
plex_interface.set_library(anime_library)
for video in anime_library.search():
titles.append(AniDBTitle(video.title))
#plex_interface.add_show(video.title, video)
for anime in titles:
print('Processing "{}"'.format(anime.title))
anime.anidb_id = anidb.find_id(anime)
if anime.anidb_id == 0:
print('Could not find AniDB entry. Skipping.')
logger.info(anime.title)
continue
cached_data = anime_cache.find(anime)
if cached_data is not None and len(cached_data.tags) > 0:
print('Cached, skipping refresh'.format(anime.title))
anime = cached_data
else:
anidb.fetch_genres(anime, config_parser)
anime_cache.update(anime)
try:
plex_interface.update_plex(anime, min_weight)
except Exception as e:
if 'not_found' in str(e):
print('ERROR: "{}" does not exist on Plex, yet Plex says it does. Please do a scan to refresh.'.format(anime.title))
else:
print('ERROR: Exception occurred! Message: ', e)