riplex 0.2.7__tar.gz → 0.2.8__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.
Files changed (113) hide show
  1. {riplex-0.2.7/src/riplex.egg-info → riplex-0.2.8}/PKG-INFO +1 -1
  2. {riplex-0.2.7 → riplex-0.2.8/src/riplex.egg-info}/PKG-INFO +1 -1
  3. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/welcome.py +17 -9
  4. {riplex-0.2.7 → riplex-0.2.8}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  5. {riplex-0.2.7 → riplex-0.2.8}/.github/agents/riplex.agent.md +0 -0
  6. {riplex-0.2.7 → riplex-0.2.8}/.github/copilot-instructions.md +0 -0
  7. {riplex-0.2.7 → riplex-0.2.8}/.github/workflows/publish.yml +0 -0
  8. {riplex-0.2.7 → riplex-0.2.8}/.github/workflows/release.yml +0 -0
  9. {riplex-0.2.7 → riplex-0.2.8}/.gitignore +0 -0
  10. {riplex-0.2.7 → riplex-0.2.8}/MONOREPO_PLAN.md +0 -0
  11. {riplex-0.2.7 → riplex-0.2.8}/PLANNED_FEATURES.md +0 -0
  12. {riplex-0.2.7 → riplex-0.2.8}/README.md +0 -0
  13. {riplex-0.2.7 → riplex-0.2.8}/REFACTOR_PLAN.md +0 -0
  14. {riplex-0.2.7 → riplex-0.2.8}/docs/architecture.md +0 -0
  15. {riplex-0.2.7 → riplex-0.2.8}/docs/changelog.md +0 -0
  16. {riplex-0.2.7 → riplex-0.2.8}/docs/getting-started/configuration.md +0 -0
  17. {riplex-0.2.7 → riplex-0.2.8}/docs/getting-started/installation.md +0 -0
  18. {riplex-0.2.7 → riplex-0.2.8}/docs/guide/lookup.md +0 -0
  19. {riplex-0.2.7 → riplex-0.2.8}/docs/guide/orchestrate.md +0 -0
  20. {riplex-0.2.7 → riplex-0.2.8}/docs/guide/organize.md +0 -0
  21. {riplex-0.2.7 → riplex-0.2.8}/docs/guide/workflow.md +0 -0
  22. {riplex-0.2.7 → riplex-0.2.8}/docs/index.md +0 -0
  23. {riplex-0.2.7 → riplex-0.2.8}/docs/naming-rules.md +0 -0
  24. {riplex-0.2.7 → riplex-0.2.8}/docs/reference/cli.md +0 -0
  25. {riplex-0.2.7 → riplex-0.2.8}/issues/cross-disc-dvdcompare-matching.md +0 -0
  26. {riplex-0.2.7 → riplex-0.2.8}/mkdocs.yml +0 -0
  27. {riplex-0.2.7 → riplex-0.2.8}/plex_naming_rules.md +0 -0
  28. {riplex-0.2.7 → riplex-0.2.8}/pyproject.toml +0 -0
  29. {riplex-0.2.7 → riplex-0.2.8}/setup.cfg +0 -0
  30. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/__init__.py +0 -0
  31. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/cache.py +0 -0
  32. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/config.py +0 -0
  33. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/dedup.py +0 -0
  34. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/detect.py +0 -0
  35. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/disc/__init__.py +0 -0
  36. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/disc/analysis.py +0 -0
  37. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/disc/makemkv.py +0 -0
  38. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/disc/provider.py +0 -0
  39. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/formatter.py +0 -0
  40. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/lookup.py +0 -0
  41. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/manifest.py +0 -0
  42. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/matcher.py +0 -0
  43. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/metadata/__init__.py +0 -0
  44. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/metadata/planner.py +0 -0
  45. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/metadata/provider.py +0 -0
  46. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/metadata/sources/__init__.py +0 -0
  47. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/metadata/sources/tmdb.py +0 -0
  48. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/models.py +0 -0
  49. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/normalize.py +0 -0
  50. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/organizer.py +0 -0
  51. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/scanner.py +0 -0
  52. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/snapshot.py +0 -0
  53. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/splitter.py +0 -0
  54. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/tagger.py +0 -0
  55. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/title.py +0 -0
  56. {riplex-0.2.7 → riplex-0.2.8}/src/riplex/ui.py +0 -0
  57. {riplex-0.2.7 → riplex-0.2.8}/src/riplex.egg-info/SOURCES.txt +0 -0
  58. {riplex-0.2.7 → riplex-0.2.8}/src/riplex.egg-info/dependency_links.txt +0 -0
  59. {riplex-0.2.7 → riplex-0.2.8}/src/riplex.egg-info/entry_points.txt +0 -0
  60. {riplex-0.2.7 → riplex-0.2.8}/src/riplex.egg-info/requires.txt +0 -0
  61. {riplex-0.2.7 → riplex-0.2.8}/src/riplex.egg-info/top_level.txt +0 -0
  62. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/__init__.py +0 -0
  63. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/main.py +0 -0
  64. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/__init__.py +0 -0
  65. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/disc_detection.py +0 -0
  66. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/done.py +0 -0
  67. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/folder_picker.py +0 -0
  68. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/metadata.py +0 -0
  69. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/organize_done.py +0 -0
  70. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/organize_preview.py +0 -0
  71. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/progress.py +0 -0
  72. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/release.py +0 -0
  73. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/screens/selection.py +0 -0
  74. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_app/updater.py +0 -0
  75. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/__init__.py +0 -0
  76. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/commands/__init__.py +0 -0
  77. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/commands/lookup.py +0 -0
  78. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/commands/orchestrate.py +0 -0
  79. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/commands/organize.py +0 -0
  80. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/commands/rip.py +0 -0
  81. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/commands/setup.py +0 -0
  82. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/formatting.py +0 -0
  83. {riplex-0.2.7 → riplex-0.2.8}/src/riplex_cli/main.py +0 -0
  84. {riplex-0.2.7 → riplex-0.2.8}/tests/__init__.py +0 -0
  85. {riplex-0.2.7 → riplex-0.2.8}/tests/fixtures/makemkvcon_frozen_planet_ii_d2.txt +0 -0
  86. {riplex-0.2.7 → riplex-0.2.8}/tests/fixtures/makemkvcon_list.txt +0 -0
  87. {riplex-0.2.7 → riplex-0.2.8}/tests/snapshots/Batman Begins.snapshot.json +0 -0
  88. {riplex-0.2.7 → riplex-0.2.8}/tests/snapshots/Blade Runner (Blu-ray 4k).snapshot.json +0 -0
  89. {riplex-0.2.7 → riplex-0.2.8}/tests/snapshots/Blade Runner The Final Cut.snapshot.json +0 -0
  90. {riplex-0.2.7 → riplex-0.2.8}/tests/snapshots/Seven Worlds One Planet.snapshot.json +0 -0
  91. {riplex-0.2.7 → riplex-0.2.8}/tests/snapshots/The Dark Knight Rises.snapshot.json +0 -0
  92. {riplex-0.2.7 → riplex-0.2.8}/tests/snapshots/The Dark Knight.snapshot.json +0 -0
  93. {riplex-0.2.7 → riplex-0.2.8}/tests/snapshots/Waterworld.snapshot.json +0 -0
  94. {riplex-0.2.7 → riplex-0.2.8}/tests/test_cache.py +0 -0
  95. {riplex-0.2.7 → riplex-0.2.8}/tests/test_cli_utils.py +0 -0
  96. {riplex-0.2.7 → riplex-0.2.8}/tests/test_config.py +0 -0
  97. {riplex-0.2.7 → riplex-0.2.8}/tests/test_dedup.py +0 -0
  98. {riplex-0.2.7 → riplex-0.2.8}/tests/test_detect.py +0 -0
  99. {riplex-0.2.7 → riplex-0.2.8}/tests/test_disc_analysis.py +0 -0
  100. {riplex-0.2.7 → riplex-0.2.8}/tests/test_disc_provider.py +0 -0
  101. {riplex-0.2.7 → riplex-0.2.8}/tests/test_formatter.py +0 -0
  102. {riplex-0.2.7 → riplex-0.2.8}/tests/test_makemkv.py +0 -0
  103. {riplex-0.2.7 → riplex-0.2.8}/tests/test_matcher.py +0 -0
  104. {riplex-0.2.7 → riplex-0.2.8}/tests/test_normalize.py +0 -0
  105. {riplex-0.2.7 → riplex-0.2.8}/tests/test_organizer.py +0 -0
  106. {riplex-0.2.7 → riplex-0.2.8}/tests/test_planner.py +0 -0
  107. {riplex-0.2.7 → riplex-0.2.8}/tests/test_rip_guide.py +0 -0
  108. {riplex-0.2.7 → riplex-0.2.8}/tests/test_scanner.py +0 -0
  109. {riplex-0.2.7 → riplex-0.2.8}/tests/test_snapshot.py +0 -0
  110. {riplex-0.2.7 → riplex-0.2.8}/tests/test_splitter.py +0 -0
  111. {riplex-0.2.7 → riplex-0.2.8}/tests/test_tagger.py +0 -0
  112. {riplex-0.2.7 → riplex-0.2.8}/tests/test_ui.py +0 -0
  113. {riplex-0.2.7 → riplex-0.2.8}/tests/test_updater.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: riplex
