split helpers and structures
This commit is contained in:
parent
73d92e1e1b
commit
3993f6e9e0
7 changed files with 337 additions and 333 deletions
|
@ -3,340 +3,12 @@ import time
|
|||
import tarfile
|
||||
import hashlib
|
||||
import geoip2.database
|
||||
from typing import NamedTuple
|
||||
from json.decoder import JSONDecodeError
|
||||
from os.path import abspath, join
|
||||
from requests.exceptions import InvalidSchema, SSLError
|
||||
from urllib.request import urlretrieve
|
||||
|
||||
|
||||
class TVShow(NamedTuple):
|
||||
seriesId: int = None
|
||||
episodeFileId: int = None
|
||||
seasonNumber: int = None
|
||||
episodeNumber: int = None
|
||||
title: str = None
|
||||
airDate: str = None
|
||||
airDateUtc: str = None
|
||||
overview: str = None
|
||||
episodeFile: dict = None
|
||||
hasFile: bool = None
|
||||
monitored: bool = None
|
||||
unverifiedSceneNumbering: bool = None
|
||||
absoluteEpisodeNumber: int = None
|
||||
series: dict = None
|
||||
id: int = None
|
||||
|
||||
|
||||
class Movie(NamedTuple):
|
||||
title: str = None
|
||||
alternativeTitles: list = None
|
||||
secondaryYearSourceId: int = None
|
||||
sortTitle: str = None
|
||||
sizeOnDisk: int = None
|
||||
status: str = None
|
||||
overview: str = None
|
||||
inCinemas: str = None
|
||||
images: list = None
|
||||
downloaded: bool = None
|
||||
year: int = None
|
||||
secondaryYear: str = None
|
||||
hasFile: bool = None
|
||||
youTubeTrailerId: str = None
|
||||
studio: str = None
|
||||
path: str = None
|
||||
profileId: int = None
|
||||
pathState: str = None
|
||||
monitored: bool = None
|
||||
minimumAvailability: str = None
|
||||
isAvailable: bool = None
|
||||
folderName: str = None
|
||||
runtime: int = None
|
||||
lastInfoSync: str = None
|
||||
cleanTitle: str = None
|
||||
imdbId: str = None
|
||||
tmdbId: int = None
|
||||
titleSlug: str = None
|
||||
genres: list = None
|
||||
tags: list = None
|
||||
added: str = None
|
||||
ratings: dict = None
|
||||
movieFile: dict = None
|
||||
qualityProfileId: int = None
|
||||
physicalRelease: str = None
|
||||
physicalReleaseNote: str = None
|
||||
website: str = None
|
||||
id: int = None
|
||||
|
||||
|
||||
class Queue(NamedTuple):
|
||||
movie: dict = None
|
||||
series: dict = None
|
||||
episode: dict = None
|
||||
quality: dict = None
|
||||
size: float = None
|
||||
title: str = None
|
||||
sizeleft: float = None
|
||||
timeleft: str = None
|
||||
estimatedCompletionTime: str = None
|
||||
status: str = None
|
||||
trackedDownloadStatus: str = None
|
||||
statusMessages: list = None
|
||||
downloadId: str = None
|
||||
protocol: str = None
|
||||
id: int = None
|
||||
|
||||
|
||||
class SonarrServer(NamedTuple):
|
||||
id: int = None
|
||||
url: str = None
|
||||
api_key: str = None
|
||||
verify_ssl: bool = False
|
||||
missing_days: int = 0
|
||||
missing_days_run_seconds: int = 30
|
||||
future_days: int = 0
|
||||
future_days_run_seconds: int = 30
|
||||
queue: bool = False
|
||||
queue_run_seconds: int = 30
|
||||
|
||||
|
||||
class RadarrServer(NamedTuple):
|
||||
id: int = None
|
||||
url: str = None
|
||||
api_key: str = None
|
||||
verify_ssl: bool = False
|
||||
queue: bool = False
|
||||
queue_run_seconds: int = 30
|
||||
get_missing: bool = False
|
||||
get_missing_run_seconds: int = 30
|
||||
|
||||
|
||||
class OmbiServer(NamedTuple):
|
||||
id: int = None
|
||||
url: str = None
|
||||
api_key: str = None
|
||||
verify_ssl: bool = False
|
||||
request_type_counts: bool = False
|
||||
request_type_run_seconds: int = 30
|
||||
request_total_counts: bool = False
|
||||
request_total_run_seconds: int = 30
|
||||
|
||||
|
||||
class TautulliServer(NamedTuple):
|
||||
id: int = None
|
||||
url: str = None
|
||||
fallback_ip: str = None
|
||||
api_key: str = None
|
||||
verify_ssl: bool = None
|
||||
get_activity: bool = False
|
||||
get_activity_run_seconds: int = 30
|
||||
get_sessions: bool = False
|
||||
get_sessions_run_seconds: int = 30
|
||||
|
||||
|
||||
class InfluxServer(NamedTuple):
|
||||
url: str = 'localhost'
|
||||
port: int = 8086
|
||||
username: str = 'root'
|
||||
password: str = 'root'
|
||||
|
||||
|
||||
class OmbiRequestCounts(NamedTuple):
|
||||
pending: int = 0
|
||||
approved: int = 0
|
||||
available: int = 0
|
||||
|
||||
|
||||
class TautulliStream(NamedTuple):
|
||||
rating: str = None
|
||||
transcode_width: str = None
|
||||
labels: list = None
|
||||
stream_bitrate: str = None
|
||||
bandwidth: str = None
|
||||
optimized_version: int = None
|
||||
video_language: str = None
|
||||
parent_rating_key: str = None
|
||||
rating_key: str = None
|
||||
platform_version: str = None
|
||||
transcode_hw_decoding: int = None
|
||||
thumb: str = None
|
||||
title: str = None
|
||||
video_codec_level: str = None
|
||||
tagline: str = None
|
||||
last_viewed_at: str = None
|
||||
audio_sample_rate: str = None
|
||||
user_rating: str = None
|
||||
platform: str = None
|
||||
collections: list = None
|
||||
location: str = None
|
||||
transcode_container: str = None
|
||||
audio_channel_layout: str = None
|
||||
local: str = None
|
||||
stream_subtitle_format: str = None
|
||||
stream_video_ref_frames: str = None
|
||||
transcode_hw_encode_title: str = None
|
||||
stream_container_decision: str = None
|
||||
audience_rating: str = None
|
||||
full_title: str = None
|
||||
ip_address: str = None
|
||||
subtitles: int = None
|
||||
stream_subtitle_language: str = None
|
||||
channel_stream: int = None
|
||||
video_bitrate: str = None
|
||||
is_allow_sync: int = None
|
||||
stream_video_bitrate: str = None
|
||||
summary: str = None
|
||||
stream_audio_decision: str = None
|
||||
aspect_ratio: str = None
|
||||
audio_bitrate_mode: str = None
|
||||
transcode_hw_decode_title: str = None
|
||||
stream_audio_channel_layout: str = None
|
||||
deleted_user: int = None
|
||||
library_name: str = None
|
||||
art: str = None
|
||||
stream_video_resolution: str = None
|
||||
video_profile: str = None
|
||||
sort_title: str = None
|
||||
stream_video_codec_level: str = None
|
||||
stream_video_height: str = None
|
||||
year: str = None
|
||||
stream_duration: str = None
|
||||
stream_audio_channels: str = None
|
||||
video_language_code: str = None
|
||||
transcode_key: str = None
|
||||
transcode_throttled: int = None
|
||||
container: str = None
|
||||
stream_audio_bitrate: str = None
|
||||
user: str = None
|
||||
selected: int = None
|
||||
product_version: str = None
|
||||
subtitle_location: str = None
|
||||
transcode_hw_requested: int = None
|
||||
video_height: str = None
|
||||
state: str = None
|
||||
is_restricted: int = None
|
||||
email: str = None
|
||||
stream_container: str = None
|
||||
transcode_speed: str = None
|
||||
video_bit_depth: str = None
|
||||
stream_audio_sample_rate: str = None
|
||||
grandparent_title: str = None
|
||||
studio: str = None
|
||||
transcode_decision: str = None
|
||||
video_width: str = None
|
||||
bitrate: str = None
|
||||
machine_id: str = None
|
||||
originally_available_at: str = None
|
||||
video_frame_rate: str = None
|
||||
synced_version_profile: str = None
|
||||
friendly_name: str = None
|
||||
audio_profile: str = None
|
||||
optimized_version_title: str = None
|
||||
platform_name: str = None
|
||||
stream_video_language: str = None
|
||||
keep_history: int = None
|
||||
stream_audio_codec: str = None
|
||||
stream_video_codec: str = None
|
||||
grandparent_thumb: str = None
|
||||
synced_version: int = None
|
||||
transcode_hw_decode: str = None
|
||||
user_thumb: str = None
|
||||
stream_video_width: str = None
|
||||
height: str = None
|
||||
stream_subtitle_decision: str = None
|
||||
audio_codec: str = None
|
||||
parent_title: str = None
|
||||
guid: str = None
|
||||
audio_language_code: str = None
|
||||
transcode_video_codec: str = None
|
||||
transcode_audio_codec: str = None
|
||||
stream_video_decision: str = None
|
||||
user_id: int = None
|
||||
transcode_height: str = None
|
||||
transcode_hw_full_pipeline: int = None
|
||||
throttled: str = None
|
||||
quality_profile: str = None
|
||||
width: str = None
|
||||
live: int = None
|
||||
stream_subtitle_forced: int = None
|
||||
media_type: str = None
|
||||
video_resolution: str = None
|
||||
stream_subtitle_location: str = None
|
||||
do_notify: int = None
|
||||
video_ref_frames: str = None
|
||||
stream_subtitle_language_code: str = None
|
||||
audio_channels: str = None
|
||||
stream_audio_language_code: str = None
|
||||
optimized_version_profile: str = None
|
||||
relay: int = None
|
||||
duration: str = None
|
||||
rating_image: str = None
|
||||
is_home_user: int = None
|
||||
is_admin: int = None
|
||||
ip_address_public: str = None
|
||||
allow_guest: int = None
|
||||
transcode_audio_channels: str = None
|
||||
stream_audio_channel_layout_: str = None
|
||||
media_index: str = None
|
||||
stream_video_framerate: str = None
|
||||
transcode_hw_encode: str = None
|
||||
grandparent_rating_key: str = None
|
||||
original_title: str = None
|
||||
added_at: str = None
|
||||
banner: str = None
|
||||
bif_thumb: str = None
|
||||
parent_media_index: str = None
|
||||
live_uuid: str = None
|
||||
audio_language: str = None
|
||||
stream_audio_bitrate_mode: str = None
|
||||
username: str = None
|
||||
subtitle_decision: str = None
|
||||
children_count: str = None
|
||||
updated_at: str = None
|
||||
player: str = None
|
||||
subtitle_format: str = None
|
||||
file: str = None
|
||||
file_size: str = None
|
||||
session_key: str = None
|
||||
id: str = None
|
||||
subtitle_container: str = None
|
||||
genres: list = None
|
||||
stream_video_language_code: str = None
|
||||
indexes: int = None
|
||||
video_decision: str = None
|
||||
stream_audio_language: str = None
|
||||
writers: list = None
|
||||
actors: list = None
|
||||
progress_percent: str = None
|
||||
audio_decision: str = None
|
||||
subtitle_forced: int = None
|
||||
profile: str = None
|
||||
product: str = None
|
||||
view_offset: str = None
|
||||
type: str = None
|
||||
audience_rating_image: str = None
|
||||
audio_bitrate: str = None
|
||||
section_id: str = None
|
||||
stream_subtitle_codec: str = None
|
||||
subtitle_codec: str = None
|
||||
video_codec: str = None
|
||||
device: str = None
|
||||
stream_video_bit_depth: str = None
|
||||
video_framerate: str = None
|
||||
transcode_hw_encoding: int = None
|
||||
transcode_protocol: str = None
|
||||
shared_libraries: list = None
|
||||
stream_aspect_ratio: str = None
|
||||
content_rating: str = None
|
||||
session_id: str = None
|
||||
directors: list = None
|
||||
parent_thumb: str = None
|
||||
subtitle_language_code: str = None
|
||||
transcode_progress: int = None
|
||||
subtitle_language: str = None
|
||||
stream_subtitle_container: str = None
|
||||
|
||||
|
||||
def geoip_download():
|
||||
tar_dbfile = abspath(join('.', 'data', 'GeoLite2-City.tar.gz'))
|
||||
url = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz'
|
||||
|
|
|
@ -2,7 +2,7 @@ import sys
|
|||
import configparser
|
||||
from sys import exit
|
||||
from os.path import join, exists
|
||||
from Varken.helpers import OmbiServer, TautulliServer, SonarrServer, InfluxServer, RadarrServer
|
||||
from Varken.structures import SonarrServer, RadarrServer, OmbiServer, TautulliServer, InfluxServer
|
||||
|
||||
|
||||
class INIParser(object):
|
||||
|
|
|
@ -2,7 +2,8 @@ from requests import Session, Request
|
|||
from datetime import datetime, timezone
|
||||
|
||||
from Varken.logger import logging
|
||||
from Varken.helpers import OmbiRequestCounts, connection_handler
|
||||
from Varken.helpers import connection_handler
|
||||
from Varken.structures import OmbiRequestCounts
|
||||
|
||||
|
||||
class OmbiAPI(object):
|
||||
|
|
|
@ -2,7 +2,8 @@ from requests import Session, Request
|
|||
from datetime import datetime, timezone
|
||||
|
||||
from Varken.logger import logging
|
||||
from Varken.helpers import Movie, Queue, hashit, connection_handler
|
||||
from Varken.helpers import hashit, connection_handler
|
||||
from Varken.structures import Movie, Queue
|
||||
|
||||
|
||||
class RadarrAPI(object):
|
||||
|
|
|
@ -2,7 +2,8 @@ from requests import Session, Request
|
|||
from datetime import datetime, timezone, date, timedelta
|
||||
|
||||
from Varken.logger import logging
|
||||
from Varken.helpers import TVShow, Queue, hashit, connection_handler
|
||||
from Varken.helpers import hashit, connection_handler
|
||||
from Varken.structures import Queue, TVShow
|
||||
|
||||
|
||||
class SonarrAPI(object):
|
||||
|
|
328
Varken/structures.py
Normal file
328
Varken/structures.py
Normal file
|
@ -0,0 +1,328 @@
|
|||
from typing import NamedTuple
|
||||
|
||||
|
||||
class Queue(NamedTuple):
|
||||
movie: dict = None
|
||||
series: dict = None
|
||||
episode: dict = None
|
||||
quality: dict = None
|
||||
size: float = None
|
||||
title: str = None
|
||||
sizeleft: float = None
|
||||
timeleft: str = None
|
||||
estimatedCompletionTime: str = None
|
||||
status: str = None
|
||||
trackedDownloadStatus: str = None
|
||||
statusMessages: list = None
|
||||
downloadId: str = None
|
||||
protocol: str = None
|
||||
id: int = None
|
||||
|
||||
|
||||
class SonarrServer(NamedTuple):
|
||||
id: int = None
|
||||
url: str = None
|
||||
api_key: str = None
|
||||
verify_ssl: bool = False
|
||||
missing_days: int = 0
|
||||
missing_days_run_seconds: int = 30
|
||||
future_days: int = 0
|
||||
future_days_run_seconds: int = 30
|
||||
queue: bool = False
|
||||
queue_run_seconds: int = 30
|
||||
|
||||
|
||||
class RadarrServer(NamedTuple):
|
||||
id: int = None
|
||||
url: str = None
|
||||
api_key: str = None
|
||||
verify_ssl: bool = False
|
||||
queue: bool = False
|
||||
queue_run_seconds: int = 30
|
||||
get_missing: bool = False
|
||||
get_missing_run_seconds: int = 30
|
||||
|
||||
|
||||
class OmbiServer(NamedTuple):
|
||||
id: int = None
|
||||
url: str = None
|
||||
api_key: str = None
|
||||
verify_ssl: bool = False
|
||||
request_type_counts: bool = False
|
||||
request_type_run_seconds: int = 30
|
||||
request_total_counts: bool = False
|
||||
request_total_run_seconds: int = 30
|
||||
|
||||
|
||||
class TautulliServer(NamedTuple):
|
||||
id: int = None
|
||||
url: str = None
|
||||
fallback_ip: str = None
|
||||
api_key: str = None
|
||||
verify_ssl: bool = None
|
||||
get_activity: bool = False
|
||||
get_activity_run_seconds: int = 30
|
||||
get_sessions: bool = False
|
||||
get_sessions_run_seconds: int = 30
|
||||
|
||||
|
||||
class InfluxServer(NamedTuple):
|
||||
url: str = 'localhost'
|
||||
port: int = 8086
|
||||
username: str = 'root'
|
||||
password: str = 'root'
|
||||
|
||||
|
||||
class OmbiRequestCounts(NamedTuple):
|
||||
pending: int = 0
|
||||
approved: int = 0
|
||||
available: int = 0
|
||||
|
||||
|
||||
class TautulliStream(NamedTuple):
|
||||
rating: str = None
|
||||
transcode_width: str = None
|
||||
labels: list = None
|
||||
stream_bitrate: str = None
|
||||
bandwidth: str = None
|
||||
optimized_version: int = None
|
||||
video_language: str = None
|
||||
parent_rating_key: str = None
|
||||
rating_key: str = None
|
||||
platform_version: str = None
|
||||
transcode_hw_decoding: int = None
|
||||
thumb: str = None
|
||||
title: str = None
|
||||
video_codec_level: str = None
|
||||
tagline: str = None
|
||||
last_viewed_at: str = None
|
||||
audio_sample_rate: str = None
|
||||
user_rating: str = None
|
||||
platform: str = None
|
||||
collections: list = None
|
||||
location: str = None
|
||||
transcode_container: str = None
|
||||
audio_channel_layout: str = None
|
||||
local: str = None
|
||||
stream_subtitle_format: str = None
|
||||
stream_video_ref_frames: str = None
|
||||
transcode_hw_encode_title: str = None
|
||||
stream_container_decision: str = None
|
||||
audience_rating: str = None
|
||||
full_title: str = None
|
||||
ip_address: str = None
|
||||
subtitles: int = None
|
||||
stream_subtitle_language: str = None
|
||||
channel_stream: int = None
|
||||
video_bitrate: str = None
|
||||
is_allow_sync: int = None
|
||||
stream_video_bitrate: str = None
|
||||
summary: str = None
|
||||
stream_audio_decision: str = None
|
||||
aspect_ratio: str = None
|
||||
audio_bitrate_mode: str = None
|
||||
transcode_hw_decode_title: str = None
|
||||
stream_audio_channel_layout: str = None
|
||||
deleted_user: int = None
|
||||
library_name: str = None
|
||||
art: str = None
|
||||
stream_video_resolution: str = None
|
||||
video_profile: str = None
|
||||
sort_title: str = None
|
||||
stream_video_codec_level: str = None
|
||||
stream_video_height: str = None
|
||||
year: str = None
|
||||
stream_duration: str = None
|
||||
stream_audio_channels: str = None
|
||||
video_language_code: str = None
|
||||
transcode_key: str = None
|
||||
transcode_throttled: int = None
|
||||
container: str = None
|
||||
stream_audio_bitrate: str = None
|
||||
user: str = None
|
||||
selected: int = None
|
||||
product_version: str = None
|
||||
subtitle_location: str = None
|
||||
transcode_hw_requested: int = None
|
||||
video_height: str = None
|
||||
state: str = None
|
||||
is_restricted: int = None
|
||||
email: str = None
|
||||
stream_container: str = None
|
||||
transcode_speed: str = None
|
||||
video_bit_depth: str = None
|
||||
stream_audio_sample_rate: str = None
|
||||
grandparent_title: str = None
|
||||
studio: str = None
|
||||
transcode_decision: str = None
|
||||
video_width: str = None
|
||||
bitrate: str = None
|
||||
machine_id: str = None
|
||||
originally_available_at: str = None
|
||||
video_frame_rate: str = None
|
||||
synced_version_profile: str = None
|
||||
friendly_name: str = None
|
||||
audio_profile: str = None
|
||||
optimized_version_title: str = None
|
||||
platform_name: str = None
|
||||
stream_video_language: str = None
|
||||
keep_history: int = None
|
||||
stream_audio_codec: str = None
|
||||
stream_video_codec: str = None
|
||||
grandparent_thumb: str = None
|
||||
synced_version: int = None
|
||||
transcode_hw_decode: str = None
|
||||
user_thumb: str = None
|
||||
stream_video_width: str = None
|
||||
height: str = None
|
||||
stream_subtitle_decision: str = None
|
||||
audio_codec: str = None
|
||||
parent_title: str = None
|
||||
guid: str = None
|
||||
audio_language_code: str = None
|
||||
transcode_video_codec: str = None
|
||||
transcode_audio_codec: str = None
|
||||
stream_video_decision: str = None
|
||||
user_id: int = None
|
||||
transcode_height: str = None
|
||||
transcode_hw_full_pipeline: int = None
|
||||
throttled: str = None
|
||||
quality_profile: str = None
|
||||
width: str = None
|
||||
live: int = None
|
||||
stream_subtitle_forced: int = None
|
||||
media_type: str = None
|
||||
video_resolution: str = None
|
||||
stream_subtitle_location: str = None
|
||||
do_notify: int = None
|
||||
video_ref_frames: str = None
|
||||
stream_subtitle_language_code: str = None
|
||||
audio_channels: str = None
|
||||
stream_audio_language_code: str = None
|
||||
optimized_version_profile: str = None
|
||||
relay: int = None
|
||||
duration: str = None
|
||||
rating_image: str = None
|
||||
is_home_user: int = None
|
||||
is_admin: int = None
|
||||
ip_address_public: str = None
|
||||
allow_guest: int = None
|
||||
transcode_audio_channels: str = None
|
||||
stream_audio_channel_layout_: str = None
|
||||
media_index: str = None
|
||||
stream_video_framerate: str = None
|
||||
transcode_hw_encode: str = None
|
||||
grandparent_rating_key: str = None
|
||||
original_title: str = None
|
||||
added_at: str = None
|
||||
banner: str = None
|
||||
bif_thumb: str = None
|
||||
parent_media_index: str = None
|
||||
live_uuid: str = None
|
||||
audio_language: str = None
|
||||
stream_audio_bitrate_mode: str = None
|
||||
username: str = None
|
||||
subtitle_decision: str = None
|
||||
children_count: str = None
|
||||
updated_at: str = None
|
||||
player: str = None
|
||||
subtitle_format: str = None
|
||||
file: str = None
|
||||
file_size: str = None
|
||||
session_key: str = None
|
||||
id: str = None
|
||||
subtitle_container: str = None
|
||||
genres: list = None
|
||||
stream_video_language_code: str = None
|
||||
indexes: int = None
|
||||
video_decision: str = None
|
||||
stream_audio_language: str = None
|
||||
writers: list = None
|
||||
actors: list = None
|
||||
progress_percent: str = None
|
||||
audio_decision: str = None
|
||||
subtitle_forced: int = None
|
||||
profile: str = None
|
||||
product: str = None
|
||||
view_offset: str = None
|
||||
type: str = None
|
||||
audience_rating_image: str = None
|
||||
audio_bitrate: str = None
|
||||
section_id: str = None
|
||||
stream_subtitle_codec: str = None
|
||||
subtitle_codec: str = None
|
||||
video_codec: str = None
|
||||
device: str = None
|
||||
stream_video_bit_depth: str = None
|
||||
video_framerate: str = None
|
||||
transcode_hw_encoding: int = None
|
||||
transcode_protocol: str = None
|
||||
shared_libraries: list = None
|
||||
stream_aspect_ratio: str = None
|
||||
content_rating: str = None
|
||||
session_id: str = None
|
||||
directors: list = None
|
||||
parent_thumb: str = None
|
||||
subtitle_language_code: str = None
|
||||
transcode_progress: int = None
|
||||
subtitle_language: str = None
|
||||
stream_subtitle_container: str = None
|
||||
|
||||
|
||||
class TVShow(NamedTuple):
|
||||
seriesId: int = None
|
||||
episodeFileId: int = None
|
||||
seasonNumber: int = None
|
||||
episodeNumber: int = None
|
||||
title: str = None
|
||||
airDate: str = None
|
||||
airDateUtc: str = None
|
||||
overview: str = None
|
||||
episodeFile: dict = None
|
||||
hasFile: bool = None
|
||||
monitored: bool = None
|
||||
unverifiedSceneNumbering: bool = None
|
||||
absoluteEpisodeNumber: int = None
|
||||
series: dict = None
|
||||
id: int = None
|
||||
|
||||
|
||||
class Movie(NamedTuple):
|
||||
title: str = None
|
||||
alternativeTitles: list = None
|
||||
secondaryYearSourceId: int = None
|
||||
sortTitle: str = None
|
||||
sizeOnDisk: int = None
|
||||
status: str = None
|
||||
overview: str = None
|
||||
inCinemas: str = None
|
||||
images: list = None
|
||||
downloaded: bool = None
|
||||
year: int = None
|
||||
secondaryYear: str = None
|
||||
hasFile: bool = None
|
||||
youTubeTrailerId: str = None
|
||||
studio: str = None
|
||||
path: str = None
|
||||
profileId: int = None
|
||||
pathState: str = None
|
||||
monitored: bool = None
|
||||
minimumAvailability: str = None
|
||||
isAvailable: bool = None
|
||||
folderName: str = None
|
||||
runtime: int = None
|
||||
lastInfoSync: str = None
|
||||
cleanTitle: str = None
|
||||
imdbId: str = None
|
||||
tmdbId: int = None
|
||||
titleSlug: str = None
|
||||
genres: list = None
|
||||
tags: list = None
|
||||
added: str = None
|
||||
ratings: dict = None
|
||||
movieFile: dict = None
|
||||
qualityProfileId: int = None
|
||||
physicalRelease: str = None
|
||||
physicalReleaseNote: str = None
|
||||
website: str = None
|
||||
id: int = None
|
|
@ -3,7 +3,8 @@ from geoip2.errors import AddressNotFoundError
|
|||
from requests import Session, Request
|
||||
|
||||
from Varken.logger import logging
|
||||
from Varken.helpers import TautulliStream, geo_lookup, hashit, connection_handler
|
||||
from Varken.helpers import geo_lookup, hashit, connection_handler
|
||||
from Varken.structures import TautulliStream
|
||||
|
||||
|
||||
class TautulliAPI(object):
|
||||
|
|
Loading…
Reference in a new issue