Aggiunta funzione che permette di non caricare i file doppi

master
MickSlash 2022-02-22 13:52:37 +00:00
parent 75231952dd
commit c2304ac4c0
1 changed files with 125 additions and 92 deletions

217
upload.py
View File

@ -1,92 +1,125 @@
import os import os
import requests import requests
import json import json
# Video Library e Api Key ottenute tramite interfaccia di BunnyCDN https://panel.bunny.net/stream # Video Library e Api Key ottenute tramite interfaccia di BunnyCDN https://panel.bunny.net/stream
VIDEO_LIBRARY : int = 23411 VIDEO_LIBRARY: int = 23411
API_KEY : str = "2237b6ed-4454-4937-b5f870d55cc0-a148-4937" API_KEY: str = "2237b6ed-4454-4937-b5f870d55cc0-a148-4937"
endpoint_listCollection = f"http://video.bunnycdn.com/library/{VIDEO_LIBRARY}/collections" endpoint_listCollection = (
endpoint_createVideoID = f"http://video.bunnycdn.com/library/{VIDEO_LIBRARY}/videos" f"http://video.bunnycdn.com/library/{VIDEO_LIBRARY}/collections"
endpoint_uploadVideo = f"http://video.bunnycdn.com/library/{VIDEO_LIBRARY}/videos/" )
collectionId = "" endpoint_createVideoID = f"http://video.bunnycdn.com/library/{VIDEO_LIBRARY}/videos"
endpoint_uploadVideo = f"http://video.bunnycdn.com/library/{VIDEO_LIBRARY}/videos/"
# Headers per BunnyCDN endpoint_listVideoForCollection = (
headers = { f"http://video.bunnycdn.com/library/{VIDEO_LIBRARY}/videos"
"Accept": "application/json", )
"AccessKey": API_KEY collectionId = ""
} fileinDirectory = []
# Headers per BunnyCDN
def getCollectionList(): headers = {"Accept": "application/json", "AccessKey": API_KEY}
response = requests.get(endpoint_listCollection,headers=headers)
collectionList = {}
if response.ok: def getCollectionList():
data = response.json() response = requests.get(endpoint_listCollection, headers=headers)
for dirlist in data["items"]: collectionList = {}
collectionList[dirlist["name"]] = dirlist["guid"] if response.ok:
listOfPossibleCollection = " - ".join(['{0}'.format(k) for k in collectionList.keys()]) data = response.json()
print(listOfPossibleCollection) for dirlist in data["items"]:
select_folder = input("Seleziona la cartella dove caricare i file : ") collectionList[dirlist["name"]] = dirlist["guid"]
if select_folder in collectionList.keys(): listOfPossibleCollection = " - ".join(
guid = collectionList[select_folder] ["{0}".format(k) for k in collectionList.keys()]
return guid )
else: print(listOfPossibleCollection)
print("Errore! Cartella non esistente!") select_folder = input("Seleziona la cartella dove caricare i file : ")
else: if select_folder in collectionList.keys():
print("Errore : ",response.status_code) guid = collectionList[select_folder]
print(response.content) return guid
else:
def getVideoID(title_obj,count): print("Errore! Cartella non esistente!")
headers["Content-Type"] = "application/*+json" else:
if(count==1): print("Errore : ", response.status_code)
global collectionId print(response.content)
collectionId = getCollectionList()
payload = {"title":title_obj,"collectionId":collectionId}
payload = json.dumps(payload) def getVideoID(title_obj, count):
response = requests.post(endpoint_createVideoID,headers=headers,data=payload) headers["Content-Type"] = "application/*+json"
if response.ok: if count == 1:
print(response.json()["guid"]) global collectionId
return response.json()["guid"] collectionId = getCollectionList()
else: payload = {"title": title_obj, "collectionId": collectionId}
print("Errore : ",response.status_code) payload = json.dumps(payload)
print(response.content) if checkIfFileExistsOnBunnyCDN(title_obj) == True:
return
else:
def upload(file_obj): response = requests.post(endpoint_createVideoID, headers=headers, data=payload)
count = 1 if response.ok:
# Carica i file da Gdrive a BunnyCDN Stream (Conviene Montare i file localmente con Rclone) print(response.json()["guid"])
if os.path.isdir(file_obj)!=True: return response.json()["guid"]
print(" La cartella selezionata non esiste! ") else:
for files in os.listdir(file_obj): print("Errore : ", response.status_code)
file_path = os.path.join(file_obj, files) print(response.content)
content_name = str(files)
videoId = getVideoID(content_name,count)
count +=1 def checkIfFileExistsOnBunnyCDN(title_file):
headers = { url = f"{endpoint_listVideoForCollection}?collection={collectionId}&orderBy=date&itemsPerPage=10000"
"AccessKey": API_KEY, response = requests.get(url, headers=headers)
"Accept": "application/json", if response.ok:
} data = response.json()
url = endpoint_uploadVideo + videoId for files in data["items"]:
with open(file_path, "rb") as file: global fileinDirectory
response = requests.request("PUT",url, data=file, headers=headers) fileinDirectory.append(files["title"])
try: if title_file in fileinDirectory:
response.raise_for_status() print(f"File doppio : {title_file} - Non verrá caricato... ")
except: return True
status_msg = { else:
"status": "error", return False
"HTTP": response.status_code, else:
"msg": "Upload Failed HTTP Error Occured", print("Errore : ", response.status_code)
} print(response.content)
else:
status_msg = {
"status": "success", def upload(file_obj):
"HTTP": response.status_code, """
"msg": "The File Upload was Successful", Carica i file da Gdrive a BunnyCDN Stream (Conviene Montare i file localmente con Rclone)
} Possibile usarlo per caricare file da locale
print(status_msg) """
count = 1
if os.path.isdir(file_obj) != True:
print(" La cartella selezionata non esiste! ")
if __name__ == "__main__": for files in os.listdir(file_obj):
folderUpload = input("Inserisci la cartella dove sono presenti i file : ") print(count)
upload(folderUpload) file_path = os.path.join(file_obj, files)
content_name = str(files)
videoId = getVideoID(content_name, count)
count += 1
if videoId == None:
pass
else:
headers = {
"AccessKey": API_KEY,
"Accept": "application/json",
}
url = endpoint_uploadVideo + videoId
with open(file_path, "rb") as file:
response = requests.request("PUT", url, data=file, headers=headers)
try:
response.raise_for_status()
except:
status_msg = {
"status": "error",
"HTTP": response.status_code,
"msg": "Upload Failed HTTP Error Occured",
}
else:
status_msg = {
"status": "success",
"HTTP": response.status_code,
"msg": "The File Upload was Successful",
}
print(status_msg)
if __name__ == "__main__":
folderUpload = input("Inserisci la cartella dove sono presenti i file : ")
upload(folderUpload)