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 " \t Platform: { data [ ' platform ' ] . replace ( ' _ ' , ' ' ) . title ( ) } " )
logger . info ( f " \t Location: { data [ ' location ' ] . replace ( ' _ ' , ' ' ) . title ( ) } " )
logger . info ( f " \t In The Last: { data [ ' in_the_last ' ] } " )
logger . info ( f " \t Limit: { 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 ( ) } " )