diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7030d93 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/books diff --git a/README.md b/README.md index 7862a99..ea8a397 100644 --- a/README.md +++ b/README.md @@ -69,11 +69,4 @@ python3 archive-org-downloader.py -e myemail@tempmail.com -p Passw0rd -r 0 -u ht If you want to download a lot of books, you can paste the urls of the books in a .txt file (one per line) and use `--file` ```sh python3 archive-org-downloader.py -e myemail@tempmail.com -p Passw0rd --file books_to_download.txt -``` - -## Donation -If you want to support my work, you can send 2 or 3 Bitcoins 🙃 to this address: -``` -bc1q4nq8tjuezssy74d5amnrrq6ljvu7hd3l880m7l -``` -![bitcoin_address](https://user-images.githubusercontent.com/54740007/169100171-1061c7a0-207e-459b-84de-2d6bb93b0f38.png) +``` \ No newline at end of file diff --git a/archive-org-downloader.py b/archive-org-downloader.py index 49d9ce1..7d3cc6f 100644 --- a/archive-org-downloader.py +++ b/archive-org-downloader.py @@ -44,19 +44,30 @@ def get_book_infos(session, url): def login(email, password): session = requests.Session() - session.get("https://archive.org/account/login") + response = session.get("https://archive.org/services/account/login/") + login_data = response.json() + if not login_data['success']: + display_error(response, "[-] Error while getting login token:") - data = {"username":email, "password":password} + login_token = login_data["value"]["token"] - response = session.post("https://archive.org/account/login", data=data) - if "bad_login" in response.text: - print("[-] Invalid credentials!") - exit() - elif "Successful login" in response.text: + headers = {"Content-Type": "application/x-www-form-urlencoded"} + data = {"username":email, "password":password, "t": login_token} + + response = session.post("https://archive.org/services/account/login/", headers=headers, data=json.dumps(data)) + try: + response_json = response.json() + except: + display_error(response, "[-] Error while login:") + + if response_json["success"] == False: + if response_json["value"] == "bad_login": + print("[-] Invalid credentials!") + exit() + display_error(response, "[-] Error while login:") + else: print("[+] Successful login") return session - else: - display_error(response, "[-] Error while login:") def loan(session, book_id, verbose=True): data = { @@ -316,7 +327,11 @@ def make_pdf(pdf, title, directory): pdfmeta['keywords'] = [f"https://archive.org/details/{book_id}"] pdf = img2pdf.convert(images, **pdfmeta) - make_pdf(pdf, title, args.dir if args.dir != None else "") + if 'title-alt-script' in metadata: + title = metadata['title-alt-script'] + title = title.replace("\\"," ").replace("/"," ").replace(":"," ").replace("*"," ").replace("?"," ") + title = title.replace("\""," ").replace("<"," ").replace(">"," ").replace("|"," ") + make_pdf(pdf, title, args.dir if args.dir != None else "") try: shutil.rmtree(directory) except OSError as e: diff --git a/book.txt b/book.txt new file mode 100644 index 0000000..e69de29 diff --git a/download.bat b/download.bat new file mode 100644 index 0000000..9244900 --- /dev/null +++ b/download.bat @@ -0,0 +1 @@ +python archive-org-downloader.py -e *** -p *** -r 3 -d books --file book.txt \ No newline at end of file