fix: Error when calculating tmp folder size.
Instructed the bot to directly ignore errors. Fixed #224.
This commit is contained in:
parent
999252c98b
commit
1637501601
@ -1,44 +0,0 @@
|
|||||||
import logging
|
|
||||||
import os
|
|
||||||
|
|
||||||
log = logging.getLogger("bot")
|
|
||||||
|
|
||||||
|
|
||||||
def get_size_folder(path):
|
|
||||||
global log
|
|
||||||
|
|
||||||
folder_size = 0
|
|
||||||
for (path, dirs, files) in os.walk(path):
|
|
||||||
for file in files:
|
|
||||||
filename = os.path.join(path, file)
|
|
||||||
folder_size += os.path.getsize(filename)
|
|
||||||
return int(folder_size / (1024 * 1024))
|
|
||||||
|
|
||||||
|
|
||||||
def clear_tmp_folder(path, size):
|
|
||||||
global log
|
|
||||||
|
|
||||||
if size == -1:
|
|
||||||
return
|
|
||||||
elif size == 0:
|
|
||||||
for (path, dirs, files) in os.walk(path):
|
|
||||||
for file in files:
|
|
||||||
filename = os.path.join(path, file)
|
|
||||||
os.remove(filename)
|
|
||||||
else:
|
|
||||||
if get_size_folder(path=path) > size:
|
|
||||||
all_files = ""
|
|
||||||
for (path, dirs, files) in os.walk(path):
|
|
||||||
all_files = [os.path.join(path, file) for file in files]
|
|
||||||
all_files.sort(key=lambda x: os.path.getmtime(x))
|
|
||||||
size_tp = 0
|
|
||||||
for idx, file in enumerate(all_files):
|
|
||||||
size_tp += os.path.getsize(file)
|
|
||||||
if int(size_tp / (1024 * 1024)) > size:
|
|
||||||
log.info("Cleaning tmp folder")
|
|
||||||
to_remove = all_files[:idx]
|
|
||||||
print(to_remove)
|
|
||||||
for f in to_remove:
|
|
||||||
log.debug("Removing " + f)
|
|
||||||
os.remove(os.path.join(path, f))
|
|
||||||
return
|
|
@ -9,6 +9,7 @@ import glob
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
|
import util
|
||||||
from constants import tr_cli as tr
|
from constants import tr_cli as tr
|
||||||
import media
|
import media
|
||||||
import variables as var
|
import variables as var
|
||||||
@ -151,7 +152,7 @@ class URLItem(BaseItem):
|
|||||||
raise ValidationFailedError(tr('unable_download', item=self.format_title()))
|
raise ValidationFailedError(tr('unable_download', item=self.format_title()))
|
||||||
|
|
||||||
def _download(self):
|
def _download(self):
|
||||||
media.system.clear_tmp_folder(var.tmp_folder, var.config.getint('bot', 'tmp_folder_max_size'))
|
util.clear_tmp_folder(var.tmp_folder, var.config.getint('bot', 'tmp_folder_max_size'))
|
||||||
|
|
||||||
self.downloading = True
|
self.downloading = True
|
||||||
base_path = var.tmp_folder + self.id
|
base_path = var.tmp_folder + self.id
|
||||||
|
49
util.py
49
util.py
@ -508,3 +508,52 @@ class VolumeHelper:
|
|||||||
|
|
||||||
# Some dirty trick to stretch the function, to make to be 0 when input is -35 dB
|
# Some dirty trick to stretch the function, to make to be 0 when input is -35 dB
|
||||||
return (10 ** (dB / 20) - 10 ** (-35 / 20)) / (1 - 10 ** (-35 / 20))
|
return (10 ** (dB / 20) - 10 ** (-35 / 20)) / (1 - 10 ** (-35 / 20))
|
||||||
|
|
||||||
|
|
||||||
|
def get_size_folder(path):
|
||||||
|
global log
|
||||||
|
|
||||||
|
folder_size = 0
|
||||||
|
for (path, dirs, files) in os.walk(path):
|
||||||
|
for file in files:
|
||||||
|
filename = os.path.join(path, file)
|
||||||
|
try:
|
||||||
|
folder_size += os.path.getsize(filename)
|
||||||
|
except (FileNotFoundError, OSError):
|
||||||
|
continue
|
||||||
|
return int(folder_size / (1024 * 1024))
|
||||||
|
|
||||||
|
|
||||||
|
def clear_tmp_folder(path, size):
|
||||||
|
global log
|
||||||
|
|
||||||
|
if size == -1:
|
||||||
|
return
|
||||||
|
elif size == 0:
|
||||||
|
for (path, dirs, files) in os.walk(path):
|
||||||
|
for file in files:
|
||||||
|
filename = os.path.join(path, file)
|
||||||
|
try:
|
||||||
|
os.remove(filename)
|
||||||
|
except (FileNotFoundError, OSError):
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
if get_size_folder(path=path) > size:
|
||||||
|
all_files = ""
|
||||||
|
for (path, dirs, files) in os.walk(path):
|
||||||
|
all_files = [os.path.join(path, file) for file in files]
|
||||||
|
all_files.sort(key=lambda x: os.path.getmtime(x))
|
||||||
|
size_tp = 0
|
||||||
|
for idx, file in enumerate(all_files):
|
||||||
|
size_tp += os.path.getsize(file)
|
||||||
|
if int(size_tp / (1024 * 1024)) > size:
|
||||||
|
log.info("Cleaning tmp folder")
|
||||||
|
to_remove = all_files[:idx]
|
||||||
|
print(to_remove)
|
||||||
|
for f in to_remove:
|
||||||
|
log.debug("Removing " + f)
|
||||||
|
try:
|
||||||
|
os.remove(os.path.join(path, f))
|
||||||
|
except (FileNotFoundError, OSError):
|
||||||
|
continue
|
||||||
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user