Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Misc: Create FreeBSD Port #59

Open
jmkeyes opened this issue Nov 22, 2023 · 2 comments
Open

Misc: Create FreeBSD Port #59

jmkeyes opened this issue Nov 22, 2023 · 2 comments
Labels
bug Something isn't working enhancement New feature or request further investigation Needs further investigation good first issue Good for newcomers help wanted Extra attention is needed

Comments

@jmkeyes
Copy link

jmkeyes commented Nov 22, 2023

I wanted to run this within a FreeBSD jail to reorganize a bunch of media already on a TrueNAS appliance.

Since macOS and *BSD share some heritage this was actually much easier than I thought it would be.

# $FreeBSD$

PORTNAME=	goprox
DISTVERSION=	00.52.00
CATEGORIES=	multimedia

DISTVERSIONPREFIX=	v

MAINTAINER=	joshua.michael.keyes@gmail.com
COMMENT=	Missing GoPro workflow manager for zsh
WWW=		https://github.com/fxstein/GoProX

LICENSE=	MIT

RUN_DEPENDS=	exiftool:graphics/p5-Image-ExifTool \
		jq:textproc/jq \
		zsh:shells/zsh

USES=		shebangfix

USE_GITHUB=	yes
GH_ACCOUNT=	fxstein
GH_PROJECT=	GoProX

SHEBANG_LANG=	zsh
SHEBANG_FILES=	goprox

zsh_OLD_CMD=	"/usr/bin/env zsh" /bin/zsh /usr/bin/zsh
zsh_CMD=	${LOCALBASE}/bin/zsh

NO_BUILD=	yes
DOCS=		README.md LICENSE

do-install:
	${MKDIR} ${STAGEDIR}${DATADIR}
	${INSTALL_SCRIPT} ${WRKSRC}/goprox ${STAGEDIR}${DATADIR}/goprox
	${LN} -fs ${DATADIR}/goprox ${STAGEDIR}${PREFIX}/bin/goprox
	${INSTALL_MAN} ${WRKSRC}/man/goprox.1 ${STAGEDIR}${PREFIX}/man/man1/
	# NOTE: Firmware isn't included to keep the package size low.
	#${MKDIR} ${STAGEDIR}${DATADIR}/firmware
	#(cd ${WRKSRC}/firmware && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}/firmware)
	#${MKDIR} ${STAGEDIR}${DATADIR}/firmware.labs
	#(cd ${WRKSRC}/firmware.labs && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}/firmware.labs)

.include <bsd.port.mk>

I have some remaining questions:

  • The source archive is nearing 1GB: could firmware be downloaded on demand instead?
  • Is this useful enough to submit to the FreeBSD ports tree?
@jmkeyes
Copy link
Author

jmkeyes commented Nov 22, 2023

For my tests so far, I set up a FreeBSD jail with two mount points -- the library (/mnt/library) and an import folder (/mnt/import).

The initial setup step seems to work correctly. I ran goprox --setup --library "/mnt/library/" --source /mnt/import/ and it created a ~/.goprox configuration file like this:

source=/mnt/import/
library="/mnt/library/"
copyright=""
geonamesacct=""
mountoptions=(--archive --import --clean --firmware)

I notice that both the source and library paths have trailing slashes and the library path preserved the double-quotes.


When I ran the import step (goprox --import) it ran without any visible error, but I did have to stop the import process a few times with ^C (SIGINT). Exiting the script this way may have had some unexpected consequences: the media being imported at the time of the ^C appears to have been corrupted somehow (more details below) and subsequent imports did not detect this nor display any errors.


When I ran the processing step (goprox --process) a number of errors appeared:

