.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "ANALYZE-PV-STRUCTURE.1 1" .TH ANALYZE-PV-STRUCTURE.1 1 "2021-01-26" "rapid-photo-downloader" "" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" analyze\-pv\-structure \- Analyzes the location of metadata in a variety of RAW, jpeg and video files .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBanalyze-pv-structure\fR [options] source [outfile] .PP Positional Options: source outfile .PP Options: \-h, \-\-help \-\-clear, \-c \-\-keep\-names, \-k \-\-no\-dng, \-d \-\-video \-\-only\-video \-\-include\-jpeg, \-j \-\-only\-jpeg, \-J \-\-show\-errors, \-e \-\-load, \-l \-\-verbose, \-v .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBAnalyze \s-1PV\s0 Structure\fR analyzes photos and videos to help determine how much of a file needs to be read to extract its metadata, embedded thumbnail or render a thumbnail. It is associated with Rapid Photo Downloader. .PP It uses exiv2 to extract photo metadata,and ExifTool to extract video metadata. .PP To work, this program requires that the scanned photos and videos not be in the Linux kernel's disk cache. To ensure this, the program provides option, specified by the command line argument '\-\-clear', to instruct the kernel to sync and then drop clean caches, as well as reclaimable slab objects like dentries and inodes. This is a non-destructive operation and will not free any dirty objects. See https://www.kernel.org/doc/Documentation/sysctl/vm.txt .PP Specify an outfile if you want to share the analysis of your files with others. .SH "REQUIREMENTS" .IX Header "REQUIREMENTS" To run this program, you need to install vmtouch. Get it at http://hoytech.com/vmtouch/ .PP To see an optional but helpful progress bar, install pyprind: https://github.com/rasbt/pyprind .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-h, \-\-help\fR" 4 .IX Item "-h, --help" Show help message and exit. .IP "\fBsource\fR" 4 .IX Item "source" Directory in which to recursively scan for photos and videos, or a previously saved outfile. .IP "\fBoutfile\fR" 4 .IX Item "outfile" Optional file in which to save the analysis. .IP "\fB\-\-clear, \-c\fR" 4 .IX Item "--clear, -c" Clear the sync and drop clean caches (see note above). The script will prompt for super user permission to execute this. .IP "\fB\-v, \-\-verbose\fR" 4 .IX Item "-v, --verbose" Displays program information on the command line as the program runs. .IP "\fB\-l, \-\-load\fR" 4 .IX Item "-l, --load" Don't scan. Instead use previously generated outfile as input. .IP "\fB\-k, \-\-keep\-names\fR" 4 .IX Item "-k, --keep-names" If saving the analysis to file, don't first remove the file names and paths from the analysis. Don't specify this option if you want to keep this information private when sharing the analysis with others. .IP "\fB\-d, \-\-no\-dng\fR" 4 .IX Item "-d, --no-dng" Don't scan \s-1DNG\s0 files. .IP "\fB\-\-video\fR" 4 .IX Item "--video" Scan videos. .IP "\fB\-\-only\-video\fR" 4 .IX Item "--only-video" Scan only videos, ignoring photos. .IP "\fB\-j, \-\-include\-jpeg\fR" 4 .IX Item "-j, --include-jpeg" Scan jpeg images. .IP "\fB\-J, \-\-only\-jpeg\fR" 4 .IX Item "-J, --only-jpeg" Scan only jpeg images. .IP "\fB\-e, \-\-show\-errors\fR" 4 .IX Item "-e, --show-errors" Don't show progress bar while scanning, and instead show all errors output by exiv2 (useful if exiv2 crashes, which takes down this script too). .SH "EXAMPLES" .IX Header "EXAMPLES" sudo analyze-pv-structure \-c /home/user/Pictures/ pv_analysis .Sp .RS 4 Analyze photos found in the user's Pictures folder, clear the system caches prior to analysis, and save the analysis in the file pv_analysis without any filename or path information. .RE .PP analyze-pv-structure \-v pv_analysis .Sp .RS 4 Output verbose analysis of the previously saved outfile pv_analysis. .RE .PP analyze-pv-structure \-\-video /home/user/Videos/ .Sp .RS 4 Analyze videos (and any photos) found in the user's Videos folder. .RE .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBrapid\-photo\-downloader\fR\|(1) .SH "AUTHORS" .IX Header "AUTHORS" \&\fBAnalyze \s-1PV\s0 Structure\fR was written by Damon Lynch . .PP This manual page was written by Damon Lynch. .SH "COPYRIGHT" .IX Header "COPYRIGHT" This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. .PP On Debian GNU/Linux systems, the complete text of the \s-1GNU\s0 General Public License can be found in `/usr/share/common\-licenses/GPL'.