Merge pull request #36 from gand0rf/master

Added pypresence discord function
This commit is contained in:
Benexl
2024-12-03 12:47:46 +03:00
committed by GitHub
5 changed files with 46 additions and 0 deletions

View File

@@ -45,6 +45,7 @@ class Config(object):
"default_media_list_tracking": "None",
"downloads_dir": USER_VIDEOS_DIR,
"disable_mpv_popen": "True",
"discord": "False",
"episode_complete_at": "80",
"ffmpegthumbnailer_seek_time": "-1",
"force_forward_tracking": "true",
@@ -112,6 +113,9 @@ class Config(object):
self.disable_mpv_popen = self.configparser.getboolean(
"stream", "disable_mpv_popen"
)
self.discord = self.configparser.getboolean(
"general", "discord"
)
self.downloads_dir = self.configparser.get("general", "downloads_dir")
self.episode_complete_at = self.configparser.getint(
"stream", "episode_complete_at"
@@ -437,6 +441,11 @@ use_persistent_provider_store = {self.use_persistent_provider_store}
# 0 will disable recent anime tracking
recent = {self.recent}
# enable or disable discord activity updater
# if you want to enable it, please follow the lnik below to register the app with discord account
# https://discord.com/oauth2/authorize?client_id=1292070065583165512
discord = {self.discord}
[stream]
# the quality of the stream [1080,720,480,360]

View File

@@ -2,6 +2,7 @@ from __future__ import annotations
import os
import random
import threading
from typing import TYPE_CHECKING
from click import clear
@@ -14,6 +15,7 @@ from yt_dlp.utils import sanitize_filename
from ...anilist import AniList
from ...constants import USER_CONFIG_PATH
from ...libs.discord import discord
from ...libs.fzf import fzf
from ...libs.rofi import Rofi
from ...Utility.data import anime_normalizer
@@ -54,6 +56,8 @@ def calculate_percentage_completion(start_time, end_time):
except Exception:
return 0
def discord_updater(show,episode,switch):
discord.discord_connect(show,episode,switch)
def media_player_controls(
config: "Config", fastanime_runtime_state: "FastAnimeRuntimeState"
@@ -510,6 +514,12 @@ def provider_anime_episode_servers_menu(
"[bold magenta] Episode: [/]",
current_episode_number,
)
# update discord activity for user
switch = threading.Event()
if config.discord:
discord_proc = threading.Thread(target=discord_updater, args=(provider_anime_title,current_episode_number,switch))
discord_proc.start()
# try to get the timestamp you left off from if available
start_time = config.watch_history.get(str(anime_id_anilist), {}).get(
"episode_stopped_at", "0"
@@ -592,6 +602,10 @@ def provider_anime_episode_servers_menu(
)
print("Finished at: ", stop_time)
# stop discord activity updater
if config.discord:
switch.set()
# update_watch_history
# this will try to update the episode to be the next episode if delta has reached a specific threshhold
# this update will only apply locally

View File

@@ -0,0 +1,11 @@
from pypresence import Presence
import time
def discord_connect(show, episode, switch):
presence = Presence(client_id = '1292070065583165512')
presence.connect()
if not switch.is_set():
presence.update(details = show, state = "Watching episode "+episode)
time.sleep(10)
else:
presence.close()

View File

@@ -9,6 +9,7 @@ dependencies = [
"click>=8.1.7",
"inquirerpy>=0.3.4",
"pycryptodome>=3.21.0",
"pypresence>=4.3.0",
"requests>=2.32.3",
"rich>=13.9.2",
"thefuzz>=0.22.1",

11
uv.lock generated
View File

@@ -343,6 +343,7 @@ dependencies = [
{ name = "click" },
{ name = "inquirerpy" },
{ name = "pycryptodome" },
{ name = "pypresence" },
{ name = "requests" },
{ name = "rich" },
{ name = "thefuzz" },
@@ -385,6 +386,7 @@ requires-dist = [
{ name = "plyer", marker = "extra == 'notifications'", specifier = ">=2.1.0" },
{ name = "plyer", marker = "extra == 'standard'", specifier = ">=2.1.0" },
{ name = "pycryptodome", specifier = ">=3.21.0" },
{ name = "pypresence", specifier = ">=4.3.0" },
{ name = "requests", specifier = ">=2.32.3" },
{ name = "rich", specifier = ">=13.9.2" },
{ name = "thefuzz", specifier = ">=0.22.1" },
@@ -965,6 +967,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/a9/64/445861ee7a5fd32874c0f6cfe8222aacc8feda22539332e0d8ff50dadec6/pyinstaller_hooks_contrib-2024.10-py3-none-any.whl", hash = "sha256:ad47db0e153683b4151e10d231cb91f2d93c85079e78d76d9e0f57ac6c8a5e10", size = 338417 },
]
[[package]]
name = "pypresence"
version = "4.3.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/f4/2e/d110f862720b5e3ba1b0b719657385fc4151929befa2c6981f48360aa480/pypresence-4.3.0.tar.gz", hash = "sha256:a6191a3af33a9667f2a4ef0185577c86b962ee70aa82643c472768a6fed1fbf3", size = 10696 }
wheels = [
{ url = "https://files.pythonhosted.org/packages/1e/40/1d30b30e18f81eb71365681223971a9822a89b3d6ee5269dd2aa955bc228/pypresence-4.3.0-py2.py3-none-any.whl", hash = "sha256:af878c6d49315084f1b108aec86b31915080614d9421d6dd3a44737aba9ff13f", size = 11778 },
]
[[package]]
name = "pyright"
version = "1.1.388"