Ficha del invitado
+ +Este enlace no es válido o ha caducado. Escríbenos a andaquenosabesnada@gmail.com y te mandamos uno nuevo.
+{esc(F['description'])}
+ + +diff --git a/Dockerfile b/Dockerfile index f942aac..e40fe21 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ RUN apk add --no-cache python3 py3-pillow COPY public/ /usr/share/nginx/html/ COPY build.py /app/build.py COPY server.py /app/server.py +COPY guest_form.json /app/guest_form.json COPY nginx.conf /etc/nginx/conf.d/default.conf COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh diff --git a/guest_form.json b/guest_form.json new file mode 100644 index 0000000..ed86b8a --- /dev/null +++ b/guest_form.json @@ -0,0 +1,183 @@ +{ + "title": "Anda Que No Sabes Ná Podcast", + "description": "Queremos conocerte un poco antes de darle al REC. No hace falta que prepares respuestas perfectas: esto nos sirve para encontrar buenas historias, preguntas interesantes y, sobre todo, temas sobre los que merezca la pena hablar.", + "items": [ + { + "type": 11, + "title": "", + "desc": "" + }, + { + "type": 8, + "title": "👤 Tú", + "desc": "" + }, + { + "type": 0, + "title": "Nombre y cómo prefieres que te presentemos", + "desc": "", + "required": true, + "options": [] + }, + { + "type": 1, + "title": "¿A qué te dedicas actualmente?", + "desc": "", + "required": true, + "options": [] + }, + { + "type": 1, + "title": "¿Cuál es tu proyecto, empresa o actividad principal?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 0, + "title": "LinkedIn, web o cualquier enlace que nos ayude a conocerte mejor", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 1, + "title": "Tus redes sociales que quieras que mencionemos o utilicemos para promocionar el episodio", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 8, + "title": "🎙️ Para conocerte un poco mejor", + "desc": "" + }, + { + "type": 1, + "title": "Si tuvieras que contarnos tu historia en dos minutos, ¿por dónde empezarías?", + "desc": "", + "required": true, + "options": [] + }, + { + "type": 1, + "title": "¿Qué tema podrías estar hablando durante horas sin aburrirte?", + "desc": "", + "required": true, + "options": [] + }, + { + "type": 1, + "title": "¿Hay alguna experiencia, proyecto, fracaso, éxito o anécdota que te parezca especialmente buena para contar en el podcast?", + "desc": "", + "required": true, + "options": [] + }, + { + "type": 1, + "title": "¿Qué idea, mito o tópico de tu sector te gustaría desmontar?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 8, + "title": "🔥 Vamos a meternos en harina", + "desc": "Contestar en esta sección es opcional" + }, + { + "type": 1, + "title": "¿Hay alguna opinión tuya sobre tu sector que pueda generar debate?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 1, + "title": "¿Qué pregunta te hacen siempre y estás cansado/a de responder?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 1, + "title": "¿Hay algo que normalmente no se cuenta cuando se habla de tu profesión, sector o trayectoria y que crees que deberíamos contar?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 1, + "title": "Si pudiéramos conseguir que después de escucharte alguien cambiara de opinión sobre una cosa, ¿qué te gustaría que fuera?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 8, + "title": "🚧 Territorio delicado", + "desc": "No hace falta justificarlo. Queremos saber dónde están tus límites antes de empezar." + }, + { + "type": 1, + "title": "¿Hay algún tema que prefieras que no toquemos?", + "desc": "", + "required": true, + "options": [] + }, + { + "type": 1, + "title": "¿Hay alguna persona, empresa, experiencia o asunto sobre el que prefieras que no hagamos preguntas?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 1, + "title": "Y... ¿Hay algún otro tema de tu vida que quieras contarnos?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 8, + "title": "📣 Y para terminar...", + "desc": "Contestar en esta sección es opcional" + }, + { + "type": 1, + "title": "¿Hay algún proyecto, libro, producto, evento o iniciativa que tengas ahora mismo y que te gustaría dar a conocer durante la entrevista?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 1, + "title": "¿Hay alguna pregunta que te encantaría que te hiciéramos y que normalmente nadie te hace?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 1, + "title": "¿Hay alguna historia que te gustaría contar sí o sí?", + "desc": "", + "required": false, + "options": [] + }, + { + "type": 8, + "title": "Antes de enviar", + "desc": "Gracias por tu tiempo y tu disposición. Este podcast se realiza de forma altruista y colaborativa. Ni la preparación, ni la grabación, ni la publicación contemplan remuneración económica. La participación es voluntaria y con buena fe, con la intención de compartir conocimiento, experiencias e historias. Al aceptar participar, entiendes y estás de acuerdo con estas condiciones." + }, + { + "type": 4, + "title": "Aceptación de condiciones", + "desc": "", + "required": true, + "options": [ + "He leído y acepto las condiciones de participación descritas arriba." + ] + } + ] +} \ No newline at end of file diff --git a/make_guest_form.py b/make_guest_form.py new file mode 100644 index 0000000..4319e2b --- /dev/null +++ b/make_guest_form.py @@ -0,0 +1,88 @@ +"""Genera public/invitados.html a partir de guest_form.json (copia de las preguntas del formulario de Google).""" +import html, json + +esc = html.escape +F = json.load(open('guest_form.json', encoding='utf-8')) + +secciones, actual, nq = [], None, 0 +consent = None +for it in F['items']: + t = it['type'] + if t == 8: + actual = {'titulo': it['title'], 'nota': it['desc'], 'preguntas': []} + secciones.append(actual) + elif t in (0, 1): + nq += 1 + actual['preguntas'].append({'id': f'q{nq:02d}', 'titulo': it['title'], 'desc': it['desc'], + 'req': it['required'], 'largo': t == 1}) + elif t == 4: + consent = {'titulo': it['title'], 'opcion': it['options'][0], 'req': it['required']} + consent_text = secciones[-1]['nota'] + secciones.pop() # la última sección solo contiene las condiciones + +def pregunta(q): + mark = ' *' if q['req'] else '' + campo = (f'' + if q['largo'] else + f'') + d = f'{esc(q["desc"])}' if q['desc'] else '' + return f' ' + +bloques = [] +for s in secciones: + nota = f'\n
{esc(s["nota"])}
' if s['nota'] else '' + bloques.append(f' ') + +page = f''' + + + + + +Este enlace no es válido o ha caducado. Escríbenos a andaquenosabesnada@gmail.com y te mandamos uno nuevo.
+{esc(F['description'])}
+ + +Este enlace no es válido o ha caducado. Escríbenos a andaquenosabesnada@gmail.com y te mandamos uno nuevo.
+Queremos conocerte un poco antes de darle al REC. No hace falta que prepares respuestas perfectas: esto nos sirve para encontrar buenas historias, preguntas interesantes y, sobre todo, temas sobre los que merezca la pena hablar.
+ + +Como cualquier servidor web, nuestro servidor puede registrar de forma temporal la dirección IP, la fecha y la página solicitada, únicamente por seguridad y para detectar abusos. No usamos esos registros para identificar a nadie ni los compartimos.
Los enlaces a YouTube, TikTok e Instagram llevan a servicios de terceros, que tienen sus propias políticas de privacidad.
-Si nos escribes desde la página de contacto o de patrocinadores, recogemos los datos que tú mismo introduces: nombre, correo electrónico, mensaje y motivo o tipo de colaboración y, en el formulario de patrocinio, también el nombre de la empresa y su web si la indicas. Los usamos únicamente para responderte. La base legal es tu consentimiento, que das al marcar la casilla del formulario.
La web no guarda los mensajes: el formulario los reenvía por correo electrónico, a través de nuestro propio servidor de correo, a la cuenta del programa. Los conservamos solo el tiempo necesario para atender tu consulta y no los cedemos a terceros ni los usamos para otra cosa. Los formularios incluyen medidas antispam que no identifican a nadie. Puedes pedirnos que borremos tus datos escribiendo al correo de contacto.
+Ficha del invitado. Si participas como invitado y rellenas la ficha (a la que se accede solo mediante un enlace personal), recogemos las respuestas que escribes, que pueden incluir datos sobre tu actividad profesional, tu trayectoria y, si tú decides contarlo, aspectos personales. Las usamos únicamente para preparar la entrevista y el episodio, y se envían por correo electrónico al equipo del programa; la web no las guarda. No las cedemos a terceros. La base legal es tu consentimiento, que das al aceptar las condiciones de participación y esta política, y puedes pedirnos que las borremos en cualquier momento.
+Usamos una aplicación de gestión de redes sociales de código abierto (Postiz), instalada en un servidor propio, para programar y publicar el contenido del programa. La aplicación está pensada para uso interno: solo la utiliza el propietario de las cuentas y no está abierta al público.
Para funcionar, la aplicación solicita autorización a las cuentas del propio programa y accede a:
diff --git a/public/styles.css b/public/styles.css index 4e94f06..1e31879 100644 --- a/public/styles.css +++ b/public/styles.css @@ -239,3 +239,12 @@ footer { margin-top: 40px; border-top: 1px solid var(--line); background: var(-- .views b { font-weight: 700; } .scard .views { left: 6px; bottom: 6px; padding: 2px 9px 2px 7px; font-size: .72rem; } .feat .views { left: 14px; bottom: 14px; font-size: .9rem; padding: 4px 13px 4px 11px; } + +/* ficha del invitado */ +[hidden] { display: none !important; } +.guest .sec { display: grid; gap: 18px; margin: 0 0 22px; padding: 20px 22px 24px; border: 1px solid var(--line); border-radius: 16px; background: linear-gradient(135deg, var(--card), var(--bg2)); } +.guest .sec legend { padding: 0 10px; font-weight: 700; font-size: 1.1rem; color: var(--neon); } +.guest .form small { display: block; margin-top: 2px; color: var(--muted); font-weight: 400; } +.guest .note, .note { margin: 0; color: var(--muted); font-size: .92rem; } +.guest .note a { color: var(--neon); text-decoration: underline; text-underline-offset: 3px; } +.req { color: var(--amber); font-weight: 700; } diff --git a/public/terminos.html b/public/terminos.html index bf47e39..3a67253 100644 --- a/public/terminos.html +++ b/public/terminos.html @@ -36,19 +36,31 @@Estas condiciones se aplican a las personas que, tras ser invitadas, participan en el programa Anda Que No Sabes Ná y rellenan la ficha del invitado. Se aceptan marcando la casilla correspondiente al final de dicha ficha.
+El tratamiento de los datos que se faciliten en la ficha se describe en la política de privacidad. Para cualquier duda sobre estas condiciones, escríbenos a contacto@andaquenosabesna.com.
+ +Los vídeos, textos, imágenes, el nombre y el logotipo de Anda Que No Sabes Ná pertenecen a sus autores y a las personas que participan en el programa. No está permitido reproducirlos, distribuirlos ni usarlos con fines comerciales sin autorización previa por escrito. Puedes compartir los enlaces a nuestros vídeos libremente.
-La web contiene enlaces a sitios de terceros. No controlamos su contenido ni somos responsables de sus políticas o prácticas.
-La web se ofrece «tal cual», sin garantías de disponibilidad continua. En la medida permitida por la ley, no seremos responsables de los daños derivados de su uso o de la imposibilidad de acceder a ella. Las opiniones expresadas en el programa son de quienes las dicen.
-Podemos actualizar estas condiciones. La versión vigente es la publicada en esta página, con su fecha de actualización.
-Estas condiciones se rigen por la legislación española. Para cualquier duda, escríbenos a andaquenosabesnada@gmail.com.