forgot to upload FTP.py file
This commit is contained in:
parent
1f4c4529f7
commit
a6b3b3f962
138
FTP.py
Normal file
138
FTP.py
Normal file
@ -0,0 +1,138 @@
|
||||
from ftplib import FTP_TLS as FTP
|
||||
from customtkinter import *
|
||||
import time
|
||||
import datetime
|
||||
import math
|
||||
from tkinter import simpledialog
|
||||
import os
|
||||
|
||||
|
||||
|
||||
def ftpDownload(file, stream):
|
||||
ftp = FTP("gitea.piwalker.net")
|
||||
ftp.login()
|
||||
ftp.prot_p()
|
||||
#create tkinter window
|
||||
print("downloading file: "+file)
|
||||
dialog = CTk()
|
||||
if os.name == 'posix':
|
||||
dialog.attributes('-type', 'dialog')
|
||||
dialog.title("Downloading Files")
|
||||
set_appearance_mode("dark")
|
||||
set_default_color_theme("blue")
|
||||
|
||||
label = CTkLabel(master=dialog, text="Downloading "+file.split("/")[-1])
|
||||
label.pack()
|
||||
pbar = CTkProgressBar(master=dialog)
|
||||
pbar.pack(padx=20, pady=20)
|
||||
progress = StringVar()
|
||||
ETA = StringVar()
|
||||
progress_label = CTkLabel(master=dialog, textvariable=progress)
|
||||
progress_label.pack()
|
||||
eta_label = CTkLabel(master=dialog, textvariable=ETA)
|
||||
eta_label.pack()
|
||||
size = ftp.size(file)
|
||||
if size < 1024*1024:
|
||||
dialog.withdraw()
|
||||
total = 0
|
||||
timer = 0
|
||||
start = time.time()
|
||||
dialog.update()
|
||||
|
||||
def downloadCallback(data):
|
||||
nonlocal total
|
||||
nonlocal pbar
|
||||
nonlocal start
|
||||
nonlocal progress
|
||||
nonlocal ETA
|
||||
nonlocal timer
|
||||
stream.write(data)
|
||||
total += len(data)
|
||||
if time.time() - timer >= 1:
|
||||
progress.set(str(round(total/1048576, 1))+" MB / "+str(round(size/1048576, 1))+" MB @ " + str(round((total/1048576)/(time.time()-start), 3))+" MB/s")
|
||||
time_left = (size-total)/(total/(time.time()-start))
|
||||
ETA.set("ETA: " + str(datetime.timedelta(seconds=math.ceil(time_left))))
|
||||
pbar.set(total/size)
|
||||
timer = time.time()
|
||||
dialog.update()
|
||||
ftp.retrbinary("RETR " + file, downloadCallback)
|
||||
dialog.destroy()
|
||||
ftp.close()
|
||||
|
||||
def ftpUpload(file, stream, username, password):
|
||||
ftp = FTP("gitea.piwalker.net", username, password)
|
||||
ftp.prot_p()
|
||||
up_dialog = CTk()
|
||||
if os.name == 'posix':
|
||||
up_dialog.attributes('-type', 'dialog')
|
||||
up_dialog.title("Uploading Files")
|
||||
set_appearance_mode("dark")
|
||||
set_default_color_theme("blue")
|
||||
|
||||
label = CTkLabel(master=up_dialog, text="Uploading "+file.split("/")[-1])
|
||||
label.pack()
|
||||
pbar = CTkProgressBar(master=up_dialog)
|
||||
pbar.pack(padx=20, pady=20)
|
||||
prog = StringVar(master=up_dialog)
|
||||
eta = StringVar(master=up_dialog)
|
||||
progress_label = CTkLabel(master=up_dialog, textvariable=prog)
|
||||
progress_label.pack()
|
||||
eta_label = CTkLabel(master=up_dialog, textvariable=eta)
|
||||
eta_label.pack()
|
||||
stream.seek(0, os.SEEK_END)
|
||||
size = stream.tell()
|
||||
stream.seek(0)
|
||||
if size < 1024*1024:
|
||||
up_dialog.withdraw()
|
||||
total = 0
|
||||
timer = 0
|
||||
start = time.time()
|
||||
up_dialog.update()
|
||||
|
||||
|
||||
def uploadCallback(data):
|
||||
nonlocal total
|
||||
nonlocal pbar
|
||||
nonlocal start
|
||||
nonlocal prog
|
||||
nonlocal eta
|
||||
nonlocal timer
|
||||
nonlocal up_dialog
|
||||
total += len(data)
|
||||
if time.time() - timer >= 1:
|
||||
prog.set(str(round(total/1048576, 1))+" MB / "+str(round(size/1048576, 1))+" MB @ " + str(round((total/1048576)/(time.time()-start), 3))+" MB/s")
|
||||
time_left = (size-total)/(total/(time.time()-start))
|
||||
eta.set("ETA: " + str(datetime.timedelta(seconds=math.ceil(time_left))))
|
||||
pbar.set(total/size)
|
||||
timer = time.time()
|
||||
up_dialog.update()
|
||||
up_dialog.update()
|
||||
|
||||
ftp.storbinary("STOR "+file,stream, callback=uploadCallback)
|
||||
up_dialog.destroy()
|
||||
ftp.close()
|
||||
|
||||
def ftpMakeDirectory(path, username, password):
|
||||
ftp = FTP("gitea.piwalker.net", username, password)
|
||||
ftp.prot_p()
|
||||
ftp.mkd(path)
|
||||
ftp.close()
|
||||
|
||||
def ftpDeleteDirectory(path, username, password):
|
||||
def deleteFolder(ftp, path):
|
||||
print("Deleting folder: "+path)
|
||||
ftp.cwd(path)
|
||||
for item in ftp.nlst():
|
||||
try:
|
||||
print("deleting file: "+path)
|
||||
ftp.delete(item)
|
||||
except:
|
||||
deleteFolder(ftp, item)
|
||||
ftp.cwd("..")
|
||||
ftp.rmd(path)
|
||||
ftp = FTP("gitea.piwalker.net", username, password)
|
||||
ftp.prot_p()
|
||||
deleteFolder(ftp, path)
|
||||
ftp.close()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user