GoProX started... 
Starting media processing... 
_process_media:28: no matches found: /mnt/library//processed/**/*(.om[1])
First pass: 1/4 - All files but mp4 and 360 
========  [1/3]
Error: No file specified - 
========  [2/3]
Error: No file specified - 
========  [3/3]
Error: No file specified - 
Warning: First pass: exiftool reported one or more errors. Please check output. 
Second pass: 2/4 - Only mp4 files 
Error: File not found - 
Error: File not found - 
Error: File not found - 
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010426.MP4 [1/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010426.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010426.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030437.MP4 [2/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030437.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030437.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030438.MP4 [3/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030438.MP4' --> '/mnt/library//processed/NODATE/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030438.mp4'
Error: Truncated mdat atom - /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030438.MP4
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020438.MP4 [4/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020438.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020438.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020437.MP4 [5/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020437.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020437.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020439.MP4 [6/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020439.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020439.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040438.MP4 [7/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040438.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040438.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010439.MP4 [8/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010439.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010439.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010437.MP4 [9/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010437.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010437.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010438.MP4 [10/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010438.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010438.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020440.MP4 [11/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020440.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020440.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060440.MP4 [12/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060440.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060440.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010441.MP4 [13/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010441.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010441.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030440.MP4 [14/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030440.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030440.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070440.MP4 [15/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070440.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070440.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010440.MP4 [16/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010440.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010440.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050440.MP4 [17/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050440.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050440.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040440.MP4 [18/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040440.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040440.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020409.MP4 [19/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020409.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020409.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030409.MP4 [20/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030409.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030409.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010409.MP4 [21/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010409.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010409.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020434.MP4 [22/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020434.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020434.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020435.MP4 [23/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020435.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020435.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010431.MP4 [24/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010431.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010431.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010433.MP4 [25/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010433.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010433.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030434.MP4 [26/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030434.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030434.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010434.MP4 [27/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010434.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010434.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010435.MP4 [28/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010435.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010435.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040434.MP4 [29/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040434.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040434.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010432.MP4 [30/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010432.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010432.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020431.MP4 [31/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020431.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020431.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010420.MP4 [32/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010420.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010420.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020420.MP4 [33/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020420.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020420.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040415.MP4 [34/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040415.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040415.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050415.MP4 [35/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050415.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050415.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010415.MP4 [36/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010415.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010415.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030415.MP4 [37/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030415.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030415.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060415.MP4 [38/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060415.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060415.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020415.MP4 [39/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020415.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020415.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010428.MP4 [40/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010428.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010428.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010429.MP4 [41/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010429.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010429.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010416.MP4 [42/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010416.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010416.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010417.MP4 [43/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010417.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010417.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010418.MP4 [44/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010418.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010418.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010419.MP4 [45/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010419.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010419.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040411.MP4 [46/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040411.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040411.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010410.MP4 [47/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010410.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010410.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010411.MP4 [48/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010411.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010411.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020410.MP4 [49/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020410.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020410.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030411.MP4 [50/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030411.MP4' --> '/mnt/library//processed/NODATE/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030411.mp4'
Error: Truncated mdat atom - /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030411.MP4
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020411.MP4 [51/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020411.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020411.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010430.MP4 [52/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010430.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010430.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050430.MP4 [53/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050430.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050430.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040430.MP4 [54/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040430.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040430.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX080430.MP4 [55/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX080430.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX080430.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020430.MP4 [56/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020430.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020430.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060430.MP4 [57/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060430.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060430.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030430.MP4 [58/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030430.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030430.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070430.MP4 [59/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070430.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070430.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010412.MP4 [60/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010412.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010412.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010414.MP4 [61/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010414.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010414.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010413.MP4 [62/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010413.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010413.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020412.MP4 [63/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020412.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020412.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020424.MP4 [64/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020424.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020424.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060424.MP4 [65/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060424.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060424.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030424.MP4 [66/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030424.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030424.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070424.MP4 [67/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070424.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070424.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010424.MP4 [68/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010424.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010424.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050424.MP4 [69/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050424.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050424.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040424.MP4 [70/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040424.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040424.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010425.MP4 [71/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010425.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010425.mp4'
======== /mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020425.MP4 [72/72]
'/mnt/library//imported/YYYY/YYYYMMDD/YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020425.MP4' --> '/mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020425.mp4'
Warning: Second pass: exiftool reported one or more errors. Please check output. 
Third pass: 3/4 - Only 360 files 
Error: File not found - 
Error: File not found - 
Error: File not found - 
Warning: Third pass: exiftool reported one or more errors. Please check output. 
Forth pass: 4/4 - Only mp4 & 360 files - timeshift QuickTime to UTC
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010413.mp4 [1/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020412.mp4 [2/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010412.mp4 [3/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010414.mp4 [4/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040430.mp4 [5/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX080430.mp4 [6/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010430.mp4 [7/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050430.mp4 [8/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030430.mp4 [9/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070430.mp4 [10/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020430.mp4 [11/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060430.mp4 [12/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020425.mp4 [13/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010425.mp4 [14/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010424.mp4 [15/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050424.mp4 [16/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040424.mp4 [17/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020424.mp4 [18/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060424.mp4 [19/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030424.mp4 [20/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070424.mp4 [21/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020410.mp4 [22/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020411.mp4 [23/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010410.mp4 [24/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040411.mp4 [25/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010411.mp4 [26/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030409.mp4 [27/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020409.mp4 [28/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010409.mp4 [29/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010426.mp4 [30/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030437.mp4 [31/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020437.mp4 [32/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020439.mp4 [33/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020438.mp4 [34/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040438.mp4 [35/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010438.mp4 [36/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010439.mp4 [37/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010437.mp4 [38/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX070440.mp4 [39/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030440.mp4 [40/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010441.mp4 [41/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060440.mp4 [42/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020440.mp4 [43/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040440.mp4 [44/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050440.mp4 [45/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010440.mp4 [46/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010417.mp4 [47/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010416.mp4 [48/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010418.mp4 [49/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010419.mp4 [50/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010428.mp4 [51/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010429.mp4 [52/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010420.mp4 [53/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020420.mp4 [54/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020415.mp4 [55/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX060415.mp4 [56/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030415.mp4 [57/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010415.mp4 [58/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX050415.mp4 [59/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040415.mp4 [60/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010433.mp4 [61/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010431.mp4 [62/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX030434.mp4 [63/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020435.mp4 [64/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020434.mp4 [65/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX040434.mp4 [66/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX020431.mp4 [67/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010432.mp4 [68/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010435.mp4 [69/70]
======== /mnt/library//processed/MP4/YYYY/YYYYMMDD/P_YYYYMMDDHHMMSS_GoPro_Hero9_XXXX_GX010434.mp4 [70/70]
Finished media processing 
Warning: exiftool reported one or more errors during this goprox run. Please check output. 
GoProX processing finished. 

The Error: Truncated mdat atom - [path] corresponds with the files being imported when I issued a ^C to cancel the import process earlier.

I still have the original media available, so I'll try to import those again and see if the error persists.


Importing fresh copies of the original media fixed the problem; this means that exiting abruptly from the import process will truncate/corrupt the imported media. If someone was to miss the Truncated mdat atom error message, they'd be importing corrupt media into their library.

@fxstein
Copy link
Owner

fxstein commented Nov 30, 2023

Very much appreciate your work and testing!

I have not had a chance to look at the issues you mentioned. If you identify anything that requires a fix or change, please do submit a PR. Would be great to add FreeBSD to the list of supported platforms.

As for the repo size: Yeah I agree that is an issue. For the packages and homebrew builds I therefor remove any outdated firmware. The reason they are included here is because GoPro has really no stable links for them. They move around and disappear from time to time.

The abort corrupted files are most likely due to exiftool being aborted while writing a file. Not sure yet how we could prevent or detect automatically.

@fxstein fxstein added bug Something isn't working enhancement New feature or request help wanted Extra attention is needed good first issue Good for newcomers further investigation Needs further investigation labels Nov 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request further investigation Needs further investigation good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants