feat(config): pass custom mpv args

This commit is contained in:
Benexl
2025-02-23 20:18:23 +03:00
parent 58edb0427f
commit 61a525ff94
2 changed files with 24 additions and 2 deletions

View File

@@ -1,9 +1,13 @@
import json import json
import logging import logging
import os import os
import sys
import time
from configparser import ConfigParser from configparser import ConfigParser
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from rich import print
from ..constants import ( from ..constants import (
ASSETS_DIR, ASSETS_DIR,
S_PLATFORM, S_PLATFORM,
@@ -60,6 +64,7 @@ class Config(object):
"normalize_titles": "True", "normalize_titles": "True",
"notification_duration": "120", "notification_duration": "120",
"max_cache_lifetime": "03:00:00", "max_cache_lifetime": "03:00:00",
"mpv_args": "",
"per_page": "15", "per_page": "15",
"player": "mpv", "player": "mpv",
"preferred_history": "local", "preferred_history": "local",
@@ -96,8 +101,16 @@ class Config(object):
self.configparser.add_section("anilist") self.configparser.add_section("anilist")
# --- set config values from file or using defaults --- # --- set config values from file or using defaults ---
if os.path.exists(USER_CONFIG_PATH) and not no_config: try:
self.configparser.read(USER_CONFIG_PATH, encoding="utf-8") if os.path.exists(USER_CONFIG_PATH) and not no_config:
self.configparser.read(USER_CONFIG_PATH, encoding="utf-8")
except Exception as e:
print(
"[yellow]Warning[/]: Failed to read config file using default configuration",
file=sys.stderr,
)
logger.error(f"Failed to read config file: {e}")
time.sleep(5)
# get the configuration # get the configuration
self.auto_next = self.configparser.getboolean("stream", "auto_next") self.auto_next = self.configparser.getboolean("stream", "auto_next")
@@ -149,6 +162,7 @@ class Config(object):
+ max_cache_lifetime[1] * 3600 + max_cache_lifetime[1] * 3600
+ max_cache_lifetime[2] * 60 + max_cache_lifetime[2] * 60
) )
self.mpv_args = self.configparser.get("general", "mpv_args")
self.per_page = self.configparser.get("anilist", "per_page") self.per_page = self.configparser.get("anilist", "per_page")
self.player = self.configparser.get("stream", "player") self.player = self.configparser.get("stream", "player")
self.preferred_history = self.configparser.get("stream", "preferred_history") self.preferred_history = self.configparser.get("stream", "preferred_history")
@@ -448,6 +462,10 @@ recent = {self.recent}
# https://discord.com/oauth2/authorize?client_id=1292070065583165512 # https://discord.com/oauth2/authorize?client_id=1292070065583165512
discord = {self.discord} discord = {self.discord}
# comma separated list of args that will be passed to mpv
# example: --vo=kitty,--fullscreen,--volume=50
mpv_args = {self.mpv_args}
[stream] [stream]
# the quality of the stream [1080,720,480,360] # the quality of the stream [1080,720,480,360]

View File

@@ -208,5 +208,9 @@ def run_mpv(
mpv_args.append(f"--title={title}") mpv_args.append(f"--title={title}")
if ytdl_format: if ytdl_format:
mpv_args.append(f"--ytdl-format={ytdl_format}") mpv_args.append(f"--ytdl-format={ytdl_format}")
if user_args := os.environ.get("FASTANIME_MPV_ARGS"):
mpv_args.extend(user_args.split(","))
stop_time, total_time = stream_video(MPV, link, mpv_args, custom_args) stop_time, total_time = stream_video(MPV, link, mpv_args, custom_args)
return stop_time, total_time return stop_time, total_time