<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CS50 Name Changer</title><link>https://auntjoestar.github.io/cs50NameChanger/</link><description>Recent content on CS50 Name Changer</description><generator>Hugo</generator><language>es-ni</language><lastBuildDate>Fri, 06 Dec 2024 09:06:12 -0600</lastBuildDate><atom:link href="https://auntjoestar.github.io/cs50NameChanger/index.xml" rel="self" type="application/rss+xml"/><item><title>¿Cómo usar?</title><link>https://auntjoestar.github.io/cs50NameChanger/how-to-use/</link><pubDate>Fri, 06 Dec 2024 09:06:12 -0600</pubDate><guid>https://auntjoestar.github.io/cs50NameChanger/how-to-use/</guid><description>&lt;p>Esta aplicación es fácil de usar, pero aquí tienes un breve tutorial para aclarar cualquier duda:&lt;/p>
&lt;h3 id="1-instalar-la-aplicación">1. Instalar la aplicación&lt;/h3>
&lt;p>Descarga la aplicación desde la &lt;a href="../downloads">página web&lt;/a> en la versión que prefieras. Al descargarla, se creará automáticamente una base de datos con contenido prepoblado, suficiente para las fotos del año &lt;strong>2025&lt;/strong>.&lt;/p>
&lt;h3 id="2-conexión-inicial">2. Conexión inicial&lt;/h3>
&lt;p>Al abrir la aplicación, aparecerá una pantalla para conectarte a la base de datos. Haz clic en el botón indicado, y se cargará un &lt;strong>formulario&lt;/strong> donde deberás seleccionar el programa, ciclo, semana y grupo correspondiente.&lt;/p></description></item><item><title>Acerca de</title><link>https://auntjoestar.github.io/cs50NameChanger/about/</link><pubDate>Thu, 05 Dec 2024 23:55:20 -0600</pubDate><guid>https://auntjoestar.github.io/cs50NameChanger/about/</guid><description>&lt;p>Esta aplicación surge como un proyecto personal para automatizar el &lt;strong>proceso de cambio de nombres&lt;/strong>
a las imagenes tomadas en los cursos de &lt;a href="https://code-fu.net.ni/">CS50 y Web50 Nicaragua&lt;/a>.&lt;/p>
&lt;p>Originalmente, este programa era un script de &lt;a href="https://www.python.org/">Python&lt;/a>
al cual se le debía pasar la ruta de una carpeta con todas las imagenes y el nombre que se repetirá
durante todas las fotos:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">import&lt;/span> os
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">rename&lt;/span>(path, name, extension):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> root, dirs, files &lt;span style="color:#f92672">in&lt;/span> os&lt;span style="color:#f92672">.&lt;/span>walk(path):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> count, file &lt;span style="color:#f92672">in&lt;/span> enumerate(files):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> os&lt;span style="color:#f92672">.&lt;/span>rename(os&lt;span style="color:#f92672">.&lt;/span>path&lt;span style="color:#f92672">.&lt;/span>join(root, file), os&lt;span style="color:#f92672">.&lt;/span>path&lt;span style="color:#f92672">.&lt;/span>join(root, &lt;span style="color:#e6db74">f&lt;/span>&lt;span style="color:#e6db74">&amp;#39;&lt;/span>&lt;span style="color:#e6db74">{&lt;/span>name&lt;span style="color:#e6db74">}{&lt;/span>count&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">.&lt;/span>&lt;span style="color:#e6db74">{&lt;/span>extension&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">&amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">main&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> path &lt;span style="color:#f92672">=&lt;/span> input(&lt;span style="color:#e6db74">&amp;#39;Ingrese el path donde se encuentran los archivos: &amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name &lt;span style="color:#f92672">=&lt;/span> input(&lt;span style="color:#e6db74">&amp;#39;Ingrese cómo desea que comience el nombre de los archivos: &amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> extension &lt;span style="color:#f92672">=&lt;/span> input(&lt;span style="color:#e6db74">&amp;#34;Ingresa la extensión de los archivos (ej: png, jpg, txt, etc): &amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rename(path, name, extension)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> __name__ &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#39;__main__&amp;#39;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> main()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Sin embargo, decidí que si quería compartir esto con otra gente era más apropiado hacerlo un programa propio,
un poco más &lt;em>formal&lt;/em>.&lt;/p></description></item><item><title>Descargar</title><link>https://auntjoestar.github.io/cs50NameChanger/downloads/</link><pubDate>Thu, 05 Dec 2024 22:41:15 -0600</pubDate><guid>https://auntjoestar.github.io/cs50NameChanger/downloads/</guid><description>&lt;p>Existe dos intalaciones, la portable y el instalador, descarga la que más se acomode a tus necesidades
(Es posible que lance un falso positivo en el antivirus y tengas que autorizarlo manualmente):&lt;/p>
&lt;h3 id="descargas">Descargas:&lt;/h3>
&lt;hr>
&lt;p>&lt;a href="CS50_Name_Changer.exe">CS50 Name Changer Portable&lt;/a>&lt;/p>
&lt;p>Versión portable que se puede abrir desde cualquier dirección. Ten en cuenta que el programa creará la base de datos y carpetas con las fotos, por lo cual se recomienda crearle su carpeta dedicada.&lt;/p></description></item><item><title>Bienvenido</title><link>https://auntjoestar.github.io/cs50NameChanger/home/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://auntjoestar.github.io/cs50NameChanger/home/</guid><description>&lt;h2 id="bienvenido">Bienvenido&lt;/h2>
&lt;p>Esta es la página de la aplicación CS50 Name Changer, haz click &lt;a href="./downloads">aquí&lt;/a> para acceder al link de descarga.&lt;/p>
&lt;hr>
&lt;h2 id="envía-tu-reseña">Envía tu reseña&lt;/h2>
&lt;p>¡Nos encantaría conocer tu opinión sobre la aplicación! Por favor, completa el formulario a continuación para compartir tu experiencia:&lt;/p>
&lt;form id="review-form" onsubmit="sendEmail(event)">
 &lt;p id="result" hidden>&lt;/p>
 &lt;label for="name">Tu Nombre:&lt;/label>
 &lt;input type="text" id="name" name="name" required class="form-control">
