Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.21 KB | None | 0 0
  1. import requests
  2. import re
  3. import threading
  4. import os
  5.  
  6. #SCRIPT FEITA POR JURISHCRYPTER
  7. #SE COMPARTILHAR PF DEIXAR CREDITOS
  8. #EXCLUSIVA DO THOTHUB.TV
  9. #--------CONFIGURAÇÃO--------
  10. #Coloque a URL do site entre aspas abaixo:
  11. URL_IGOR = "https://www.igormenezes.fot.br/portfolio/ensaio-interno/228429-ensaio-sensual-feminino-interno-sara-caus"
  12. #Numero de tarefas em paralelo para pesquisar no site (não exagere senão da erro)
  13. MAX_THREADS = 20
  14. #Nome do arquivo onde serão salvos os links obtidos do site (catalogados)
  15. ARQUIVO_LINKS = "linksNoSite.txt"
  16. #Nome do arquivo onde serão salvos os links encontrados no site (não catalogados)
  17. ARQUIVO_ENCONTRADOS = "linksEncontrados.txt"
  18. #Pasta onde TODAS as fotos serão salvas
  19. PASTA_FOTOS = "ThotHub"
  20. #Procurar por X fotos a mais
  21. PROCURAR_MAIS = 200
  22. #--------FIM---CONFIG--------
  23.  
  24. #NÃO MEXER
  25. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36'}
  26. threadLock = threading.Lock()
  27. smphr = threading.Semaphore(value=MAX_THREADS)
  28. threads = []
  29. file_found = open(ARQUIVO_ENCONTRADOS,"w+")
  30.  
  31. class iniciaScrapper(threading.Thread):
  32.     def __init__(self, ind, album, foundArray, folderName):
  33.         threading.Thread.__init__(self)
  34.         self.curBest = 0
  35.         self.ind = ind
  36.         self.album = album
  37.         self.found = foundArray
  38.         self.folder = folderName
  39.  
  40.     def run(self):
  41.         smphr.acquire()
  42.         withEditar=False
  43.         while(True):
  44.             filename=str(self.ind)+("-editar.jpg" if withEditar else ".jpg")
  45.             url=self.album+"_mg_"+filename
  46.             r = requests.get(url, headers)
  47.             if r.status_code == 200:
  48.                 print("%s baixada"%filename)
  49.                 if(str(self.ind) not in self.found):
  50.                     print("foto %s não estava catalogada :D"%filename)
  51.                     print(self.album+filename, file=file_found)
  52.                 if not os.path.isdir(PASTA_FOTOS):
  53.                     os.mkdir(PASTA_FOTOS)
  54.                 if not os.path.isdir("%s\%s"%(PASTA_FOTOS, self.folder)):
  55.                     os.mkdir("%s\%s"%(PASTA_FOTOS, self.folder))
  56.                 with open("%s\%s\%s"%(PASTA_FOTOS, self.folder, filename), 'wb+') as f:
  57.                     for chunk in r:
  58.                         f.write(chunk)
  59.             if(withEditar):
  60.                 withEditar=False
  61.                 break
  62.             else:
  63.                 withEditar=True
  64.         smphr.release()
  65.  
  66. r = requests.get(URL_IGOR, headers)
  67. if r.status_code == 200:
  68.     linkInfo = re.findall("https\:\/\/storage\.alboom\.ninja\/sites\/(\d+)\/albuns\/(\d+)\/[a-zA-Z0-9 _-]+\.jpg", r.text)
  69.     links = re.findall("https\:\/\/storage\.alboom\.ninja\/sites\/\d+\/albuns\/\d+\/([a-zA-Z0-9 _-]+)\.jpg", r.text)
  70.     folderName = re.findall("\<title\>(.*)\<\/title\>", r.text)[0].split('-')[1].replace(' ','')
  71.     print(folderName)
  72.  
  73.     siteNum = []
  74.     albumNum = []
  75.     for site, album in linkInfo:
  76.         siteNum = site
  77.         albumNum = album
  78.         break
  79.  
  80.     albumURL = "https://storage.alboom.ninja/sites/%s/albuns/%s/"%(siteNum,albumNum)
  81.  
  82.     out = open(ARQUIVO_LINKS,"w+")
  83.     resultadosJaRodados=[]
  84.     menor=re.search("(\d+)", links[0]).group()
  85.     maior=menor
  86.     for link in links:
  87.         atual = re.search("(\d+)", link).group()
  88.         if(atual not in resultadosJaRodados):
  89.             resultadosJaRodados.append(atual)
  90.             print(albumURL+link+".jpg", file=out)
  91.             if(atual<menor):
  92.                 menor = atual
  93.             if(atual>maior):
  94.                 maior = atual
  95.     out.close()
  96.  
  97.     print("Foram salvos %d links no arquivo linksNoSite.txt, agora o programa irá tentar encontrar outras fotos"%len(resultadosJaRodados))
  98.     more = int(PROCURAR_MAIS/2)
  99.     for ind in range(int(menor)-more, int(maior)+1+more):
  100.         try:
  101.             thread = iniciaScrapper(ind, albumURL, resultadosJaRodados, folderName).start()
  102.             threads.append(thread)
  103.         except:
  104.             print ("Error: nao foi possivel inicializar a thread")
  105.    
  106.     for t in threading.enumerate():
  107.         try:
  108.             t.join()
  109.         except:
  110.             print("Error: nao foi possivel escutar a thread")
  111.  
  112. file_found.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement