При работе с YouTube API v3 есть метод list категории Video (https://www.googleapis.com/youtube/v3/videos).
При его использовании вы получаете массив с видео внутри которого объекты содержащие данные о каждом видео, один из таких параметров «duration» который содержит время в формате PT3M21S.
Как же конвертировать это время в более удобочитаемый формат часов, минут и секунд? Давайте рассмотрим примеры на PHP, JavaScript и Python.
Как конвертировать PT3M21S на PHP?
function convertYouTubeDuration($video_duration = '', $format = "H:i:s") {
if(!$video_duration) return false;
$start = new DateTime('@0'); // Unix epoch
$start->add(new DateInterval($video_duration));
return $start->format($format);
}
// Пример использования функции
$video_duration = 'PT2H30M45S'; // Пример длительности в формате YouTube
$video_duration_seconds = convertYouTubeDuration($video_duration);
var_dump($video_duration_seconds); // Выводит преобразованную длительность 2:30:45
Как конвертировать PT3M21S на JavaScript?
function convertYouTubeDuration(video_duration, format = "HH:mm:ss") {
if (!video_duration) return false;
const start = new Date(0);
const durationArray = video_duration.match(/\d+/g);
if (!durationArray) return false;
const [hours, minutes, seconds] = durationArray.map(Number);
start.setHours(hours);
start.setMinutes(minutes);
start.setSeconds(seconds);
const options = { hour12: false, timeZone: 'UTC' };
const formattedDuration = start.toLocaleTimeString('en-US', options);
return formattedDuration;
}
// Пример использования функции
const video_duration = 'PT2H30M45S'; // Пример длительности в формате YouTube
const video_duration_formatted = convertYouTubeDuration(video_duration);
console.log(video_duration_formatted); // Выводит преобразованную длительность 2:30:45
Как конвертировать PT3M21S на Python?
from datetime import datetime, timedelta
def convert_youtube_duration(video_duration, format="%H:%M:%S"):
if not video_duration:
return None
duration_parts = video_duration[2:].split('M')
hours, minutes = divmod(int(duration_parts[0]), 60)
minutes, seconds = map(int, duration_parts[1][:-1].split('S'))
start = datetime(1, 1, 1, hours, minutes, seconds)
formatted_duration = start.strftime(format)
return formatted_duration
# Пример использования функции
video_duration = 'PT2H30M45S' # Пример длительности в формате YouTube
video_duration_formatted = convert_youtube_duration(video_duration)
print(video_duration_formatted) # Выводит преобразованную длительность 02:30:45
Теперь вы можете легко интегрировать функцию конвертации продолжительности видео на ютуб в ваш код на языке JavaScript, Python или PHP при работе с YouTube API v3 и предоставлять пользователям понятный формат времени видео.