elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Revisar programa python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Revisar programa python  (Leído 1,284 veces)
987123564

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Revisar programa python
« en: 12 Agosto 2016, 18:07 »

Hola, he hecho un programa que te manda a unas páginas web para descargar episodios de pokemon según la temporada y episodios que introduzcas. Me encantaría que me dijesen como mejorarlo y algunos errores que pueda tener. Gracias por adelantado  ;-).
Saludos.
Código
  1. """
  2. Nota: Los episodios de pokemon se llaman asi:
  3. P0k3M0N.numero_temporadaxnumero_episodio.Es.avi.mp4
  4. Ejemplo: P0k3M0N.1x01.Es.avi.mp4
  5. """
  6. import webbrowser
  7. import os
  8. import temporadas
  9. import time
  10.  
  11. #abre el archivo ultimo que contiene el utlimo episodio al que se accedio
  12. f1 = open('ultimo.txt', 'r')
  13.  
  14. #abre el archivo ultimos que contiene los utlimos episodios a los que se accedieron
  15. f4 = open('ultimos.txt', 'r')
  16.  
  17. #variable que guarda si el usuario quiere salir del bucle
  18. salir = False
  19. lista1 = []
  20. lista2 = []
  21.  
  22. #añade a lista todos los archivos que tengan P0k3M0N en el nombre que hay en el directorio actual
  23. for archivo in os.listdir("."):
  24.    if "P0k3M0N" in archivo:
  25.        lista1.append(archivo)
  26.  
  27. #añade a lista2 solo el numero del episodio
  28. for i in lista1:
  29.    index = i.find("x")
  30.    str1 = i[index + 1:index + 3]
  31.    lista2.append(str1)
  32.  
  33. #muestra el ultimo episodio que se puso
  34. print("Ultimo: " + f1.readline())
  35. #muestra los ultimos episodios que se pusieron
  36. print("Ultimos: " + f4.readline())
  37.  
  38. f1.close()
  39. f4.close()
  40.  
  41. x = 1
  42. lista3 = []
  43. lista4 = []
  44.  
  45. for i in range(int(lista2[-1])):
  46.    y = str(x)
  47.    if y in lista2:
  48.        lista3.append(str(x))
  49.    x += 1
  50.  
  51. cuenta1 = 0
  52. cuenta2 = 0
  53.  
  54. for i in lista4:
  55. cuenta1 += 1
  56.  
  57. for i in lista3:
  58. cuenta2 += 1
  59.  
  60. if cuenta1 != 0:
  61. print("Tienes sueltos los siguientes: " + str(lista4))
  62.  
  63. if cuenta2 != 0:
  64. print("Tienes seguidos desde el " + lista3[0] + " hasta el " + lista3[-1])
  65.  
  66.  
  67. while salir == False:
  68.    print("[1] Temporada completa")
  69.    print("[2] Episodios sueltos")
  70.    print("[3] Salir")
  71.    input2 = input()
  72.    input1 = str(input2)
  73.    if input1 == "3":
  74.        salir = True
  75.    else:
  76.        if input1 == "1":
  77.            temporada = input("Temporada: ")
  78.            episodios = temporadas.episodios(temporada)
  79.            index = episodios.find("-")
  80.            primero = episodios[:index]
  81.            segundo = episodios[index + 1:]
  82.            x = int(primero)
  83.            for i in range(int(segundo) - int(primero)):
  84.                if len(str(x)) == 1:
  85.                    url = "http://seriesblanco.com/serie/979/temporada-" + str(temporada) + "/capitulo-0" + str(x) + "/pokemon.html"
  86.                    webbrowser.open_new_tab(url)
  87.                    time.sleep(20)
  88.                else:
  89.                    url = "http://seriesblanco.com/serie/979/temporada-" + str(temporada) + "/capitulo-" + str(x) + "/pokemon.html"
  90.                    webbrowser.open_new_tab(url)
  91.                    time.sleep(20)
  92.                x += 1
  93.        else:
  94.            input4 = input("Temporada: ")
  95.            temporada = str(input4)
  96.            arch = open('temporadas.txt', 'r')
  97.            total = arch.readlines()
  98.            numero = total[int(input4) - 1]
  99.            search1 = numero.find("-")
  100.            search2 = numero.find("\n")
  101.            segundo = numero[search1 + 1:search2]
  102.            print("Esta temporada tiene " + segundo + " capitulos")
  103.            input3 = input("Episodios: ")
  104.            episodios = str(input3)
  105.            if "-" in episodios:
  106.                index = episodios.find("-")
  107.                primero = episodios[:index]
  108.                segundo = episodios[index + 1:]
  109.                x = int(primero)
  110.                numeros = "123456789"
  111.                for i in range(int(segundo) - int(primero) + 1):
  112.                    if str(x) in numeros:
  113.                        url = "http://seriesblanco.com/serie/979/temporada-" + temporada + "/capitulo-0" + str(x) + "/pokemon.html"
  114.                        webbrowser.open_new_tab(url)
  115.                    else:
  116.                        url = "http://seriesblanco.com/serie/979/temporada-" + temporada + "/capitulo-" + str(x) + "/pokemon.html"
  117.                        webbrowser.open_new_tab(url)
  118.                    x += 1
  119.                    if int(segundo) > 10:
  120.                        time.sleep(10)
  121.                os.remove("ultimos.txt")
  122.                f3 = open('ultimos.txt', 'w')
  123.                f3.write(episodios)
  124.                f3.close()
  125.            elif "," in episodios:
  126.                numeros = "123456789"
  127.                cuenta = 0
  128.                lista = []
  129.                index = episodios.find(",")
  130.                numero = episodios[:index]
  131.                lista.append(numero)
  132.                while index != -1:
  133.                    index = episodios.find(",")
  134.                    print(index)
  135.                    if episodios[index + 1] == " ":
  136.                        episodios = episodios[index + 2:]
  137.                        print(1)
  138.                    elif episodios[index + 1] in numeros:
  139.                        print(episodios)
  140.                        episodios = episodios[index + 1:]
  141.                        print(episodios)
  142.                        print(2)
  143.                    numero = episodios[:index]
  144.                    lista.append(numero)
  145.                lista.pop(-1)
  146.                print(lista)
  147.                for i in lista:
  148.                    cuenta += 1
  149.                for i in range(cuenta):
  150.                    if len(lista[i]) == 1:
  151.                        url = "http://seriesblanco.com/serie/979/temporada-" + temporada + "/capitulo-0" + lista[i] + "/pokemon.html"
  152.                        webbrowser.open_new_tab(url)
  153.                    else:
  154.                        url = "http://seriesblanco.com/serie/979/temporada-" + temporada + "/capitulo-" + lista[i] + "/pokemon.html"
  155.                        webbrowser.open_new_tab(url)
  156.            else:
  157.                if len(episodios) == 1:
  158.                    url = "http://seriesblanco.com/serie/979/temporada-" + temporada + "/capitulo-0" + episodios + "/pokemon.html"
  159.                    webbrowser.open_new_tab(url)
  160.                    os.remove("ultimo.txt")
  161.                    f2 = open('ultimo.txt', 'w')
  162.                    f2.write(episodios)
  163.                    f2.close()
  164.                else:
  165.                    url = "http://seriesblanco.com/serie/979/temporada-" + temporada + "/capitulo-" + episodios + "/pokemon.html"
  166.                    webbrowser.open_new_tab(url)
  167.                    os.remove("ultimo.txt")
  168.                    f2 = open('ultimo.txt', 'w')
  169.                    f2.write(episodios)
  170.                    f2.close()
