Fix: videos ahora con reproductor Vimeo embebido + Nginx en /rm-KSALDIS-DT/

This commit is contained in:
Ricardo Monla
2026-05-04 06:07:10 -03:00
parent cc04473009
commit 58d4c6df32
20 changed files with 14612 additions and 0 deletions
@@ -573,8 +573,16 @@ body {
<span>🎬 <strong>PLANIFICACIÓN</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1170245111"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M1_Planificacion_PLANIFICACIÓN.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<h4>Resumen de la Clase: Planificación y Periodización Ágil (Voleibol)</h4><p>Esta clase correspondiente al <b>Curso de Entrenador Nacional II de Vóleibol (Edición 2026)</b> aborda la planificación de la preparación física bajo un enfoque moderno de <b>periodización ágil</b>. El objetivo central es que el deportista llegue en su mejor versión a la competencia, priorizando la salud y la individualidad sobre planes rígidos.</p><hr><h4>1. Concepto de Carga e Individualidad</h4><ul><br>
<li><b>Carga Integral:</b> No se limita solo al entrenamiento de cancha; incluye el estrés físico, psicológico y el impacto diario en cada jugador.</li><br>
<li><b>Principio de Individualidad:</b> Es el factor determinante. Un plan exitoso debe ser flexible y ajustarse según el feedback (carga interna) de cada deportista.</li><br>
@@ -704,8 +712,16 @@ body {
<span>🎬 <strong>PREPARACIÓN ATLÉTICA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1173231315"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M1_Preparacion_Atletica_PREPARACIÓN_ATLÉTICA.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<h4>Resumen de Clase: Preparación Atlética en el Voleibol</h4><p><strong>Profesor:</strong> Alejandro Bertorello</p><p>En este segundo encuentro del curso para Entrenadores Nacionales Nivel 2, se abordó la implementación práctica de la preparación física, enfocándose en la sesión de entrenamiento como la unidad estructural básica y el rol del entrenador/preparador en el campo.</p><hr><h4>1. Filosofía y Rol del Preparador Físico</h4><ul><br>
<li><strong>Observación Pedagógica:</strong> El preparador debe estar presente y activo, corrigiendo técnicas y dando feedback constante. No se puede dirigir una sesión de pesas de forma pasiva.</li><br>
<li><strong>Individualidad:</strong> Es fundamental diferenciar los planes según el tiempo de juego, historial de lesiones y fatiga acumulada del deportista.</li><br>
@@ -805,8 +821,16 @@ body {
<span>🎬 <strong>Modelo de ejercicios preventivos de lesiones en el vóleibol</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1063655414"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M1_Preparacion_Atletica_video_1063655414.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>Sesión preventiva general </p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-sesion-preventiva-post-viaje-7">8. Sesión Preventiva (Post viaje)</h3>
<div class="video-viewer-wrap collapsed">
@@ -814,8 +838,16 @@ body {
<span>🎬 <strong>Sesión Preventiva (Post viaje)</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1063657248"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M1_Preparacion_Atletica_video_1063657248.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>Sesión preventiva</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-modelo-de-sesion-de-carga-choque-8">9. Modelo de Sesión de carga - choque</h3>
<p>Modelo de sesión para deportistas expertos y avanzados</p><div class="pdf-viewer-wrap collapsed">
@@ -893,8 +925,16 @@ body {
<span>🎬 <strong>EXPLICACIÓN DEL TRABAJO PRÁCTICO A PRESENTAR</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1173576229"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M1_Explicacion_TP_video_1173576229.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<div><br>
<h4>Consignas: Trabajo Práctico Integrador (TPI)</h4><br>
<p><strong>Profesor:</strong> Alejandro Bertorello</p><br>
@@ -948,8 +988,16 @@ body {
<span>🎬 <strong>SEGUIMIENTO DE EQUIPOS</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1175436659"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/MX_video_1175436659.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>Clase en vivo<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-modulo-1-1">2. . MODULO 1</h3>
@@ -1095,8 +1143,16 @@ body {
<span>🎬 <strong>ANÁLISIS DE EQUIPO 1</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1073484590"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/MX_video_1073484590.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>Clase en vivo</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-analisis-y-seguimiento-2-1">2. ANALISIS Y SEGUIMIENTO 2</h3>
<p>Análisis del Scout <br> Gestión del Entrenador<br> Dirección Estratégica</p><div class="nota-recurso">📦 <strong>Descargar:</strong> <a href="secciones/Modulo_1_Planificacion/Analisis_Equipos_1/recurso_53294.zip" download>ANALISIS Y SEGUIMIENTO 2</a></div>
@@ -1107,8 +1163,16 @@ body {
<span>🎬 <strong>Armado K1 .De Checco</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/876705933"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/MX_video_876705933.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>VIDEO</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-analisis-del-opuesto-3">4. Análisis del Opuesto</h3>
<p>Video</p><div class="video-viewer-wrap collapsed">
@@ -1314,8 +1378,16 @@ body {
<span>🎬 <strong>ANÁLISIS Y SEGUIMIENTO 3 - EXPLICACIÓN DEL TP</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1176900332"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/MX_video_1176900332.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>clase en vivo</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-trabajo-practico-analisis-y-seguimiento-1">2. TRABAJO PRACTICO ANALISIS Y SEGUIMIENTO</h3>
<p><u>PLANIFICACIÓNDEL PARTIDO: </u>SISTEMA BLOQUEO-DEFENSA </p><div class="nota-recurso">📦 <strong>Descargar:</strong> <a href="secciones/Modulo_1_Planificacion/TP_Final_Unidad/recurso_53296.ppt" download>TRABAJO PRACTICO ANALISIS Y SEGUIMIENTO</a></div>
@@ -1358,8 +1430,16 @@ body {
<span>🎬 <strong>PRIORIDAD EN EL BLOQUEO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919369433"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_PRIORIDAD_EN_EL_BLOQUEO.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>PRIORIDAD EN EL BLOQUEO<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-entrenamiento-de-los-centrales-y-opuestos-3">4. ENTRENAMIENTO DE LOS CENTRALES Y OPUESTOS</h3>
@@ -1368,8 +1448,16 @@ body {
<span>🎬 <strong>ENTRENAMIENTO DE LOS CENTRALES Y OPUESTOS</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1179197191"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_1179197191.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>clase en vivo</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-ataque-b-4">5. ATAQUE B</h3>
<div class="video-viewer-wrap collapsed">
@@ -1377,8 +1465,16 @@ body {
<span>🎬 <strong>ATAQUE B</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919341704"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_ATAQUE_B.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>ATAQUE B</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-b-con-recepcion-admiracion-5">6. B CON RECEPCION ADMIRACION</h3>
<div class="video-viewer-wrap collapsed">
@@ -1386,8 +1482,16 @@ body {
<span>🎬 <strong>B CON RECEPCION ADMIRACION</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919342668"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919342668.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>B CON RECEPCION ADMIRACION<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-la-b-mantiene-la-distancia-6">7. LA B MANTIENE LA DISTANCIA</h3>
@@ -1396,8 +1500,16 @@ body {
<span>🎬 <strong>LA B MANTIENE LA DISTANCIA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919346562"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919346562.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>LA B MANTIENE LA DISTANCIA</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hatu-recepcion-perfecta-7">8. HATU RECEPCION PERFECTA</h3>
<div class="video-viewer-wrap collapsed">
@@ -1405,8 +1517,16 @@ body {
<span>🎬 <strong>HATU RECEPCION PERFECTA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919347866"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_HATU_RECEPCION_PERFECTA.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HATU RECEPCION PERFECTA<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hatu-con-pelota-separada-8">9. HATU CON PELOTA SEPARADA</h3>
@@ -1415,8 +1535,16 @@ body {
<span>🎬 <strong>HATU CON PELOTA SEPARADA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919348493"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_HATU_CON_PELOTA_SEPARADA.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HATU CON PELOTA SEPARADA</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hatu-marcada-9">10. HATU MARCADA</h3>
<div class="video-viewer-wrap collapsed">
@@ -1424,8 +1552,16 @@ body {
<span>🎬 <strong>HATU MARCADA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919351892"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_HATU_MARCADA.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HATU MARCADA</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hatumarcada-bien-atacada-10">11. HATUMARCADA BIEN ATACADA</h3>
<div class="video-viewer-wrap collapsed">
@@ -1433,8 +1569,16 @@ body {
<span>🎬 <strong>HATUMARCADA BIEN ATACADA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919352848"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_HATUMARCADA_BIEN_ATACADA.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HATU MARCADA BIEN ATACADA</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hatu-bien-hecha-11">12. HATU BIEN HECHA</h3>
<div class="video-viewer-wrap collapsed">
@@ -1442,8 +1586,16 @@ body {
<span>🎬 <strong>HATU BIEN HECHA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919353448"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_HATU_BIEN_HECHA.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HATU BIEN HECHA</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hana-positiva-12">13. HANA POSITIVA</h3>
<div class="video-viewer-wrap collapsed">
@@ -1451,8 +1603,16 @@ body {
<span>🎬 <strong>HANA POSITIVA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919354134"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_HANA_POSITIVA.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HANA POSITIVA</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hanati-con-recepcion-separada-13">14. HANATI CON RECEPCION SEPARADA</h3>
<div class="video-viewer-wrap collapsed">
@@ -1460,8 +1620,16 @@ body {
<span>🎬 <strong>HANATI CON RECEPCION SEPARADA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919355668"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919355668.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HANATI CON RECEPCION SEPARADA<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hana-recepcion-a-2-14">15. HANA RECEPCION A 2</h3>
@@ -1470,8 +1638,16 @@ body {
<span>🎬 <strong>HANA RECEPCION A 2</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919356423"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_HANA_RECEPCION_A_2.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HANA RECEPCION A 2</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-beti-a-un-pie-atras-15">16. BETI A UN PIE ATRAS</h3>
<div class="video-viewer-wrap collapsed">
@@ -1479,8 +1655,16 @@ body {
<span>🎬 <strong>BETI A UN PIE ATRAS</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919357109"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_BETI_A_UN_PIE_ATRAS.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>BETI A UN PIE ATRAS</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-beti-en-juego-16">17. BETI EN JUEGO</h3>
<div class="video-viewer-wrap collapsed">
@@ -1488,8 +1672,16 @@ body {
<span>🎬 <strong>BETI EN JUEGO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919358607"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_BETI_EN_JUEGO.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>BETI EN JUEGO<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-central-al-medio-con-recepcion-a-2-17">18. CENTRAL AL MEDIO CON RECEPCION A 2</h3>
@@ -1498,8 +1690,16 @@ body {
<span>🎬 <strong>CENTRAL AL MEDIO CON RECEPCION A 2</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919359386"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919359386.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>CENTRAL AL MEDIO CON RECEPCION A 2</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hanati-volada-con-recepcion-a-4-18">19. HANATI VOLADA CON RECEPCION A 4</h3>
<div class="video-viewer-wrap collapsed">
@@ -1507,8 +1707,16 @@ body {
<span>🎬 <strong>HANATI VOLADA CON RECEPCION A 4</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919359855"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919359855.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HANATI VOLADA CON RECEPCION A 4</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-hana-con-recepcion-a-2-separada-19">20. HANA CON RECEPCION A 2 SEPARADA</h3>
<div class="video-viewer-wrap collapsed">
@@ -1516,8 +1724,16 @@ body {
<span>🎬 <strong>HANA CON RECEPCION A 2 SEPARADA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919360318"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919360318.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>HANA CON RECEPCION A 2 SEPARADA</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-apoyo-0-20">21. APOYO 0</h3>
<div class="video-viewer-wrap collapsed">
@@ -1525,8 +1741,16 @@ body {
<span>🎬 <strong>APOYO 0</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919363158"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_APOYO_0.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>APOYO 0</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-central-ataca-de-segunda-entrenamiento-del-tiempo-21">22. CENTRAL ATACA DE SEGUNDA ENTRENAMIENTO DEL TIEMPO</h3>
<div class="video-viewer-wrap collapsed">
@@ -1534,8 +1758,16 @@ body {
<span>🎬 <strong>CENTRAL ATACA DE SEGUNDA ENTRENAMIENTO DEL TIEMPO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919363728"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919363728.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>CENTRAL ATACA DE SEGUNDA ENTRENAMIENTO DEL TIEMPO</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-skipped-step-22">23. SKIPPED STEP</h3>
<div class="video-viewer-wrap collapsed">
@@ -1543,8 +1775,16 @@ body {
<span>🎬 <strong>SKIPPED STEP</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919364522"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_SKIPPED_STEP.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>PASO SALTADO PARA CAER DEL BLOQUEO Y SALIR A ATACAR</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-global-tecnico-con-el-central-23">24. GLOBAL TECNICO CON EL CENTRAL</h3>
<div class="video-viewer-wrap collapsed">
@@ -1552,8 +1792,16 @@ body {
<span>🎬 <strong>GLOBAL TECNICO CON EL CENTRAL</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919365485"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919365485.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>EJERCICIO GLOBAL TECNICO CON EL CENTRAL<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-visualizacion-del-central-en-bloqueo-24">25. VISUALIZACION DEL CENTRAL EN BLOQUEO</h3>
@@ -1562,8 +1810,16 @@ body {
<span>🎬 <strong>VISUALIZACION DEL CENTRAL EN BLOQUEO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/919366263"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Centrales_y_Oponentes_video_919366263.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>VISUALIZACION DEL CENTRAL EN BLOQUEO</p><h2 class="seccion-titulo" id="sec-puntas-y-liberos-as">Puntas y Liberos/as</h2>
<h3 class="tema-titulo" id="tema-puntas-y-liberos-as-0">1. PUNTAS Y LÍBEROS/AS</h3>
<div class="video-viewer-wrap collapsed">
@@ -1571,8 +1827,16 @@ body {
<span>🎬 <strong>PUNTAS Y LÍBEROS/AS</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1179888270"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_PUNTAS_Y_LÍBEROS_AS.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>clase en vivo</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-split-step-1">2. SPLIT STEP</h3>
<div class="video-viewer-wrap collapsed">
@@ -1580,8 +1844,16 @@ body {
<span>🎬 <strong>SPLIT STEP</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921876274"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_SPLIT_STEP.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>SPLIT STEP</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-los-puntas-receptores-y-el-libero-2">3. LOS PUNTAS RECEPTORES Y EL LIBERO</h3>
<p>PUNTAS RECEPTORES Y LIBEROS</p><div class="pdf-viewer-wrap collapsed">
@@ -1599,8 +1871,16 @@ body {
<span>🎬 <strong>CARRERA DE ATAQUE DESDE 6 A 4</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921873304"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_video_921873304.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>CARRERA DE ATAQUE DE 6 A 4</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-contrataque-despues-de-caer-de-bloqueo-4">5. CONTRATAQUE DESPUES DE CAER DE BLOQUEO</h3>
<div class="video-viewer-wrap collapsed">
@@ -1608,8 +1888,16 @@ body {
<span>🎬 <strong>CONTRATAQUE DESPUES DE CAER DE BLOQUEO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921873724"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_video_921873724.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>CONTRATAQUE DESPUES DE CAER DE BLOQUEO</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-contrataque-por-4-despues-de-caer-de-bloqueo-5">6. CONTRATAQUE POR 4 DESPUES DE CAER DE BLOQUEO</h3>
<div class="video-viewer-wrap collapsed">
@@ -1617,8 +1905,16 @@ body {
<span>🎬 <strong>CONTRATAQUE POR 4 DESPUES DE CAER DE BLOQUEO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921873953"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_video_921873953.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>ATAQUE DESPUES DE BLOQUEAR</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-evaluacion-posicional-6">7. EVALUACION POSICIONAL</h3>
<div class="video-viewer-wrap collapsed">
@@ -1626,8 +1922,16 @@ body {
<span>🎬 <strong>EVALUACION POSICIONAL</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921874753"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_EVALUACION_POSICIONAL.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>EVALUACION POSICIONAL</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-global-tecnico-de-la-pipe-7">8. GLOBAL TECNICO DE LA PIPE</h3>
<div class="video-viewer-wrap collapsed">
@@ -1635,8 +1939,16 @@ body {
<span>🎬 <strong>GLOBAL TECNICO DE LA PIPE</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921875020"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_GLOBAL_TECNICO_DE_LA_PIPE.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>GLOBAL TECNICO DE LA PIPE</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-recepcion-de-massimino-con-saque-de-la-maquina-8">9. RECEPCION DE MASSIMINO CON SAQUE DE LA MAQUINA</h3>
<div class="video-viewer-wrap collapsed">
@@ -1644,8 +1956,16 @@ body {
<span>🎬 <strong>RECEPCION DE MASSIMINO CON SAQUE DE LA MAQUINA</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921875302"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_video_921875302.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>RECEPCION DE MASSIMINO CON SAQUE DE LA MAQUINA<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-recepcion-sobre-la-linea-saliendo-de-adentro-9">10. RECEPCION SOBRE LA LINEA SALIENDO DE ADENTRO</h3>
@@ -1654,8 +1974,16 @@ body {
<span>🎬 <strong>RECEPCION SOBRE LA LINEA SALIENDO DE ADENTRO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921875519"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_video_921875519.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>RECEPCION SOBRE LA LINEA SALIENDO DE ADENTRO</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-recepcion-y-ataque-por-4-saliendo-de-adentro-10">11. RECEPCION Y ATAQUE POR 4 SALIENDO DE ADENTRO</h3>
<div class="video-viewer-wrap collapsed">
@@ -1663,8 +1991,16 @@ body {
<span>🎬 <strong>RECEPCION Y ATAQUE POR 4 SALIENDO DE ADENTRO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921875778"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_video_921875778.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>RECEPCION Y ATAQUE POR 4 SALIENDO DE ADENTRO<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-tipo-de-combinaciones-que-juegan-los-puntas-11">12. TIPO DE COMBINACIONES QUE JUEGAN LOS PUNTAS</h3>
@@ -1673,8 +2009,16 @@ body {
<span>🎬 <strong>TIPO DE COMBINACIONES QUE JUEGAN LOS PUNTAS</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921879520"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_video_921879520.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>COMBINACIONES DE LOS PUNTAS<br>
</p><div class="tema-separador"></div>
<h3 class="tema-titulo" id="tema-ataque-de-la-pipe-por-distancia-o-tiempo-12">13. ATAQUE DE LA PIPE POR DISTANCIA O TIEMPO</h3>
@@ -1683,8 +2027,16 @@ body {
<span>🎬 <strong>ATAQUE DE LA PIPE POR DISTANCIA O TIEMPO</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/921879925"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Puntas_y_Liberos_video_921879925.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>ATAQUE DE LA PIPE POR DISTANCIA O TIEMPO</p><h2 class="seccion-titulo" id="sec-entrenamiento-de-los-y-las-armadoras">Entrenamiento de los y las Armadoras</h2>
<h3 class="tema-titulo" id="tema-entrenamiento-de-los-y-las-armadoras-0">1. ENTRENAMIENTO DE LOS Y LAS ARMADORAS</h3>
<div class="video-viewer-wrap collapsed">
@@ -1692,8 +2044,16 @@ body {
<span>🎬 <strong>ENTRENAMIENTO DE LOS Y LAS ARMADORAS</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1181188693"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Entrenamiento_Armadoras_video_1181188693.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>clase en vivo</p><h2 class="seccion-titulo" id="sec-explicacion-del-trabajo-practico-a-presentar">Explicación del Trabajo Práctico a Presentar</h2>
<h3 class="tema-titulo" id="tema-explicacion-del-trabajo-practico-a-presentar-0">1. EXPLICACIÓN DEL TRABAJO PRÁCTICO A PRESENTAR</h3>
<div class="video-viewer-wrap collapsed">
@@ -1701,8 +2061,16 @@ body {
<span>🎬 <strong>EXPLICACIÓN DEL TRABAJO PRÁCTICO A PRESENTAR</strong></span>
<span class="video-toggle"></span>
</div>
<div class="video-container">
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/1181892359"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>
<div class="video-container"><video controls preload="metadata"><source src="videos_offline/M2_Explicacion_TP_video_1181892359.mp4" type="video/mp4">Tu navegador no soporta video HTML5.</video></div>
</div>
</div>
<p>clase en vivo</p>
</div>
+64
View File
@@ -0,0 +1,64 @@
import { chromium } from "playwright";
import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const SESSION_FILE = path.join(__dirname, "session.json");
const FALTANTES = [
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/50320/show?me=140219", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_50320.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/46541/show?me=140221", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_46541.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/50142/show?me=140224", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_50142.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/50145/show?me=140225", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_50145.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34868/study-resources/50144/show?me=140226", dest: "descargas/secciones/Modulo_1_Planificacion/Planificacion/recurso_50144.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34869/study-resources/50139/show?me=140234", dest: "descargas/secciones/Modulo_1_Planificacion/Preparacion_Atletica/recurso_50139.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34869/study-resources/50140/show?me=140236", dest: "descargas/secciones/Modulo_1_Planificacion/Preparacion_Atletica/recurso_50140.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34869/study-resources/50143/show?me=140237", dest: "descargas/secciones/Modulo_1_Planificacion/Preparacion_Atletica/recurso_50143.pdf" },
{ url: "https://voley.onlineeducation.center/es/campus/student/training/e/14197/m/19096/s/34869/study-resources/50141/show?me=140238", dest: "descargas/secciones/Modulo_1_Planificacion/Preparacion_Atletica/recurso_50141.pdf" },
];
(async () => {
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({ storageState: fs.existsSync(SESSION_FILE) ? SESSION_FILE : undefined, acceptDownloads: true });
const page = await context.newPage();
console.log("Chequeando sesión...");
await page.goto("https://voley.onlineeducation.center/es/campus/student/training/e/14197");
if (page.url().includes("login")) {
console.log("Sesion expirada, iniciando login...");
await page.waitForSelector("#login-email", { timeout: 15000 });
await page.fill("#login-email", "saldis_karina@hotmail.com");
await page.fill("#login-password", "Martes13#");
await page.click("#btn-login");
await page.waitForURL("**/es/campus/**", { timeout: 30000 });
console.log("Login exitoso, guardando sesión...");
await context.storageState({ path: SESSION_FILE });
}
for (const f of FALTANTES) {
const fullDest = path.join(__dirname, f.dest);
if (fs.existsSync(fullDest)) {
console.log("Ya existe:", f.dest);
continue;
}
console.log("Navegando a", f.url);
try {
const [download] = await Promise.all([
page.waitForEvent('download', { timeout: 10000 }),
page.goto(f.url).catch(e => {}) // catch the 'download is starting' navigation error
]);
await download.saveAs(fullDest);
console.log("Guardado como descarga:", fullDest);
} catch (e) {
// No disparó descarga, debe ser una página
try {
await page.goto(f.url, { waitUntil: 'networkidle', timeout: 10000 });
} catch (e2) {}
await page.pdf({ path: fullDest, format: 'A4' });
console.log("Guardado como PDF renderizado:", fullDest);
}
}
await browser.close();
})();
+7
View File
@@ -0,0 +1,7 @@
import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// We'll read the existing script and eval its MODULOS building logic, or just run it and capture...
+51
View File
@@ -0,0 +1,51 @@
import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const seccionesDir = path.join(__dirname, "descargas", "secciones");
const videosOfflineDir = path.join(__dirname, "descargas", "videos_offline");
const mapaPath = path.join(__dirname, ".mapa_videos.json");
if (!fs.existsSync(videosOfflineDir)) fs.mkdirSync(videosOfflineDir, { recursive: true });
let mapa = {};
try {
if (fs.existsSync(mapaPath)) {
mapa = JSON.parse(fs.readFileSync(mapaPath, "utf-8"));
}
} catch (e) {}
// Find all MX_video_*.mp4 in secciones
function findVideos(dir) {
let results = [];
const list = fs.readdirSync(dir);
for (const file of list) {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat && stat.isDirectory()) {
results = results.concat(findVideos(filePath));
} else if (file.startsWith("MX_video_") ) {
results.push(filePath);
}
}
return results;
}
const videos = findVideos(seccionesDir);
for (const vidPath of videos) {
const filename = path.basename(vidPath);
// Extact ID: MX_video_1175436659.mp4
const match = filename.match(/MX_video_(\d+)/);
if (match) {
const vimeoID = match[1];
const newPath = path.join(videosOfflineDir, filename);
fs.renameSync(vidPath, newPath);
console.log(`Movido: ${filename} a videos_offline`);
mapa[vimeoID] = filename;
}
}
fs.writeFileSync(mapaPath, JSON.stringify(mapa, null, 2));
console.log("Mapa de videos actualizado.");
+137
View File
@@ -0,0 +1,137 @@
#!/usr/bin/env node
/**
* Fija los videos en LIBRO_DE_ESTUDIO.html
* Reemplaza <video> tags con Vimeo iframe embebido + fallback a video local
* Mapeo manual para garantizar correspondencia correcta
*/
import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const LIBRO = path.join(__dirname, "descargas", "LIBRO_DE_ESTUDIO.html");
/**
* MAPA MANUAL: nombre del archivo videos_offline/*.mp4 → ID de Vimeo
* Los videos con "video_NUMERO.mp4" ya llevan el ID en el nombre.
* Los videos con nombre descriptivo se mapean manualmente según el orden
* en que aparecen en las secciones del curso.
*/
const MAPA = {
// ── Módulo 1: Planificación ──
"M1_Planificacion_PLANIFICACIÓN.mp4": "1170245111",
"M1_Preparacion_Atletica_PREPARACIÓN_ATLÉTICA.mp4": "1173231315",
// ── Módulo 2: Centrales y Opuestos ──
"M2_Centrales_y_Oponentes_PRIORIDAD_EN_EL_BLOQUEO.mp4": "919369433",
"M2_Centrales_y_Oponentes_ATAQUE_B.mp4": "919341704",
"M2_Centrales_y_Oponentes_HATU_RECEPCION_PERFECTA.mp4": "919347866",
"M2_Centrales_y_Oponentes_HATU_CON_PELOTA_SEPARADA.mp4": "919348493",
"M2_Centrales_y_Oponentes_HATU_MARCADA.mp4": "919351892",
"M2_Centrales_y_Oponentes_HATUMARCADA_BIEN_ATACADA.mp4": "919352848",
"M2_Centrales_y_Oponentes_HATU_BIEN_HECHA.mp4": "919353448",
"M2_Centrales_y_Oponentes_HANA_POSITIVA.mp4": "919354134",
"M2_Centrales_y_Oponentes_HANA_RECEPCION_A_2.mp4": "919356423",
"M2_Centrales_y_Oponentes_BETI_A_UN_PIE_ATRAS.mp4": "919357109",
"M2_Centrales_y_Oponentes_BETI_EN_JUEGO.mp4": "919358607",
"M2_Centrales_y_Oponentes_APOYO_0.mp4": "919363158",
"M2_Centrales_y_Oponentes_SKIPPED_STEP.mp4": "919364522",
// ── Módulo 2: Puntas y Liberos ──
"M2_Puntas_y_Liberos_PUNTAS_Y_LÍBEROS_AS.mp4": "1179888270",
"M2_Puntas_y_Liberos_SPLIT_STEP.mp4": "921876274",
"M2_Puntas_y_Liberos_EVALUACION_POSICIONAL.mp4": "921874753",
"M2_Puntas_y_Liberos_GLOBAL_TECNICO_DE_LA_PIPE.mp4": "921875020",
};
for (let i = 1; i <= 23; i++) {
const key = `M2_Centrales_y_Oponentes_video_9193${String(i).padStart(2, "0")}XXX`;
// Ya están cubiertos los que tienen video_ID en el nombre
}
function buildVideoMap() {
const libro = fs.readFileSync(LIBRO, "utf-8");
const videoRefs = [...libro.matchAll(/videos_offline\/([^"']+\.mp4)/g)].map(
(m) => m[1],
);
const finalMap = {};
let ok = 0,
fail = 0;
for (const ref of videoRefs) {
// Si tiene video_NUMERO en el filename, extraer el ID
const idMatch = ref.match(/video_(\d+)\.mp4/);
if (idMatch) {
finalMap[ref] = idMatch[1];
ok++;
} else if (MAPA[ref]) {
finalMap[ref] = MAPA[ref];
ok++;
} else {
console.log(` ⚠ SIN MAPA: ${ref}`);
fail++;
}
}
console.log(`\n📊 Total: ${ok} mapeados, ${fail} sin mapa\n`);
return { finalMap, videoRefs };
}
function fixLibro() {
const { finalMap, videoRefs } = buildVideoMap();
let html = fs.readFileSync(LIBRO, "utf-8");
const originalSize = html.length;
const videoRegex =
/<div class="video-container">\s*<video[^>]*>[\s\S]*?<\/video>\s*<\/div>/gs;
const matches = [];
let match;
while ((match = videoRegex.exec(html)) !== null) {
matches.push({
full: match[0],
index: match.index,
src: match[0].match(/videos_offline\/([^"']+)/)?.[1] || "",
});
}
console.log(`Procesando ${matches.length} videos...\n`);
let replaced = 0,
failed = 0;
for (const m of matches.reverse()) {
const vimeoId = finalMap[m.src];
if (!vimeoId) {
failed++;
continue;
}
const vimeoEmbed = `<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:10px;border-radius:8px;background:#000;">
<iframe src="https://player.vimeo.com/video/${vimeoId}"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allow="autoplay;fullscreen;picture-in-picture" allowfullscreen loading="lazy">
</iframe>
</div>`;
const replacement = `<div class="video-container">
${vimeoEmbed}
${m.full}
</div>`;
html =
html.substring(0, m.index) +
replacement +
html.substring(m.index + m.full.length);
replaced++;
}
console.log(`${replaced} videos con reproductor Vimeo`);
if (failed > 0)
console.log(`${failed} videos sin mapear (mantenidos como locales)`);
fs.writeFileSync(LIBRO, html, "utf-8");
console.log(
`✅ LIBRO_DE_ESTUDIO.html actualizado (${originalSize}${html.length} bytes)`,
);
}
fixLibro();
File diff suppressed because it is too large Load Diff
+4
View File
@@ -0,0 +1,4 @@
# Recursos Pendientes de Descarga
Lista de todos los materiales que faltan para alcanzar el 100% offline.
+19
View File
@@ -0,0 +1,19 @@
const fs = require('fs');
const path = require('path');
const p = 'descargar-curso/.mapa_videos.json';
let m = {};
try {
if (fs.existsSync(p)) {
m = JSON.parse(fs.readFileSync(p, 'utf-8'));
}
} catch (e) {}
const files = fs.readdirSync('descargar-curso/descargas/videos_offline');
for (const f of files) {
const match = f.match(/MX_video_(\d+)/);
if (match) {
m[match[1]] = f;
}
}
fs.writeFileSync(p, JSON.stringify(m, null, 2), "utf-8");
console.log("Map rebuilt.");
+5
View File
@@ -0,0 +1,5 @@
const fs = require('fs');
const p = 'descargar-curso/.mapa_videos.json';
const m = JSON.parse(fs.readFileSync(p, 'utf-8'));
m['1175436659'] = 'MX_video_1175436659.mp4';
fs.writeFileSync(p, JSON.stringify(m, null, 2));
+25
View File
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=descargar-curso/descargas/LIBRO_DE_ESTUDIO.html">
<title>Redirigiendo a KSALDIS-DT...</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #fdfdfd;
color: #333;
}
</style>
</head>
<body>
<p>Redirigiendo al Dashboard del curso...</p>
<script>
window.location.replace("descargar-curso/descargas/LIBRO_DE_ESTUDIO.html");
</script>
</body>
</html>
+58
View File
@@ -0,0 +1,58 @@
import fs from 'fs';
const dbPath = 'descargar-curso/.mapa_videos.json';
const db = JSON.parse(fs.readFileSync(dbPath, 'utf-8'));
let total = 0;
let downloaded = 0;
let missing = [];
for (const mod of db.modulos) {
for (const sec of mod.secciones) {
for (const tema of sec.temas) {
// Text contents
if (tema.contenido_html) {
total++;
const htmlPath = `descargar-curso/descargas/secciones/${mod.carpeta}/${sec.carpeta}/${tema.contenido_html}`;
if (fs.existsSync(htmlPath)) {
downloaded++;
} else {
missing.push(`[Texto] ${tema.titulo}`);
}
}
// Videos
if (tema.videos && tema.videos.length > 0) {
tema.videos.forEach(v => {
total++;
const videoPath = `descargar-curso/descargas/secciones/${mod.carpeta}/${sec.carpeta}/${v.archivo_local}`;
if (fs.existsSync(videoPath)) {
downloaded++;
} else {
missing.push(`[Video] ${v.titulo}`);
}
});
}
// Resources
if (tema.recursos && tema.recursos.length > 0) {
tema.recursos.forEach(r => {
total++;
const recursoPath = `descargar-curso/descargas/secciones/${mod.carpeta}/${sec.carpeta}/${r.archivo_local}`;
if (fs.existsSync(recursoPath)) {
downloaded++;
} else {
missing.push(`[Recurso] ${r.titulo} (Esperado: ${r.archivo_local})`);
}
});
}
}
}
}
console.log(`Total: ${total}`);
console.log(`Downloaded: ${downloaded}`);
console.log(`Missing: ${total - downloaded}`);
console.log("Missing Items:");
missing.forEach(m => console.log(" - " + m));