fix(manifests): skip filtered dash periods after the main content and keep them over export

A manifest snapshot module now saves and restores DASH/ISM parser state for --remote and export/import, so an import keeps the service's period filter without fetching the manifest.
This commit is contained in:
imSp4rky
2026-11-02 20:41:27 -07:00
parent eeff83b820
commit 842ece3802
13 changed files with 588 additions and 338 deletions
+1 -1
View File
@@ -269,7 +269,7 @@ unshackle logs in to the service before the search. A service that declares a se
## `import`
Reconstruct a download (download → decrypt → mux) from an `--export` JSON file without re-contacting the service. It re-fetches the manifest, injects the stored keys, and then runs the normal `dl` pipeline. The service tag is read from the export file, not passed by you.
Reconstruct a download (download → decrypt → mux) from an `--export` JSON file without re-contacting the service. It uses the DASH or ISM manifest that the export saved, or fetches the manifest again when the export has none. It injects the stored keys and then runs the normal `dl` pipeline. The service tag is read from the export file, not passed by you.
```
unshackle import EXPORT_FILE [DL_ARGS...]
+4 -2
View File
@@ -913,8 +913,10 @@ unshackle dl --skip-dl EXAMPLE 81234567
`--export` writes a `mediaexport` JSON file into the configured exports directory. It holds
the manifest, the DRM init data, the content keys, the KIDs of each track and the title
metadata for each title. `unshackle import` reads it to reconstruct a download later, and gives
each track only the content keys for its KIDs. The importer also reads the
metadata for each title. For a DASH or ISM title, it also holds the manifest as the service
left it, with the ad periods that the service skips. `unshackle import` reads it to reconstruct
a download later, and gives each track only the content keys for its KIDs. The import uses the
saved manifest, so it skips the same periods and does not fetch the manifest again. The importer also reads the
older unshackle `version: 2` files and unidl's own export files.
```shell title="Export track info and keys"