riplex 0.2.7__tar.gz → 0.2.9__tar.gz
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.
- {riplex-0.2.7/src/riplex.egg-info → riplex-0.2.9}/PKG-INFO +1 -1
- {riplex-0.2.7 → riplex-0.2.9/src/riplex.egg-info}/PKG-INFO +1 -1
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/welcome.py +34 -11
- {riplex-0.2.7 → riplex-0.2.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/.github/agents/riplex.agent.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/.github/copilot-instructions.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/.github/workflows/publish.yml +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/.github/workflows/release.yml +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/.gitignore +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/MONOREPO_PLAN.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/PLANNED_FEATURES.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/README.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/REFACTOR_PLAN.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/architecture.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/changelog.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/getting-started/configuration.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/getting-started/installation.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/guide/lookup.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/guide/orchestrate.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/guide/organize.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/guide/workflow.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/index.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/naming-rules.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/docs/reference/cli.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/issues/cross-disc-dvdcompare-matching.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/mkdocs.yml +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/plex_naming_rules.md +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/pyproject.toml +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/setup.cfg +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/cache.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/config.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/dedup.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/detect.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/disc/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/disc/analysis.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/disc/makemkv.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/disc/provider.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/formatter.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/lookup.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/manifest.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/matcher.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/metadata/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/metadata/planner.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/metadata/provider.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/metadata/sources/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/metadata/sources/tmdb.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/models.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/normalize.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/organizer.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/scanner.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/snapshot.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/splitter.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/tagger.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/title.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex/ui.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex.egg-info/SOURCES.txt +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex.egg-info/dependency_links.txt +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex.egg-info/entry_points.txt +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex.egg-info/requires.txt +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex.egg-info/top_level.txt +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/main.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/disc_detection.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/done.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/folder_picker.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/metadata.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/organize_done.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/organize_preview.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/progress.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/release.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/screens/selection.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_app/updater.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/commands/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/commands/lookup.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/commands/orchestrate.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/commands/organize.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/commands/rip.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/commands/setup.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/formatting.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/src/riplex_cli/main.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/__init__.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/fixtures/makemkvcon_frozen_planet_ii_d2.txt +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/fixtures/makemkvcon_list.txt +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/snapshots/Batman Begins.snapshot.json +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/snapshots/Blade Runner (Blu-ray 4k).snapshot.json +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/snapshots/Blade Runner The Final Cut.snapshot.json +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/snapshots/Seven Worlds One Planet.snapshot.json +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/snapshots/The Dark Knight Rises.snapshot.json +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/snapshots/The Dark Knight.snapshot.json +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/snapshots/Waterworld.snapshot.json +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_cache.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_cli_utils.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_config.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_dedup.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_detect.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_disc_analysis.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_disc_provider.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_formatter.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_makemkv.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_matcher.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_normalize.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_organizer.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_planner.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_rip_guide.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_scanner.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_snapshot.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_splitter.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_tagger.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_ui.py +0 -0
- {riplex-0.2.7 → riplex-0.2.9}/tests/test_updater.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: riplex
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.9
|
|
4
4
|
Summary: Automates the tedious manual work around MakeMKV: figuring out what to rip, which MKV files are actually what, and organizing everything into Plex-compatible folder structures.
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: riplex
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.9
|
|
4
4
|
Summary: Automates the tedious manual work around MakeMKV: figuring out what to rip, which MKV files are actually what, and organizing everything into Plex-compatible folder structures.
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -312,22 +312,45 @@ class WelcomeScreen:
|
|
|
312
312
|
|
|
313
313
|
try:
|
|
314
314
|
if system == "Windows":
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
315
|
+
# Build a single winget command string to run elevated
|
|
316
|
+
cmds = " && ".join(
|
|
317
|
+
f'winget install --accept-source-agreements --accept-package-agreements {pkg}'
|
|
318
|
+
for pkg in to_install
|
|
319
|
+
)
|
|
320
|
+
self.app.page.run_task(
|
|
321
|
+
lambda: _update_status(f"Installing {', '.join(to_install)}... (accept the admin prompt)")
|
|
322
|
+
)
|
|
323
|
+
# Run elevated via powershell Start-Process
|
|
324
|
+
result = subprocess.run(
|
|
325
|
+
["powershell", "-Command",
|
|
326
|
+
f'Start-Process cmd -ArgumentList \'/c {cmds} & pause\' -Verb RunAs -Wait'],
|
|
327
|
+
creationflags=subprocess.CREATE_NO_WINDOW,
|
|
328
|
+
)
|
|
329
|
+
if result.returncode != 0:
|
|
330
|
+
raise subprocess.CalledProcessError(result.returncode, "winget")
|
|
323
331
|
elif system == "Darwin":
|
|
324
|
-
|
|
325
|
-
|
|
332
|
+
if shutil.which("brew"):
|
|
333
|
+
self.app.page.run_task(lambda: _update_status("Installing via brew..."))
|
|
334
|
+
subprocess.run(["brew", "install"] + to_install, check=True)
|
|
335
|
+
else:
|
|
336
|
+
# No Homebrew — open download pages in browser
|
|
337
|
+
download_urls = {
|
|
338
|
+
"makemkv": "https://www.makemkv.com/download/",
|
|
339
|
+
"ffmpeg": "https://ffmpeg.org/download.html",
|
|
340
|
+
"mkvtoolnix": "https://mkvtoolnix.download/downloads.html",
|
|
341
|
+
}
|
|
342
|
+
for pkg in to_install:
|
|
343
|
+
if pkg in download_urls:
|
|
344
|
+
webbrowser.open(download_urls[pkg])
|
|
345
|
+
self.app.page.run_task(
|
|
346
|
+
lambda: _update_status("Opened download pages in your browser. Install the tools, then restart the app.")
|
|
347
|
+
)
|
|
348
|
+
return
|
|
326
349
|
|
|
327
350
|
self.app.page.run_task(
|
|
328
351
|
lambda: _update_status("Done! Restart the app for changes to take effect.")
|
|
329
352
|
)
|
|
330
|
-
except (subprocess.CalledProcessError, FileNotFoundError) as exc:
|
|
353
|
+
except (subprocess.CalledProcessError, FileNotFoundError, OSError) as exc:
|
|
331
354
|
self.app.page.run_task(
|
|
332
355
|
lambda: _update_status(f"Install failed: {exc}. Try the manual links above.")
|
|
333
356
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|