Skip to content

Add archive extractor plugin for ZIP/RAR workflows - #530

Closed
kasundigital wants to merge 8 commits into
Unmanic:officialfrom
kasundigital:feature/archive-extractor-612
Closed

kasundigital wants to merge 8 commits into
Unmanic:officialfrom
kasundigital:feature/archive-extractor-612

Conversation

@kasundigital

Copy link
Copy Markdown

Summary

Adds an archive_extractor plugin to address Unmanic/unmanic#612.

What it does

  • queues ZIP and RAR archives during library scans
  • supports new-style multipart RAR sets (.part01.rar) and old-style RAR volumes (.rar/.r00/.r01) without queueing every part
  • extracts the largest configured video file from the archive
  • passes the extracted media to the remaining Unmanic worker flow
  • writes the processed media beside the source archive using the extracted media filename
  • preserves source archives by default
  • optionally removes the archive set only after worker processing and postprocessor file movement both succeed
  • reports a clear error when no RAR extractor is available

Dependencies

ZIP uses Python's standard library.

RAR requires one of 7z, 7zz, or unrar to be available inside the Unmanic runtime/container.

Safety

  • ZIP members are flattened into the task cache to avoid archive path traversal.
  • Source archives are not removed on extraction, worker, or destination-copy failure.
  • Multipart secondary volumes are not independently queued.

Current scope

This initial implementation intentionally selects the largest supported video in an archive. Creating multiple independent Unmanic tasks from one archive containing several full-length videos is left for a follow-up.

Refs: Unmanic/unmanic#612

@Josh5

Josh5 commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

When you are ready, make sure you change the PR target to the official branch

@kasundigital
kasundigital force-pushed the feature/archive-extractor-612 branch from 5f2b8bd to 56d2aa6 Compare September 19, 2026 23:51
@kasundigital
kasundigital changed the base branch from examples to official September 19, 2026 23:51
@kasundigital
kasundigital marked this pull request as ready for review September 19, 2026 23:58
@kasundigital

Copy link
Copy Markdown
Author

Thanks! I’ve updated the PR to target the official branch and rebased the plugin accordingly.

I also fixed the plugin structure and compatibility issues, and all GitHub Actions checks are now passing.

It should be ready for review now.

@kasundigital kasundigital closed this by deleting the head repository Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants