|
|
@ -1,4 +1,4 @@
|
|
|
|
import operator, os, re
|
|
|
|
import math, operator, os, re
|
|
|
|
from datetime import datetime
|
|
|
|
from datetime import datetime
|
|
|
|
from modules import plex, ergast, util
|
|
|
|
from modules import plex, ergast, util
|
|
|
|
from modules.util import Failed, ImageData
|
|
|
|
from modules.util import Failed, ImageData
|
|
|
@ -243,7 +243,6 @@ class MetadataFile(DataFile):
|
|
|
|
self.collections = get_dict("collections", data, library.collections)
|
|
|
|
self.collections = get_dict("collections", data, library.collections)
|
|
|
|
self.dynamic_collections = get_dict("dynamic_collections", data)
|
|
|
|
self.dynamic_collections = get_dict("dynamic_collections", data)
|
|
|
|
col_names = library.collections + [c for c in self.collections]
|
|
|
|
col_names = library.collections + [c for c in self.collections]
|
|
|
|
all_items = None
|
|
|
|
|
|
|
|
if self.dynamic_collections:
|
|
|
|
if self.dynamic_collections:
|
|
|
|
logger.info("")
|
|
|
|
logger.info("")
|
|
|
|
logger.separator("Dynamic Collections")
|
|
|
|
logger.separator("Dynamic Collections")
|
|
|
@ -267,10 +266,15 @@ class MetadataFile(DataFile):
|
|
|
|
auto_type = dynamic[methods["type"]].lower()
|
|
|
|
auto_type = dynamic[methods["type"]].lower()
|
|
|
|
og_exclude = util.parse("Config", "exclude", dynamic, parent=map_name, methods=methods, datatype="strlist") if "exclude" in methods else []
|
|
|
|
og_exclude = util.parse("Config", "exclude", dynamic, parent=map_name, methods=methods, datatype="strlist") if "exclude" in methods else []
|
|
|
|
include = util.parse("Config", "include", dynamic, parent=map_name, methods=methods, datatype="strlist") if "include" in methods else []
|
|
|
|
include = util.parse("Config", "include", dynamic, parent=map_name, methods=methods, datatype="strlist") if "include" in methods else []
|
|
|
|
|
|
|
|
custom_keys = util.parse("Config", "custom_keys", dynamic, parent=map_name, methods=methods, datatype="dictliststr") if "custom_keys" in methods else {}
|
|
|
|
if og_exclude and include:
|
|
|
|
if og_exclude and include:
|
|
|
|
raise Failed(f"Config Error: {map_name} cannot have both include and exclude attributes")
|
|
|
|
raise Failed(f"Config Error: {map_name} cannot have both include and exclude attributes")
|
|
|
|
addons = util.parse("Config", "addons", dynamic, parent=map_name, methods=methods, datatype="dictliststr") if "addons" in methods else {}
|
|
|
|
addons = util.parse("Config", "addons", dynamic, parent=map_name, methods=methods, datatype="dictliststr") if "addons" in methods else {}
|
|
|
|
exclude = [str(e) for e in og_exclude]
|
|
|
|
exclude = [str(e) for e in og_exclude]
|
|
|
|
|
|
|
|
for custom_key, combined_keys in custom_keys.items():
|
|
|
|
|
|
|
|
for combined_key in combined_keys:
|
|
|
|
|
|
|
|
if combined_key not in exclude:
|
|
|
|
|
|
|
|
exclude.append(combined_key)
|
|
|
|
for k, v in addons.items():
|
|
|
|
for k, v in addons.items():
|
|
|
|
if k in v:
|
|
|
|
if k in v:
|
|
|
|
logger.warning(f"Config Warning: {k} cannot be an addon for itself")
|
|
|
|
logger.warning(f"Config Warning: {k} cannot be an addon for itself")
|
|
|
@ -417,6 +421,15 @@ class MetadataFile(DataFile):
|
|
|
|
_check_dict(self.config.Trakt.get_people(option))
|
|
|
|
_check_dict(self.config.Trakt.get_people(option))
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
raise Failed(f"Config Error: {map_name} type attribute {dynamic[methods['type']]} invalid")
|
|
|
|
raise Failed(f"Config Error: {map_name} type attribute {dynamic[methods['type']]} invalid")
|
|
|
|
|
|
|
|
for custom_key, combined_keys in custom_keys.items():
|
|
|
|
|
|
|
|
if custom_key in all_keys:
|
|
|
|
|
|
|
|
raise Failed(f"Config Error: Custom key: {custom_key} cannot be an actual key")
|
|
|
|
|
|
|
|
final_keys = [ck for ck in combined_keys if ck in all_keys]
|
|
|
|
|
|
|
|
if final_keys:
|
|
|
|
|
|
|
|
if include:
|
|
|
|
|
|
|
|
include.append(custom_key)
|
|
|
|
|
|
|
|
auto_list[custom_key] = custom_key
|
|
|
|
|
|
|
|
addons[custom_key] = final_keys
|
|
|
|
title_format = default_title_format
|
|
|
|
title_format = default_title_format
|
|
|
|
if "title_format" in methods:
|
|
|
|
if "title_format" in methods:
|
|
|
|
title_format = util.parse("Config", "title_format", dynamic, parent=map_name, methods=methods, default=default_title_format)
|
|
|
|
title_format = util.parse("Config", "title_format", dynamic, parent=map_name, methods=methods, default=default_title_format)
|
|
|
@ -453,6 +466,7 @@ class MetadataFile(DataFile):
|
|
|
|
logger.debug(f"Data: {dynamic_data}")
|
|
|
|
logger.debug(f"Data: {dynamic_data}")
|
|
|
|
logger.debug(f"Exclude: {exclude}")
|
|
|
|
logger.debug(f"Exclude: {exclude}")
|
|
|
|
logger.debug(f"Addons: {addons}")
|
|
|
|
logger.debug(f"Addons: {addons}")
|
|
|
|
|
|
|
|
logger.debug(f"Custom Keys: {custom_keys}")
|
|
|
|
logger.debug(f"Template: {template_name}")
|
|
|
|
logger.debug(f"Template: {template_name}")
|
|
|
|
logger.debug(f"Template Variables: {template_variables}")
|
|
|
|
logger.debug(f"Template Variables: {template_variables}")
|
|
|
|
logger.debug(f"Remove Prefix: {remove_prefix}")
|
|
|
|
logger.debug(f"Remove Prefix: {remove_prefix}")
|
|
|
|