Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #coding utf-8
- import os
- import argparse
- import urllib
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- from fpdf import FPDF
- from PIL import Image
- # Checar argumentos
- parser = argparse.ArgumentParser()
- parser.add_argument('--login', '-l', required=True,
- help='Login para acessar o BVU (apenas numeros)')
- parser.add_argument('--book', '-b', required=True, nargs='+',
- help='ID do livro que será baixado.'
- 'Para descobrir qual o ID do livro que deseja baixar, acesse-o no navegador'
- 'e veja na barra de endereco os numeros apos o \'publications\'')
- args = parser.parse_args()
- # Variável global
- driver = webdriver.PhantomJS()
- # Realiza o login
- # Retorna True em caso de sucesso, False em caso de falha
- def login(user):
- driver.get("http://bvu.ifce.edu.br/login.php")
- driver.find_element_by_id('Login').send_keys(user, Keys.ENTER)
- if (driver.current_url == "http://ifcefortaleza.bv3.digitalpages.com.br/users/publications"):
- return(True)
- else:
- return(False)
- # Realiza o download de um determinado livro
- def downloadBook(id):
- print("Começando download do livro de ID ", id, "...", sep="")
- if (not os.path.exists(id)):
- os.makedirs(id)
- driver.get("http://ifcefortaleza.bv3.digitalpages.com.br/users/publications/" + str(id))
- numberTotalPages = 6#driver.execute_script("return RDP.options.pageSetLength") - 2
- print("Total de páginas: ", numberTotalPages)
- srcPage1 = driver.execute_script("return $('.backgroundImg')[0].src")
- urllib.request.urlretrieve(srcPage1, str(id) + "\\0.jpg")
- print("Capa...")
- checkPage1 = srcPage1
- srcPage2 = ""
- checkPage2 = ""
- # esperar o elemento correspodente da pagina à direita ser criada
- driver.execute_script("navigate.next_page()")
- page2Exist = 0
- while (page2Exist == 0):
- page2Exist = driver.execute_script("if ($('.backgroundImg')[1]) {"
- "return 1"
- "} else {"
- "return 0"
- "}")
- # loop para baixar cada pagina do livro
- for i in range(1, numberTotalPages, 2):
- # loop para esperar as imagens serem atualizadas
- while (srcPage1 == checkPage1 or srcPage2 == checkPage2):
- srcPage1 = driver.execute_script("return $('.backgroundImg')[0].src")
- srcPage2 = driver.execute_script("return $('.backgroundImg')[1].src")
- urllib.request.urlretrieve(srcPage1, str(id) + "\\" + str(i) + ".jpg")
- urllib.request.urlretrieve(srcPage2, str(id) + "\\" + str(i + 1) + ".jpg")
- checkPage1 = srcPage1
- checkPage2 = srcPage2
- driver.execute_script("navigate.next_page()")
- print(i, '/', numberTotalPages, '...', sep="")
- makePdf(id, range(numberTotalPages + 1), dir = str(id))
- def makePdf(pdfFileName, listPages, dir = ''):
- if (dir):
- dir += "/"
- cover = Image.open(dir + str(listPages[0]) + ".jpg")
- width, height = cover.size
- pdf = FPDF(unit = "pt", format = [width, height])
- for page in listPages:
- pdf.add_page()
- pdf.image(dir + str(page) + ".jpg", 0, 0)
- pdf.output(dir + pdfFileName + ".pdf", "F")
- #
- print("Efetuando login com ", args.login, "...", sep="")
- if (login(args.login)):
- print("Login efetuado com sucesso!")
- for currentBook in args.book:
- downloadBook(currentBook)
- else:
- driver.save_screenshot('erro.png')
- print("Erro ao logar! Verifique a imagem 'erro.png'")
- driver.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement