nice_title($base),'date'=>date('Y-m-d',filemtime($path)),'location'=>'','description'=>'']; if (preg_match('/^(\d{4})(\d{2})(\d{2})[_-](.+)$/', $base, $m)) { $meta['date']="$m[1]-$m[2]-$m[3]"; $meta['title']=nice_title($m[4]); } $ffprobe = trim((string)shell_exec('command -v ffprobe 2>/dev/null')); if ($ffprobe !== '') { $json = shell_exec(escapeshellarg($ffprobe).' -v quiet -print_format json -show_entries format_tags '.escapeshellarg($path).' 2>/dev/null'); $data = json_decode((string)$json, true); $tags = $data['format']['tags'] ?? []; $lower=[]; foreach($tags as $k=>$v) $lower[strtolower($k)]=$v; if(!empty($lower['title'])) $meta['title']=$lower['title']; if(!empty($lower['date'])) $meta['date']=$lower['date']; foreach(['location','place','com.apple.quicktime.location.name'] as $k) if(!empty($lower[$k])) { $meta['location']=$lower[$k]; break; } foreach(['description','synopsis'] as $k) if(!empty($lower[$k])) { $meta['description']=$lower[$k]; break; } } return $meta; } $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'https'; $host = $_SERVER['HTTP_HOST'] ?? 'bubulescu.org'; $baseUrl = $scheme . '://' . $host . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/'); $hiddenOutputs = hidden_video_outputs($config); $videos = array_values(array_filter(glob($config['videos_dir'].'/*.{mp4,webm,mov,m4v}', GLOB_BRACE) ?: [], fn($v)=>empty($hiddenOutputs[basename($v)]))); usort($videos, fn($a,$b)=>filemtime($b)<=>filemtime($a)); $videos = array_slice($videos,0,20); header('Content-Type: application/rss+xml; charset=UTF-8'); echo "\n"; ?> MVLog - Bubulescu.Org Latest videos from MVLog Bubulescu.Org en <?=x($m['title'])?>