Skip to content

Commit

Permalink
Merge pull request #320 from kieranjol/multi-reeler
Browse files Browse the repository at this point in the history
seq2ffv1/rawcooked - Multi reel image sequence support
  • Loading branch information
kieranjol authored Dec 25, 2018
2 parents 62b4cca + e9942fc commit cce7d46
Show file tree
Hide file tree
Showing 6 changed files with 232 additions and 90 deletions.
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
include 26_XYZ-22_Rec709.cube
include film_scan_aip_documentation.txt
45 changes: 45 additions & 0 deletions film_scan_aip_documentation.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
v1.1 Image Sequence AIP
This textfile - Generic description of the features of the Archival Information Package.
Changelog: v1.1 - temporary manifests removed from logs_directory.

parent_directory - either OE (oe##### - Object_Entry Spectrum Collections Management( Identifier or Accession Number (aaa####)
├── uuid_directory - this directory contains the AIP. The identifier is for the entire representation/package.
│   ├── logs - logs that are generated via IFIscripts. This can include process logs for FFmpeg/rawcooked and other tools.
│   │   └── uuid_sip_log.log - the most important log - this is a rolling log for all processes that IFIscripts will execute.
│   ├── metadata - for AV objects - mediainfo and mediatrace XML files. For non-AV objects, Siegfried/PRONOM and EXIFTOOL JSON reports. Once the package is accessioned, there will be a Digital Forensics XML minus the hashes. This will also contain PBCore/Technical metadata CSV and IFI Filmographic CSV in the accessioned package.
│   │   └── supplemental - For normalised objects, checksum manifests, mediainfo, mediatrace and Digital Forensics XML regarding the source object.
│   └── objects - the actual focus of preservation.
└── uuid_directory_manifest.md5 - MD5 manifest for entire package.
└── uuid_directory_manifest-sha512.txt - This will only be generated at the accessioning phase. SHA512 manifest for the entire package.

Example tree structure and explanation for a film scan normalised to FFV1/Matroska via seq2ffv1.py.
Additional files appear when the accession/batchaccession process runs.

oe0001 | parent_directory
├── da990f5e-9846-4a8c-9792-3ee677d50591 |uuid_directory
│   ├── logs | directory for logs generated via IFIscripts
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel3.mkv_rawcooked.log | rawcooked_log via ffmpeg
│   │   └── da990f5e-9846-4a8c-9792-3ee677d50591_sip_log.log | central log for all IFIscripts processes
│   ├── metadata | directory for metadata
│ │ ├── aaa0001_pbcore.csv | ONLY APPEARS WITH ACCESSION.py/BATCHACCESSION.py - CSV containing metadata ready for ingest into IFI technical database. Loosely based on PBCore, with many custom IFI legacy fields.
│   │   ├── AF12345_filmographic.csv | ONLY APPEARS WITH ACCESSION.py/BATCHACCESSION.py - CSV containing descriptive metadata ready for ingest into IFI Filmographic/descriptive database. Loosely based on the original FIAF cataloguing guidelines.
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_dfxml.xml | ONLY APPEARS WITH ACCESSION.py/BATCHACCESSION.py - file system metadata in Digital Forensics XML format for all files within the package.
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel1.mkv_mediainfo.xml | technical metadata in XML format via mediainfo
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel1.mkv_mediatrace.xml | granular technical metadata in XML format via mediainfo
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel2.mkv_mediainfo.xml | technical metadata in XML format via mediainfo
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel2.mkv_mediatrace.xml granular technical metadata in XML format via mediainfo
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel3.mkv_mediainfo.xml | technical metadata in XML format via mediainfo
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel3.mkv_mediatrace.xml | granular technical metadata in XML format via mediainfo
│   │   └── supplemental | directory for metadata for the source object, prior to normalisation
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_source_dfxml.xml | file system metadata in Digital Forensics XML format for the source DPX sequence.
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_source_mediainfo.xml | technical metadata in XML format for the source DPX sequence.
│   │   ├── da990f5e-9846-4a8c-9792-3ee677d50591_source_mediatrace.xml | granulartechnical metadata in XML format for the source DPX sequence.
│   │   └── multi_reel_manifest-md5.txt | md5 checksum manifest for the source DPX sequence
│   └── objects | directory for the preservation
│   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel1.mkv | FFV1/Matroska normalisation of image sequence.
│   ├── da990f5e-9846-4a8c-9792-3ee677d50591_reel2.mkv | FFV1/Matroska normalisation of image sequence.
│   └── da990f5e-9846-4a8c-9792-3ee677d50591_reel3.mkv | FFV1/Matroska normalisation of image sequence.
├── da990f5e-9846-4a8c-9792-3ee677d50591_manifest.md5 | MD5 checksum manifest for the whole package.
└── da990f5e-9846-4a8c-9792-3ee677d50591_manifest-sha512.txt | ONLY APPEARS WITH ACCESSION.py/BATCHACCESSION.py SHA512 checksum manifest for the whole package.


12 changes: 12 additions & 0 deletions ififuncs.py
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,18 @@ def get_image_sequence_files(directory):
return 'none'
return images

def check_multi_reel(directory):
# This function accepts a directory as input. It checks if there are
# subdirectories that contain image sequences.
image_sequences = []
for dirs in os.listdir(directory):
full_path = (os.path.join(directory, dirs))
if os.path.isdir(full_path):
if get_image_sequence_files(full_path) is not 'none':
image_sequences.append(full_path)
return sorted (image_sequences)


def get_ffmpeg_friendly_name(images):
'''
Parses image sequence filenames so that they are easily passed to ffmpeg.
Expand Down
Loading

0 comments on commit cce7d46

Please sign in to comment.