PYTHON - Script generador de enlace a partir de URL

Iniciado por rafaeljoseyepez, 4 Abril 2020, 19:36 PM

0 Miembros y 1 Visitante están viendo este tema.

rafaeljoseyepez

Buenas muchachos, estoy creando un pequeño script generador de enlaces para un pequeño proyecto, pero tengo ciertos problemas, ya les dejo el código y explico...

Antes les quiero dejar claro que soy nuevo y no soy programador, quería hacer esto y primero pregunté sobre que lenguaje me recomendaban, me decidí por Python, y ahora que comencé a hacerlo tengo las siguientes dudas:

Código (python) [Seleccionar]
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pyperclip
import os

def generar():
  while True:
    ID = enlace[47:83]
    RISN = enlace[94:101]
    enlace = input("Introduce tu enlace: ")

enlace = int(input("Introduce el numero de opcion"))

if enlace == 1:
  pyperclip.copy("https://www.testlink1.us/gener/NewClient.aspx?RIS=10&RID={ID}&RISN={RISN}&HashKey=-arVMfISNyX8JrXmCeJCU")
  generar()
elif enlace == 2:
  pyperclip.copy("https://www.testlink2.us/gener/NewClient.aspx?RIS=10&RID={ID}&RISN={RISN}&HashKey=-NAJ8WZR6XD7QVgrXF5wo")
  generar()
elif enlace == 3:
  pyperclip.copy("https://www.testlink3.us/gener/NewClient.aspx?RIS=10&RID={ID}&RISN={RISN}&HashKey=-nRnAdKgiU5o2W8eKg5NE")
  generar()
elif enlace == 4:
  pyperclip.copy("https://www.testlink4.us/gener/NewClient.aspx?RIS=10&RID={ID}&RISN={RISN}&HashKey=-uMZn75Og4QV0m7f8jZaF")
  generar()
elif enlace == 5:
  pyperclip.copy("https://www.testlink5.us/gener/NewClient.aspx?RIS=10&RID={ID}&RISN={RISN}&HashKey=-48BCshoVUnc1fke2KUDU")
  generar()
elif enlace == 6:
  pyperclip.copy("https://www.testlink6.us/gener/NewClient.aspx?RIS=10&RID={ID}&RISN={RISN}&HashKey=-tXEY8FstklVEtidUXprl")
  generar()


