Make separate module for fs related jobs

Signed-off-by: lzzy12 <jhashivam2020@gmail.com>
This commit is contained in:
lzzy12 2019-09-26 18:21:07 +05:30
parent 54c563ffc4
commit ab6c01146e
2 changed files with 38 additions and 8 deletions

29
bot/helper/fs_utils.py Normal file
View File

@ -0,0 +1,29 @@
import sys
from bot import aria2, LOGGER, DOWNLOAD_DIR
import shutil
import os
import pathlib
def clean_download(path: str):
if os.path.exists(path):
shutil.rmtree(path)
def exit_clean_up(signal, frame):
try:
LOGGER.info("Please wait, while we clean up the downloads and stop running downloads")
aria2.autopurge()
aria2.remove_all(True)
shutil.rmtree(DOWNLOAD_DIR)
sys.exit(0)
except KeyboardInterrupt:
LOGGER.warning("Force Exiting before the cleanup finishes!")
sys.exit(1)
def tar(orig_path: str):
path = pathlib.PurePath(orig_path)
base = path.name
root = path.parent.name
shutil.make_archive(base_name=orig_path, format='tar', root_dir=root, base_dir=base)

View File

@ -7,7 +7,7 @@ from mimetypes import guess_type
import os
from bot import LOGGER, parent_id, DOWNLOAD_DIR, download_list
from .listeners import MirrorListeners
from shutil import rmtree
from .fs_utils import clean_download
class GoogleDriveHelper:
@ -76,22 +76,23 @@ class GoogleDriveHelper:
else:
file_name, mime_type = self.file_ops(file_path)
try:
dir_id = self.create_directory(os.path.basename(os.path.abspath(file_name)), parent_id)
self.upload_dir(file_path, dir_id)
dir_id = self.create_directory(os.path.basename(os.path.abspath(file_name)))
self.upload_dir(file_path)
LOGGER.info("Uploaded To G-Drive: " + file_name)
link = "https://drive.google.com/folderview?id={}".format(dir_id)
except Exception as e:
LOGGER.error(str(e))
self.__listener.onUploadError(str(e))
clean_download(file_dir)
raise Exception('Error: {}'.format(str(e)))
del download_list[self.__listener.update.update_id]
LOGGER.info(download_list)
self.__listener.onUploadComplete(link, file_name)
LOGGER.info("Deleting downloaded file/folder..")
rmtree(file_dir)
clean_download(file_dir)
return link
def create_directory(self, directory_name, parent_id):
def create_directory(self, directory_name):
permissions = {
"role": "reader",
"type": "anyone",
@ -110,7 +111,7 @@ class GoogleDriveHelper:
LOGGER.info("Created Google-Drive Folder:\nName: {}\nID: {} ".format(file.get("title"), file_id))
return file_id
def upload_dir(self, input_directory, parent_id):
def upload_dir(self, input_directory):
list_dirs = os.listdir(input_directory)
if len(list_dirs) == 0:
return parent_id
@ -118,8 +119,8 @@ class GoogleDriveHelper:
for a_c_f_name in list_dirs:
current_file_name = os.path.join(input_directory, a_c_f_name)
if os.path.isdir(current_file_name):
current_dir_id = self.create_directory(a_c_f_name, parent_id)
r_p_id = self.upload_dir(current_file_name, current_dir_id)
current_dir_id = self.create_directory(a_c_f_name)
r_p_id = self.upload_dir(current_file_name)
else:
file_name, mime_type = self.file_ops(current_file_name)
# current_file_name will have the full path