También necesita unos ficheros .txt y otro módulo.
El otro módulo se llama temporadas.py y contiene lo siguiente:
Código
  1. def episodios(n_temporada):
  2.        f = open('temporadas.txt', 'r')
  3.        temporadas = f.readlines()
  4.        temporada = temporadas[int(n_temporada) - 1]
  5.        index = temporada.find('\n')
  6.        return temporada[:index]
Los ficheros .txt se llaman temporadas.txt, que contiene el número de episodios de cada temporada:
1-83
1-34
1-40
1-51
1-64
1-39
1-51
1-53
1-46
1-51
1-51
1-52
1-33
1-49
1-48
1-44
1-47
1-44

Y los otros son ultimo.txt y ultimos.txt que su contenido se actualiza cada vez que se usa el programa.
Ruego respuesta y que les parece.
Saludos y gracias de antemano  ;-).


« Última modificación: 13 Agosto 2016, 22:34 por 987123564 » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.228

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Revisar programa python
« Respuesta #1 en: 12 Agosto 2016, 20:53 »

mucho código para prestarle atención a todo pero a vuelo de pájaro te dire:
1) podés usar como mínimo funciones para que sea más claro y fácil de modificar
2)
Código
  1. print("[1] Temporada completa")
  2. print("[2] Episodios sueltos")
  3. print("[3] Salir")