El código es muy sencillo, el usuario introduce un enlace (que siempre será del mismo formato como este:

Código (python) [Seleccionar]
https://www.testlink0.es/s/UnnScreen.aspx?SSID=5e6d8acd-fb5d-ca77-0339-ade98384ed7f&SuID=b72747264867&zToken=af416b63-ca8e-4574-a72f-c0a85dda74d1

y leerá del carácter 47 al 83 para obtener la variable ID, y luego leerá del carácter 94 al 101 para obtener la variable RISN, luego el usuario dirá que enlace quiere generar seleccionando el número de enlace, y si selecciona 1 el script tomará la opción 1, y a ese enlace va introducirle las variables extraídas del enlace inicial y así obtendrá el enlace final, hasta acá creo que redacté claro lo que hace, ahora... El problema...

El programa necesito colocarle más de 400 enlaces diferentes, allí en el ejemplo coloqué solamente 6, y sería bien tedioso armar el código con 400 enlaces distintos o más, lo que se me ocurre (y no sé si sea posible), colocar los enlaces en un archivo .txt y decirle a Python que si el usuario selecciona la opción 1 lean en el archivo la línea 1, si selecciona la opción 2, lea en el archivo la opción 2, y así sucesivamente, ¿Es esto posible? ¿o alguna sugerencia para simplificar el código y que sea más fácil colocar el montón de enlaces?

EdePC

Saludos,

- Siempre que reviso el manual oficial de python me regreso bastante desilusionado XD. Muy mal hecho ..., muy trozado, para buscar algo determinado es difícil porque no está completo, hay que ir buscándolo de a trozos en la enrome documentación  :¬¬

- Como referencia me sirven bastante estos libros gratuitos:

Python Programación v3.0 (Escuela Superior Politécnica del Litoral, 2017) [534 páginas]
http://blog.espol.edu.ec/ccpg1001/files/2017/05/PYTHON_PROGRAMACION_V3_0.pdf

Introducción a la programación con Python 3 (2014)
https://openlibra.com/es/book/introduccion-a-la-programacion-con-python-3

- Y en inglés:

Python Notes for Professionals book
https://books.goalkicker.com/PythonBook/

- Como que no encaja bien tu pedido con tu código, a no ser que los rangos no coincidan o que no entiendes que las funciones no se ejecutan solas ...

- Guiándome por tu pedido puedo sugerir el siguiente código:

Código (python) [Seleccionar]
#!/usr/bin/python
# -*- coding: utf-8 -*-

###########################################################
# El código es muy sencillo, el usuario Introducece un enlace
# (que siempre será del mismo formato como este:
# https://www.testlink0.es/s/UnnScreen.aspx?SSID=5e6d8acd-fb5d-ca77-0339-ade98384ed7f&SuID=b72747264867&zToken=af416b63-ca8e-4574-a72f-c0a85dda74d1

enlace = input('Usuario introduce un enlace: ')

###########################################################
# y leerá del carácter 47 al 83 para obtener la variable ID, y luego leerá del
# carácter 94 al 101 para obtener la variable RISN,

ID = enlace[47:83]
RISN = enlace[94:101]


###########################################################
# luego el usuario dirá que enlace quiere generar seleccionando el número de
# enlace, y si selecciona 1 el script tomará la opción 1,

nOpcion = int(input('Usuario introduce numero de opcion: '))

fichero = open('enlaces.txt')
for nLinea, linea in enumerate(fichero) :
  if nLinea + 1 == nOpcion :
    break
else :
  print('No existe una opcion ', nOpcion)
fichero.close()

###########################################################
# y a ese enlace va introducirle las variables extraídas del
# enlace inicial y así obtendrá el enlace final

linea = linea.strip() # Elimina espacios al inicio y fin y saltos de línea
linea = linea.replace('{ID}', ID)
linea = linea.replace('{RISN}', RISN)
print(linea)


- Si tienes dudas dale una lectura a los libros que puse, o si de verdad apenas estás tocando python puedes leerte tutoriales introductorios amenos como:

De 0 a Python (Kenkeiras, 2011) [18 páginas]
https://openlibra.com/es/book/de-0-a-python

El Tutorial de Python 3 (Python Argentina, 2017) [111 páginas]
http://docs.python.org.ar/tutorial/pdfs/TutorialPython3.pdf

-- Y luego se te serán más digeribles los libros o manuales más detallados, porque la ayuda que ofrece el propio python es bastante confusa y desconcertante :xD, sugiero tenerlo para consulta detallada sobre el lenguaje. Todos los artilugios que he utilizado las encuentras en el libro de Python Argentina, 2017 y también en el de 534 páginas por supuesto, tenlos a mano.

- Si estás trabajando en Linux puede que también te sirva:

Python para Principiantes (Eugenia Bahit, 2012)
https://openlibra.com/es/book/python-para-principiantes

rafaeljoseyepez

#2
Muchas gracias por responder y por compartirme ese código que es exactamente a lo que me refería...

Soy muy novato, déjame entender mejor el código...
- Pide el enlace al usuario
- Extrae de ese enlace el ID y RISN
- Crea una variable llamada nOpcion que dependerá del número de opción que introduzca el usuario para extraer del archivo enlaces.txt el número de línea
- Luego imprime en la pantalla el enlace extrayendo los datos.

y todo en prácticamente 15 líneas y un archivo de texto? :O

me parece increíble!!!!!
Voy a probar el código!

No he podido probar el código bien, al ejecutarlo y colocar el número de opción se cierra.
He intentado usar el while para agregar la función de bucle pero lo que hago es dañar el código, quisiera que al imprimir en la pantalla el resultado al presionar cualquier tecla regrese al inicio donde nuevamente pide introducir el enlace... en python no termino de entender el while, en batch era solamente decirle a través de goto para indicarle hasta donde ir... Acá cuando lo intento el código se daña y deja de funcionar y no abre :(

EDITO: Gracias, ya terminé de hacer todo! quedó todo listo lo que necesitaba partiendo de tu código nuevamente te agradezco, voy a chequear los enlaces que me dejaste, interesante todo y me di cuenta que muy sencillo entender el código, y leyendo aquí y allá se pueden armar lo necesario, seguiré leyendo a ver que tan difícil que en lugar de leer el archivo .txt lo lea desde un directorio en github.