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.
Files changed (173) hide show
  1. mediaforge/.env.example +162 -0
  2. mediaforge/__init__.py +5 -0
  3. mediaforge/__main__.py +9 -0
  4. mediaforge/anime4k/__init__.py +3 -0
  5. mediaforge/anime4k/anime4k.py +754 -0
  6. mediaforge/anime4k/shader/Anime4K_AutoDownscalePre_x2.glsl +36 -0
  7. mediaforge/anime4k/shader/Anime4K_AutoDownscalePre_x4.glsl +36 -0
  8. mediaforge/anime4k/shader/Anime4K_Clamp_Highlights.glsl +90 -0
  9. mediaforge/anime4k/shader/Anime4K_Darken_Fast.glsl +216 -0
  10. mediaforge/anime4k/shader/Anime4K_Darken_HQ.glsl +198 -0
  11. mediaforge/anime4k/shader/Anime4K_Darken_VeryFast.glsl +218 -0
  12. mediaforge/anime4k/shader/Anime4K_Deblur_DoG.glsl +153 -0
  13. mediaforge/anime4k/shader/Anime4K_Deblur_Original.glsl +287 -0
  14. mediaforge/anime4k/shader/Anime4K_Denoise_Bilateral_Mean.glsl +67 -0
  15. mediaforge/anime4k/shader/Anime4K_Denoise_Bilateral_Median.glsl +120 -0
  16. mediaforge/anime4k/shader/Anime4K_Denoise_Bilateral_Mode.glsl +103 -0
  17. mediaforge/anime4k/shader/Anime4K_Restore_CNN_L.glsl +429 -0
  18. mediaforge/anime4k/shader/Anime4K_Restore_CNN_M.glsl +275 -0
  19. mediaforge/anime4k/shader/Anime4K_Restore_CNN_S.glsl +137 -0
  20. mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_L.glsl +429 -0
  21. mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_M.glsl +275 -0
  22. mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_S.glsl +137 -0
  23. mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_UL.glsl +1704 -0
  24. mediaforge/anime4k/shader/Anime4K_Restore_CNN_Soft_VL.glsl +873 -0
  25. mediaforge/anime4k/shader/Anime4K_Restore_CNN_UL.glsl +1704 -0
  26. mediaforge/anime4k/shader/Anime4K_Restore_CNN_VL.glsl +873 -0
  27. mediaforge/anime4k/shader/Anime4K_Thin_Fast.glsl +234 -0
  28. mediaforge/anime4k/shader/Anime4K_Thin_HQ.glsl +222 -0
  29. mediaforge/anime4k/shader/Anime4K_Thin_VeryFast.glsl +236 -0
  30. mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_L.glsl +461 -0
  31. mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_M.glsl +300 -0
  32. mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_S.glsl +158 -0
  33. mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_UL.glsl +1702 -0
  34. mediaforge/anime4k/shader/Anime4K_Upscale_CNN_x2_VL.glsl +969 -0
  35. mediaforge/anime4k/shader/Anime4K_Upscale_DTD_x2.glsl +613 -0
  36. mediaforge/anime4k/shader/Anime4K_Upscale_Deblur_DoG_x2.glsl +158 -0
  37. mediaforge/anime4k/shader/Anime4K_Upscale_Deblur_Original_x2.glsl +277 -0
  38. mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_L.glsl +461 -0
  39. mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_M.glsl +300 -0
  40. mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_S.glsl +158 -0
  41. mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_UL.glsl +1702 -0
  42. mediaforge/anime4k/shader/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl +969 -0
  43. mediaforge/anime4k/shader/Anime4K_Upscale_DoG_x2.glsl +143 -0
  44. mediaforge/anime4k/shader/Anime4K_Upscale_Original_x2.glsl +277 -0
  45. mediaforge/arguments.py +62 -0
  46. mediaforge/autodeps.py +368 -0
  47. mediaforge/bin/windows/mpv-register.bat +12 -0
  48. mediaforge/bin/windows/mpv-unregister.bat +12 -0
  49. mediaforge/bin/windows/mpv.com +0 -0
  50. mediaforge/bin/windows/updater.bat +24 -0
  51. mediaforge/common/__init__.py +3 -0
  52. mediaforge/common/common.py +91 -0
  53. mediaforge/config.py +526 -0
  54. mediaforge/entry.py +76 -0
  55. mediaforge/env.py +82 -0
  56. mediaforge/extractors/__init__.py +24 -0
  57. mediaforge/extractors/provider/doodstream.py +144 -0
  58. mediaforge/extractors/provider/filemoon.py +314 -0
  59. mediaforge/extractors/provider/loadx.py +46 -0
  60. mediaforge/extractors/provider/luluvdo.py +46 -0
  61. mediaforge/extractors/provider/streamtape.py +46 -0
  62. mediaforge/extractors/provider/veev.py +407 -0
  63. mediaforge/extractors/provider/vidara.py +82 -0
  64. mediaforge/extractors/provider/vidmoly.py +106 -0
  65. mediaforge/extractors/provider/vidoza.py +82 -0
  66. mediaforge/extractors/provider/voe.py +262 -0
  67. mediaforge/legacy_import.py +137 -0
  68. mediaforge/logger.py +117 -0
  69. mediaforge/models/__init__.py +15 -0
  70. mediaforge/models/aniworld_to/__init__.py +9 -0
  71. mediaforge/models/aniworld_to/episode.py +722 -0
  72. mediaforge/models/aniworld_to/season.py +338 -0
  73. mediaforge/models/aniworld_to/series.py +732 -0
  74. mediaforge/models/common/__init__.py +17 -0
  75. mediaforge/models/common/common.py +1456 -0
  76. mediaforge/models/filmpalast_to/episode.py +534 -0
  77. mediaforge/models/s_to/__init__.py +9 -0
  78. mediaforge/models/s_to/episode.py +591 -0
  79. mediaforge/models/s_to/season.py +170 -0
  80. mediaforge/models/s_to/series.py +603 -0
  81. mediaforge/playwright/__init__.py +3 -0
  82. mediaforge/playwright/captcha.py +1307 -0
  83. mediaforge/playwright/test.py +12 -0
  84. mediaforge/providers.py +107 -0
  85. mediaforge/search.py +615 -0
  86. mediaforge/vendor/__init__.py +5 -0
  87. mediaforge/vendor/crunchyroll_api.py +1983 -0
  88. mediaforge/web/__init__.py +3 -0
  89. mediaforge/web/app.py +11223 -0
  90. mediaforge/web/auth.py +473 -0
  91. mediaforge/web/autosync_filter.py +147 -0
  92. mediaforge/web/console_capture.py +156 -0
  93. mediaforge/web/crunchyroll_service.py +612 -0
  94. mediaforge/web/db.py +3508 -0
  95. mediaforge/web/library_watcher.py +189 -0
  96. mediaforge/web/notifications.py +718 -0
  97. mediaforge/web/selfupdate.py +503 -0
  98. mediaforge/web/static/advanced_search.css +732 -0
  99. mediaforge/web/static/app.js +3578 -0
  100. mediaforge/web/static/autosync.css +255 -0
  101. mediaforge/web/static/autosync.js +954 -0
  102. mediaforge/web/static/autosync_filter.css +292 -0
  103. mediaforge/web/static/autosync_filter.js +582 -0
  104. mediaforge/web/static/calendar.css +751 -0
  105. mediaforge/web/static/calendar.js +584 -0
  106. mediaforge/web/static/favourites.js +69 -0
  107. mediaforge/web/static/flags/english-germanSub.svg +244 -0
  108. mediaforge/web/static/flags/english.svg +2 -0
  109. mediaforge/web/static/flags/german.svg +479 -0
  110. mediaforge/web/static/flags/japanese-englishSub.svg +478 -0
  111. mediaforge/web/static/flags/japanese-germanSub.svg +479 -0
  112. mediaforge/web/static/history.css +420 -0
  113. mediaforge/web/static/history.js +451 -0
  114. mediaforge/web/static/icon-144.png +0 -0
  115. mediaforge/web/static/icon-192.png +0 -0
  116. mediaforge/web/static/icon-48.png +0 -0
  117. mediaforge/web/static/icon-512.png +0 -0
  118. mediaforge/web/static/icon-72.png +0 -0
  119. mediaforge/web/static/icon-96.png +0 -0
  120. mediaforge/web/static/icon.png +0 -0
  121. mediaforge/web/static/icon.svg +10 -0
  122. mediaforge/web/static/integrations.css +464 -0
  123. mediaforge/web/static/integrations.js +1199 -0
  124. mediaforge/web/static/library.css +821 -0
  125. mediaforge/web/static/library.js +1823 -0
  126. mediaforge/web/static/manifest.json +47 -0
  127. mediaforge/web/static/placeholder.svg +26 -0
  128. mediaforge/web/static/player.js +830 -0
  129. mediaforge/web/static/pwa.js +102 -0
  130. mediaforge/web/static/qrcode.min.js +2297 -0
  131. mediaforge/web/static/queue.js +785 -0
  132. mediaforge/web/static/seerr.js +1168 -0
  133. mediaforge/web/static/selfupdate.css +233 -0
  134. mediaforge/web/static/selfupdate.js +138 -0
  135. mediaforge/web/static/settings.js +1826 -0
  136. mediaforge/web/static/settings_schedule.css +123 -0
  137. mediaforge/web/static/shell.css +203 -0
  138. mediaforge/web/static/stats.js +377 -0
  139. mediaforge/web/static/style.css +7807 -0
  140. mediaforge/web/static/sw.js +53 -0
  141. mediaforge/web/static/syncplay.css +286 -0
  142. mediaforge/web/static/syncplay_page.js +717 -0
  143. mediaforge/web/static/upscale_queue.js +334 -0
  144. mediaforge/web/stream_proxy.py +156 -0
  145. mediaforge/web/syncplay_rooms.py +803 -0
  146. mediaforge/web/templates/advanced_search.html +191 -0
  147. mediaforge/web/templates/autosync.html +231 -0
  148. mediaforge/web/templates/base.html +1125 -0
  149. mediaforge/web/templates/calendar.html +109 -0
  150. mediaforge/web/templates/encoding.html +1057 -0
  151. mediaforge/web/templates/favourites.html +19 -0
  152. mediaforge/web/templates/history.html +145 -0
  153. mediaforge/web/templates/index.html +216 -0
  154. mediaforge/web/templates/integrations.html +758 -0
  155. mediaforge/web/templates/library.html +81 -0
  156. mediaforge/web/templates/login.html +50 -0
  157. mediaforge/web/templates/notifications.html +1470 -0
  158. mediaforge/web/templates/seerr.html +156 -0
  159. mediaforge/web/templates/settings.html +966 -0
  160. mediaforge/web/templates/setup.html +64 -0
  161. mediaforge/web/templates/setup_locked.html +38 -0
  162. mediaforge/web/templates/shared_modals.html +203 -0
  163. mediaforge/web/templates/stats.html +56 -0
  164. mediaforge/web/templates/syncplay.html +180 -0
  165. mediaforge/web/transcoder.py +544 -0
  166. mediaforge/web/translations/de/LC_MESSAGES/messages.mo +0 -0
  167. mediaforge/web/translations/de/LC_MESSAGES/messages.po +3919 -0
  168. mediaforge-1.0.0.dist-info/METADATA +196 -0
  169. mediaforge-1.0.0.dist-info/RECORD +173 -0
  170. mediaforge-1.0.0.dist-info/WHEEL +5 -0
  171. mediaforge-1.0.0.dist-info/entry_points.txt +2 -0
  172. mediaforge-1.0.0.dist-info/licenses/LICENSE +686 -0
  173. mediaforge-1.0.0.dist-info/top_level.txt +1 -0
@@ -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
@@ -0,0 +1,5 @@
1
+ """MediaForge package."""
2
+ # Honour legacy ANIWORLD_* environment variables as a fallback for the
3
+ # renamed MEDIAFORGE_* variables, as early as possible on import.
4
+ from .env import mirror_legacy_env as _mirror_legacy_env
5
+ _mirror_legacy_env()
mediaforge/__main__.py ADDED
@@ -0,0 +1,9 @@
1
+ # ========================
2
+ # Python entrypoint
3
+ # ========================
4
+
5
+ import sys
6
+
7
+ from .entry import mediaforge
8
+
9
+ sys.exit(mediaforge())
@@ -0,0 +1,3 @@
1
+ from .anime4k import anime4k
2
+
3
+ __all__ = ["anime4k"]