[35] remove flixpatrol

pull/1912/head
meisnate12 9 months ago
parent 1fa23ab411
commit 4c902f929c

@ -4,6 +4,9 @@ Updated plexapi requirement to 4.5.10
Updated setuptools requirement to 69.1.1
Updated tmdbapis requirement to 1.2.7
# Removed Features
Due to FlixPatrol moving a lot of their data behind a paywall and them reworking their pages to remove IMDb IDs and TMDb IDs the flixpatrol builders and default files have been removed. There currently are no plans to re-add them.
# New Features
Added `monitor_existing` to sonarr and radarr. To update the monitored status of items existing in plex to match the `monitor` declared.
Added [Gotify](https://gotify.net/) as a notification service. Thanks @krstn420 for the initial code.
@ -19,6 +22,7 @@ Mass Update operations now can be given a list of sources to fall back on when o
`mass_originally_available_update` has a new source `mdb_digital`
`plex` attributes `clean_bundles`, `empty_trash`, and `optimize` can now take any schedule options to be run only when desired.
Allows users to use the Admin username when specifying playlist users. Thanks @benbou8231!
Allows `verify_ssl` to be set specifically for plex. Thanks @FestiveKyle!
# Defaults
@ -31,5 +35,6 @@ Fixed `trakt_userlist`
Fixed an issue where sometimes the resolution default overlay would be off center
Fixed multiple issues with playlist deletion. Thanks @benbou8231!
Fixed an issue where dynamic collection errors would sometimes appear before the title of the Dynamic Collection.
Fix IMDb Null issue
Various other Minor Fixes

@ -30,7 +30,7 @@ Transform your media library with Plex Meta Manager and discover its full potent
### Third-Party Integrations
- Harness the power of Trakt, TMDb, IMDb, Flixpatrol and more to create collections and overlays!
- Harness the power of Trakt, TMDb, IMDb and more to create collections and overlays!
- Integrate with Sonarr and Radarr to automate your library growth.
### And More!

@ -1 +1 @@
1.20.0-develop34
1.20.0-develop35

@ -89,7 +89,7 @@ plex: # Can be individually specified per library as
clean_bundles: false
empty_trash: false
optimize: false
verify_ssl: true
verify_ssl:
tmdb: # REQUIRED for the script to run
apikey: ################################
language: en

@ -1,67 +0,0 @@
##############################################################################
# FlixPatrol Charts Collections #
# Created by Yozora, Bullmoose20, anon_fawkes, & Sohjiro #
# EDITING THIS FILE MAY CAUSE PULLING NEW UPDATES TO FAIL #
# https://metamanager.wiki/en/latest/defaults/chart/flixpatrol #
##############################################################################
external_templates:
pmm: templates
template_variables:
collection_section: "020"
pre: "_#"
templates:
flixpatrol:
default:
location: world
location_<<key>>: <<location>>
in_the_last: 1
in_the_last_<<key>>: <<in_the_last>>
limit: 10
limit_<<key>>: <<limit>>
conditionals:
actual_location:
default: <<location_<<key>>>>
conditions:
- key: apple
value: world
limit: <<limit>>
flixpatrol_top:
platform: <<platform>>
location: <<actual_location>>
in_the_last: <<in_the_last_<<key>>>>
limit: <<limit_<<key>>>>
dynamic_collections:
FlixPatrol:
type: custom
data:
netflix: Netflix
disney: Disney+
max: Max
hulu: Hulu
paramount: Paramount+
prime: Prime Video
apple: Apple TV+
title_format: <<key_name>> Top <<limit>>
template:
- flixpatrol
- shared
- arr
- custom
template_variables:
limit:
default: 10
platform:
default: <<key>>
max: hbo
paramount: paramount_plus
prime: amazon_prime
apple: apple_tv
image:
default: chart/<<key>>_top
translation_key:
default: flixpatrol
dynamic:
default: true

@ -1,104 +0,0 @@
##############################################################################
# FlixPatrol Overlays #
# Created by Yozora, Bullmoose20, anon_fawkes, & Sohjiro #
# EDITING THIS FILE MAY CAUSE PULLING NEW UPDATES TO FAIL #
# https://metamanager.wiki/en/latest/defaults/overlays/flixpatrol #
##############################################################################
external_templates:
pmm: templates
template_variables:
default:
pre_text: TOP
style: round
limit: 10
limit_<<key>>: <<limit>>
conditionals:
pmm:
conditions:
- file.exists: false
file_<<key>>.exists: false
url.exists: false
url_<<key>>.exists: false
git.exists: false
git_<<key>>.exists: false
repo.exists: false
repo_<<key>>.exists: false
value: logo/<<style>>/<<key>>
queue: position
back_color: "#00000099"
back_width: 160
back_height: 160
font_size: 50
addon_position: top
addon_offset: 30
back_padding: 15
final_name: text(<<pre_text>><<limit_<<key>>>>)
queues:
position:
default:
horizontal_offset: 30
vertical_offset: 465
vertical_align: top
right:
- horizontal_align: right
- vertical_offset: 670
- vertical_offset: 875
left:
- horizontal_align: left
- vertical_offset: 670
- vertical_offset: 875
templates:
flixpatrol:
default:
slug: <<key>>
location: world
location_<<key>>: <<location>>
in_the_last: 1
in_the_last_<<key>>: <<in_the_last>>
limit: 10
limit_<<key>>: <<limit>>
conditionals:
actual_location:
default: <<location_<<key>>>>
conditions:
- key: apple
value: world
ignore_blank_results: true
flixpatrol_top:
platform: <<slug>>
location: <<actual_location>>
in_the_last: <<in_the_last_<<key>>>>
limit: <<limit_<<key>>>>
overlays:
Netflix:
variables: {key: netflix, weight: 60}
template: [name: standard, name: flixpatrol]
Disney:
variables: {key: disney, weight: 50}
template: [name: standard, name: flixpatrol]
Max:
variables: {key: max, weight: 40, slug: hbo}
template: [name: standard, name: flixpatrol]
Hulu:
variables: {key: hulu, weight: 30}
template: [name: standard, name: flixpatrol]
Paramount:
variables: {key: paramount, weight: 20, slug: paramount_plus}
template: [name: standard, name: flixpatrol]
Prime:
variables: {key: prime, weight: 10, slug: amazon_prime}
template: [name: standard, name: flixpatrol]
Apple:
variables: {key: apple, weight: 9, slug: apple_tv}
template: [name: standard, name: flixpatrol]

@ -20,6 +20,7 @@ plex:
clean_bundles: true
empty_trash: true
optimize: false
verify_ssl:
```
| Attribute | Allowed Values | Default | Required |
@ -31,6 +32,7 @@ plex:
| `clean_bundles` | Runs Clean Bundles on the Server after all Collection Files are run<br>(`true`, `false` or Any [schedule option](schedule.md)) | false | :fontawesome-solid-circle-xmark:{ .red } |
| `empty_trash` | Runs Empty Trash on the Server after all Collection Files are run<br>(`true`, `false` or Any [schedule option](schedule.md)) | false | :fontawesome-solid-circle-xmark:{ .red } |
| `optimize` | Runs Optimize on the Server after all Collection Files are run<br>(`true`, `false` or Any [schedule option](schedule.md)) | false | :fontawesome-solid-circle-xmark:{ .red } |
| `verify_ssl` | Turns SSL verification on/off for only Plex | None | :fontawesome-solid-circle-xmark:{ .red } |
???+ warning

@ -1,94 +0,0 @@
# FlixPatrol Charts Collections
The `flixpatrol` Default Collection File is used to create collections based on FlixPatrol Charts.
![](../images/flixpatrol.png)
## Requirements & Recommendations
Supported Library Types: Movie, Show
## Collections Section 020
| Collection | Key | Description |
|:----------------------------------|:------------|:---------------------------------------------------------------------------|
| `Netflix Top 10 Movies/Shows` | `netflix` | Collection of the Top Movies/Shows on Netflix according to FlixPatrol. |
| `Disney+ Top 10 Movies/Shows` | `disney` | Collection of the Top Movies/Shows on Disney+ according to FlixPatrol. |
| `MAX Top 10 Movies/Shows` | `max` | Collection of the Top Movies/Shows on MAX according to FlixPatrol. |
| `Hulu Top 10 Movies/Shows` | `hulu` | Collection of the Top Movies/Shows on Hulu according to FlixPatrol. |
| `Paramount+ Top 10 Movies/Shows` | `paramount` | Collection of the Top Movies/Shows on Paramount+ according to FlixPatrol. |
| `Prime Video Top 10 Movies/Shows` | `prime` | Collection of the Top Movies/Shows on Prime Video according to FlixPatrol. |
| `Apple+ Top 10 Movies/Shows` | `apple` | Collection of the Top Movies/Shows on Apple+ according to FlixPatrol. |
## Config
The below YAML in your config.yml will create the collections:
```yaml
libraries:
Movies:
collection_files:
- pmm: flixpatrol
TV Shows:
collection_files:
- pmm: flixpatrol
```
## Template Variables
Template Variables can be used to manipulate the file in various ways to slightly change how it works without having to
make your own local copy.
Note that the `template_variables:` section only needs to be used if you do want to actually change how the defaults
work. Any value not specified will use its default value if it has one if not it's just ignored.
??? abstract "Variable Lists (click to expand)"
* **File-Specific Template Variables** are variables available specifically for this PMM Defaults file.
* **Shared Template Variables** are additional variables shared across the PMM Defaults.
???+ warning
Due to Flixpatrol data limitations, Apple TV only works with the `world` location. If you set a country-specific location, Apple TV will fall-back to using the `world` location.
=== "File-Specific Template Variables"
| Variable | Description & Values |
|:---------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `10`<br>**Values:** Any Number 1-10 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Any Number 1-10 |
| `in_the_last` | **Description:** Changes How many days of daily Top 10 Lists to look at.<br>**Default:** `1`<br>**Values:** Any Number 1-30 |
| `in_the_last_<<key>>`<sup>1</sup> | **Description:** Changes How many days of daily Top 10 Lists to look at.<br>**Default:** `in_the_last`<br>**Values:** Any Number 1-30 |
| `location` | **Description:** Changes the Builder Location for all collections in a Defaults file.<br>**Default:** `world`<br>**Values:** [`location` Attribute Options](../../files/builders/flixpatrol.md#top-platform-attributes) |
| `location_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Location of the specified key's collection.<br>**Default:** `location`<br>**Values:** [`location` Attribute Options](../../files/builders/flixpatrol.md#top-platform-attributes) |
| `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.<br>**Default:** `sync`<br>**Values:**<table class="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `sync_mode_<<key>>`<sup>1</sup> | **Description:** Changes the Sync Mode of the specified key's collection.<br>**Default:** `sync_mode`<br>**Values:**<table class="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.<br>**Default:** `custom`<br>**Values:**<table class="clearTable"><tr><td>`release`</td><td>Order Collection by Release Dates</td></tr><tr><td>`alpha`</td><td>Order Collection Alphabetically</td></tr><tr><td>`custom`</td><td>Order Collection Via the Builder Order</td></tr><tr><td>[Any `plex_search` Sort Option](../../files/builders/plex.md#sort-options)</td><td>Order Collection by any `plex_search` Sort Option</td></tr></table> |
| `collection_order_<<key>>`<sup>1</sup> | **Description:** Changes the Collection Order of the specified key's collection.<br>**Default:** `collection_order`<br>**Values:**<table class="clearTable"><tr><td>`release`</td><td>Order Collection by Release Dates</td></tr><tr><td>`alpha`</td><td>Order Collection Alphabetically</td></tr><tr><td>`custom`</td><td>Order Collection Via the Builder Order</td></tr><tr><td>[Any `plex_search` Sort Option](../../files/builders/plex.md#sort-options)</td><td>Order Collection by any `plex_search` Sort Option</td></tr></table> |
1. Each default collection has a `key` that when calling to effect a specific collection you must replace
`<<key>>` with when calling.
=== "Shared Template Variables"
{%
include-markdown "../collection_variables.md"
%}
???+ example "Example Template Variable Amendments"
The below is an example config.yml extract with some Template Variables added in to change how the file works.
Click the :fontawesome-solid-circle-plus: icon to learn more
```yaml
libraries:
Movies:
collection_files:
- pmm: flixpatrol
template_variables:
location: united_states #(1)!
```
1. Change the location of the FlixPatrol collections to the United States of America

@ -37,7 +37,6 @@ These collections are applied by calling the below paths into the `collection_fi
| [IMDb Charts](chart/imdb.md) | `imdb` | IMDb Popular, IMDb Top 250 | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
| [TMDb Charts](chart/tmdb.md) | `tmdb` | TMDb Popular, TMDb Airing Today | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
| [Trakt Charts](chart/trakt.md)<sup>2</sup> | `trakt` | Trakt Popular, Trakt Trending | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
| [FlixPatrol Charts](chart/flixpatrol.md) | `flixpatrol` | Top Disney, Top Max, Top Hulu, Top Netflix | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
| [AniList Charts](chart/anilist.md) | `anilist` | AniList Popular, AniList Season | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
| [MyAnimeList Charts](chart/myanimelist.md) | `myanimelist` | MyAnimeList Popular, MyAnimeList Top Rated | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
| [Other Charts](chart/other.md) | `other_chart` | AniDB Popular, Common Sense Selection | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |

@ -62,7 +62,6 @@ This is the default PMM collection ordering:
| `basic` | `010` |
| `anilist` | `020` |
| `imdb` | `020` |
| `flixpatrol` | `020` |
| `myanimelist` | `020` |
| `other_chart` | `020` |
| `tautulli` | `020` |

@ -18,7 +18,6 @@ config.yml
| Default | Path | Example Overlays | Movies | Shows | Seasons | Episodes |
|:-------------------------------------|:-------------|:-----------------------------------------|:------------------------------------------:|:------------------------------------------:|:----------------------------------------:|:----------------------------------------:|
| [FlixPatrol](overlays/flixpatrol.md) | `flixpatrol` | "Streaming service logo with words "TOP" | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
| [Ribbon](overlays/ribbon.md) | `ribbon` | IMDb Top 250 Ribbon, RT Fresh Ribbon | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
### Content Overlays

@ -1,115 +0,0 @@
# FlixPatrol Top Overlays
The `flixpatrol` Default Overlay File is used to create an overlay based on the Top Lists from FlixPatrol on items
within your library.
![](images/flixpatrol.png)
## Requirements & Recommendations
Supported Overlay Level: Movie, Show
## Supported Services
| Service | Key | Weight |
|:------------|:------------|:-------|
| Netflix | `netflix` | `60` |
| Disney+ | `disney` | `50` |
| MAX | `max` | `40` |
| Hulu | `hulu` | `30` |
| Paramount+ | `paramount` | `20` |
| Prime Video | `prime` | `10` |
| Apple+ | `apple` | `9` |
## Config
The below YAML in your config.yml will create the overlays:
```yaml
libraries:
Movies:
overlay_files:
- pmm: flixpatrol
TV Shows:
overlay_files:
- pmm: flixpatrol
```
## Template Variables
Template Variables can be used to manipulate the file in various ways to slightly change how it works without having to
make your own local copy.
Note that the `template_variables:` section only needs to be used if you do want to actually change how the defaults
work. Any value not specified will use its default value if it has one if not it's just ignored.
??? abstract "Variable Lists (click to expand)"
* **File-Specific Template Variables** are variables available specifically for this PMM Defaults file.
* **Overlay Template Variables** are additional variables shared across the PMM Overlay Defaults.
* **Overlay Text Template Variables** are additional variables shared across the PMM Text Overlay Defaults.
??? example "Default Template Variable Values (click to expand)"
| Variable | Default |
|:--------------------|:------------------|
| `horizontal_offset` | `30` |
| `horizontal_align` | `left`/`right` |
| `vertical_offset` | `465`/`670`/`875` |
| `vertical_align` | `top` |
| `back_color` | `#00000099` |
| `back_radius` | `30` |
| `back_width` | `160` |
| `back_height` | `160` |
| `back_padding` | `15` |
???+ bug "Warning"
`horizontal_offset`, `horizontal_align`, `vertical_offset`, and `vertical_align` are NOT available for use in this file
=== "File-Specific Template Variables"
| Variable | Description & Values |
|:----------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `position` | **Description:** Changes the position of the Overlays.<br>**Default:** `right`<br>**Values:** `right`, `left`, or List of Coordinates |
| `style` | **Description:** Changes the style of the Logo Image.<br>**Default:** `round`<br>**Values:** `round` or `square` |
| `pre_text` | **Description:** Changes the text before the number.<br>**Default:** `TOP`<br>**Values:** Any String |
| `limit` | **Description:** Changes the Builder Limit for all overlays in a Defaults file.<br>**Default:** `10`<br>**Values:** Any Number 1-10 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's overlay.<br>**Default:** `limit`<br>**Values:** Any Number 1-10 |
| `location` | **Description:** Changes the Builder Location for all overlays in a Defaults file.<br>**Default:** `world`<br>**Values:** [`location` Attribute Options](../../files/builders/flixpatrol.md#top-platform-attributes) |
| `location_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Location of the specified key's overlay.<br>**Default:** `location`<br>**Values:** [`location` Attribute Options](../../files/builders/flixpatrol.md#top-platform-attributes) |
| `in_the_last` | **Description:** Changes How many days of daily Top 10 Lists to look at.<br>**Default:** `1`<br>**Values:** Any Number 1-30 |
| `in_the_last_<<key>>`<sup>1</sup> | **Description:** Changes How many days of daily Top 10 Lists to look at.<br>**Default:** `in_the_last`<br>**Values:** Any Number 1-30 |
| `weight_<<key>>`<sup>1</sup> | **Description:** Controls the weight of the Overlay. Higher numbers have priority.<br>**Values:** Any Number |
| `addon_offset` | **Description:** Text Addon Image Offset from the text.<br>**Default:** `30`<br>**Values:** Any Number greater than 0 |
| `addon_position` | **Description:** Text Addon Image Alignment in relation to the text.<br>**Default:** `top`<br>**Values:** `left`, `right`, `top`, `bottom` |
1. Each default overlay has a `key` that when calling to effect a specific overlay you must replace `<<key>>`
with when calling.
=== "Overlay Template Variables"
{%
include-markdown "../overlay_variables.md"
%}
=== "Overlay Text Template Variables"
{%
include-markdown "../overlay_text_variables.md"
%}
???+ example "Example Template Variable Amendments"
The below is an example config.yml extract with some Template Variables added in to change how the file works.
```yaml
libraries:
Movies:
overlay_files:
- pmm: flixpatrol
template_variables:
location: united_states
```

@ -1,37 +0,0 @@
# FlixPatrol Builders
You can find items using the features of [FlixPatrol.com](https://flixpatrol.com/) (FlixPatrol).
No configuration is required for this builder.
| Attribute | Description | Works with Movies | Works with Shows | Works with Playlists and Custom Sort |
|:---------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------|:------------------------------------------:|:------------------------------------------:|:------------------------------------------:|
| [`flixpatrol_top`](#flixpatrol-top-platform) | Finds every item from [FlixPatrol's Top Platform Lists](https://flixpatrol.com/top10/) based on the attributes provided. | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } |
## FlixPatrol Top Platform
Finds every item from [FlixPatrol's Top Platform Lists](https://flixpatrol.com/top10/) based on the attributes provided.
The only required attribute is `platform`.
The `sync_mode: sync` and `collection_order: custom` Setting are recommended since the lists are continuously updated and in a specific order.
### Top Platform Attributes
| Attribute | Description & Values |
|:--------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `platform` | **Description:** Streaming Platform to filter on.<br>**Values:** `amazon_prime`, `apple_tv`, `chili`, `disney`, `freevee`, `globoplay`, `google`, `hbo`, `hulu`, `itunes`, `netflix`, `osn`, `paramount_plus`, `rakuten_tv`, `shahid`, `star_plus`, `starz`, `viaplay`, `vudu` |
| `location` | **Description:** Location to filter on.<br>**Default:** `world`<br>**Values:** `world`, `albania`, `algeria`, `angola`, `argentina`, `armenia`, `australia`, `austria`, `azerbaijan`, `bahamas`, `bahrain`, `bangladesh`, `belarus`, `belgium`, `belize`, `benin`, `bolivia`, `bosnia_and_herzegovina`, `botswana`, `brazil`, `bulgaria`, `burkina_faso`, `cambodia`, `cameroon`, `canada`, `chad`, `chile`, `colombia`, `costa_rica`, `croatia`, `cyprus`, `czech_republic`, `democratic_republic_of_the_congo`, `denmark`, `dominican_republic`, `ecuador`, `egypt`, `estonia`, `finland`, `france`, `gabon`, `georgia`, `germany`, `ghana`, `greece`, `guadeloupe`, `guatemala`, `guyana`, `haiti`, `honduras`, `hong_kong`, `hungary`, `iceland`, `india`, `indonesia`, `iraq`, `ireland`, `israel`, `italy`, `ivory_coast`, `jamaica`, `japan`, `jordan`, `kazakhstan`, `kenya`, `kuwait`, `kyrgyzstan`, `laos`, `latvia`, `lebanon`, `libya`, `lithuania`, `luxembourg`, `madagascar`, `malawi`, `malaysia`, `maldives`, `mali`, `malta`, `martinique`, `mauritania`, `mauritius`, `mexico`, `moldova`, `mongolia`, `montenegro`, `morocco`, `mozambique`, `myanmar`, `namibia`, `netherlands`, `new_caledonia`, `new_zealand`, `nicaragua`, `niger`, `nigeria`, `north_macedonia`, `norway`, `oman`, `pakistan`, `panama`, `papua_new_guinea`, `paraguay`, `peru`, `philippines`, `poland`, `portugal`, `qatar`, `republic_of_the_congo`, `reunion`, `romania`, `russia`, `rwanda`, `salvador`, `saudi_arabia`, `senegal`, `serbia`, `singapore`, `slovakia`, `slovenia`, `somalia`, `south_africa`, `south_korea`, `south_sudan`, `spain`, `sri_lanka`, `sweden`, `switzerland`, `taiwan`, `tajikistan`, `tanzania`, `thailand`, `togo`, `trinidad_and_tobago`, `tunisia`, `turkey`, `turkmenistan`, `uganda`, `ukraine`, `united_arab_emirates`, `united_kingdom`, `united_states`, `uruguay`, `uzbekistan`, `venezuela`, `vietnam`, `yemen`, `zambia`, `zimbabwe` |
| `limit` | **Description:** Number of items to return.<br>**Default:** `10`<br>**Values:** Integer greater than 0 |
| `in_the_last` | **Description:** Changes How many days of daily Top 10 Lists to look at.<br>**Default:** `1`<br>**Values:** Any Number 1-30 |
```yaml
collections:
US Netflix Monthly Top 10:
flixpatrol_top:
platform: netflix
location: united_states
limit: 10
collection_order: custom
sync_mode: sync
```

@ -182,18 +182,6 @@ Builders use third-party services to source items to be added to the collection.
- [:material-check: ICheckMovies List](../icheckmovies/#icheckmovies-list) - Gets every show in the ICheckMovies list
!!! builder
![FlixPatrol logo](../../../assets/icons/flixpatrol.png){ align=right }
**[FlixPatrol](../flixpatrol)** builders grab items based on metadata on FlixPatrol.com
[:octicons-home-16: View Builder](../flixpatrol){ .md-button .md-button--primary }
??? quicklink "Popular Builders"
- [:material-police-badge: FlixPatrol Top](../flixpatrol/#flixpatrol-top) - Gets every item from FlixPatrol's Top Platform Lists based on the attributes provided.
!!! builder
![AniDB logo](../../../assets/icons/anidb.png){ align=right }

@ -31,7 +31,7 @@ Transform your media library with Plex Meta Manager and discover its full potent
:material-connection:{ .lg .middle } __Third-Party Integrations__
- Harness the power of Trakt, TMDb, IMDb, Flixpatrol and more to create collections and overlays!
- Harness the power of Trakt, TMDb, IMDb and more to create collections and overlays!
- Integrate with Sonarr and Radarr to automate your library growth.
:material-star-face:{ .lg .middle } __And More!__

@ -486,13 +486,12 @@ With the release of PMM 1.20, several changes have taken place that we would lik
keyword.any: spy, espionage
```
??? blank "FlixPatrol Default File and Builder have been reworked (click to expand).<a class="headerlink" href="#flixpatrol" title="Permanent link"></a>"
??? blank "FlixPatrol Default Files and Builders have been removed (click to expand).<a class="headerlink" href="#flixpatrol" title="Permanent link"></a>"
<div id="flixpatrol" />
Due to FlixPatrol moving a lot of their data behind a paywall, the existing setup no longer works.
We have reintroduced FlixPatrol as a [Builder](../files/builders/flixpatrol.md) and [PMM Defaults File](../defaults/chart/flixpatrol.md), we recommend reading the documentation and updating your config/YAML files to suit.
Due to FlixPatrol moving a lot of their data behind a paywall and them reworking their pages to remove IMDb IDs and
TMDb IDs the flixpatrol builders and default files have been removed. There currently are no plans to re-add them.
??? blank "PMM Default `other_award` replaced with individual Award files (click to expand).<a class="headerlink" href="#awards" title="Permanent link"></a>"

@ -48,8 +48,6 @@ A lot of these guides are stored on Google Drive as using the traditional wiki p
- How PMM stores the IMDB Award Lists
- [PMM Mediastingers](https://github.com/meisnate12/PMM-Mediastingers)
- How PMM stores the Mediastingers List
- [PMM TOP10](https://github.com/meisnate12/PMM-TOP10)
- How PMM stores the Flixpatrol Top 10 Lists
<br>

@ -92,6 +92,7 @@
"type": "boolean"
},
"verify_ssl": {
"description": "Turn SSL Verification on or off for only Plex.",
"type": "boolean"
}
},

@ -32,7 +32,6 @@ libraries:
- pmm: tautulli
- pmm: imdb
- pmm: trakt
- pmm: flixpatrol
- pmm: anilist
- pmm: myanimelist
- pmm: other_chart
@ -99,7 +98,6 @@ libraries:
- url: https://foo.bar.com/something.yml
- git: bing/bang/boing
- repo: bing
- pmm: flixpatrol
- pmm: episode_info
- pmm: mediastinger
- pmm: ratings
@ -175,7 +173,6 @@ libraries:
- pmm: tautulli
- pmm: imdb
- pmm: trakt
- pmm: flixpatrol
- pmm: anilist
- pmm: myanimelist
- pmm: other_chart
@ -248,7 +245,6 @@ libraries:
- url: https://foo.bar.com/something.yml
- git: bing/bang/boing
- repo: bing
- pmm: flixpatrol
- pmm: episode_info
- pmm: mediastinger
- pmm: ratings
@ -289,7 +285,6 @@ libraries:
- pmm: tautulli
- pmm: imdb
- pmm: trakt
- pmm: flixpatrol
- pmm: anilist
- pmm: myanimelist
- pmm: other_chart
@ -343,7 +338,6 @@ libraries:
- remove_overlays: false # Set to true if you want to remove overlays
# - reapply_overlay: false # If you are doing a lot of testing and changes like me, keep this to true to always reapply overlays - can cause image bloat
# - reset_overlays: tmdb # if you want to reset the poster to default poster from tmdb - can cause image bloat
- pmm: flixpatrol
- pmm: mediastinger
- pmm: ratings
- pmm: status

@ -214,7 +214,6 @@ nav:
- Separator: defaults/chart/separator.md
- Basic Charts: defaults/chart/basic.md
- AniList Charts: defaults/chart/anilist.md
- Flixpatrol Charts: defaults/chart/flixpatrol.md
- IMDb Charts: defaults/chart/imdb.md
- MyAnimeList Charts: defaults/chart/myanimelist.md
- Tautulli Charts: defaults/chart/tautulli.md
@ -267,7 +266,6 @@ nav:
- Overlays: defaults/overlays.md
- Shared Variables: defaults/overlay_variables.md
- Chart:
- FlixPatrol Top: defaults/overlays/flixpatrol.md
- Ribbon: defaults/overlays/ribbon.md
- Content:
- Episode Info: defaults/overlays/episode_info.md
@ -320,7 +318,6 @@ nav:
- MdbList Builders: files/builders/mdblist.md
- Letterboxd Builders: files/builders/letterboxd.md
- ICheckMovies Builders: files/builders/icheckmovies.md
- FlixPatrol Builders: files/builders/flixpatrol.md
- BoxOfficeMojo Builders: files/builders/mojo.md
- Reciperr Builders: files/builders/reciperr.md
- StevenLu Builders: files/builders/stevenlu.md

@ -2,7 +2,7 @@ import os, re, time
from arrapi import ArrException
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
from modules import anidb, anilist, flixpatrol, icheckmovies, imdb, letterboxd, mal, mojo, plex, radarr, reciperr, sonarr, tautulli, tmdb, trakt, tvdb, mdblist, util
from modules import anidb, anilist, icheckmovies, imdb, letterboxd, mal, mojo, plex, radarr, reciperr, sonarr, tautulli, tmdb, trakt, tvdb, mdblist, util
from modules.util import Failed, FilterFailed, NonExisting, NotScheduled, NotScheduledRange, Deleted
from modules.overlay import Overlay
from modules.poster import PMMImage
@ -16,7 +16,7 @@ logger = util.logger
advance_new_agent = ["item_metadata_language", "item_use_original_title"]
advance_show = ["item_episode_sorting", "item_keep_episodes", "item_delete_episodes", "item_season_display", "item_episode_sorting"]
all_builders = anidb.builders + anilist.builders + flixpatrol.builders + icheckmovies.builders + imdb.builders + \
all_builders = anidb.builders + anilist.builders + icheckmovies.builders + imdb.builders + \
letterboxd.builders + mal.builders + mojo.builders + plex.builders + reciperr.builders + tautulli.builders + \
tmdb.builders + trakt.builders + tvdb.builders + mdblist.builders + radarr.builders + sonarr.builders
show_only_builders = [
@ -153,7 +153,7 @@ custom_sort_builders = [
"trakt_recommended_personal", "trakt_recommended_daily", "trakt_recommended_weekly", "trakt_recommended_monthly",
"trakt_recommended_yearly", "trakt_recommended_all", "trakt_watched_daily", "trakt_watched_weekly",
"trakt_watched_monthly", "trakt_watched_yearly", "trakt_watched_all",
"tautulli_popular", "tautulli_watched", "mdblist_list", "letterboxd_list", "icheckmovies_list", "flixpatrol_top",
"tautulli_popular", "tautulli_watched", "mdblist_list", "letterboxd_list", "icheckmovies_list",
"anilist_top_rated", "anilist_popular", "anilist_trending", "anilist_search", "anilist_userlist",
"mal_all", "mal_airing", "mal_upcoming", "mal_tv", "mal_movie", "mal_ova", "mal_special", "mal_search",
"mal_popular", "mal_favorite", "mal_suggested", "mal_userlist", "mal_season", "mal_genre", "mal_studio",
@ -1035,8 +1035,6 @@ class CollectionBuilder:
self._anidb(method_name, method_data)
elif method_name in anilist.builders:
self._anilist(method_name, method_data)
elif method_name in flixpatrol.builders:
self._flixpatrol(method_name, method_data)
elif method_name in icheckmovies.builders:
self._icheckmovies(method_name, method_data)
elif method_name in letterboxd.builders:
@ -1469,16 +1467,6 @@ class CollectionBuilder:
new_dictionary["limit"] = util.parse(self.Type, "limit", dict_data, datatype="int", methods=dict_methods, default=0, parent=method_name)
self.builders.append((method_name, new_dictionary))
def _flixpatrol(self, method_name, method_data):
for dict_data in util.parse(self.Type, method_name, method_data, datatype="listdict"):
dict_methods = {dm.lower(): dm for dm in dict_data}
self.builders.append((method_name, {
"platform": util.parse(self.Type, "platform", dict_data, methods=dict_methods, parent=method_name, options=self.config.FlixPatrol.platforms),
"location": util.parse(self.Type, "location", dict_data, methods=dict_methods, parent=method_name, default="world", options=self.config.FlixPatrol.locations),
"in_the_last": util.parse(self.Type, "in_the_last", dict_data, datatype="int", methods=dict_methods, parent=method_name, default=1, maximum=30),
"limit": util.parse(self.Type, "limit", dict_data, datatype="int", methods=dict_methods, parent=method_name, default=10, maximum=10)
}))
def _icheckmovies(self, method_name, method_data):
if method_name.startswith("icheckmovies_list"):
icheckmovies_lists = self.config.ICheckMovies.validate_icheckmovies_lists(method_data, self.language)
@ -2211,8 +2199,6 @@ class CollectionBuilder:
ids = self.config.TVDb.get_tvdb_ids(method, value)
elif "imdb" in method:
ids = self.config.IMDb.get_imdb_ids(method, value, self.language)
elif "flixpatrol" in method:
ids = self.config.FlixPatrol.get_tmdb_ids(method, value, self.library.is_movie)
elif "icheckmovies" in method:
ids = self.config.ICheckMovies.get_imdb_ids(method, value, self.language)
elif "letterboxd" in method:

@ -7,7 +7,6 @@ from modules.anilist import AniList
from modules.cache import Cache
from modules.convert import Convert
from modules.ergast import Ergast
from modules.flixpatrol import FlixPatrol
from modules.icheckmovies import ICheckMovies
from modules.imdb import IMDb
from modules.github import GitHub
@ -724,7 +723,6 @@ class ConfigFile:
self.IMDb = IMDb(self)
self.Convert = Convert(self)
self.AniList = AniList(self)
self.FlixPatrol = FlixPatrol(self)
self.ICheckMovies = ICheckMovies(self)
self.Letterboxd = Letterboxd(self)
self.BoxOfficeMojo = BoxOfficeMojo(self)
@ -739,7 +737,7 @@ class ConfigFile:
"url": check_for_attribute(self.data, "url", parent="plex", var_type="url", default_is_none=True),
"token": check_for_attribute(self.data, "token", parent="plex", default_is_none=True),
"timeout": check_for_attribute(self.data, "timeout", parent="plex", var_type="int", default=60),
"verify_ssl": check_for_attribute(self.data, "verify_ssl", parent="plex", var_type="bool", default=True),
"verify_ssl": check_for_attribute(self.data, "verify_ssl", parent="plex", var_type="bool", default_is_none=True),
"db_cache": check_for_attribute(self.data, "db_cache", parent="plex", var_type="int", default_is_none=True)
}
for attr in ["clean_bundles", "empty_trash", "optimize"]:
@ -1128,7 +1126,7 @@ class ConfigFile:
"url": check_for_attribute(lib, "url", parent="plex", var_type="url", default=self.general["plex"]["url"], req_default=True, save=False),
"token": check_for_attribute(lib, "token", parent="plex", default=self.general["plex"]["token"], req_default=True, save=False),
"timeout": check_for_attribute(lib, "timeout", parent="plex", var_type="int", default=self.general["plex"]["timeout"], save=False),
"verify_ssl": check_for_attribute(lib, "verify_ssl", parent="plex", var_type="bool", default=self.general["plex"]["verify_ssl"], save=False),
"verify_ssl": check_for_attribute(lib, "verify_ssl", parent="plex", var_type="bool", default=self.general["plex"]["verify_ssl"], default_is_none=True, save=False),
"db_cache": check_for_attribute(lib, "db_cache", parent="plex", var_type="int", default=self.general["plex"]["db_cache"], default_is_none=True, save=False)
}
for attr in ["clean_bundles", "empty_trash", "optimize"]:

@ -1,59 +0,0 @@
from modules import util
from modules.util import Failed
logger = util.logger
base_url = "https://raw.githubusercontent.com/meisnate12/PMM-TOP10/master/"
builders = ["flixpatrol_top"]
class FlixPatrol:
def __init__(self, config):
self.config = config
self._platforms = None
self._locations = None
self.country_data = {}
def load_info(self):
info = self.config.load_yaml(f"{base_url}info.yml")
self._platforms = info["platforms"]
self._locations = info["locations"]
def get_country(self, country):
if country not in self.country_data:
self.country_data[country] = self.config.load_yaml(f"{base_url}lists/{country}.yml")
return self.country_data[country]
@property
def platforms(self):
if self._platforms is None:
self.load_info()
return self._platforms
@property
def locations(self):
if self._locations is None:
self.load_info()
return self._locations
def get_tmdb_ids(self, method, data, is_movie):
flix_items = []
media_type = "movies" if is_movie else "shows"
if method == "flixpatrol_top":
logger.info(f"Processing FlixPatrol Top {media_type.capitalize()}:")
logger.info(f"\tPlatform: {data['platform'].replace('_', ' ').title()}")
logger.info(f"\tLocation: {data['location'].replace('_', ' ').title()}")
logger.info(f"\tIn The Last: {data['in_the_last']}")
logger.info(f"\tLimit: {data['limit']}")
country_info = self.get_country(data["location"])
for key in [k for k in country_info][:data["in_the_last"]]:
if data["platform"] in country_info[key] and media_type in country_info[key][data["platform"]]:
for item in country_info[key][data["platform"]][media_type]:
if item not in flix_items and len(flix_items) < data["limit"]:
flix_items.append(item)
items = [(i, "tmdb" if is_movie else "tmdb_show") for i in flix_items]
if len(items) > 0:
logger.info(f"Processed {len(items)} TMDb IDs")
return items
else:
raise Failed(f"FlixPatrol Error: No {media_type.capitalize()} Found for {data['platform'].replace('_', ' ').title()} in {data['location'].replace('_', ' ').title()}")

@ -1173,7 +1173,7 @@ class MetadataFile(DataFile):
if "<<library_typeU>>" in title_format:
title_format = title_format.replace("<<library_typeU>>", library.type)
if "limit" in self.temp_vars and "<<limit>>" in title_format:
title_format = title_format.replace("<<limit>>", self.temp_vars["limit"])
title_format = title_format.replace("<<limit>>", str(self.temp_vars["limit"]))
template_variables = util.parse("Config", "template_variables", dynamic, parent=map_name, methods=methods, datatype="dictdict") if "template_variables" in methods else {}
if "template" in methods:
template_names = util.parse("Config", "template", dynamic, parent=map_name, methods=methods, datatype="strlist")

@ -435,19 +435,22 @@ class Plex(Library):
super().__init__(config, params)
self.plex = params["plex"]
self.url = self.plex["url"]
self.plex["session"] = self.config.session
if self.plex.get("verify_ssl") is False and self.config.general["verify_ssl"] is True:
plex_session = self.config.session
if self.plex["verify_ssl"] is False and self.config.general["verify_ssl"] is True:
logger.debug("Overriding verify_ssl to False for Plex connection")
self.plex["session"] = requests.Session()
self.plex["session"].verify = False
plex_session = requests.Session()
plex_session.verify = False
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
if self.plex["verify_ssl"] is True and self.config.general["verify_ssl"] is False:
logger.debug("Overriding verify_ssl to True for Plex connection")
plex_session = requests.Session()
self.token = self.plex["token"]
self.timeout = self.plex["timeout"]
logger.secret(self.url)
logger.secret(self.token)
try:
self.PlexServer = PlexServer(baseurl=self.url, token=self.token, session=self.plex["session"], timeout=self.timeout)
self.PlexServer = PlexServer(baseurl=self.url, token=self.token, session=plex_session, timeout=self.timeout)
plexapi.server.TIMEOUT = self.timeout
os.environ["PLEXAPI_PLEXAPI_TIMEOUT"] = str(self.timeout)
logger.info(f"Connected to server {self.PlexServer.friendlyName} version {self.PlexServer.version}")

@ -7,7 +7,7 @@ pillow==10.2.0
PlexAPI==4.15.10
psutil==5.9.8
python-dotenv==1.0.1
python-dateutil==2.8.2
python-dateutil==2.9.0.post0
requests==2.31.0
retrying==1.3.4
ruamel.yaml==0.18.6

Loading…
Cancel
Save