¿Cómo plantearías programar algo así?

laZAr0

Buenas. Antes de nada decir que soy un completo novato al que hace no tanto le picó el gusanillo de la programación, más por hobby que por otra cosa.

He estado informándome y he leído en diferentes sitios que una buena manera de empezar a aprender a programar con motivación es intentar crear algo que te resuelva un problema en particular como por ejemplo automatizar tareas repetitivas y tediosas de tu día a día.

He estado dándole vueltas y se me ha ocurrido algo. Cuando estaba aprendiendo inglés, para mejorar vocabulario, si leía un libro o veía una película, siempre apuntaba las palabras que no conocía (a veces 20, otras 500) y las pasaba a una hoja de cálculo de Excel, después buscaba una a una las palabra en un diccionario online y copiaba y pegaba en otras columnas la fonética de la palabra, traducción y definición que aparecía en esa web para poder estudiarlas después o crear tarjetas en la app Anki.

He pensado que podría ponerme como primer objetivo intentar hacer algo así, un programa que cogiese la lista de palabras de un documento de texto o de la propia hoja de cálculo y buscase en la web del diccionario el resto de campos que yo quiera para importarlos desde ahí a una hoja de cálculo.

Simplemente me gustaría pediros que me digáis muy por encima de qué manera plantearías vosotros hacer algo así, teniendo en cuenta que no tengo mucha idea de nada, cual es la manera más sencilla, qué tecnologías serían necesarias, si hay algún lenguaje el cual creéis que sería el más indicado, etc. Simplemente una idea muy general para poder ponerme yo a buscar información de lo que sea necesario hasta poder hacer algo así.

Muchas gracias.

squ4r3

Yo no tengo mucha idea de programación, eso vaya por delante, así que seguro que hay otra gente que te pueda informar mejor.

Pero, con mi conocimiento, lo que haría es mirar primero cómo funciona una API, cómo puedes hacer requests para obtener datos. Por ejemplo, estoy viendo esta https://www.wordsapi.com/ que te permite 2.500 requests gratis al día.

Podrías hacer un programa que, tu le das como input una palabra, haga una petición a la api y te devuelva cierta información. De esa información coges los campos que quieras y los guardas en una base de datos (por ejemplo, sqlite).

En la web de wordsapi puedes hacer peticiones de prueba y ver los resultados que devuelve. Con respecto a lo que pides, creo que te da todo menos una traducción directa de la palabra al castellano. Podrías usar la API de Google Translate pero creo que es de pago, y está más enfocada a la traducción de frases enteras, y tú quieres palabras sueltas.

Yo, personalmente, lo haría en python y flask que es lo que más he usado. Python para hacer las peticiones y guardarlo en la base de datos y en flask dos páginas: una con un formulario para escribir una palabra y guardarla, y otra página que me muestre las palabras que ya tengo guardadas.

Esto mismo lo podrías hacer también perfectamente en javascript. Hay una parte que hace la petición (obtener los datos de la palabra que le has especificado, y guardarlo) y otra parte que es con la que interactúas con el sistema, que podría ser una página web sencilla en html.

Yo buscaría como API Calls Javascript.
HTML form (para tener un campo en el que escribir la palabra)
Display SQlite table in HTML

Si el número de palabras que vas a usar no es muy grande, también puedes hacer las peticiones a la API y mostrarlo directamente en una página. El inconveniente es que tienes 2.500 peticiones al día con la página que te he pasado, y cada vez que cargues la página vas a gastar peticiones por palabra. Puedes hacer una sola petición y guardarlo en una base de datos propia, y así cada vez que lo displayees no "gastas" peticiones.

1 3 respuestas
laZAr0

#2 Muchas gracias por tu respuesta. Para no tener "mucha idea" me has aportado un buen montón de información. Creo que con esto tengo para un buen rato y muchos conceptos en los que profundizar y otros con los que directamente empezar. Era justo el tipo de respuesta que esperaba, saber cómo alguien con cierta experiencia y conocimientos plantearía resolver ese problema.

Entiendo que no es un problema especialmente complejo y que cada persona tendrá una manera de enfocarlo en base a su experiencia y conocimientos. Mañana en cuanto pueda me pongo con ello y espero que algún día, más pronto que tarde, sea capaz al menos esquematizar, aunque solo sea conceptualmente, mis propias soluciones.

Muchas gracias de nuevo.

1
ShodawN

#1 Como no especificas ni lenguaje ni nada y quieres algo fácil... vba.
Si tienes un Excel montado, el propio Excel tiene una parte de programación (vba), así que no necesitas poner nada extra, te vale con lo que ya tienes (un botón para lanzar lo que montes y listo).

Y para empezar aquí tienes un ejemplo.
El ejemplo es muy viejo y puede que ya no funcione, pero la base es esa.

Ahora te toca decidir qué opción de las que de momento te hemos dado eliges ;P

Lo que sí me gusta de #2 es el uso de API (wordsapi por ejemplo). Estas suelen dar una respuesta más apropiada si vas a programar algo.
En el ejemplo que te paso el tio hace una llamada y recupera un html, mientras que las APIs normalmente te devolverán un json que es mucho más fácil de integrar en un programa.

