Foro

Un nuevo champiñón para umbría: Exportador de partidas de Umbría

Comunidad Umbría :: La web en general :: Un nuevo champiñón para umbría: Exportador de partidas de Umbría

Como medida de seguridad los nuevos usuarios no pueden reabrir hilos antiguos.
Si crees que el tema es realmente necesario, por favor, abre uno nuevo en la sección correspondiente.
26/08/2018, 23:24

Hola a todos,

Para refrescar un poco mis conocimientos en el lenguaje de programación Python, la vida del programador medio funcionario es muy muy dura, me he puesto a picar un proyecto por diversión que consiste en un script para exportar partidas de la comunidad umbría.

Que para que sirve?

Bueno, sirve para que los nostálgicos puedan guardar backups de sus partidas, para leer partidas sin tener que estar conectados a la comunidad y bueno, para el que se quiera ir a otro lado o reaprovechar los recursos de sus partidas en otro lado lo pueda hacer.

El script lo podéis encontrar en mi github

https://github.com/miquelangel/exportadorUmbria

Actualmente funciona para linux, y probablemente para macOS, y hay que tener un mínimo de conocimientos para hacerlo funcionar. Es feo, no es rápido pero hace el trabajo. En un futuro lo iré trabajando para que funcione en windows, tenga interfaz gráfica y hacerlo sencillo de usar, pero poco a poco. Ni que decir tiene que su uso es totalmente gratuito y que si alguien está interesado en participar en el proyecto es más que bienvenido.

Disclaimer para programadores: Este código ha sido hecho mientras dos enanos me saltaban encima y no me dejaban ni vivir... es refactorizable, pythonizable.... etc, etc... el objetivo era crear un MVP (mínimo producto viable) y comprobar si era factible.

Ah sí, Chemo está enterado del proyecto y no desatará su furia divina....por ahora XDDDD

27/08/2018, 00:03

Por lo que he leído por encima te guarda incluso las imágenes, que chulo.

Espero probarlo algún día. Lo que no guarda era quien estaba asignado a cada escena, ¿no? Pregunto, he echado un vistazo al código por encima.. no obstante es algo muy menor.

Gracias por la herramienta de "scraping" para CU :D

27/08/2018, 00:14

Lo que te guarda son el creador y los destinatarios de los posts pero no los temas "administrativos" como quien tenía permiso y de que para una escena. La verdad es que está más planteada a leer una partida y llevarte la información más que a guardar la configuración porque emplea el mismo esquema seas máster, jugador, VIP o alguien que lee una partida finalizada....Si lo ves estando dentro de umbría te lo exporta.

Y si guarda las imágenes que se albergan en umbría, la foto de portada y personajes, y respeta los links hacia fuera para el resto.

Y nada hombre, si le sirve a alguien además de a mi ya me basta :)

27/08/2018, 01:28

Tengo una duda.

Si yo descargo un partida en la cual no fui máster, ¿puedo leer lo que el máster roleó en privado con otros jugadores que no sea yo?

27/08/2018, 01:56

Si la pregunta es si puedes ver cosas que no verías desde tu usuario entrando en la web de CU la respuesta es no.

Lo que se puede ver depende de muchos factores, si la partida es +18, está marcada como finalizada, los permisos de tu petsonaje,etc.....está herramienta te descarga solo lo que tú verias.....

Básicamente el programa recorre todas las páginas de una partida dándole al siguiente del navegador y lo guarda en un fichero.... No veáis temas de hacking y magia negra que no los hay. El código es público para que se vea que no hay trampa ni cartón. :)

Espero haber resuelto tu duda

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
27/08/2018, 09:47

Aunque tal como le comentaba a @thewalking.miguel el proyecto necesita conocimientos básicos de programación para ser usado (como mínimo poder ejecutar el código e instalar algunas librerías) es un primer paso para hacer un crawler que permita 'extraer' partidas de la web actual. Contra lo que pueden pensar algunos no tengo ningún inconveniente al respecto. Es más: me parece genial poder garantizar que quien quiera se podrá descargar la partida y en la Natilla será una opción implementada 'de serie' aunque la extracción se realizará de otra manera (os generará los contenidos en formato texto para que podáis hacer con ellos lo que queráis o, para los que tengan carné, en más formatos incluyendo PDF maquetado). Pero mientras no estemos en la tierra prometida herramientas como ésta permiten a quien quiera hacerlo extraer contenidos.

Un segundo paso para esto sería conseguir que se ejecutase con una interfaz gráfica sencillita tanto en Linux como en Windows, empaquetando las librerías para que cualquier usuario pueda acceder a su uso. Como el código es público estoy seguro que thewalking.miguel aceptará colaboraciones. Ahí queda el guante para todos los que me dicen siempre 'eh, que yo controlo de programación y quiero colaborar con Umbría'. En la Natilla será más amigable porque tendremos una API para estos proyectos, pero éste es un buen punto de partida para que vayáis practicando ;)

27/08/2018, 17:04

Hace como tres años hice algo parecido.

Descarga una partida de Umbria a formato tex, solo para Linux, requiere retocar alguna cosa, pero tiene entorno gráfico y todo.

Pongo el enlace por si a alguien le fuera útil. Aunque es mucho más complejo que el de Miguel desde un punto de vista de código, por lo tanto requiere mucho más trabajo para contribuir y encima es mucho menos útil por usar formatos raros. El objetivo era convertir una partida en una especie de libro, me sirvió mas o menos para lo que quería: aprende a trabajar con Tex, desecharlo para el trabajo, y comprobar que una partida eran varios miles de páginas y que nadie jamás la iba a leer de nuevo, ni siquiera yo o mis jugadores.

27/08/2018, 20:22

Mucho ánimo al proyecto y a sus colaboradores (sí, fácil de decir ahora que Chemo ha confirmado que no enviará un rayo para eliminar a los herejes y a sus seguidores). Muchos estaremos a la espera de una versión para Windows y para dummies.  :)

28/08/2018, 11:03

¡Felicidades por la iniciativa y el proyecto! ^___^

Muchos estaremos a la espera de una versión para Windows y para dummies.  :)

Me sumo a lo dicho por ElDorado.

 

28/08/2018, 12:07

Mis escasos conocimientos de programación datan de Basic (Randomize, Load, etc...) así que no puedo ser de mucha ayuda, pero agradezco de veras el esfuerzo de gente como thewalking.miguel y javierrivera2, y agradezco a Chemo que lo implemente de serie para la Natilla!!

Mientras, me pongo en la cola de los dummies que esperamos la herramienta para windows!! xDD

28/08/2018, 12:45

Falta un nombre, un nombre que implique conservación láctea de largo recorrido como es todo lo que guardas en el disco duro para no mirarlo jamás.

¿Umbría Cabrales tal vez?

28/08/2018, 13:14

Sr.Medusa:
Falta un nombre, un nombre que implique conservación láctea(...)

Dado que sirve para "descargar". Quizás lo más apropiado sea Umbría Yougurt Fibra con Bífidus. ¿Umbría Activa? ¿Umbría Yogurt con Avena? O algo así X_DDDDD

P.d.: No en serio. La idea es molona ya que muchos esperamos poderlas descargar, así que los dummies estaremos aquí cantando "Todo es fabulosoooo" de mientras...

28/08/2018, 17:43

Gracias por el aporte Javi. Evidentemente tu código es mucho más complejo y profesional, sus comentarios y tal. Le echaré un vistazo pero todavía tengo dudas sobre si python es la mejor opción para hacer algo que sea fácil de usar por "muggles". Me estoy planteando pivotar a Java y usar Jsoup ahora que la parte difícil, la de parsear los htmls está hecha. En cuanto a la utilidad lo dejo a criterio de cada cual :)

En cuanto al nombre no había pensado en nada en concreto pero no lo pongáis a la altura de la natilla o el danone porque no llega ni a petit suisse! ( para los millenials danonino...). Al ser una herramienta que va por fuera de todos los postres lácteos yo simplemente la llamaría "la cuchara" y su estado actual no llega ni a cucharita de heladería, esas de plástico y chungas que sirven para eso. A 3 meses vista tal vez se gane el derecho a llamarse otra cosa :)

El estado actual del proyecto se puede ver aquí en una exportación de pruebas realizada sobre la partida Carguero Cor de Konietzko.

https://drive.google.com/open?id=14cWgDiSfO9XMRdPB...

Se puede contribuir de muchas maneras, por ejemplo con ideas de lo que consideráis imprescindible o revisando lo que ya hay para adecuarlo a las necesidades de cuanta más gente mejor :)

28/08/2018, 17:57

