up kartaview apply exif data from csv
This commit is contained in:
parent
d4eb822bb5
commit
5841f0d458
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue