22import re
33import platform
44import importlib
5+ from pathlib import Path
6+ import subprocess
7+
58
69def bible (lib ):
710 try :
811 if importlib .import_module (lib ):
912 return importlib .import_module (lib )
1013 except :
1114 try :
12- os .system (f'pip install { lib } ' )
15+ os .system (f'pip install { lib } ' )
1316 return importlib .import_module (lib )
1417 except :
15- os .system (f'sudo pip install { lib } ' )
18+ os .system (f'sudo pip install { lib } ' )
1619 return importlib .import_module (lib )
20+
1721
1822requests = bible ('requests' )
1923bs4 = bible ('bs4' )
2024selenium = bible ('selenium' )
25+ webdriver_manager = bible ('webdriver_manager' )
26+ from webdriver_manager .microsoft import EdgeChromiumDriverManager
27+ from webdriver_manager .chrome import ChromeDriverManager
2128from bs4 import BeautifulSoup
2229from selenium import webdriver
2330from urllib .request import urlopen
2431from selenium .common .exceptions import WebDriverException
2532
2633
27- def drive_download ():
34+ def popen (cmd ):
35+ startupinfo = subprocess .STARTUPINFO ()
36+ startupinfo .dwFlags |= subprocess .STARTF_USESHOWWINDOW
37+ process = subprocess .Popen (cmd , shell = True , startupinfo = startupinfo , stdout = subprocess .PIPE , stderr = subprocess .PIPE , stdin = subprocess .PIPE )
38+ return process .stdout .read ()
39+
40+
41+ def get_path_exe (exe_name , thirty_two = True ):
2842 '''
29- Esta função é responsavel por localizar a versão mais recente do Chrome Driver na internet e realiza o download
43+ Retorna a path de um executável
3044 '''
45+ path_exe = None
46+ DISCO = popen ('echo %WINDIR%' ).decode ().split (':' )[0 ]
3147
32- version = requests .get ("http://chromedriver.storage.googleapis.com/LATEST_RELEASE" ).text
33-
34- if platform .system () == "Windows" :
35- zipp = requests .get (f"https://chromedriver.storage.googleapis.com/{ version } /chromedriver_win32.zip" )
48+
49+ if thirty_two :
50+ path_program_files = rf'{ DISCO } :\Program Files (x86)'
3651 else :
37- zipp = requests . get ( f"https://chromedriver.storage.googleapis.com/ { version } /chromedriver_linux64.zip" )
52+ path_program_files = rf' { DISCO } :\Program Files'
3853
39- with open ("chromedriver.zip" , "wb" ) as r :
40- r .write (zipp .content )
4154
42- if platform .system () == "Windows" :
43- os .system ("tar -xf chromedriver.zip" )
44- os .system ("cls" )
45- else :
46- os .system ("unzip chromedriver.zip" )
47- os .system ("clear" )
48- os .remove ("chromedriver.zip" )
55+ for path in Path (path_program_files ).rglob (exe_name ):
56+ path_exe = path
57+
58+ return path_exe
4959
5060
51- def localizar_driver ():
61+ def return_driver ():
5262 '''
53- Esta função localiza o driver no computador do usuário
63+ Esta função baixa e retorna o driver no computador do usuário
5464 '''
5565
56- if os .path .isfile ('chromedriver' ) or os .path .isfile ('chromedriver.exe' ):
57- if os .name == 'posix' :
58- # Retorna o driver nos sistas operacionais posix(ubuntu, etc...)
59- return webdriver .Chrome (os .getcwd () + '/chromedriver' )
60- elif platform .system () == 'Windows' :
61- # Retorna o driver no sistema operacional windows
62- return webdriver .Chrome (executable_path = os .getcwd () + '\chromedriver.exe' )
63- else :
64- print ('Sistema operacional, não reconhecido.' )
65- print ('Envie o resultado abaixo para os desenvolvedores em https://github.com/hirios/raspamb/' )
66- print (os .name )
67- exit ()
68- else :
69- print ('Nao encontrei o driver na mesma pasta do arquivo\n Tentarei pela path do sistema' )
70- return webdriver .Chrome ()
66+ if get_path_exe ('msedge.exe' ):
67+ return webdriver .Edge (EdgeChromiumDriverManager ().install ())
68+
69+ if get_path_exe ('chrome.exe' ):
70+ return webdriver .Chrome (ChromeDriverManager ().install ())
71+
72+ print ("Você precisa ter o Google Chrome ou Edge instalado" )
73+ input ("" )
74+ quit ()
7175
7276
7377def links_zippyshare ():
@@ -79,15 +83,8 @@ def links_zippyshare():
7983 return lista_com_links
8084
8185
82- if os .path .isfile ("chromedriver.exe" ) or os .path .isfile ("chromedriver" ) :
83- pass
84- else :
85- drive_download ()
86-
87-
8886print ('A execução do código pode demorar de acordo com a internet\n ' )
8987url = 'https://www.anbient.com/anime/lista'
90-
9188html = urlopen (url )
9289bs = BeautifulSoup (html , 'html.parser' )
9390data = bs .find (class_ = "list" )
@@ -101,6 +98,7 @@ def links_zippyshare():
10198 d = dat [c ].text
10299 lista .append (str (d ).lower ())
103100
101+
104102def retornar_busca ():
105103 global driver
106104 global list_animes
@@ -152,7 +150,7 @@ def retornar_busca():
152150 print ('Recomenda-se que o chromedriver esteja na mesma pasta que este script' )
153151
154152 try :
155- driver = localizar_driver ()
153+ driver = return_driver ()
156154 driver .get (link )
157155 except WebDriverException as e :
158156 print ('Ocorreu um erro' )
@@ -187,6 +185,13 @@ def retornar_busca():
187185 zip = zip_link [0 ].get ('href' )
188186 picotado = str (link ).split ('/' )
189187 episode = 'https://{}{}' .format (picotado [2 ], zip )
188+
189+
190+ path_vlc = get_path_exe ("vlc.exe" , False )
191+
192+ if path_vlc :
193+ popen (f'"{ path_vlc } " { episode } ' )
194+
190195 driver .get (episode )
191196
192197retornar_busca ()
0 commit comments