Le echaré un vistazo pero todavía tengo dudas sobre si python es la mejor opción para hacer algo que sea fácil de usar por "muggles"

¿Por?. Quiero decir, ¿que tiene que ver el lenguaje de programación con el interface?.

Me estoy planteando pivotar a Java y usar Jsoup ahora que la parte difícil, la de parsear los htmls está hecha.

Demasiado tarde. Ahora que conoces Python la única forma para que te pases a Java es que te paguen mucho dinero.

28/08/2018, 18:08

Yo programo en java profesionalmente, y sí, dolor, mucho dolor....pero hay que pagar facturas y a cambio de programar java salgo de trabajar a las 3 de la tarde.... Menos mal que algo me cae de django a la boca para quitarme el mal sabor :)

En cuanto a la interfaz está claro que la bondad de esta no depende del lenguaje pero me preocupa el tema de satisfacer los requisitos de instalación para los múltiples sistemas operativos. Con un jar ejecutable con las dependencias empotradas me garantizo de que mientras el equipo tenga java, casi seguro, va a funcionar igual en todos lados :)

El siguiente paso será que funcione en windows y poner el código en formato "que no se me caiga la cara de vergüenza" XDD

28/08/2018, 18:12

Espero no desvirtuar mucho, pero ¿por qué "champiñón"?

28/08/2018, 18:22

Es como suelo llamar a los pequeños proyectos colaterales a un proyecto grande..... Umbría sería un árbol, lo mio...poco más que un champiñón :)

28/08/2018, 18:28
Editado: 28/08/2018, 18:29

Con un jar ejecutable con las dependencias empotradas me garantizo de que mientras el equipo tenga java, casi seguro, va a funcionar igual en todos lados :)

Con python puedes "congelar" el proyecto para que funcione en Windows o Mac sin nada instalado (normalmente un ejecutable congelado lleva incluido el interprete). Eso si, seguramente serán unos cuantos cientos de megas.

En linux llega con empaquetarlo, aunque puedes "congelarlo" para generar un snap, un flapak o similar,

28/08/2018, 18:39

Sé que hay herramientas para hacer eso, creo que hay una que se llama pyinstaller, pero no he hecho nada ni que se le parezca. Por suerte o desgracia no he creado nada de escritorio desde hace 20 años. Si tuviera un servidor donde ponerlo le metía un django y todos contentos pero no es el caso :)

Seguramente seguiré el proyecto en python porque me divierte más y para hacer un piloto. Cuando se parezca a lo que se tiene que parecer ya le daré una vuelta. Lo bonito de hacerlo en python y ejecutar vía script era que era muy fácil comprobar que no guardaba los usuarios/contraseñas de nadie....que luego la gente empieza a ver fantasmas :)

Chemo
 
Demiurgo (Fundador de la web) Carné Umbriano nº1
28/08/2018, 19:29

@Thewalking.miguel Me estoy planteando pivotar a Java y usar Jsoup ahora que la parte difícil, la de parsear los htmls está hecha. En cuanto a la utilidad lo dejo a criterio de cada cual :)

Está prohibido programar en Java para Umbría. :D

Es broma, claro. Cualquier ayuda bienvenida sea, pero yo personalmente le tengo un odio irracional a Java. Y eso que nunca tuve que programar ninguna aplicación en ese lenguaje. Soy tan radical que antes de que me obligasen me monté mi propia empresa para elegir yo en que programar XD

28/08/2018, 20:34

Venga Chemo....que vienes de PHP, tampoco hay que sacar mucho pecho XDDDD

Es un lenguaje muy pesado y para hacer una chorrada primero te obliga a hacer una factoría de chorradas, es lento y bueno....es java, pero al final la plataforma es lo de menos, si funciona y hace lo que tiene que hacer ya basta.

Al final somos los desarrolladores los que nos metemos en estas peleillas que tienen más que ver con filias y fobias personales que con los méritos/deméritos del lenguaje en cuestión :)

28/08/2018, 20:53

Por hacer algo
 

Cambios:

- Usa python3, no lo he probado en 2.7

- En vez de mechanize, una dependencia externa, usa urllib una libreria integrada.

- Le he hecho un gui rápido en Qt. Si esta pyqt instalado lanza el gui, si no pregunta en la linea de comandos.

- Algunas cosas que me atacaban (como indentar con tabuladores en vez de espacios) aunque sinceramente tampoco hay razones de peso.

