- added scan Plex library for new files after downloading subtitles

pull/2833/head
destpstrzy 3 months ago
parent 0c0bf3ab78
commit b30f5f4c81

@ -221,7 +221,10 @@ validators = [
Validator('plex.ssl', must_exist=True, default=False, is_type_of=bool),
Validator('plex.apikey', must_exist=True, default='', is_type_of=str),
Validator('plex.movie_library', must_exist=True, default='', is_type_of=str),
Validator('plex.series_library', must_exist=True, default='', is_type_of=str),
Validator('plex.set_added', must_exist=True, default=False, is_type_of=bool),
Validator('plex.update_movie_library', must_exist=True, default=False, is_type_of=bool),
Validator('plex.update_series_library', must_exist=True, default=False, is_type_of=bool),
# proxy section
Validator('proxy.type', must_exist=True, default=None, is_type_of=(NoneType, str),

@ -24,4 +24,25 @@ def plex_set_added_date_now(movie_metadata):
updates = {"addedAt.value": current_date}
video.edit(**updates)
except Exception as e:
logger.error(f"A Plex error occurred: {e}")
logger.error(f"A Plex error occurred: {e}")
def plex_update_library(is_movie):
try:
# Determine protocol based on SSL settings
protocol_plex = "https://" if settings.plex.ssl else "http://"
baseurl = f"{protocol_plex}{settings.plex.ip}:{settings.plex.port}"
token = settings.plex.apikey
# Connect to the Plex server
plex = PlexServer(baseurl, token)
# Select the library to update
library_name = settings.plex.movie_library if is_movie else settings.plex.series_library
library = plex.library.section(library_name)
# Trigger update
library.update()
except Exception as e:
logger.error(f"A Plex error occurred: {e}")

@ -11,7 +11,7 @@ from app.database import TableEpisodes, TableMovies, database, select
from utilities.analytics import event_tracker
from radarr.notify import notify_radarr
from sonarr.notify import notify_sonarr
from plex.operations import plex_set_added_date_now
from plex.operations import plex_set_added_date_now, plex_update_library
from app.event_handler import event_stream
from .utils import _get_download_code3
@ -78,7 +78,7 @@ def process_subtitle(subtitle, media_type, audio_language, path, max_score, is_u
if media_type == 'series':
episode_metadata = database.execute(
select(TableEpisodes.sonarrSeriesId, TableEpisodes.sonarrEpisodeId)
.where(TableEpisodes.path == path_mappings.path_replace_reverse(path)))\
.where(TableEpisodes.path == path_mappings.path_replace_reverse(path))) \
.first()
if not episode_metadata:
return
@ -97,7 +97,7 @@ def process_subtitle(subtitle, media_type, audio_language, path, max_score, is_u
else:
movie_metadata = database.execute(
select(TableMovies.radarrId, TableMovies.imdbId)
.where(TableMovies.path == path_mappings.path_replace_reverse_movie(path)))\
.where(TableMovies.path == path_mappings.path_replace_reverse_movie(path))) \
.first()
if not movie_metadata:
return
@ -116,7 +116,8 @@ def process_subtitle(subtitle, media_type, audio_language, path, max_score, is_u
if use_postprocessing is True:
command = pp_replace(postprocessing_cmd, path, downloaded_path, downloaded_language, downloaded_language_code2,
downloaded_language_code3, audio_language, audio_language_code2, audio_language_code3,
percent_score, subtitle_id, downloaded_provider, uploader, release_info, series_id, episode_id)
percent_score, subtitle_id, downloaded_provider, uploader, release_info, series_id,
episode_id)
if media_type == 'series':
use_pp_threshold = settings.general.use_postprocessing_threshold
@ -140,14 +141,20 @@ def process_subtitle(subtitle, media_type, audio_language, path, max_score, is_u
event_stream(type='series', action='update', payload=episode_metadata.sonarrSeriesId)
event_stream(type='episode-wanted', action='delete',
payload=episode_metadata.sonarrEpisodeId)
if settings.general.use_plex is True:
if settings.plex.update_movie_library is True:
plex_update_library(is_movie_library=False)
else:
reversed_path = path_mappings.path_replace_reverse_movie(path)
reversed_subtitles_path = path_mappings.path_replace_reverse_movie(downloaded_path)
notify_radarr(movie_metadata.radarrId)
event_stream(type='movie-wanted', action='delete', payload=movie_metadata.radarrId)
if settings.plex.set_added is True:
plex_set_added_date_now(movie_metadata)
if settings.general.use_plex is True:
if settings.plex.set_added is True:
plex_set_added_date_now(movie_metadata)
if settings.plex.update_movie_library is True:
plex_update_library(is_movie_library=True)
event_tracker.track_subtitles(provider=downloaded_provider, action=action, language=downloaded_language)

@ -13,7 +13,7 @@ import { plexEnabledKey } from "@/pages/Settings/keys";
const SettingsPlexView: FunctionComponent = () => {
return (
<Layout name="Interface">
<Section header="Use Plex integration">
<Section header="Use Plex operations">
<Check label="Enabled" settingKey={plexEnabledKey}></Check>
</Section>
<CollapseBox settingKey={plexEnabledKey}>
@ -28,15 +28,31 @@ const SettingsPlexView: FunctionComponent = () => {
<Text label="API Token" settingKey="settings-plex-apikey"></Text>
<Check label="SSL" settingKey="settings-plex-ssl"></Check>
</Section>
<Section header="Movie editing">
<Section header="Movie library">
<Text
label="Name of the library"
settingKey="settings-plex-movie_library"
></Text>
<Check
label="Set the movie as recently added after downloading the subtitles"
label="Mark the movie as recently added after downloading subtitles"
settingKey="settings-plex-set_added"
></Check>
<Check
label="Scan library for new files after downloading subtitles"
settingKey="settings-plex-update_movie_library"
></Check>
<Message>Can be helpful for remote media files</Message>
</Section>
<Section header="Series library">
<Text
label="Name of the library"
settingKey="settings-plex-series_library"
></Text>
<Check
label="Scan library for new files after downloading subtitles"
settingKey="settings-plex-update_series_library"
></Check>
<Message>Can be helpful for remote media files</Message>
</Section>
</CollapseBox>
</Layout>

@ -180,6 +180,9 @@ declare namespace Settings {
ssl?: boolean;
set_added?: boolean;
movie_library?: string;
series_library?: string;
update_movie_library?: boolean;
update_series_library?: boolean;
}
interface Anticaptcha {

Loading…
Cancel
Save