&lt;p>&lt;label for="email">Tu Email:&lt;/label>
&lt;input type="email" id="email" name="email" required class="form-control">&lt;/p>
&lt;p>&lt;label for="review">Tu Reseña:&lt;/label>&lt;/p>
 &lt;textarea id="review" name="review" rows="5" required class="text-area">&lt;/textarea>
 &lt;!-- reCAPTCHA -->
 &lt;div class="g-recaptcha" data-sitekey="6LcppJQqAAAAABQiUBLKHiszdQD_ajG2qVt5T3F7">&lt;/div>
&lt;p>&lt;button type="submit" class="btn btn-primary" id="submit-button">Enviar Reseña&lt;/button>&lt;/p>
&lt;/form>
&lt;script>
 function sendEmail(e) {
 e.preventDefault(); 
 
 const result = document.getElementById("result");

 const recaptchaResponse = grecaptcha.getResponse();

 const submitButton = document.getElementById("submit-button");

 submitButton.disabled = true;

 if (!recaptchaResponse) {
 result.innerText = "Por favor, completa el CAPTCHA antes de enviar el formulario.";
 result.style.color = "#CC0000";
 result.hidden = false;
 submitButton.disabled = false;
 result.scrollIntoView({ behavior: 'smooth', block: 'start' });
 return;
 }

 const form = document.getElementById('review-form');

 const formData = {
 name: form.name.value,
 email: form.email.value,
 review: form.review.value,
 recaptcha: recaptchaResponse, 
 };

 emailjs
 .send('service_npss3g4', 'template_ivd82zo', formData)
 .then(() => {
 result.innerText = "Review enviada exitosamente";
 result.style.color = "#4BB543";
 result.hidden = false;
 result.scrollIntoView({ behavior: 'smooth', block: 'start' });
 grecaptcha.reset(); 
 submitButton.disabled = false;
 form.reset(); 
 })
 .catch((error) => {
 result.innerText = `Error: ${error.toString()}`
 result.style.color = "#CC0000";
 result.hidden = false;
 result.scrollIntoView({ behavior: 'smooth', block: 'start' });
 submitButton.disabled = false;
 });
 }
&lt;/script></description></item></channel></rss>