- Pequeñas correcciones de las que ya ni me acuerdo.

Dado que son cambios bastante radicales no tengo nada claro que tenga mucho sentido pedir un pull-request

28/08/2018, 22:30

Sí, estoy de acuerdo, no tiene mucho sentido, se parecen como un huevo y una castaña XDDDD
 

ARAM
 
Carné Umbriano nº36
29/08/2018, 02:42

Al ser una herramienta que va por fuera de todos los postres lácteos yo simplemente la llamaría "la cuchara"

Para sacar el contenido del yogurt. Genial.

29/08/2018, 15:51

La cucharilla. La versión fetén ya la podemos llamar cuchara, con todas las letras... O el cazo XDXD

Gracias thewalking.miguel :) A ver si tengo un rato y soy capaz de instalarlo con mis cutreconocimientos de usuario borreguil de Ubuntu.

29/08/2018, 16:36

Si manejas ubuntu y sabes utilizar la terminal es muy sencillo de usar pero cualquier cosa que necesites me dices. Al igual, si mientras llego a una versión en cristiano para los windowseros si alguno tiene una necesidad imperiosa de guardar una partida que me avise y se la exporto con gusto.

31/08/2018, 21:10

Bueno he hecho media docena de cosas más en mi fork, casi todas relacionadas con la interface, no con el motor.

El problema es que esto cada vez se separa más del original, lo que si miguel sigue haciendo cosas hace que no sean sencillas de aprovechar.

A ver si puedo organizarlo de forma que sea más fácil compartir código.

P.D.: Quizá a alguien le interese, tengo una versión preliminar para Windows. No hace bien la conversión de caracteres, pero...

 

 

01/09/2018, 10:39

He hecho unas cuantas pruebas con tu código Javier y he sido incapaz de hacerlo funcionar. En python 2 no existen dependencias (urllib.requests creo) en python3 me cascaba porque beautifulsoup4 no reconocía el parser html5lib. Por otra parte mi código presenta el problema de que en python3 no existe la librería mechanize lo que puede llegar a dar problemas dependiendo de que versión de python tiene el cliente marcada por defecto.

Le he estado dando vueltas y creo que no es la solución más accesible para un usuario con poca experiencia así que voy a pivotar hacia javaFX que es capaz de generar ejecutables nativos para windows y macOS y los linuxeros siempre pueden marcar el .jar como ejecutable. Probaré esa vía y si no me convence....pues igual le doy otra oportunidad a python.

Aunque el motor me lo he currado yo le has hecho tus adaptaciones así que no te preocupes por la autoría que mi ego con poquito ya tiene, tira con tu repositorio y no mires atrás que a mi no me importa ser yo el que contribuya en tu repositorio si al final la vía python es la correcta.

 

01/09/2018, 10:41

Por cierto, le he encontrado otra utilidad al exportador.

Dirijo una partida y en una escena de unas 30 páginas había un detalle que no recordaba. Exporté la partida, abrí la escena en cuestión y como el exportador guarda las escenas con más de una página (las que le tienes que dar siguiente) en una única página (pasar de 30 veces de dar siguiente a uno tener que darle ninguna vez) fue super fácil encontrar la información dándole al buscar del navegador.

01/09/2018, 11:31
Editado: 01/09/2018, 11:33

El código no es compatible con python2, se puede hacer, pero implica mucho spaguetti.

Por otro lado creo que para correrlo en python3 solo te falta un "pip3 install html5lib" ;). Beatifoul soup necesita un parser instalado (admite varios).

Por otro lado la versión de Windows que enlazo es un zip con un .exe y unas librerias. No lo he probado, pero creo que con un simple "python setup.py build_msi" automaticamente generaría un instalador. No lo he hecho porque tal como esta el instalador no generaría iconos ni accesos al menú, pero todo eso es relativamente sencillo.

Sobre facilidad de uso para windowseros de python y mac creo que hay una cosa que es muy reveladora. El usuario avanzado sabe que programas de su ordenador estan hechos en java. Probablemente no tenga ni idea de cuales son en python.

De todas formas, para algo de uso tan puntual, creo que lo ideal es una web, pero eso es otra historia...

puede llegar a dar problemas dependiendo de que versión de python tiene el cliente marcada por defecto

No empaquetada correctamente.

Este hilo tiene más de 6 meses, lo usuarios novatos no pueden reabrir hilos antiguos.