parent
43b2c8d878
commit
2e2a64d0d1
@ -1,55 +1,57 @@
|
|||||||
The below shared template variables are available for this file.
|
The below shared template variables are available for this file.
|
||||||
|
|
||||||
| Variable | Description & Values |
|
| Variable | Description & Values |
|
||||||
|:-----------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|:-----------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `language` | **Description:** Set the language of Collection Names and Summaries<br>**Default:** `default`<br>**Values:** `default` (English), `fr` (French), or `de` (German) |
|
| `language` | **Description:** Set the language of Collection Names and Summaries<br>**Default:** `default`<br>**Values:** `default` (English), `fr` (French), or `de` (German) |
|
||||||
| `use_<<key>>`<sup>1</sup> | **Description:** Turns off individual Collections in a Defaults file.<br>**Values:** `false` to turn off the collection |
|
| `use_<<key>>`<sup>1</sup> | **Description:** Turns off individual Collections in a Defaults file.<br>**Values:** `false` to turn off the collection |
|
||||||
| `name_<<key>>`<sup>1</sup> | **Description:** Changes the name of the specified key's collection.<br>**Values:** New Collection Name |
|
| `name_<<key>>`<sup>1</sup> | **Description:** Changes the name of the specified key's collection.<br>**Values:** New Collection Name |
|
||||||
| `summary_<<key>>`<sup>1</sup> | **Description:** Changes the summary of the specified key's collection.<br>**Values:** New Collection Summary |
|
| `summary_<<key>>`<sup>1</sup> | **Description:** Changes the summary of the specified key's collection.<br>**Values:** New Collection Summary |
|
||||||
| `collection_section` | **Description:** Changes the sort order of the collection sections against other default collection sections. (Use quotes to not lose leading zeros `"05"`)<br>**Values:** Any number |
|
| `collection_section` | **Description:** Changes the sort order of the collection sections against other default collection sections. (Use quotes to not lose leading zeros `"05"`)<br>**Values:** Any number |
|
||||||
| `sort_prefix` | **Description:** Changes the prefix of the sort title.<br>**Default:** `!`<br>**Values:** Any String |
|
| `sort_prefix` | **Description:** Changes the prefix of the sort title.<br>**Default:** `!`<br>**Values:** Any String |
|
||||||
| `sort_title` | **Description:** Changes the sort title of all collections.<br>**Default:** `<<sort_prefix>><<collection_section>><<pre>><<order_<<key>>>><<title>>`<br>**Values:** Any String |
|
| `sort_title` | **Description:** Changes the sort title of all collections.<br>**Default:** `<<sort_prefix>><<collection_section>><<pre>><<order_<<key>>>><<title>>`<br>**Values:** Any String |
|
||||||
| `name_mapping` | **Description:** Changes the `name_mapping` of all collections.<br>**Default:** `<<title>>`<br>**Values:** Any String with `<<key_name>>` in it. |
|
| `name_mapping` | **Description:** Changes the `name_mapping` of all collections.<br>**Default:** `<<title>>`<br>**Values:** Any String with `<<key_name>>` in it. |
|
||||||
| `order_<<key>>`<sup>1</sup> | **Description:** Controls the sort order of the collections in their collection section.<br>**Values:** Any number |
|
| `order_<<key>>`<sup>1</sup> | **Description:** Controls the sort order of the collections in their collection section.<br>**Values:** Any number |
|
||||||
| `collection_mode` | **Description:** Controls the collection mode of all collections in a Defaults file.<br>**Values:**<table class="clearTable"><tr><td>`default`</td><td>Library default</td></tr><tr><td>`hide`</td><td>Hide Collection</td></tr><tr><td>`hide_items`</td><td>Hide Items in this Collection</td></tr><tr><td>`show_items`</td><td>Show this Collection and its Items</td></tr></table> |
|
| `collection_mode` | **Description:** Controls the collection mode of all collections in a Defaults file.<br>**Values:**<table class="clearTable"><tr><td>`default`</td><td>Library default</td></tr><tr><td>`hide`</td><td>Hide Collection</td></tr><tr><td>`hide_items`</td><td>Hide Items in this Collection</td></tr><tr><td>`show_items`</td><td>Show this Collection and its Items</td></tr></table> |
|
||||||
| `ignore_ids` | **Description:** Set a list or comma-separated string of TMDb/TVDb IDs to ignore in all collections.<br>**Values:** List or comma-separated string of TMDb/TVDb IDs |
|
| `ignore_ids` | **Description:** Set a list or comma-separated string of TMDb/TVDb IDs to ignore in all collections.<br>**Values:** List or comma-separated string of TMDb/TVDb IDs |
|
||||||
| `ignore_imdb_ids` | **Description:** Set a list or comma-separated string of IMDb IDs to ignore in all collections.<br>**Values:** List or comma-separated string of IMDb IDs |
|
| `ignore_imdb_ids` | **Description:** Set a list or comma-separated string of IMDb IDs to ignore in all collections.<br>**Values:** List or comma-separated string of IMDb IDs |
|
||||||
| `minimum_items` | **Description:** Set the number of minimum items for a collection to be created for all collections.<br>**Values:** Any number greater than 0 |
|
| `minimum_items` | **Description:** Set the number of minimum items for a collection to be created for all collections.<br>**Values:** Any number greater than 0 |
|
||||||
| `minimum_items_<<key>>`<sup>1</sup> | **Description:** Set the number of minimum items for a collection to be created for the specified key's collection.<br>**Values:** Any number greater than 0 |
|
| `minimum_items_<<key>>`<sup>1</sup> | **Description:** Set the number of minimum items for a collection to be created for the specified key's collection.<br>**Values:** Any number greater than 0 |
|
||||||
| `delete_collections_named` | **Description:** Used to delete any collections in your plex named one of the given collections.<br>**Values:** List of Collection Names to delete |
|
| `schedule` | **Description:** Set the schedule for all of the collections in a Defaults file.<br>**Values:** Any [Scheduling Option](../config/schedule.md#important) |
|
||||||
| `url_poster` | **Description:** Changes the poster url for all collections.<br>**Values:** URL directly to the Image |
|
| `schedule_<<key>>` | **Description:** Set the schedule for a specific key's collection.<br>**Values:** Any [Scheduling Option](../config/schedule.md#important) |
|
||||||
| `url_poster_<<key>>`<sup>1</sup> | **Description:** Changes the poster url of the specified key's collection.<br>**Values:** URL directly to the Image |
|
| `delete_collections_named` | **Description:** Used to delete any collections in your plex named one of the given collections.<br>**Values:** List of Collection Names to delete |
|
||||||
| `file_poster` | **Description:** Sets the poster filepath for all collections.<br>**Values:** Filepath directly to the Image |
|
| `url_poster` | **Description:** Changes the poster url for all collections.<br>**Values:** URL directly to the Image |
|
||||||
| `file_poster_<<key>>`<sup>1</sup> | **Description:** Sets the poster filepath of the specified key's collection.<br>**Values:** Filepath directly to the Image |
|
| `url_poster_<<key>>`<sup>1</sup> | **Description:** Changes the poster url of the specified key's collection.<br>**Values:** URL directly to the Image |
|
||||||
| `url_background` | **Description:** Sets the background url for all collections.<br>**Values:** URL directly to the Image |
|
| `file_poster` | **Description:** Sets the poster filepath for all collections.<br>**Values:** Filepath directly to the Image |
|
||||||
| `url_background__<<key>>`<sup>1</sup> | **Description:** Sets the background url of the specified key's collection.<br>**Values:** URL directly to the Image |
|
| `file_poster_<<key>>`<sup>1</sup> | **Description:** Sets the poster filepath of the specified key's collection.<br>**Values:** Filepath directly to the Image |
|
||||||
| `file_background` | **Description:** Sets the background filepath for all collections.<br>**Values:** Filepath directly to the Image |
|
| `url_background` | **Description:** Sets the background url for all collections.<br>**Values:** URL directly to the Image |
|
||||||
| `file_background__<<key>>`<sup>1</sup> | **Description:** Sets the background filepath of the specified key's collection.<br>**Values:** Filepath directly to the Image |
|
| `url_background__<<key>>`<sup>1</sup> | **Description:** Sets the background url of the specified key's collection.<br>**Values:** URL directly to the Image |
|
||||||
| `visible_library` | **Description:** Controls visible on Library Recommended Tab for all collections in a Defaults file. (Only works with Plex Pass)<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
| `file_background` | **Description:** Sets the background filepath for all collections.<br>**Values:** Filepath directly to the Image |
|
||||||
| `visible_library_<<key>>`<sup>1</sup> | **Description:** Controls visible on Library Recommended Tab of the specified key's collection. (Only works with Plex Pass)<br>**Default:** `visible_library`<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
| `file_background__<<key>>`<sup>1</sup> | **Description:** Sets the background filepath of the specified key's collection.<br>**Values:** Filepath directly to the Image |
|
||||||
| `visible_home` | **Description:** Controls visible on Home Tab for all collections in a Defaults file. (Only works with Plex Pass)<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
| `visible_library` | **Description:** Controls visible on Library Recommended Tab for all collections in a Defaults file. (Only works with Plex Pass)<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
||||||
| `visible_home_<<key>>`<sup>1</sup> | **Description:** Controls visible on Home Tab of the specified key's collection. (Only works with Plex Pass)<br>**Default:** `visible_home`<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
| `visible_library_<<key>>`<sup>1</sup> | **Description:** Controls visible on Library Recommended Tab of the specified key's collection. (Only works with Plex Pass)<br>**Default:** `visible_library`<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
||||||
| `visible_shared` | **Description:** Controls visible on Shared Users' Home Tab for all collections in a Defaults file. (Only works with Plex Pass)<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
| `visible_home` | **Description:** Controls visible on Home Tab for all collections in a Defaults file. (Only works with Plex Pass)<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
||||||
| `visible_shared_<<key>>`<sup>1</sup> | **Description:** Controls visible on Shared Users' Home Tab of the specified key's collection. (Only works with Plex Pass)<br>**Default:** `visible_shared`<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
| `visible_home_<<key>>`<sup>1</sup> | **Description:** Controls visible on Home Tab of the specified key's collection. (Only works with Plex Pass)<br>**Default:** `visible_home`<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
||||||
| `radarr_add_missing` | **Description:** Override Radarr `add_missing` attribute for all collections in a Defaults file.<br>**Values:** `true` or `false` |
|
| `visible_shared` | **Description:** Controls visible on Shared Users' Home Tab for all collections in a Defaults file. (Only works with Plex Pass)<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
||||||
| `radarr_add_missing_<<key>>`<sup>1</sup> | **Description:** Override Radarr `add_missing` attribute of the specified key's collection.<br>**Default:** `radarr_add_missing`<br>**Values:** `true` or `false` |
|
| `visible_shared_<<key>>`<sup>1</sup> | **Description:** Controls visible on Shared Users' Home Tab of the specified key's collection. (Only works with Plex Pass)<br>**Default:** `visible_shared`<br>**Values:**<table class="clearTable"><tr><td>`true`</td><td>Visible</td></tr><tr><td>`false`</td><td>Not Visible</td></tr><tr><td>[Any `schedule` Option](../config/schedule.md)</td><td>Visible When Scheduled</td></tr></table> |
|
||||||
| `radarr_folder` | **Description:** Override Radarr `root_folder_path` attribute for all collections in a Defaults file.<br>**Values:** Folder Path |
|
| `radarr_add_missing` | **Description:** Override Radarr `add_missing` attribute for all collections in a Defaults file.<br>**Values:** `true` or `false` |
|
||||||
| `radarr_folder_<<key>>`<sup>1</sup> | **Description:** Override Radarr `root_folder_path` attribute of the specified key's collection.<br>**Default:** `radarr_folder`<br>**Values:** Folder Path |
|
| `radarr_add_missing_<<key>>`<sup>1</sup> | **Description:** Override Radarr `add_missing` attribute of the specified key's collection.<br>**Default:** `radarr_add_missing`<br>**Values:** `true` or `false` |
|
||||||
| `radarr_search` | **Description:** Override Radarr `search` attribute or all collections in a Defaults file.<br>**Values:** `true` or `false` |
|
| `radarr_folder` | **Description:** Override Radarr `root_folder_path` attribute for all collections in a Defaults file.<br>**Values:** Folder Path |
|
||||||
| `radarr_search_<<key>>`<sup>1</sup> | **Description:** Override Radarr `search` attribute of the specified key's collection.<br>**Default:** `radarr_search`<br>**Values:** `true` or `false` |
|
| `radarr_folder_<<key>>`<sup>1</sup> | **Description:** Override Radarr `root_folder_path` attribute of the specified key's collection.<br>**Default:** `radarr_folder`<br>**Values:** Folder Path |
|
||||||
| `radarr_tag` | **Description:** Override Radarr `tag` attribute for all collections in a Defaults file.<br>**Values:** List or comma-separated string of tags |
|
| `radarr_search` | **Description:** Override Radarr `search` attribute or all collections in a Defaults file.<br>**Values:** `true` or `false` |
|
||||||
| `radarr_tag_<<key>>`<sup>1</sup> | **Description:** Override Radarr `tag` attribute of the specified key's collection.<br>**Default:** `radarr_tag`<br>**Values:** List or comma-separated string of tags |
|
| `radarr_search_<<key>>`<sup>1</sup> | **Description:** Override Radarr `search` attribute of the specified key's collection.<br>**Default:** `radarr_search`<br>**Values:** `true` or `false` |
|
||||||
| `item_radarr_tag` | **Description:** Used to append a tag in Radarr for every movie found by the builders that's in Radarr for all collections in a Defaults file.<br>**Values:** List or comma-separated string of tags |
|
| `radarr_tag` | **Description:** Override Radarr `tag` attribute for all collections in a Defaults file.<br>**Values:** List or comma-separated string of tags |
|
||||||
| `item_radarr_tag_<<key>>`<sup>1</sup> | **Description:** Used to append a tag in Radarr for every movie found by the builders that's in Radarr of the specified key's collection.<br>**Default:** `item_radarr_tag`<br>**Values:** List or comma-separated string of tags |
|
| `radarr_tag_<<key>>`<sup>1</sup> | **Description:** Override Radarr `tag` attribute of the specified key's collection.<br>**Default:** `radarr_tag`<br>**Values:** List or comma-separated string of tags |
|
||||||
| `sonarr_add_missing` | **Description:** Override Sonarr `add_missing` attribute for all collections in a Defaults file.<br>**Values:** `true` or `false` |
|
| `item_radarr_tag` | **Description:** Used to append a tag in Radarr for every movie found by the builders that's in Radarr for all collections in a Defaults file.<br>**Values:** List or comma-separated string of tags |
|
||||||
| `sonarr_add_missing_<<key>>`<sup>1</sup> | **Description:** Override Sonarr `add_missing` attribute of the specified key's collection.<br>**Default:** `sonarr_add_missing`<br>**Values:** `true` or `false` |
|
| `item_radarr_tag_<<key>>`<sup>1</sup> | **Description:** Used to append a tag in Radarr for every movie found by the builders that's in Radarr of the specified key's collection.<br>**Default:** `item_radarr_tag`<br>**Values:** List or comma-separated string of tags |
|
||||||
| `sonarr_folder` | **Description:** Override Sonarr `root_folder_path` attribute for all collections in a Defaults file.<br>**Values:** Folder Path |
|
| `sonarr_add_missing` | **Description:** Override Sonarr `add_missing` attribute for all collections in a Defaults file.<br>**Values:** `true` or `false` |
|
||||||
| `sonarr_folder_<<key>>`<sup>1</sup> | **Description:** Override Sonarr `root_folder_path` attribute of the specified key's collection.<br>**Default:** `sonarr_folder`<br>**Values:** Folder Path |
|
| `sonarr_add_missing_<<key>>`<sup>1</sup> | **Description:** Override Sonarr `add_missing` attribute of the specified key's collection.<br>**Default:** `sonarr_add_missing`<br>**Values:** `true` or `false` |
|
||||||
| `sonarr_search` | **Description:** Override Sonarr `search` attribute or all collections in a Defaults file.<br>**Values:** `true` or `false` |
|
| `sonarr_folder` | **Description:** Override Sonarr `root_folder_path` attribute for all collections in a Defaults file.<br>**Values:** Folder Path |
|
||||||
| `sonarr_search_<<key>>`<sup>1</sup> | **Description:** Override Sonarr `search` attribute of the specified key's collection.<br>**Default:** `sonarr_search`<br>**Values:** `true` or `false` |
|
| `sonarr_folder_<<key>>`<sup>1</sup> | **Description:** Override Sonarr `root_folder_path` attribute of the specified key's collection.<br>**Default:** `sonarr_folder`<br>**Values:** Folder Path |
|
||||||
| `sonarr_tag` | **Description:** Override Sonarr `tag` attribute for all collections in a Defaults file.<br>**Values:** List or comma-separated string of tags |
|
| `sonarr_search` | **Description:** Override Sonarr `search` attribute or all collections in a Defaults file.<br>**Values:** `true` or `false` |
|
||||||
| `sonarr_tag_<<key>>`<sup>1</sup> | **Description:** Override Sonarr `tag` attribute of the specified key's collection.<br>**Default:** `sonarr_tag`<br>**Values:** List or comma-separated string of tags |
|
| `sonarr_search_<<key>>`<sup>1</sup> | **Description:** Override Sonarr `search` attribute of the specified key's collection.<br>**Default:** `sonarr_search`<br>**Values:** `true` or `false` |
|
||||||
| `item_sonarr_tag` | **Description:** Used to append a tag in Sonarr for every series found by the builders that's in Sonarr for all collections in a Defaults file.<br>**Values:** List or comma-separated string of tags |
|
| `sonarr_tag` | **Description:** Override Sonarr `tag` attribute for all collections in a Defaults file.<br>**Values:** List or comma-separated string of tags |
|
||||||
| `item_sonarr_tag_<<key>>`<sup>1</sup> | **Description:** Used to append a tag in Sonarr for every series found by the builders that's in Sonarr of the specified key's collection.<br>**Default:** `item_sonarr_tag`<br>**Values:** List or comma-separated string of tags |
|
| `sonarr_tag_<<key>>`<sup>1</sup> | **Description:** Override Sonarr `tag` attribute of the specified key's collection.<br>**Default:** `sonarr_tag`<br>**Values:** List or comma-separated string of tags |
|
||||||
|
| `item_sonarr_tag` | **Description:** Used to append a tag in Sonarr for every series found by the builders that's in Sonarr for all collections in a Defaults file.<br>**Values:** List or comma-separated string of tags |
|
||||||
|
| `item_sonarr_tag_<<key>>`<sup>1</sup> | **Description:** Used to append a tag in Sonarr for every series found by the builders that's in Sonarr of the specified key's collection.<br>**Default:** `item_sonarr_tag`<br>**Values:** List or comma-separated string of tags |
|
||||||
|
|
||||||
1. Each default collection has a `key` that when calling to effect a specific collection you must replace `<<key>>` with when calling.
|
1. Each default collection has a `key` that when calling to effect a specific collection you must replace `<<key>>` with when calling.
|
@ -1,320 +1,4 @@
|
|||||||
# Plex Image Cleanup
|
{%
|
||||||
|
include-markdown "https://raw.githubusercontent.com/meisnate12/Plex-Image-Cleanup/develop/README.md"
|
||||||
Your Plex folders are growing out of control. You use overlays from [Plex Meta Manager](https://github.com/meisnate12/Plex-Meta-Manager) (PMM) or upload lots of custom art from [Title Card Maker](https://github.com/CollinHeist/TitleCardMaker) (TCM) that you no longer want to use or need to eliminate. You don't want to perform the [plex dance](https://www.plexopedia.com/plex-media-server/general/plex-dance/) if you can avoid it. This script will free up gigs of space....
|
rewrite-relative-urls=true
|
||||||
|
%}
|
||||||
As well as being able to clean the PhotoTranscoder Directory and running the Plex operations Empty Trash, Clean Bundles, and Optimize DB.
|
|
||||||
|
|
||||||
Special Thanks to [bullmoose20](https://github.com/bullmoose20) for the original [Plex Bloat Fix](https://github.com/bullmoose20/Plex-Stuff#plex-bloat-fix) (PBF) Script this is based on.
|
|
||||||
|
|
||||||
![](images/cleanup.png)
|
|
||||||
|
|
||||||
This image shows which photos would be removed. Red is removed, Green is kept because it is the actively selected poster. The other two come standard from Plex when the posters are retrieved so Plex Meta Manager will not touch those either:
|
|
||||||
|
|
||||||
## Installing Plex Image Cleanup
|
|
||||||
|
|
||||||
Generally, Plex Image Cleanup can be installed in one of two ways:
|
|
||||||
|
|
||||||
1. Running on a system as a Python script [we will refer to this as a "local" install]
|
|
||||||
2. Running as a Docker container
|
|
||||||
|
|
||||||
GENERALLY SPEAKING, running as a Docker container is simpler, as you won't have to be concerned about installing Python, or support libraries, or any possible system conflicts generated by those actions.
|
|
||||||
|
|
||||||
For this reason, it's generally recommended that you install via Docker rather than directly on the host.
|
|
||||||
|
|
||||||
If you have some specific reason to avoid Docker, or you prefer running it as a Python script for some particular reason, then this general recommendation is not aimed at you. It's aimed at someone who doesn't have an existing compelling reason to choose one over the other.
|
|
||||||
|
|
||||||
### Install Walkthroughs
|
|
||||||
|
|
||||||
There are no detailed walkthroughs specifically for Plex Image Cleanup but the process is extremely similar to how you would do it with [Plex Meta Manager](https://metamanager.wiki/en/latest/pmm/installation/#install-walkthroughs).
|
|
||||||
|
|
||||||
### Local Install Overview
|
|
||||||
|
|
||||||
Plex Image Cleanup is compatible with Python 3.11. Later versions may function but are untested.
|
|
||||||
|
|
||||||
These are high-level steps which assume the user has knowledge of python and pip, and the general ability to troubleshoot issues.
|
|
||||||
|
|
||||||
1. Clone or [download and unzip](https://github.com/meisnate12/Plex-Image-Cleanup/archive/refs/heads/master.zip) the repo.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git clone https://github.com/meisnate12/Plex-Image-Cleanup
|
|
||||||
```
|
|
||||||
2. Install dependencies:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
pip install -r requirements.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
3. If the above command fails, run the following command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
pip install -r requirements.txt --ignore-installed
|
|
||||||
```
|
|
||||||
|
|
||||||
At this point Plex-Image-Cleanup has been installed, and you can verify installation by running:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
python plex_image_cleanup.py
|
|
||||||
```
|
|
||||||
|
|
||||||
### Docker Install Overview
|
|
||||||
|
|
||||||
#### Docker Run:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker run -v <PATH_TO_CONFIG>:/config:rw -v <PATH_TO_PLEX>:/plex:rw meisnate12/plex-image-cleanup
|
|
||||||
```
|
|
||||||
* The `-v <PATH_TO_CONFIG>:/config:rw` and `-v <PATH_TO_PLEX>:/plex:rw` flags mount the location you choose as a persistent volumes to store your files and give access to plex.
|
|
||||||
* Change `<PATH_TO_CONFIG>` to a folder where your .env and other files are.
|
|
||||||
* Change `<PATH_TO_PLEX>` to the folder where your Plex Folder is (It contains folders: Cache, Metadata, Plug-in Support).
|
|
||||||
* If your directory has spaces (such as "My Documents"), place quotation marks around your directory pathing as shown here: `-v "<PATH_TO_CONFIG>:/config:rw"`
|
|
||||||
|
|
||||||
Example Docker Run command:
|
|
||||||
|
|
||||||
These docs are assuming you have a basic understanding of Docker concepts. One place to get familiar with Docker would be the [official tutorial](https://www.docker.com/101-tutorial/).
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker run -v "X:\Media\Plex Image Cleanup\config:/config:rw" -v "X:\Plex Media Server:/plex:rw" meisnate12/plex-image-cleanup
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Docker Compose:
|
|
||||||
|
|
||||||
Example Docker Compose file:
|
|
||||||
```yaml
|
|
||||||
version: "2.1"
|
|
||||||
services:
|
|
||||||
plex-image-cleanup:
|
|
||||||
image: meisnate12/plex-image-cleanup
|
|
||||||
container_name: plex-image-cleanup
|
|
||||||
environment:
|
|
||||||
- TZ=TIMEZONE #optional
|
|
||||||
volumes:
|
|
||||||
- /path/to/config:/config
|
|
||||||
- /path/to/plex:/plex
|
|
||||||
restart: unless-stopped
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Dockerfile
|
|
||||||
|
|
||||||
A `Dockerfile` is included within the GitHub repository for those who require it, although this is only suggested for those with knowledge of dockerfiles. The official Plex Image Cleanup build is available on the [Dockerhub Website](https://hub.docker.com/r/meisnate12/plex-image-cleanup).
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
When running Plex Image Cleanup, make sure that you are not running any tools which may touch posters, backgrounds or title card images - namely [Plex Meta Manager](https://github.com/meisnate12/Plex-Meta-Manager) or [TitleCardMaker](https://github.com/CollinHeist/TitleCardMaker).
|
|
||||||
|
|
||||||
It is recommended to schedule Plex Image Cleanup after the above tools or Plex's Scheduled Tasks.
|
|
||||||
|
|
||||||
An example schedule would be:
|
|
||||||
* 00:00-02:00 - TitleCardMaker
|
|
||||||
* 02:00-05:00 - Plex Scheduled Tasks
|
|
||||||
* 05:00-07:00 - Plex Meta Manager
|
|
||||||
* 07:00-09:00 - Plex Image Cleanup
|
|
||||||
|
|
||||||
### Tips
|
|
||||||
|
|
||||||
* Ensure you have proper permissions to delete/rename or Plex Meta Manager will fail
|
|
||||||
* For performance purposes, it's recommended to run locally so that accessing the files is not done over a network share
|
|
||||||
|
|
||||||
## Global Options
|
|
||||||
|
|
||||||
Plex Image Cleanup has multiple Global Options to change how it runs these are set in 3 different ways listed in priority order:
|
|
||||||
|
|
||||||
1. Setting the Environment Variable.
|
|
||||||
2. Adding the Environment Variables to `config/.env`
|
|
||||||
* `example.env` is included as an example but is not read by Plex Meta Manager it will only read a file specifically called `.env`.
|
|
||||||
3. Use the Shell Command when launching.
|
|
||||||
|
|
||||||
### Example .env File
|
|
||||||
```
|
|
||||||
PLEX_PATH=C:\Plex Media Server
|
|
||||||
MODE=report
|
|
||||||
SCHEDULE=
|
|
||||||
PLEX_URL=http://192.168.1.12:32400
|
|
||||||
PLEX_TOKEN=123456789
|
|
||||||
DISCORD=https://discord.com/api/webhooks/###################/####################################################################
|
|
||||||
TIMEOUT=600
|
|
||||||
SLEEP=60
|
|
||||||
IGNORE_RUNNING=False
|
|
||||||
LOCAL_DB=False
|
|
||||||
USE_EXISTING=False
|
|
||||||
PHOTO_TRANSCODER=False
|
|
||||||
EMPTY_TRASH=False
|
|
||||||
CLEAN_BUNDLES=False
|
|
||||||
OPTIMIZE_DB=False
|
|
||||||
TRACE=False
|
|
||||||
LOG_REQUESTS=False
|
|
||||||
```
|
|
||||||
|
|
||||||
### Base Options
|
|
||||||
|
|
||||||
#### Plex Path
|
|
||||||
|
|
||||||
The only required Option is the `Plex Path` Option which is the Plex Config Folder containing the servers Metadata including `Cache`, `Metadata`, and `Plug-in Support`.
|
|
||||||
|
|
||||||
To set the `Plex Path` for the run:
|
|
||||||
* **Environment Variable:** `PLEX_PATH=C:\Plex Media Server`
|
|
||||||
* **Shell Command:** `-p "C:\Plex Media Server"` or `--plex "C:\Plex Media Server"`
|
|
||||||
* Will also check `/plex` relative to the base directory of the script if neither of the above are specified.
|
|
||||||
|
|
||||||
#### Mode
|
|
||||||
|
|
||||||
How Plex Image Cleanup runs depends on the `Mode` Option that's currently set for that run.
|
|
||||||
|
|
||||||
* `report`: Metadata Directory File changes will be reported but not performed.
|
|
||||||
* `move`: Metadata Directory Files will be moved to the PIC Restore Directory. (CAN BE RESTORED)
|
|
||||||
* `restore`: Restores the Metadata Directory Files from the PIC Restore Directory.
|
|
||||||
* `clear`: Clears out the PIC Restore Directory. (CANNOT BE RESTORED)
|
|
||||||
* `remove`: Metadata Directory Files will be removed. (CANNOT BE RESTORED)
|
|
||||||
* `nothing`: Metadata Directory Files will not even be looked at.
|
|
||||||
|
|
||||||
To set the Global `Mode` for the run:
|
|
||||||
* **Environment Variable:** `MODE=remove`
|
|
||||||
* **Shell Command:** `-m remove` or `--mode remove`
|
|
||||||
|
|
||||||
### Database
|
|
||||||
|
|
||||||
The script needs to query the server's plex database to make sure it doesn't remove actively selected images.
|
|
||||||
|
|
||||||
#### Download From Plex API
|
|
||||||
|
|
||||||
By default, the script will expect to connect to your Plex Server to download the Database using your `Plex URL` and `Plex Token` Options ([Finding a Token](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/)).
|
|
||||||
|
|
||||||
* **Environment Variables:**
|
|
||||||
* `PLEX_URL=http://192.168.1.12:32400`
|
|
||||||
* `PLEX_TOKEN=123456789`
|
|
||||||
* **Shell Commands:**
|
|
||||||
* `-u "http://192.168.1.12:32400"` or `--url "http://192.168.1.12:32400"`
|
|
||||||
* `-t "123456789"` or `--token "123456789"`
|
|
||||||
|
|
||||||
#### Copy From Local
|
|
||||||
|
|
||||||
Alternatively the database can be copied from your local config folder you supplied in the [`Plex Path`](#plex-path) Option by using the `Local DB` Option.
|
|
||||||
|
|
||||||
* **Environment Variable:** `LOCAL_DB=True`
|
|
||||||
* **Shell Command:** `-l` or `--local`
|
|
||||||
|
|
||||||
**IMPORTANT! When Copying the Local Database, it is recommended to restart Plex before running this script and to make sure Plex is idle.**
|
|
||||||
|
|
||||||
Restarting allows for all temp SQLite files to be written to the primary Plex DB ensuring that all currently selected posters are properly known and preserved.
|
|
||||||
|
|
||||||
The script will not run when the temp SQLite files are found. To ignore this error, use the `Ignore Running` Option.
|
|
||||||
|
|
||||||
* **Environment Variable:** `IGNORE_RUNNING=True`
|
|
||||||
* **Shell Command:** `-i` or `--ignore`
|
|
||||||
|
|
||||||
#### Use Existing
|
|
||||||
|
|
||||||
A previously downloaded or copied database can be used if it's less than 2 hours old by using the `Use Existing` Option. If the database is more than 2 hours old a new one will be downloaded or copied.
|
|
||||||
|
|
||||||
* **Environment Variable:** `USE_EXISTING=True`
|
|
||||||
* **Shell Command:** `-e` or `--existing`
|
|
||||||
|
|
||||||
### Other Operations
|
|
||||||
|
|
||||||
In addition to cleaning the Plex Metadata Directory for custom images the script can clean out your PhotoTranscoder Directory, Empty Trash, Clean Bundles, and Optimize DB.
|
|
||||||
|
|
||||||
#### Photo Transcoder
|
|
||||||
|
|
||||||
* **Environment Variable:** `PHOTO_TRANSCODER=True`
|
|
||||||
* **Shell Command:** `-pt` or `--photo-transcoder`
|
|
||||||
|
|
||||||
#### Empty Trash
|
|
||||||
|
|
||||||
* **Environment Variable:** `EMPTY_TRASH=True`
|
|
||||||
* **Shell Command:** `-et` or `--empty-trash`
|
|
||||||
|
|
||||||
#### Clean Bundles
|
|
||||||
|
|
||||||
* **Environment Variable:** `CLEAN_BUNDLES=True`
|
|
||||||
* **Shell Command:** `-cb` or `--clean-bundles`
|
|
||||||
|
|
||||||
#### Optimize DB
|
|
||||||
|
|
||||||
* **Environment Variable:** `OPTIMIZE_DB=True`
|
|
||||||
* **Shell Command:** `-od` or `--optimize-db`
|
|
||||||
|
|
||||||
### Other Options
|
|
||||||
|
|
||||||
#### Discord URL
|
|
||||||
|
|
||||||
Discord Webhook URL to send notifications to.
|
|
||||||
|
|
||||||
* **Environment Variable:** `DISCORD=https://discord.com/api/webhooks/###/###`
|
|
||||||
* **Shell Command:** `-d "https://discord.com/api/webhooks/###/###"` or `--discord "https://discord.com/api/webhooks/###/###"`
|
|
||||||
|
|
||||||
#### Timeout
|
|
||||||
|
|
||||||
Connection Timeout in seconds that's greater than 0.
|
|
||||||
|
|
||||||
* **Default:** `600`
|
|
||||||
* **Environment Variable:** `TIMEOUT=1000`
|
|
||||||
* **Shell Command:** `-ti 1000` or `--timeout 1000`
|
|
||||||
|
|
||||||
#### Sleep
|
|
||||||
|
|
||||||
Sleep Timer between Empty Trash, Clean Bundles, and Optimize DB in seconds that's greater than 0 .
|
|
||||||
|
|
||||||
* **Default:** `60`
|
|
||||||
* **Environment Variable:** `SLEEP=100`
|
|
||||||
* **Shell Command:** `-s 100` or `--sleep 100`
|
|
||||||
|
|
||||||
#### Trace
|
|
||||||
|
|
||||||
Run with extra trace logs.
|
|
||||||
|
|
||||||
* **Environment Variable:** `TRACE=True`
|
|
||||||
* **Shell Command:** `-tr` or `--trace`
|
|
||||||
|
|
||||||
#### Log Requests
|
|
||||||
|
|
||||||
Run with every request and file action logged.
|
|
||||||
|
|
||||||
* **Environment Variable:** `LOG_REQUESTS=True`
|
|
||||||
* **Shell Command:** `-lr` or `--log-requests`
|
|
||||||
|
|
||||||
### Continuous Schedule
|
|
||||||
|
|
||||||
Plex Image Cleanup can be run either immediately or on a schedule. The default behavior is to run immediately to run using a schedule simply pass in the `Schedule` Option.
|
|
||||||
|
|
||||||
Add a Schedule Block to the `Schedule` Option to run Plex Image Cleanup using a continuous schedule.
|
|
||||||
|
|
||||||
* **Shell Command:** `-sc` or `--schedule "05:00|weekly(sunday)"`
|
|
||||||
* **Environment Variable:** `SCHEDULE="05:00|weekly(sunday)"`
|
|
||||||
|
|
||||||
### Schedule Blocks
|
|
||||||
|
|
||||||
Schedule Blocks define how and when Plex Meta Manager will run.
|
|
||||||
|
|
||||||
Each Schedule Blocks has 2 required parts (`time` and `frequency`) and 1 optional part (`options`) all separated with a `|`. (Example: `time|frequency` or `time|frequency|options`)
|
|
||||||
|
|
||||||
You can have multiple Schedule Blocks separated with a `,` (`time|frequency,time|frequency|options`).
|
|
||||||
|
|
||||||
#### Schedule Block Parts
|
|
||||||
|
|
||||||
* `time`: Time in the day the run will occur.
|
|
||||||
* **Time:** `HH:MM` 24-hour format
|
|
||||||
* **Examples:** `00:00`-`23:59`
|
|
||||||
* `frequency`: Frequency to schedule the run.
|
|
||||||
* **Frequencies:** `daily`, `weekly(day of week)`, or `monthly(day of month)`
|
|
||||||
* **Examples:** `weekly(sunday)` or `monthly(1)`
|
|
||||||
* `options`: Options changed for the run in the format `option=value`, with multiple options separated with a `;`.
|
|
||||||
* **Options:** `mode`, `photo-transcoder`, `empty-trash`, `clean-bundles`, or `optimize-db`
|
|
||||||
* **Examples:** `mode=nothing` or `photo-transcoder=true`
|
|
||||||
* **Note: This overrides the currently set global value for just this one scheduled run**
|
|
||||||
|
|
||||||
### Schedule Block Example
|
|
||||||
|
|
||||||
```
|
|
||||||
SCHEDULE=08:00|weekly(sunday)|mode=clear,09:00|weekly(sunday)|mode=move,10:00|monthly(1)|mode=nothing;photo-transcoder=true
|
|
||||||
```
|
|
||||||
|
|
||||||
The example above is detailed out below to better explain how it works:
|
|
||||||
|
|
||||||
* Run at 8:00 AM on Sundays with the Options: `mode: clear`
|
|
||||||
* `08:00|weekly(sunday)|mode=remove`
|
|
||||||
* `time |frequency |options`
|
|
||||||
* Run at 9:00 AM on Sundays with the Options: `mode: move`
|
|
||||||
* `09:00|weekly(sunday)|mode=move`
|
|
||||||
* `time |frequency |options`
|
|
||||||
* Run at 10:00 AM on the 1st of each month with the Options: `mode: nothing` and `photo-transcoder: true`
|
|
||||||
* `10:00|monthly(1)|mode=nothing;photo-transcoder=true`
|
|
||||||
* `time |frequency |options`
|
|
Loading…
Reference in new issue