Cryoned

todo lo de no starch suele tener reviews estelares y ese libro justo tiene lo que pides. Para novatos, un lenguaje bueno, ideas para automatizar y aprender.

Y si te vale online en vez de formato físico, es gratis https://automatetheboringstuff.com/

1 respuesta
nobody1

Google sheets

GOOGLETRANSLATE("Hello World";"en";"es")

1 1 respuesta
desu

#6 Esto es lo que haras en el trabajo

#2 Esto es lo que haces para aprender, yo no lo haria con excel, haz un document .txt y escribe la traducción en otro .txt

Kaledros

Entro en el hilo, veo que no se usa la palabra "csv" y vengo a decir que Excel se traga (o se tragaba, no creo que lo hayan cambiado) un .csv bien hecho y si no recuerdo mal podías exportar una hoja a .csv (aunque nunca lo hice), así que puedes matar dos pájaros de un tiro haciendo un fichero en texto plano y pudiéndolo abrir en Excel.

3 respuestas
JuAn4k4

#8 Si, excel abre csv, pero solo si está en el formato según el idioma y OS (muy ridiculo) lo abre bien con doble click.

Puedes importarlos especificando el formato desde Data > Import o algo así creo que era. Donde le dices cómo está separado, si es UTF8 u otra cosa, si lleva BOM o no, etc..

Existen tsv es por tabs, csv por comas, y luego hay uno para puntos y comas pero no recuerdo el nombre ssv ?

Maat

#8 si al final opta por utilizar python, puede tratar archivos excel directamente de una forma sencilla sin tener que transformarlos a otro formato si no recuerdo mal.

como consejo si te interesa el tema, antes de meterte en lo que dijeron por arriba de hacer tu propia api con formulario y base de datos (python + flask) si no controlas del tema haria una primera version mas facil en un simple script que recoja las palabras sin traduccion que tengas en tu propio excel y que lance peticiones contra alguna api existente que de traducciones (sino siempre podras tirar de alguna pagina para traducir y hacer un poco de scraping) y que con las respuestas te actualice el mismo excel.

luego ya teniendo esa base puedes ir añadiendo cosas, que lo suba a google docs para poder verlo desde cualquier otro pc etc etc, y ya si te sigue interesando pues te montas tu propia app con formulario que haga todo el trabajo automatizado

laZAr0

Muchas gracias a todos por las respuestas. He estado leyendo un poco y creo que al final me voy a decantar por la opción de Python + API para intentar acabar haciendo algo parecido a lo que dices, #8. Lo ideal sería poder acabar creando una app propia, aunque sea muy sencilla.

Creo que a la larga me será más útil eso que intentar alcanzar una solución por algún método más sencillo. Al fin y al cabo esto es en principio por hobby y se trata de aprender, aunque me lleve más tiempo pienso que a la larga me servirá para hacer cosas medianamente complejas. Por eso prefiero empezar con algún lenguaje de programación propiamente dicho que pueda seguir utilizando después en muchas otras cosas y no limitarme a vba o a trabajar sólo dentro del propio Excel. Hasta ahora sólo había trasteado algo de HTML y muy muy poco de JavaScript.

He empezado a leer el libro que recomienda #5 y estoy mirando el curso de píldoras informáticas también para dar mis primos pasos en Python y me parece un lenguaje muy intuitivo y atractivo.

Iré actualizando con los progresos el día que tenga base suficiente como para empezar. De momento podéis seguir sugiriendo ideas, os tengo a todos muy en cuenta.

Gracias de nuevo.

2 2 respuestas
isvidal

#11 Create un diario a lo: https://www.mediavida.com/foro/dev/diario-aplicacion-movil-horoscopo-python-react-nosql-651700/9

uvelongboard

#11
Lo que dices lo he hecho yo para algún trabajo de clase con Java. No lo que pides pero si la solución al uso, ya verás que es más sencillo de lo que parece.
He usado el entorno NetBeans y el JFrame como API.

syst3m-

Si te quieres divertir programando y ver resultados rápido: https://www.udemy.com/course/react-native-sin-fronteras/

Si te interesa el curso te mando un 30% del mismo por privado y el resto pues pagas los 15€ y apoyas al creador si te gusta.

Pero vamos que trastear con el código y ver los resultados en cualquier dispositivo ( web, iOS, android en tiempo real ) y dejar de lado la terminal que te devuelve un print ...

Yo también estudio por hobby y por ahora es con el lenguaje que más estoy disfrutando ( django creo que es igual pero en Python)

PD: no soy ningún experto, tan solo doy mi opinión.

1 respuesta
DaLmAu

#14 Del chico este me he pillado que lo saco gratis durante 3 días el último de python (flask) y html css... El tío es una maquina ahí currando en Nueva Zelanda.
La verdad que me decanto más por vuejs que reactjs pero igual que tu solo lo hago por hobbie, trabajo de otra cosa. Cuando dices django creo que es igual pero en python a que te refieres?

Usuarios habituales

  • syst3m-
  • uvelongboard
  • laZAr0
  • JuAn4k4
  • Kaledros
  • Cryoned
  • squ4r3