Los metadatos de videos de YouTube (título, recuento de vistas, recuento de me gusta, descripción, etiquetas, nombre del canal y fecha de carga) son valiosos para el análisis de contenido, la investigación de personas influyentes y la evaluación comparativa competitiva. La YouTube Data API v3 impone cuotas diarias estrictas que limitan los análisis a gran escala. El punto final de metadatos de YouTube de Scavio devuelve metadatos de video enriquecidos por ID de video sin preocupaciones sobre la cuota de la API de YouTube. Este tutorial muestra cómo recuperar metadatos para videos individuales y realizar múltiples búsquedas por lotes de manera eficiente.
Requisitos previos
- Python 3.8 o superior
- solicita biblioteca instalada
- Una clave API de Scavio
- Uno o más ID de videos de YouTube para buscar
Guia paso a paso
Paso 1: Obtener metadatos para un solo video
PUBLICAR en el punto final de Scavio con la plataforma youtube, metadatos de acción y video_id.
def get_video_metadata(video_id: str) -> dict:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "youtube", "action": "metadata", "video_id": video_id}
)
response.raise_for_status()
return response.json()Paso 2: Extraer campos clave
Analice la respuesta de metadatos para extraer el título, el recuento de vistas, el recuento de me gusta y la información del canal.
meta = get_video_metadata("dQw4w9WgXcQ")
video = meta.get("video", {})
print("Title:", video.get("title"))
print("Views:", video.get("view_count"))
print("Likes:", video.get("like_count"))
print("Channel:", video.get("channel_name"))
print("Published:", video.get("published_at"))Paso 3: Recuperar por lotes varios vídeos
Recorra una lista de ID de video y recopile metadatos para cada uno. Utilice time.sleep para mantenerse dentro de los límites de velocidad.
import time
def batch_metadata(video_ids: list[str]) -> list[dict]:
results = []
for vid_id in video_ids:
meta = get_video_metadata(vid_id)
results.append(meta.get("video", {}))
time.sleep(0.5) # polite rate limiting
return resultsPaso 4: Ordenar vídeos por recuento de vistas
Clasifique los videos obtenidos por recuento de vistas para identificar el contenido más popular.
videos = batch_metadata(["dQw4w9WgXcQ", "9bZkp7q19f0", "kJQP7kiw5Fk"])
sorted_videos = sorted(videos, key=lambda v: int(v.get("view_count", 0) or 0), reverse=True)
for v in sorted_videos:
print(f"{v.get('title', 'N/A')[:50]}: {v.get('view_count')} views")Ejemplo en Python
import os
import time
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def get_metadata(video_id: str) -> dict:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"platform": "youtube", "action": "metadata", "video_id": video_id})
r.raise_for_status()
return r.json().get("video", {})
def batch(ids: list[str]) -> list[dict]:
results = []
for vid in ids:
results.append(get_metadata(vid))
time.sleep(0.3)
return results
if __name__ == "__main__":
ids = ["dQw4w9WgXcQ", "9bZkp7q19f0"]
videos = batch(ids)
for v in sorted(videos, key=lambda x: int(x.get("view_count") or 0), reverse=True):
print(f"{v.get('title', 'N/A')[:60]}: {v.get('view_count')} views")Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function getMetadata(videoId) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ platform: "youtube", action: "metadata", video_id: videoId })
});
const data = await res.json();
return data.video || {};
}
async function main() {
const ids = ["dQw4w9WgXcQ", "9bZkp7q19f0"];
const videos = await Promise.all(ids.map(getMetadata));
videos.sort((a, b) => (parseInt(b.view_count) || 0) - (parseInt(a.view_count) || 0));
videos.forEach(v => console.log(`${v.title?.slice(0, 60)}: ${v.view_count} views`));
}
main().catch(console.error);Salida esperada
{
"video": {
"video_id": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video)",
"channel_name": "Rick Astley",
"channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw",
"view_count": "1547823901",
"like_count": "17200000",
"published_at": "2009-10-25",
"duration": "PT3M33S",
"description": "The official video for Rick Astley's Never Gonna Give You Up..."
}
}