Misma idea que Genoa Player V3: una librería que renderiza players dentro de tags <genoa-player> en tu página, sin iframe, llamando la librería una sola vez para múltiples players.
/dist/v4/genoa-player.min.js (servido por tu instancia de Spi) |
| Atributo | Descripción |
|---|---|
data-content-id | Requerido — el content_id (Media ID) a reproducir |
data-player-id | Identificador propio del player, va en los eventos |
data-autoplay | "true"/"false" |
data-width / data-height | CSS size del player |
data-color | Color de acento (variable CSS --gp-color) |
data-pvast / data-rvast | VAST tag URL para preroll/postroll |
data-custom-poster | URL de poster, sobrescribe el thumbnail del contenido |
data-playlist-overlay | Content IDs separados por coma — muestra una barra para saltar entre ellos |
data-related | "true"/"false" |
data-mute | "true"/"false" |
data-share | URL que se manda en share_url de los eventos |
data-debug | "true" — logea en consola |
data-comscore | JSON con pares clave/valor |
<genoa-player
data-content-id="100000003"
data-player-id="KS70YK1554147504"
data-autoplay="false"
data-width="700px"
data-height="350px"
data-color="#A80C54"
data-pvast="https://pubads.g.doubleclick.net/gampad/ads?.."
data-custom-poster="https://image.jpg"
data-playlist-overlay="100000004,100000005"
data-related="true"
data-mute="false"
data-share="http://tn.com/nota.."
data-debug="false">
</genoa-player>
<script src="/dist/v4/genoa-player.min.js"></script>
Página de prueba con todos los data-attributes en vivo: /player-demo
content_id ahora es el formato nuevo (pid + 8 dígitos, ver Content). Ads: se resuelve el VAST tag y se reproduce el primer MediaFile encontrado como pre/post-roll — no es una integración completa de Google IMA (sin tracking pixels, sin VPAID, sin skip button configurable). YouTube tech todavía no está bundleado — si el contenido es content_type: youtube el player muestra un link a YouTube en vez de reproducir embebido.El player dispara eventos del DOM en document para que tu página trackee lo que pasa adentro del player.
<script>
document.addEventListener('genoa_pass_data', function (e) {
console.log(e.detail);
}, false);
</script>
El código real de Genoa Player V3 solo dispara genoa_pass_data en dos casos: una vez cuando arranca la reproducción real (Start), y en el ciclo de vida de los ads. Todo lo demás (pausa, quartiles, fin de contenido) se manda por un pixel de analytics interno aparte, no por este evento — así que no vas a ver Pause/Resume/FirstQuartile/Midpoint/Complete/Ended acá, aunque suene lógico esperarlos.
| Action | Cuándo | adType presente |
|---|---|---|
Start | una sola vez, cuando arranca la reproducción real del contenido (no ads) | no |
adStarted | al arrancar un preroll/postroll | sí |
adComplete | al terminar el ad | sí |
adContentResume | inmediatamente después de adComplete, antes de retomar el contenido | sí |
{
"action": "Start",
"name": "Prueba",
"content_id": "100000003",
"agent": "Mozilla/5.0 ...",
"player": "DEMO0001",
"group": 1,
"publisher": 1,
"referrer": "http://localhost:8100/player-demo",
"duration": 3000,
"share_url": "http://tn.com/nota.."
}
{
"action": "adStarted",
"name": "Prueba",
"content_id": "100000003",
"agent": "Mozilla/5.0 ...",
"player": "DEMO0001",
"group": 1,
"publisher": 1,
"referrer": "http://localhost:8100/player-demo",
"duration": 3000,
"share_url": "",
"adType": "preroll"
}
group es el gid del group al que está asignado el publisher (Administration → Groups), no el publisher_id — son campos distintos aunque el nombre "group" confunda. adType solo aparece en el objeto cuando el evento es de un ad — en el resto directamente no está la clave (ni siquiera como null).adLog, adSkipped, adResumed y adClicked no se emiten — necesitan una integración real de Google IMA (pixels de tracking, botón de skip, eventos de click) que este build no tiene; acá el ad es un VAST simplificado (primer MediaFile reproducido derecho).Además de genoa_pass_data, el player manda un pixel interno a POST /api/v4/player/track con { content_id, event } — es lo que alimenta los contadores reales de Content (plays, impressions, preroll/midroll/postroll). No hace falta llamarlo a mano, ya está integrado en genoa-player.js.
| Event | Cuándo | Contador que incrementa |
|---|---|---|
impression | al cargar los datos del contenido, antes de reproducir | impressions |
start | junto con Start de genoa_pass_data | plays |
preroll / midroll / postroll | junto con adStarted de cada tipo de ad | preroll / midroll / postroll |
firstquartile / midpoint / thirdquartile | al pasar 25%/50%/75% de currentTime | firstquartile / midpoint / thirdquartile |
ended | al terminar el contenido | ended |