¿para qué tantos print?

Código
  1. print("""
  2.    [1] Temporada completa)
  3.    [2] Episodios sueltos)
  4.    [3] Salir
  5.          """)

3)
Código
  1. input2 = input()
  2. input1 = str(input2)

eso es redundancia!  input devuelve una clase string,¿por las dudas la volvés a declarar?

4)
Código
  1. if input1 == "3":
  2.        salir = True
  3.    else:
  4.        if input1 == "1": #etc
  5.  

podría ser:
Código
  1. if input1 == "3":
  2.        salir = True
  3. elif input1 == "1":  #etc
  4.  

dicho sea de paso todo los elif se podrían hacer con el uso de un diccionario   y funciones como te dije antes
5)
Código
  1. print("Tienes seguidos desde el " + lista3[0] + " hasta el " + lista3[-1])
no está mal pero se podría:
Código
  1. print("Tienes seguidos desde el {} hasta el {}".format(lista3[0],lista3[-1]))

y seguramente hay más cosas que no vi ahora. Con tiempo y ganas lo reviso completo.

 


En línea

987123564

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Revisar programa python
« Respuesta #2 en: 13 Agosto 2016, 00:18 »

1) podés usar como mínimo funciones para que sea más claro y fácil de modificar
Código
  1. print("""
  2.    [1] Temporada completa)
  3.    [2] Episodios sueltos)
  4.    [3] Salir
  5.          """)
Yo pensaba que poner tres comillas solo servía para describir las funciones pero ahora ya o sé.  ;D
Citar
3)
Código
  1. input2 = input()
  2. input1 = str(input2)

eso es redundancia!  input devuelve una clase string,¿por las dudas la volvés a declarar?
Ya pero lo que fue es que una vez lo puse así y me decía que lo que devolvía era un int y hasta que no puse eso me daba ese error

Citar

4)
Código
  1. if input1 == "3":
  2.        salir = True
  3.    else:
  4.        if input1 == "1": #etc
  5.  

podría ser:
Código
  1. if input1 == "3":
  2.        salir = True
  3. elif input1 == "1":  #etc
  4.  
Lo que yo pretendía con eso era que se estructurase mejor para que me sea más fácil buscar las distintas partes.
Citar
dicho sea de paso todo los elif se podrían hacer con el uso de un diccionario   y funciones como te dije antes
5)
Código
  1. print("Tienes seguidos desde el " + lista3[0] + " hasta el " + lista3[-1])
no está mal pero se podría:
Código
  1. print("Tienes seguidos desde el {} hasta el {}".format(lista3[0],lista3[-1]))
Yo soy más o menos nuevo y no me sé estos trucos del diccionario, pero ya me lo voy apuntando. :D

Con esto que me has dicho ya es más de lo que esperaba así que perfecto.
Gracias y un saludo :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROGRAMA EN PYTHON
Scripting
D@V1D94 2 4,257 Último mensaje 31 Enero 2012, 20:30
por D@V1D94
me pueden revisar a ver si esta bien este programa en c++
Programación C/C++
eduardo17445 1 1,651 Último mensaje 17 Junio 2012, 14:11
por 0xDani
[Python/Tk]Mi Programa se ríe de mi
Scripting
AdeLax 2 1,589 Último mensaje 11 Agosto 2013, 12:19
por AdeLax
me podrian revisar este programa de listas m da error en las ultima llave
Programación C/C++
eduardo17445 1 883 Último mensaje 29 Abril 2015, 14:49
por eferion
Programa para revisar los errores de sintaxis de un programa en C. « 1 2 3 »
Programación C/C++
NOB2014 22 6,979 Último mensaje 15 Octubre 2016, 19:44
por geeke
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines