[176] fix resolution

pull/1372/head
meisnate12 2 years ago
parent c53c98d355
commit af9c4f0bb8

@ -1,3 +1,12 @@
# New Translation Portal
New Translation Portal located at [translations.metamanager.wiki](https://translations.metamanager.wiki/projects/plex-meta-manager/defaults/). If anyone is willing to help fill in what we have or add your own language feel free to sign up. If you have questions either contact us on Discord or in the Discussions on GitHub.
# New PMM Companion Scripts
[PMM Overlay Reset](https://metamanager.wiki/en/latest/home/scripts/overlay-reset.html): Script to Hard Reset PMM Overlays back to Default.
[Plex Image Cleanup](https://metamanager.wiki/en/latest/home/scripts/image-cleanup.html): Script to clean up Old Uploaded Images in Plex.
# Requirements Update (requirements will need to be reinstalled) # Requirements Update (requirements will need to be reinstalled)
Updated pillow requirement to 9.5.0 Updated pillow requirement to 9.5.0
Updated plexapi requirement to 4.13.4 Updated plexapi requirement to 4.13.4
@ -61,6 +70,4 @@ Closes #1336 Fixed "Mass Originally Available Update" attribute name within the
Closes #1327 Fixed an issue where searching for item assets could take longer than expected. Closes #1327 Fixed an issue where searching for item assets could take longer than expected.
Closes #1346 Fixed an issue where using `PMM_TIME` with multiple times could ignore all but the last specified time. Closes #1346 Fixed an issue where using `PMM_TIME` with multiple times could ignore all but the last specified time.
Various other Minor Fixes Various other Minor Fixes

@ -1 +1 @@
1.18.3-develop175 1.18.3-develop176

@ -59,7 +59,7 @@ external_templates:
- IMAX - IMAX
- Remastered - Remastered
- Criterion - Criterion
- Rich-Donner - Richard-Donner
- Black-And-Chrome - Black-And-Chrome
- Definitive - Definitive
- Ulysses - Ulysses
@ -346,7 +346,7 @@ overlays:
Criterion-Dovetail: Criterion-Dovetail:
variables: {key: criterion, weight: 10, search: Criterion, type: edition_dovetail, allowed_libraries: movie} variables: {key: criterion, weight: 10, search: Criterion, type: edition_dovetail, allowed_libraries: movie}
template: [name: edition, name: standard] template: [name: edition, name: standard]
Rich-Donner-Dovetail: Richard-Donner-Dovetail:
variables: {key: richarddonner, weight: 9, search: Rich, type: edition_dovetail, allowed_libraries: movie} variables: {key: richarddonner, weight: 9, search: Rich, type: edition_dovetail, allowed_libraries: movie}
template: [name: edition, name: standard] template: [name: edition, name: standard]
Black-And-Chrome-Dovetail: Black-And-Chrome-Dovetail:
@ -486,8 +486,8 @@ overlays:
Criterion: Criterion:
variables: {key: criterion, weight: 10, search: Criterion, type: edition, allowed_libraries: movie} variables: {key: criterion, weight: 10, search: Criterion, type: edition, allowed_libraries: movie}
template: [name: edition, name: standard] template: [name: edition, name: standard]
Rich-Donner: Richard-Donner:
variables: {key: richdonner, weight: 9, search: Rich, type: edition, allowed_libraries: movie} variables: {key: richarddonner, weight: 9, search: Rich, type: edition, allowed_libraries: movie}
template: [name: edition, name: standard] template: [name: edition, name: standard]
Black-And-Chrome: Black-And-Chrome:
variables: {key: blackchrome, weight: 8, search: Black, type: edition, allowed_libraries: movie} variables: {key: blackchrome, weight: 8, search: Black, type: edition, allowed_libraries: movie}

@ -15,14 +15,14 @@ plex:
optimize: false optimize: false
``` ```
| Attribute | Allowed Values | Default | Required | | Attribute | Allowed Values | Default | Required |
|:----------------|:---------------------------------------------------------------------------------------------------------------------------------|:--------|:--------:| |:----------------|:-------------------------------------------------------------------------------------------------------------------------------|:--------|:--------:|
| `url` | Plex Server URL or `ENV` (This will use the Environment/Runtime Plex URL)<br><strong>Example:</strong> http://192.168.1.12:32400 | N/A | &#9989; | | `url` | Plex Server URL<br><strong>Example:</strong> http://192.168.1.12:32400 | N/A | &#9989; |
| `token` | Plex Server Authentication Token or `ENV` (This will use the Environment/Runtime Plex URL) | N/A | &#9989; | | `token` | Plex Server Authentication Token | N/A | &#9989; |
| `timeout` | Plex Server Timeout | 60 | &#10060; | | `timeout` | Plex Server Timeout | 60 | &#10060; |
| `clean_bundles` | Runs Clean Bundles on the Server after all Metadata Files are run | false | &#10060; | | `clean_bundles` | Runs Clean Bundles on the Server after all Metadata Files are run | false | &#10060; |
| `empty_trash` | Runs Empty Trash on the Server after all Metadata Files are run | false | &#10060; | | `empty_trash` | Runs Empty Trash on the Server after all Metadata Files are run | false | &#10060; |
| `optimize` | Runs Optimize on the Server after all Metadata Files are run | false | &#10060; | | `optimize` | Runs Optimize on the Server after all Metadata Files are run | false | &#10060; |
* **Do Not Use the Plex Token found in Plex's Preferences.xml file** * **Do Not Use the Plex Token found in Plex's Preferences.xml file**

@ -36,8 +36,6 @@ Environment Variables can also be placed inside a `.env` file inside your config
| [No Missing](#no-missing) | `-nm` or `--no-missing` | `PMM_NO_MISSING` | | [No Missing](#no-missing) | `-nm` or `--no-missing` | `PMM_NO_MISSING` |
| [No Report](#no-report) | `-nr` or `--no-report` | `PMM_NO_REPORT` | | [No Report](#no-report) | `-nr` or `--no-report` | `PMM_NO_REPORT` |
| [Read Only Config](#read-only-config) | `-ro` or `--read-only-config` | `PMM_READ_ONLY_CONFIG` | | [Read Only Config](#read-only-config) | `-ro` or `--read-only-config` | `PMM_READ_ONLY_CONFIG` |
| [ENV Plex URL](#env-plex-url--token) | `-pu` or `--plex-url` | `PMM_PLEX_URL` |
| [ENV Plex Token](#env-plex-url--token) | `-pt` or `--plex-token` | `PMM_PLEX_TOKEN` |
| [Divider Character](#divider-character--screen-width) | `-d` or `--divider` | `PMM_DIVIDER` | | [Divider Character](#divider-character--screen-width) | `-d` or `--divider` | `PMM_DIVIDER` |
| [Screen Width](#divider-character--screen-width) | `-w` or `--width` | `PMM_WIDTH` | | [Screen Width](#divider-character--screen-width) | `-w` or `--width` | `PMM_WIDTH` |
| [Config Secrets](#config-secrets) | `--pmm-***` | `PMM_***` | | [Config Secrets](#config-secrets) | `--pmm-***` | `PMM_***` |
@ -948,62 +946,6 @@ docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex
``` ```
```` ````
### ENV Plex URL & Token
Replaces `ENV` when it is used plex `url` or `token`.
#### Plex URL
<table class="dualTable colwidths-auto align-default table">
<tr>
<th style="background-color: #1d1d1d;"></th>
<th>Shell</th>
<th>Environment</th>
</tr>
<tr>
<th>Flags</th>
<td><code>-pu</code> or <code>--plex-url</code></td>
<td><code>PMM_PLEX_URL</code></td>
</tr>
<tr>
<th>Example</th>
<td><code>--plex-url 192.168.1.12:32400</code></td>
<td><code>PMM_PLEX_URL=192.168.1.12:32400</code></td>
</tr>
</table>
#### Plex Token
<table class="dualTable colwidths-auto align-default table">
<tr>
<th style="background-color: #1d1d1d;"></th>
<th>Shell</th>
<th>Environment</th>
</tr>
<tr>
<th>Flags</th>
<td><code>-pt</code> or <code>--plex-token</code></td>
<td><code>PMM_PLEX_TOKEN</code></td>
</tr>
<tr>
<th>Example</th>
<td><code>--plex-token AB23HE4588</code></td>
<td><code>PMM_PLEX_TOKEN=AB23HE4588</code></td>
</tr>
</table>
````{tab} Local Environment
```
python plex_meta_manager.py --plex-url 192.168.1.12:32400 --plex-token AB23HE4588
```
````
````{tab} Docker Environment
```
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --plex-url 192.168.1.12:32400 --plex-token AB23HE4588
```
````
### Divider Character & Screen Width ### Divider Character & Screen Width
Change the terminal output divider character or width. Change the terminal output divider character or width.

@ -2824,18 +2824,30 @@ class CollectionBuilder:
self.library.query(item.refresh) self.library.query(item.refresh)
if self.library.Radarr and tmdb_paths: if self.library.Radarr and tmdb_paths:
if "item_radarr_tag" in self.item_details: try:
self.library.Radarr.edit_tags([t[0] if isinstance(t, tuple) else t for t in tmdb_paths], self.item_details["item_radarr_tag"], self.item_details["apply_tags"]) if "item_radarr_tag" in self.item_details:
if self.radarr_details["add_existing"]: self.library.Radarr.edit_tags([t[0] if isinstance(t, tuple) else t for t in tmdb_paths], self.item_details["item_radarr_tag"], self.item_details["apply_tags"])
added = self.library.Radarr.add_tmdb(tmdb_paths, **self.radarr_details) if self.radarr_details["add_existing"]:
self.added_to_radarr.extend([{"title": movie.title, "id": movie.tmdbId} for movie in added]) added = self.library.Radarr.add_tmdb(tmdb_paths, **self.radarr_details)
self.added_to_radarr.extend([{"title": movie.title, "id": movie.tmdbId} for movie in added])
except Failed as e:
logger.error(e)
except ArrException as e:
logger.stacktrace()
logger.error(f"Arr Error: {e}")
if self.library.Sonarr and tvdb_paths: if self.library.Sonarr and tvdb_paths:
if "item_sonarr_tag" in self.item_details: try:
self.library.Sonarr.edit_tags([t[0] if isinstance(t, tuple) else t for t in tvdb_paths], self.item_details["item_sonarr_tag"], self.item_details["apply_tags"]) if "item_sonarr_tag" in self.item_details:
if self.sonarr_details["add_existing"]: self.library.Sonarr.edit_tags([t[0] if isinstance(t, tuple) else t for t in tvdb_paths], self.item_details["item_sonarr_tag"], self.item_details["apply_tags"])
added = self.library.Sonarr.add_tvdb(tvdb_paths, **self.sonarr_details) if self.sonarr_details["add_existing"]:
self.added_to_sonarr.extend([{"title": show.title, "id": show.tvdbId} for show in added]) added = self.library.Sonarr.add_tvdb(tvdb_paths, **self.sonarr_details)
self.added_to_sonarr.extend([{"title": show.title, "id": show.tvdbId} for show in added])
except Failed as e:
logger.error(e)
except ArrException as e:
logger.stacktrace()
logger.error(f"Arr Error: {e}")
def load_collection(self): def load_collection(self):
if self.obj is None and self.smart_url: if self.obj is None and self.smart_url:

@ -18,7 +18,7 @@ auto = {
"Video": ["country", "content_rating"] + all_auto "Video": ["country", "content_rating"] + all_auto
} }
dynamic_attributes = [ dynamic_attributes = [
"type", "data", "exclude", "addons", "template", "template_variables", "other_template", "remove_suffix", "type", "data", "exclude", "addons", "template", "template_variables", "other_template", "remove_suffix", "custom_keys",
"remove_prefix", "title_format", "key_name_override", "title_override", "test", "sync", "include", "other_name" "remove_prefix", "title_format", "key_name_override", "title_override", "test", "sync", "include", "other_name"
] ]
auto_type_translation = { auto_type_translation = {

@ -46,8 +46,6 @@ parser.add_argument("-nc", "--no-countdown", dest="no_countdown", help="Run with
parser.add_argument("-nm", "--no-missing", dest="no_missing", help="Run without running the missing section", action="store_true", default=False) parser.add_argument("-nm", "--no-missing", dest="no_missing", help="Run without running the missing section", action="store_true", default=False)
parser.add_argument("-nr", "--no-report", dest="no_report", help="Run without saving a report", action="store_true", default=False) parser.add_argument("-nr", "--no-report", dest="no_report", help="Run without saving a report", action="store_true", default=False)
parser.add_argument("-ro", "--read-only-config", dest="read_only_config", help="Run without writing to the config", action="store_true", default=False) parser.add_argument("-ro", "--read-only-config", dest="read_only_config", help="Run without writing to the config", action="store_true", default=False)
parser.add_argument("-pu", "--plex-url", dest="plex_url", help="Plex URL for Plex ENV URLs", default="", type=str)
parser.add_argument("-pt", "--plex-token", dest="plex_token", help="Plex Token for Plex ENV Tokens", default="", type=str)
parser.add_argument("-d", "--divider", dest="divider", help="Character that divides the sections (Default: '=')", default="=", type=str) parser.add_argument("-d", "--divider", dest="divider", help="Character that divides the sections (Default: '=')", default="=", type=str)
parser.add_argument("-w", "--width", dest="width", help="Screen Width (Default: 100)", default=100, type=int) parser.add_argument("-w", "--width", dest="width", help="Screen Width (Default: 100)", default=100, type=int)
args, unknown = parser.parse_known_args() args, unknown = parser.parse_known_args()
@ -126,17 +124,26 @@ timeout = get_arg("PMM_TIMEOUT", args.timeout, arg_int=True)
debug = get_arg("PMM_DEBUG", args.debug, arg_bool=True) debug = get_arg("PMM_DEBUG", args.debug, arg_bool=True)
trace = get_arg("PMM_TRACE", args.trace, arg_bool=True) trace = get_arg("PMM_TRACE", args.trace, arg_bool=True)
log_requests = get_arg("PMM_LOG_REQUESTS", args.log_requests, arg_bool=True) log_requests = get_arg("PMM_LOG_REQUESTS", args.log_requests, arg_bool=True)
plex_url = get_arg("PMM_PLEX_URL", args.plex_url)
plex_token = get_arg("PMM_PLEX_TOKEN", args.plex_token)
secret_args = {} secret_args = {}
plex_url = None
plex_token = None
i = 0 i = 0
while i < len(unknown): while i < len(unknown):
if str(unknown[i]).lower().startswith("--pmm-"): test_var = str(unknown[i]).lower()
secret_args[str(unknown[i]).lower()[6:]] = str(unknown[i + 1]) if test_var.startswith("--pmm-") or test_var in ["-pu", "--plex-url", "-pt", "--plex-token"]:
if test_var in ["-pu", "--plex-url"]:
plex_url = str(unknown[i + 1])
elif test_var in ["-pt", "--plex-token"]:
plex_token = str(unknown[i + 1])
else:
secret_args[test_var[6:]] = str(unknown[i + 1])
i += 1 i += 1
i += 1 i += 1
plex_url = get_arg("PMM_PLEX_URL", plex_url)
plex_token = get_arg("PMM_PLEX_TOKEN", plex_token)
for env_name, env_data in os.environ.items(): for env_name, env_data in os.environ.items():
if str(env_name).upper().startswith("PMM_") and str(env_name).upper() not in static_envs: if str(env_name).upper().startswith("PMM_") and str(env_name).upper() not in static_envs:
secret_args[str(env_name).lower()[4:]] = env_data secret_args[str(env_name).lower()[4:]] = env_data
@ -275,8 +282,6 @@ def start(attrs):
logger.debug(f"--no-missing (PMM_NO_MISSING): {no_missing}") logger.debug(f"--no-missing (PMM_NO_MISSING): {no_missing}")
logger.debug(f"--no-report (PMM_NO_REPORT): {no_report}") logger.debug(f"--no-report (PMM_NO_REPORT): {no_report}")
logger.debug(f"--read-only-config (PMM_READ_ONLY_CONFIG): {read_only_config}") logger.debug(f"--read-only-config (PMM_READ_ONLY_CONFIG): {read_only_config}")
logger.debug(f"--plex-url (PMM_PLEX_URL): {'Used' if plex_url else ''}")
logger.debug(f"--plex-token (PMM_PLEX_TOKEN): {'Used' if plex_token else ''}")
logger.debug(f"--divider (PMM_DIVIDER): {divider}") logger.debug(f"--divider (PMM_DIVIDER): {divider}")
logger.debug(f"--width (PMM_WIDTH): {screen_width}") logger.debug(f"--width (PMM_WIDTH): {screen_width}")
logger.debug(f"--debug (PMM_DEBUG): {debug}") logger.debug(f"--debug (PMM_DEBUG): {debug}")

Loading…
Cancel
Save