up kartaview apply exif data from csv

This commit is contained in:
Tykayn 2023-10-12 12:01:20 +02:00 committed by tykayn
parent d4eb822bb5
commit 5841f0d458
119 changed files with 108 additions and 15489545 deletions

View File

@ -9,7 +9,7 @@ Lancer le script
```
cd /home/poule/encrypted/stockage-syncable/www/development/html/scripts/hugin-gopro-fusion
ts-node main.ts --goproMin=12172 --goproMax=123500
ts-node main.ts --goproMin=12154 --goproMax=56267
ts-node main.ts --goproMin=130489 --goproMax=56267
```
Ceci va générer un paquet de fichiers .pto dans le dossier output_pto

View File

@ -10,6 +10,7 @@ import minimist from 'minimist';
// @ts-ignore
const moment = require("moment");
let mini_arguments: any = minimist(process.argv.slice(2))
// configs
/**
* ces trois paramètres permettent de traiter par lots des assemblages sans avoir à scanner le dossier
@ -41,7 +42,6 @@ let subFolder = ""
let dossier_assemblages_output = `${gopro_folder}/hugin_assemblages_script_output`;
let mini_arguments: any = minimist(process.argv.slice(2))
console.log('mini_arguments', mini_arguments)

View File

@ -13,7 +13,9 @@ ts-node main.ts --folder=/folder/path
```
Cela va convertir en trace GPX les fichiers de métadonnées kartaview
retrouver le dossier et les photos correspondantes, et appliquer les informations exif de positionnement gps aux photos afin de les envoyer sur panoramax avec l'outil geovisio_cli.
retrouver le dossier et les photos correspondantes, et appliquer les informations exif de positionnement gps aux photos afin de les envoyer sur panoramax avec l'outil geovisio_cli.
Pour appliquer les métadonnées aux photos, un script bash utilisant **exiftool** est généré dans le dossier d'output.
## options de CLI

View File

@ -3,54 +3,113 @@
conversion de données exif
**/
// const fs = require('fs');
import {parse} from 'csv-parse/sync';
// @ts-ignore
import * as fs from 'node:fs';
// @ts-ignore
import path from "node:path";
// @ts-ignore
import minimist from 'minimist';
import {writeFileSync} from "fs";
// @ts-ignore
const moment = require("moment");
// configs
let folder = "/home/poule/encrypted/stockage-syncable/photos/imagerie kartaview carto tel/kartaview_export_storage/share2tykayn/"
let enable_write_gpx_file = true;
let just_one_photo_in_folder = false;
let folder_photos = folder + "photo"
let dossier_photo = "/home/poule/encrypted/stockage-syncable/photos/imagerie kartaview carto tel/kartaview_export_storage/share2tykayn/photo/"
let csv_file_path = "/home/tykayn/Nextcloud/ressources/social sorting/photos_gps_metadata_kartaview.csv"
let mini_arguments: any = minimist(process.argv.slice(2))
console.log('mini_arguments', mini_arguments)
if (mini_arguments['sequence']) {
sequence_name = mini_arguments['sequence']
interface csv_kartaview_interface{
sequence_id: string,
sequence_index: string,
name: string,
shot_date: string,
lat: string,
lng: string,
heading: string
}
function writeFile(fileName: string, fileContent: any) {
console.log('write file', fileName)
return fs.writeFile(
`${dossier_gpx}/${fileName}`,
fileContent,
'utf8',
(err) => {
if (err) {
console.log(`Error writing file: ${err}`)
}
}
)
}
/**
* example:
* {
* sequence_id: '3596249',
* sequence_index: '1',
* name: '3596249_f3ccd_60a0f9cda58b5.jpg',
* shot_date: '2020-09-04 13:13:19.000',
* lat: '48.618406',
* lng: '2.125376',
* heading: '106.61'
* }
*/
function main() {
// TODO make it all
// ouvrir le fichier csv
// lire ses infos, mais seulement pour les photos des premiers 160 dossiers.
// lire ses infos, mais seulement pour les photos des premiers 160 dossiers. jusqu'à 2810714.
// trouver les photos à partir du nom de fichier
// prendre les données du csv et les appliquer à chaque photo
// sauvegarder chaque photo
// Load the CSV file
let csv_as_json = csv_to_json(csv_file_path)
csv_as_json.shift()
// console.log('records', csv_as_json)
let bash_script_exif_content = `#!/bin/bash
echo "applying exif info to photos"
`;
csv_as_json.forEach(( elem :csv_kartaview_interface)=> {
let iso = elem.shot_date;
let boom = elem.name.split('_')
let sequence_name:string = boom[0]
console.log('sequence_name', sequence_name)
let exif_command = `\n
exiftool -overwrite_original \\
-GPSDateTime="${iso}" \\
-AllDates="${iso}" \\
-MediaCreateDate="${iso}" \\
-MediaModifyDate="${iso}" \\
-TrackCreateDate=="${iso}" \\
-TrackModifyDate=="${iso}" \\
-GPSLongitude="${elem.lng}" \\
-GPSLatitude="${elem.lat}" \\
"${dossier_photo + sequence_name +'/'+ elem.name}"
`
bash_script_exif_content += exif_command
})
let ouput_bash_name= 'script_exif_apply_kartaview_from_csv.sh'
writeFileSync(ouput_bash_name, bash_script_exif_content)
console.log('fichier écrit', ouput_bash_name)
console.log('csv_as_json.length',csv_as_json.length)
}
// run it all
main()
function csv_to_json(csv_file_path:string){
const data = fs.readFileSync(csv_file_path,
{encoding: 'utf8', flag: 'r'});
const records = parse(data, {
columns: true,
skip_empty_lines: true
});
return records
}

Some files were not shown because too many files have changed in this diff Show More