3
- Version: 0.2.7
3
+ Version: 0.2.8
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.7
3
+ Version: 0.2.8
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,14 +312,22 @@ class WelcomeScreen:
312
312
 
313
313
  try:
314
314
  if system == "Windows":
315
- for pkg in to_install:
316
- self.app.page.run_task(lambda p=pkg: _update_status(f"Installing {p}..."))
317
- subprocess.run(
318
- ["winget", "install", "--accept-source-agreements",
319
- "--accept-package-agreements", pkg],
320
- check=True,
321
- creationflags=subprocess.CREATE_NO_WINDOW if sys.platform == "win32" else 0,
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
332
  self.app.page.run_task(lambda: _update_status("Installing via brew..."))
325
333
  subprocess.run(["brew", "install"] + to_install, check=True)
@@ -327,7 +335,7 @@ class WelcomeScreen:
327
335
  self.app.page.run_task(
328
336
  lambda: _update_status("Done! Restart the app for changes to take effect.")
329
337
  )
330
- except (subprocess.CalledProcessError, FileNotFoundError) as exc:
338
+ except (subprocess.CalledProcessError, FileNotFoundError, OSError) as exc:
331
339
  self.app.page.run_task(
332
340
  lambda: _update_status(f"Install failed: {exc}. Try the manual links above.")
333
341
  )
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