mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-11-10 06:54:21 +00:00
[1] mdblist fix
This commit is contained in:
parent
56961ccca1
commit
e93860e15d
9 changed files with 60 additions and 23 deletions
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
1.20.0
|
||||
1.20.0-develop1
|
||||
|
|
|
@ -714,6 +714,27 @@ The available setting attributes which can be set at each level are outlined bel
|
|||
save_report: false
|
||||
```
|
||||
|
||||
??? blank "`report_path` - Used to specify the location of `save_report`.<a class="headerlink" href="#report-path" title="Permanent link">¶</a>"
|
||||
|
||||
<div id="report-path" />Specify the location where `save_report` is saved.
|
||||
|
||||
<hr style="margin: 0px;">
|
||||
|
||||
**Attribute:** `report_path`
|
||||
|
||||
**Levels with this Attribute:** Library
|
||||
|
||||
**Accepted Values:** YAML file path location
|
||||
|
||||
**Default Value:** `[Directory containing YAML config]/[Library Mapping Name]_report.yml`
|
||||
|
||||
???+ example "Example"
|
||||
|
||||
```yaml
|
||||
settings:
|
||||
report_path: config/TV_missing_report.yml
|
||||
```
|
||||
|
||||
??? blank "`tvdb_language` - Specify the language to query TVDb in.<a class="headerlink" href="#tvdb-language" title="Permanent link">¶</a>"
|
||||
|
||||
<div id="tvdb-language" />Specify the language to query TVDb in.
|
||||
|
|
|
@ -173,23 +173,23 @@ Number filters can **NOT** take multiple values.
|
|||
|
||||
### Attribute
|
||||
|
||||
| Number Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track |
|
||||
|:----------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------:|:--------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------:|:------------------------------------------:|:--------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------:|:------------------------------------------:|
|
||||
| `year`<sup>**[3](#table-annotations)**</sup> | Uses the year attribute to match<br>minimum: `1` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `tmdb_year`<sup>**[2](#table-annotations)**</sup><sup>**[3](#table-annotations)**</sup> | Uses the year on TMDb to match<br>minimum: `1` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `critic_rating` | Uses the critic rating attribute to match<br>`0.0` - `10.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `audience_rating` | Uses the audience rating attribute to match<br> `0.0` - `10.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `user_rating` | Uses the user rating attribute to match<br>`0.0` - `10.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `tmdb_vote_count`<sup>**[2](#table-annotations)**</sup> | Uses the tmdb vote count to match<br>minimum: `1` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `tmdb_vote_average`<sup>**[2](#table-annotations)**</sup> | Uses the tmdb vote average rating to match<br>minimum: `0.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `plays` | Uses the plays attribute to match<br>minimum: `1` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `duration` | Uses the duration attribute to match using minutes<br>minimum: `0.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `channels` | Uses the audio channels attribute to match<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `height` | Uses the height attribute to match<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `width` | Uses the width attribute to match<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `aspect` | Uses the aspect attribute to match<br>minimum: `0.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `versions` | Uses the number of versions found to match<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `stinger_rating`<sup>**[4](#table-annotations)**</sup> | Uses the [media stinger](http://www.mediastinger.com/) rating to match. The media stinger rating is if the after/during credits scene is worth staying for.<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| Number Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track |
|
||||
|:----------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------:|:--------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------:|:------------------------------------------:|:--------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------:|:------------------------------------------:|
|
||||
| `year`<sup>**[3](#table-annotations)**</sup> | Uses the year attribute to match<br>minimum: `1` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `tmdb_year`<sup>**[2](#table-annotations)**</sup><sup>**[3](#table-annotations)**</sup> | Uses the year on TMDb to match<br>minimum: `1` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `critic_rating` | Uses the critic rating attribute to match<br>`0.0` - `10.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `audience_rating` | Uses the audience rating attribute to match<br> `0.0` - `10.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `user_rating` | Uses the user rating attribute to match<br>`0.0` - `10.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `tmdb_vote_count`<sup>**[2](#table-annotations)**</sup> | Uses the tmdb vote count to match<br>minimum: `1` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `tmdb_vote_average`<sup>**[2](#table-annotations)**</sup> | Uses the tmdb vote average rating to match<br>minimum: `0.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `plays` | Uses the plays attribute to match<br>minimum: `1` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `duration` | Uses the duration attribute to match using minutes<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `channels` | Uses the audio channels attribute to match<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `height` | Uses the height attribute to match<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `width` | Uses the width attribute to match<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `aspect` | Uses the aspect attribute to match<br>minimum: `0.0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
| `versions` | Uses the number of versions found to match<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green }<sup>**[1](#table-annotations)**</sup> | :fontawesome-solid-circle-check:{ .green } |
|
||||
| `stinger_rating`<sup>**[4](#table-annotations)**</sup> | Uses the [media stinger](http://www.mediastinger.com/) rating to match. The media stinger rating is if the after/during credits scene is worth staying for.<br>minimum: `0` | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
|
||||
|
||||
## Special Filters
|
||||
|
||||
|
|
|
@ -15,6 +15,10 @@ strong {
|
|||
color: #00bc8c;
|
||||
}
|
||||
|
||||
table tr td code {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.md-banner {
|
||||
background-color: #252525;
|
||||
color: var(--md-footer-fg-color);
|
||||
|
|
|
@ -114,8 +114,8 @@ class Mdblist:
|
|||
response = self.config.get_json(api_url, params=params)
|
||||
except JSONDecodeError:
|
||||
raise Failed("Mdblist Error: JSON Decoding Failed")
|
||||
if "response" in response and response["response"] is False:
|
||||
if response["error"] == "API Limit Reached!":
|
||||
if "response" in response and response["response"] is False or response["response"] == "False":
|
||||
if response["error"] in ["API Limit Reached!", "API Rate Limit Reached!"]:
|
||||
self.limit = True
|
||||
raise LimitReached(f"MdbList Error: {response['error']}")
|
||||
raise Failed(f"MdbList Error: {response['error']}")
|
||||
|
|
|
@ -906,6 +906,7 @@ class Operations:
|
|||
all_collections = self.library.get_all_collections()
|
||||
for i, col in enumerate(all_collections, 1):
|
||||
logger.ghost(f"Reading Collection: {i}/{len(all_collections)} {col.title}")
|
||||
col = self.library.reload(col, force=True)
|
||||
labels = [la.tag for la in self.library.item_labels(col)]
|
||||
if (less is not None or managed is not None or configured is not None) \
|
||||
and (less is None or col.childCount < less) \
|
||||
|
|
|
@ -534,7 +534,7 @@ def is_date_filter(value, modifier, data, final, current_time):
|
|||
if (modifier == ".before" and value >= filter_date) or (modifier == ".after" and value <= filter_date):
|
||||
return True
|
||||
elif modifier == ".regex":
|
||||
jailbreak = True
|
||||
jailbreak = False
|
||||
for check_data in data:
|
||||
if re.compile(check_data).match(value.strftime("%m/%d/%Y")):
|
||||
jailbreak = True
|
||||
|
|
|
@ -556,8 +556,15 @@ def run_libraries(config):
|
|||
for ad in library.asset_directory:
|
||||
logger.debug(f"Asset Directory: {ad}")
|
||||
logger.debug(f"Asset Folders: {library.asset_folders}")
|
||||
logger.debug(f"Asset Depth: {library.asset_depth}")
|
||||
logger.debug(f"Create Asset Folders: {library.create_asset_folders}")
|
||||
logger.debug(f"Prioritize Assets: {library.prioritize_assets}")
|
||||
logger.debug(f"Dimensional Asset Rename: {library.dimensional_asset_rename}")
|
||||
logger.debug(f"Download URL Assets: {library.download_url_assets}")
|
||||
logger.debug(f"Show Missing Assets: {library.show_missing_assets}")
|
||||
logger.debug(f"Show Missing Season Assets: {library.show_missing_season_assets}")
|
||||
logger.debug(f"Show Missing Episode Assets: {library.show_missing_episode_assets}")
|
||||
logger.debug(f"Show Assets Not Needed: {library.show_asset_not_needed}")
|
||||
logger.debug(f"Sync Mode: {library.sync_mode}")
|
||||
logger.debug(f"Minimum Items: {library.minimum_items}")
|
||||
logger.debug(f"Delete Below Minimum: {library.delete_below_minimum}")
|
||||
|
@ -566,11 +573,15 @@ def run_libraries(config):
|
|||
logger.debug(f"Missing Only Released: {library.missing_only_released}")
|
||||
logger.debug(f"Only Filter Missing: {library.only_filter_missing}")
|
||||
logger.debug(f"Show Unmanaged: {library.show_unmanaged}")
|
||||
logger.debug(f"Show Unconfigured: {library.show_unconfigured}")
|
||||
logger.debug(f"Show Filtered: {library.show_filtered}")
|
||||
logger.debug(f"Show Options: {library.show_options}")
|
||||
logger.debug(f"Show Missing: {library.show_missing}")
|
||||
logger.debug(f"Show Missing Assets: {library.show_missing_assets}")
|
||||
logger.debug(f"Save Report: {library.save_report}")
|
||||
logger.debug(f"Report Path: {library.report_path}")
|
||||
logger.debug(f"Ignore IDs: {library.ignore_ids}")
|
||||
logger.debug(f"Ignore IMDb IDs: {library.ignore_imdb_ids}")
|
||||
logger.debug(f"Item Refresh Delay: {library.item_refresh_delay}")
|
||||
logger.debug(f"Clean Bundles: {library.clean_bundles}")
|
||||
logger.debug(f"Empty Trash: {library.empty_trash}")
|
||||
logger.debug(f"Optimize: {library.optimize}")
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
arrapi==1.4.7
|
||||
GitPython==3.1.40
|
||||
lxml==5.0.0
|
||||
lxml==5.1.0
|
||||
num2words==0.5.13
|
||||
pathvalidate==3.2.0
|
||||
pillow==10.2.0
|
||||
|
|
Loading…
Reference in a new issue