mediaforge 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mediaforge/.env.example +162 -0
- mediaforge/__init__.py +5 -0
- mediaforge/__main__.py +9 -0
- mediaforge/anime4k/__init__.py +3 -0
- mediaforge/anime4k/anime4k.py +754 -0
- mediaforge/anime4k/shader/Anime4K_AutoDownscalePre_x2.glsl +36 -0
- mediaforge/anime4k/shader/Anime4K_AutoDownscalePre_x4.glsl +36 -0
- mediaforge/anime4k/shader/Anime4K_Clamp_Highlights.glsl +90 -0
- mediaforge/anime4k/shader/Anime4K_Darken_Fast.glsl +216 -0
- mediaforge/anime4k/shader/Anime4K_Darken_HQ.glsl +198 -0
- mediaforge/anime4k/shader/Anime4K_Darken_VeryFast.glsl +218 -0
- mediaforge/anime4k/shader/Anime4K_Deblur_DoG.glsl +153 -0
- mediaforge/anime4k/shader/Anime4K_Deblur_Original.glsl +287 -0
- mediaforge/anime4k/shader/Anime4K_Denoise_Bilateral_Mean.glsl +67 -0
- mediaforge/anime4k/shader/Anime4K_Denoise_Bilateral_Median.glsl +120 -0
- mediaforge/anime4k/shader/Anime4K_Denoise_Bilateral_Mode.glsl +103 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_L.glsl +429 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_M.glsl +275 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_S.glsl +137 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_L.glsl +429 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_M.glsl +275 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_S.glsl +137 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_UL.glsl +1704 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_VL.glsl +873 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_UL.glsl +1704 -0
- mediaforge/anime4k/shader/Anime4K_Restore_CNN_VL.glsl +873 -0
- mediaforge/anime4k/shader/Anime4K_Thin_Fast.glsl +234 -0
- mediaforge/anime4k/shader/Anime4K_Thin_HQ.glsl +222 -0
- mediaforge/anime4k/shader/Anime4K_Thin_VeryFast.glsl +236 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_L.glsl +461 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_M.glsl +300 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_S.glsl +158 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_UL.glsl +1702 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_VL.glsl +969 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_DTD_x2.glsl +613 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_Deblur_DoG_x2.glsl +158 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_Deblur_Original_x2.glsl +277 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_L.glsl +461 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_M.glsl +300 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_S.glsl +158 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_UL.glsl +1702 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl +969 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_DoG_x2.glsl +143 -0
- mediaforge/anime4k/shader/Anime4K_Upscale_Original_x2.glsl +277 -0
- mediaforge/arguments.py +62 -0
- mediaforge/autodeps.py +368 -0
- mediaforge/bin/windows/mpv-register.bat +12 -0
- mediaforge/bin/windows/mpv-unregister.bat +12 -0
- mediaforge/bin/windows/mpv.com +0 -0
- mediaforge/bin/windows/updater.bat +24 -0
- mediaforge/common/__init__.py +3 -0
- mediaforge/common/common.py +91 -0
- mediaforge/config.py +526 -0
- mediaforge/entry.py +76 -0
- mediaforge/env.py +82 -0
- mediaforge/extractors/__init__.py +24 -0
- mediaforge/extractors/provider/doodstream.py +144 -0
- mediaforge/extractors/provider/filemoon.py +314 -0
- mediaforge/extractors/provider/loadx.py +46 -0
- mediaforge/extractors/provider/luluvdo.py +46 -0
- mediaforge/extractors/provider/streamtape.py +46 -0
- mediaforge/extractors/provider/veev.py +407 -0
- mediaforge/extractors/provider/vidara.py +82 -0
- mediaforge/extractors/provider/vidmoly.py +106 -0
- mediaforge/extractors/provider/vidoza.py +82 -0
- mediaforge/extractors/provider/voe.py +262 -0
- mediaforge/legacy_import.py +137 -0
- mediaforge/logger.py +117 -0
- mediaforge/models/__init__.py +15 -0
- mediaforge/models/aniworld_to/__init__.py +9 -0
- mediaforge/models/aniworld_to/episode.py +722 -0
- mediaforge/models/aniworld_to/season.py +338 -0
- mediaforge/models/aniworld_to/series.py +732 -0
- mediaforge/models/common/__init__.py +17 -0
- mediaforge/models/common/common.py +1456 -0
- mediaforge/models/filmpalast_to/episode.py +534 -0
- mediaforge/models/s_to/__init__.py +9 -0
- mediaforge/models/s_to/episode.py +591 -0
- mediaforge/models/s_to/season.py +170 -0
- mediaforge/models/s_to/series.py +603 -0
- mediaforge/playwright/__init__.py +3 -0
- mediaforge/playwright/captcha.py +1307 -0
- mediaforge/playwright/test.py +12 -0
- mediaforge/providers.py +107 -0
- mediaforge/search.py +615 -0
- mediaforge/vendor/__init__.py +5 -0
- mediaforge/vendor/crunchyroll_api.py +1983 -0
- mediaforge/web/__init__.py +3 -0
- mediaforge/web/app.py +11223 -0
- mediaforge/web/auth.py +473 -0
- mediaforge/web/autosync_filter.py +147 -0
- mediaforge/web/console_capture.py +156 -0
- mediaforge/web/crunchyroll_service.py +612 -0
- mediaforge/web/db.py +3508 -0
- mediaforge/web/library_watcher.py +189 -0
- mediaforge/web/notifications.py +718 -0
- mediaforge/web/selfupdate.py +503 -0
- mediaforge/web/static/advanced_search.css +732 -0
- mediaforge/web/static/app.js +3578 -0
- mediaforge/web/static/autosync.css +255 -0
- mediaforge/web/static/autosync.js +954 -0
- mediaforge/web/static/autosync_filter.css +292 -0
- mediaforge/web/static/autosync_filter.js +582 -0
- mediaforge/web/static/calendar.css +751 -0
- mediaforge/web/static/calendar.js +584 -0
- mediaforge/web/static/favourites.js +69 -0
- mediaforge/web/static/flags/english-germanSub.svg +244 -0
- mediaforge/web/static/flags/english.svg +2 -0
- mediaforge/web/static/flags/german.svg +479 -0
- mediaforge/web/static/flags/japanese-englishSub.svg +478 -0
- mediaforge/web/static/flags/japanese-germanSub.svg +479 -0
- mediaforge/web/static/history.css +420 -0
- mediaforge/web/static/history.js +451 -0
- mediaforge/web/static/icon-144.png +0 -0
- mediaforge/web/static/icon-192.png +0 -0
- mediaforge/web/static/icon-48.png +0 -0
- mediaforge/web/static/icon-512.png +0 -0
- mediaforge/web/static/icon-72.png +0 -0
- mediaforge/web/static/icon-96.png +0 -0
- mediaforge/web/static/icon.png +0 -0
- mediaforge/web/static/icon.svg +10 -0
- mediaforge/web/static/integrations.css +464 -0
- mediaforge/web/static/integrations.js +1199 -0
- mediaforge/web/static/library.css +821 -0
- mediaforge/web/static/library.js +1823 -0
- mediaforge/web/static/manifest.json +47 -0
- mediaforge/web/static/placeholder.svg +26 -0
- mediaforge/web/static/player.js +830 -0
- mediaforge/web/static/pwa.js +102 -0
- mediaforge/web/static/qrcode.min.js +2297 -0
- mediaforge/web/static/queue.js +785 -0
- mediaforge/web/static/seerr.js +1168 -0
- mediaforge/web/static/selfupdate.css +233 -0
- mediaforge/web/static/selfupdate.js +138 -0
- mediaforge/web/static/settings.js +1826 -0
- mediaforge/web/static/settings_schedule.css +123 -0
- mediaforge/web/static/shell.css +203 -0
- mediaforge/web/static/stats.js +377 -0
- mediaforge/web/static/style.css +7807 -0
- mediaforge/web/static/sw.js +53 -0
- mediaforge/web/static/syncplay.css +286 -0
- mediaforge/web/static/syncplay_page.js +717 -0
- mediaforge/web/static/upscale_queue.js +334 -0
- mediaforge/web/stream_proxy.py +156 -0
- mediaforge/web/syncplay_rooms.py +803 -0
- mediaforge/web/templates/advanced_search.html +191 -0
- mediaforge/web/templates/autosync.html +231 -0
- mediaforge/web/templates/base.html +1125 -0
- mediaforge/web/templates/calendar.html +109 -0
- mediaforge/web/templates/encoding.html +1057 -0
- mediaforge/web/templates/favourites.html +19 -0
- mediaforge/web/templates/history.html +145 -0
- mediaforge/web/templates/index.html +216 -0
- mediaforge/web/templates/integrations.html +758 -0
- mediaforge/web/templates/library.html +81 -0
- mediaforge/web/templates/login.html +50 -0
- mediaforge/web/templates/notifications.html +1470 -0
- mediaforge/web/templates/seerr.html +156 -0
- mediaforge/web/templates/settings.html +966 -0
- mediaforge/web/templates/setup.html +64 -0
- mediaforge/web/templates/setup_locked.html +38 -0
- mediaforge/web/templates/shared_modals.html +203 -0
- mediaforge/web/templates/stats.html +56 -0
- mediaforge/web/templates/syncplay.html +180 -0
- mediaforge/web/transcoder.py +544 -0
- mediaforge/web/translations/de/LC_MESSAGES/messages.mo +0 -0
- mediaforge/web/translations/de/LC_MESSAGES/messages.po +3919 -0
- mediaforge-1.0.0.dist-info/METADATA +196 -0
- mediaforge-1.0.0.dist-info/RECORD +173 -0
- mediaforge-1.0.0.dist-info/WHEEL +5 -0
- mediaforge-1.0.0.dist-info/entry_points.txt +2 -0
- mediaforge-1.0.0.dist-info/licenses/LICENSE +686 -0
- mediaforge-1.0.0.dist-info/top_level.txt +1 -0
mediaforge/.env.example
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# ==============================
|
|
2
|
+
# General Application Settings
|
|
3
|
+
# ==============================
|
|
4
|
+
|
|
5
|
+
# Where downloads are saved (relative from home or absolute path).
|
|
6
|
+
# Example: Downloads
|
|
7
|
+
MEDIAFORGE_DOWNLOAD_PATH=Downloads
|
|
8
|
+
|
|
9
|
+
# Folder used for app data/cache/binaries (absolute path, or relative to home directory).
|
|
10
|
+
# Example: ~/.aniworld or just .aniworld (both resolve to the same place)
|
|
11
|
+
MEDIAFORGE_INSTALL_FOLDER=.aniworld
|
|
12
|
+
|
|
13
|
+
# Debug logging
|
|
14
|
+
# 0 = off, 1 = on
|
|
15
|
+
MEDIAFORGE_DEBUG_MODE=0
|
|
16
|
+
|
|
17
|
+
# Separate downloads into language subfolders (e.g. german-dub/, english-sub/)
|
|
18
|
+
# 0 = off, 1 = on
|
|
19
|
+
MEDIAFORGE_LANG_SEPARATION=0
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# ==============================
|
|
23
|
+
# Anime & Language Preferences
|
|
24
|
+
# ==============================
|
|
25
|
+
|
|
26
|
+
# Disable English Sub downloads entirely
|
|
27
|
+
# 0 = off, 1 = on
|
|
28
|
+
MEDIAFORGE_DISABLE_ENGLISH_SUB=0
|
|
29
|
+
|
|
30
|
+
# Preferred audio/sub language preset.
|
|
31
|
+
# Options: German Dub | English Sub | German Sub | English Dub
|
|
32
|
+
MEDIAFORGE_LANGUAGE="German Dub"
|
|
33
|
+
|
|
34
|
+
# Output file naming template.
|
|
35
|
+
# Common placeholders: {title} {year} {imdbid} {season} {episode} {language}
|
|
36
|
+
# Example: groups by show + year, then season, then uses SxxExx naming
|
|
37
|
+
# (e.g. `Highschool DxD (2012) [imdbid-tt1759761]/Season 1/Highschool DxD S01E01.mkv`).
|
|
38
|
+
MEDIAFORGE_NAMING_TEMPLATE="{title} ({year}) [imdbid-{imdbid}]/Season {season}/{title} S{season}E{episode}.mkv"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# ==============================
|
|
42
|
+
# Provider & Streaming Options
|
|
43
|
+
# ==============================
|
|
44
|
+
|
|
45
|
+
# Streaming provider to use.
|
|
46
|
+
# Look at SUPPORTED_PROVIDERS in config.py for options.
|
|
47
|
+
MEDIAFORGE_PROVIDER=VOE
|
|
48
|
+
|
|
49
|
+
# Pick a random anime instead of the one you pass in.
|
|
50
|
+
# 0 = off, 1 = on
|
|
51
|
+
MEDIAFORGE_RANDOM_ANIME=0
|
|
52
|
+
|
|
53
|
+
# Prefer s.to for interactive search() by default.
|
|
54
|
+
# 1 = s.to, 0 = aniworld.to
|
|
55
|
+
MEDIAFORGE_USE_STO_SEARCH=0
|
|
56
|
+
|
|
57
|
+
# Enable AniSkip (auto skip intro/outro) if skip times are available.
|
|
58
|
+
# 0 = off, 1 = on
|
|
59
|
+
MEDIAFORGE_ANISKIP=0
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
# ==============================
|
|
63
|
+
# Player Integration
|
|
64
|
+
# ==============================
|
|
65
|
+
|
|
66
|
+
# Which player Syncplay should use.
|
|
67
|
+
# 0 = mpv (cross-platform)
|
|
68
|
+
# 1 = IINA (macOS only; requires IINA installed)
|
|
69
|
+
MEDIAFORGE_USE_IINA=1
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# ==============================
|
|
73
|
+
# Syncplay Settings (auto-generated if left empty)
|
|
74
|
+
# ==============================
|
|
75
|
+
|
|
76
|
+
# Syncplay server host:port
|
|
77
|
+
# Default: syncplay.pl:8998
|
|
78
|
+
# Other ports: syncplay.pl:8995 / :8996 / :8997 / :8999
|
|
79
|
+
MEDIAFORGE_SYNCPLAY_HOST=
|
|
80
|
+
|
|
81
|
+
# Room to join.
|
|
82
|
+
# If MEDIAFORGE_SYNCPLAY_ROOM is empty, the app generates it from the episode name:
|
|
83
|
+
# - If MEDIAFORGE_SYNCPLAY_PASSWORD is NOT set:
|
|
84
|
+
# AniWorld-Highschool_DxD_S01E01
|
|
85
|
+
# - If MEDIAFORGE_SYNCPLAY_PASSWORD IS set (example: "beans"), the room becomes a SHA256 hash:
|
|
86
|
+
# plain: AniWorld-Highschool_DxD_S01E01-beans
|
|
87
|
+
# room: AniWorld-53de358cf5b5fe716f78747bad1c874ed23147509bbaf540d02aac31f4f35656
|
|
88
|
+
#
|
|
89
|
+
# Tip: setting MEDIAFORGE_SYNCPLAY_PASSWORD changes the generated room name, so only people with the same
|
|
90
|
+
# password end up in the same room (unless you manually set MEDIAFORGE_SYNCPLAY_ROOM).
|
|
91
|
+
MEDIAFORGE_SYNCPLAY_ROOM=
|
|
92
|
+
|
|
93
|
+
# Your name shown in Syncplay.
|
|
94
|
+
# If empty, it will use your system username.
|
|
95
|
+
# Example: phoenixthrush
|
|
96
|
+
MEDIAFORGE_SYNCPLAY_USERNAME=
|
|
97
|
+
|
|
98
|
+
# Optional. Used only when MEDIAFORGE_SYNCPLAY_ROOM is empty (see above).
|
|
99
|
+
# Setting this WILL change the generated room name.
|
|
100
|
+
MEDIAFORGE_SYNCPLAY_PASSWORD=
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
# ==============================
|
|
104
|
+
# Web UI Authentication
|
|
105
|
+
# ==============================
|
|
106
|
+
|
|
107
|
+
# Set both to auto-create an admin on first run with -wA (skips setup page)
|
|
108
|
+
MEDIAFORGE_WEB_ADMIN_USER=
|
|
109
|
+
MEDIAFORGE_WEB_ADMIN_PASS=
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
# Public base URL when behind a reverse proxy (e.g. https://example.com).
|
|
113
|
+
# Leave empty when not using a reverse proxy.
|
|
114
|
+
MEDIAFORGE_WEB_BASE_URL=
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# ==============================
|
|
118
|
+
# OIDC Single Sign-On (optional)
|
|
119
|
+
# ==============================
|
|
120
|
+
|
|
121
|
+
# Required when using -wS or -wFS flags.
|
|
122
|
+
MEDIAFORGE_OIDC_ISSUER_URL=
|
|
123
|
+
MEDIAFORGE_OIDC_CLIENT_ID=
|
|
124
|
+
MEDIAFORGE_OIDC_CLIENT_SECRET=
|
|
125
|
+
MEDIAFORGE_OIDC_DISPLAY_NAME=SSO
|
|
126
|
+
|
|
127
|
+
# When using -wFS (force SSO), this SSO username is auto-promoted to admin.
|
|
128
|
+
# Using MEDIAFORGE_OIDC_ADMIN_SUBJECT is preferred !!!
|
|
129
|
+
MEDIAFORGE_OIDC_ADMIN_USER=
|
|
130
|
+
|
|
131
|
+
# SSO subject (sub claim) for the admin user - more secure than username matching.
|
|
132
|
+
# If set, this takes precedence over MEDIAFORGE_OIDC_ADMIN_USER for admin promotion.
|
|
133
|
+
# Tip: the subject is logged on every SSO login - check the server logs to find it.
|
|
134
|
+
# In Keycloak: Admin Console -> Users -> click user -> the "ID" field is the sub claim.
|
|
135
|
+
MEDIAFORGE_OIDC_ADMIN_SUBJECT=
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
# ==============================
|
|
139
|
+
# Auto-Sync Settings
|
|
140
|
+
# ==============================
|
|
141
|
+
|
|
142
|
+
# How often to check for new episodes.
|
|
143
|
+
# Options: 0 (disabled) | 1min | 30min | 1h | 2h | 4h | 8h | 12h | 16h | 24h
|
|
144
|
+
MEDIAFORGE_SYNC_SCHEDULE=0
|
|
145
|
+
|
|
146
|
+
# Default language for new sync jobs.
|
|
147
|
+
# Options: German Dub | English Sub | German Sub
|
|
148
|
+
MEDIAFORGE_SYNC_LANGUAGE=German Dub
|
|
149
|
+
|
|
150
|
+
# Default provider for new sync jobs.
|
|
151
|
+
# Options: VOE | Vidmoly | Vidoza
|
|
152
|
+
MEDIAFORGE_SYNC_PROVIDER=VOE
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
# ==============================
|
|
156
|
+
# FFmpeg & Encoding Settings
|
|
157
|
+
# ==============================
|
|
158
|
+
|
|
159
|
+
# Video codec behavior.
|
|
160
|
+
# copy = no re-encode (fastest, keeps original)
|
|
161
|
+
# h264 / h265 / av1 = re-encode using FFmpeg (slower, smaller files depending on settings)
|
|
162
|
+
MEDIAFORGE_VIDEO_CODEC=copy
|
mediaforge/__init__.py
ADDED
mediaforge/__main__.py
ADDED