Regenerate map PNGs unconditionally on article save
This commit is contained in:
parent
f95b5d4f0b
commit
d7e94a4a75
1 changed files with 32 additions and 0 deletions
32
new.php
32
new.php
|
|
@ -416,6 +416,36 @@ function input_dir_output($dir){
|
||||||
$state = input_dir_state($dir);
|
$state = input_dir_state($dir);
|
||||||
return basename((string)($state['output'] ?? ''));
|
return basename((string)($state['output'] ?? ''));
|
||||||
}
|
}
|
||||||
|
function regenerate_input_dir_maps($dir, $config){
|
||||||
|
$python = trim((string)shell_exec('command -v python3 2>/dev/null'));
|
||||||
|
$script = __DIR__ . '/bin/gpsmap.py';
|
||||||
|
if ($python === '' || !is_file($script)) return;
|
||||||
|
|
||||||
|
$state = input_dir_state($dir);
|
||||||
|
$targets = [];
|
||||||
|
foreach (['output', 'preview_output'] as $key) {
|
||||||
|
$name = basename((string)($state[$key] ?? ''));
|
||||||
|
if ($name === '') continue;
|
||||||
|
$targets[] = $config['videos_dir'] . '/' . pathinfo($name, PATHINFO_FILENAME) . '.png';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback target if no output filename is known yet.
|
||||||
|
if (!$targets) {
|
||||||
|
$targets[] = $config['videos_dir'] . '/' . basename((string)$dir) . '.png';
|
||||||
|
}
|
||||||
|
|
||||||
|
$targets = array_values(array_unique($targets));
|
||||||
|
|
||||||
|
foreach ($targets as $outPng) {
|
||||||
|
$cmd = escapeshellarg($python) . ' ' . escapeshellarg($script) . ' ' . escapeshellarg($dir) . ' ' . escapeshellarg($outPng) . ' 2>&1';
|
||||||
|
$output = (string)shell_exec($cmd);
|
||||||
|
if (is_file($outPng)) {
|
||||||
|
@chmod($outPng, 0664);
|
||||||
|
} else {
|
||||||
|
error_log('[mvlog] map regenerate failed for '.basename((string)$dir).' target='.basename((string)$outPng).' output='.trim($output)."\n", 3, '/var/log/mvlog_map.log');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
function cached_video_metadata($output, $fallback){
|
function cached_video_metadata($output, $fallback){
|
||||||
$meta = ['title'=>$fallback['title'] ?? '', 'date'=>$fallback['date'] ?? '', 'location'=>$fallback['place'] ?? '', 'description'=>$fallback['description'] ?? ''];
|
$meta = ['title'=>$fallback['title'] ?? '', 'date'=>$fallback['date'] ?? '', 'location'=>$fallback['place'] ?? '', 'description'=>$fallback['description'] ?? ''];
|
||||||
$cacheFile = __DIR__ . '/cache/videos.json';
|
$cacheFile = __DIR__ . '/cache/videos.json';
|
||||||
|
|
@ -572,6 +602,8 @@ try {
|
||||||
write_data($dir, $_POST);
|
write_data($dir, $_POST);
|
||||||
save_uploads('media', $dir, $allowedMedia);
|
save_uploads('media', $dir, $allowedMedia);
|
||||||
save_uploads('audio', $dir, $allowedAudio);
|
save_uploads('audio', $dir, $allowedAudio);
|
||||||
|
// Always regenerate map image(s) on Save changes.
|
||||||
|
regenerate_input_dir_maps($dir, $config);
|
||||||
if (!empty($_POST['ajax'])) ajax_json(['ok'=>true, 'message'=>'Updated input directory: in-dir/' . basename($dir), 'dir'=>basename($dir)]);
|
if (!empty($_POST['ajax'])) ajax_json(['ok'=>true, 'message'=>'Updated input directory: in-dir/' . basename($dir), 'dir'=>basename($dir)]);
|
||||||
header('Location: new.php?tab=edit');
|
header('Location: new.php?tab=edit');
|
||||||
exit;
|
exit;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue