mirror of
https://github.com/karl0ss/GoGoDownloader.git
synced 2025-04-26 11:39:22 +01:00
129 lines
3.7 KiB
Python
129 lines
3.7 KiB
Python
import json
|
|
import io
|
|
import os
|
|
import re
|
|
from backend import *
|
|
|
|
|
|
def renameFile(filename: str):
|
|
"""_summary_
|
|
|
|
Args:
|
|
filename (str): _description_
|
|
|
|
Returns:
|
|
_type_: _description_
|
|
"""
|
|
newFileName = "".join(re.split("\(|\)|\[|\]", filename)[::2])
|
|
try:
|
|
os.rename(filename, newFileName)
|
|
return True
|
|
except OSError as err:
|
|
return err
|
|
|
|
|
|
def loadDownloadHistory():
|
|
"""Loads the downloadHistory.json, creates it if it doesn't exist
|
|
|
|
Returns:
|
|
object: download history list
|
|
"""
|
|
if os.path.isfile("./downloadHistory.json") and os.access(
|
|
"./downloadHistory.json", os.R_OK
|
|
):
|
|
return json.load(open("./downloadHistory.json"))
|
|
else:
|
|
with io.open(os.path.join("./", "downloadHistory.json"), "w") as db_file:
|
|
db_file.write(json.dumps([]))
|
|
return json.load(open("./downloadHistory.json"))
|
|
|
|
|
|
def writeShowToDownloadHistory(showName: str, downloadHistory: list):
|
|
"""Writes the showName and latestEpisode to the downloadHistory.json file
|
|
|
|
Args:
|
|
showName (str): _description_
|
|
downloadHistory (list): _description_
|
|
|
|
Returns:
|
|
_type_: _description_
|
|
"""
|
|
downloadHistory.append(showName)
|
|
with io.open(os.path.join("./", "downloadHistory.json"), "w") as db_file:
|
|
db_file.write(json.dumps(downloadHistory))
|
|
return json.load(open("./downloadHistory.json"))
|
|
|
|
|
|
def readDownloadHistory(fileNameObject: object, downloadHistory: list):
|
|
"""Reads the downloadHistory.json and checks if the fileName is present
|
|
|
|
Args:
|
|
fileNameObject (str): _description_
|
|
downloadHistory (list): _description_
|
|
|
|
Returns:
|
|
_type_: _description_
|
|
"""
|
|
dhFileName = (
|
|
fileNameObject["showName"] + " - " + str(fileNameObject["latestEpisode"])
|
|
)
|
|
if dhFileName not in downloadHistory:
|
|
writeShowToDownloadHistory(dhFileName, downloadHistory)
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
|
|
def main():
|
|
dh = loadDownloadHistory()
|
|
config = config_check()
|
|
downloader = gogoanime(
|
|
config,
|
|
1,
|
|
config["CLIQuality"],
|
|
"a",
|
|
1,
|
|
1,
|
|
1,
|
|
config["CLIDownloadLocation"],
|
|
)
|
|
list = downloader.get_show_from_bookmark()
|
|
dl_links = {}
|
|
for ep in list:
|
|
if readDownloadHistory(ep, dh):
|
|
showName = ep["showName"] + " - " + str(ep["latestEpisode"])
|
|
print(f"{IN}{showName} already downloaded")
|
|
else:
|
|
print(
|
|
f"{IN}Scraping DL for "
|
|
+ ep["showName"]
|
|
+ " Ep "
|
|
+ str(ep["latestEpisode"])
|
|
)
|
|
dl_links[downloader.get_download_link(ep["downloadURL"])] = (
|
|
ep["showName"],
|
|
ep["latestEpisode"],
|
|
)
|
|
result = downloader.file_downloader(dl_links)
|
|
if config["CleanUpFileName"]:
|
|
for file in result.data:
|
|
renameFile(file)
|
|
if len(result.errors) > 0:
|
|
while len(result.errors) > 0:
|
|
print(f"{ERR}{len(result.errors)} links failed retrying.")
|
|
print(f"{IN}Re-Scraping Links")
|
|
dl_links.clear()
|
|
for ep in list:
|
|
dl_links[downloader.get_download_link(ep["downloadURL"])] = (
|
|
ep["showName"],
|
|
ep["latestEpisode"],
|
|
)
|
|
result = downloader.file_downloader(dl_links, overwrite_downloads=0)
|
|
if config["CleanUpFileName"]:
|
|
for file in result.data:
|
|
renameFile(file)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|