From 995d5f52e418ccedc8e4d3af032453635a58e36b Mon Sep 17 00:00:00 2001 From: azlux Date: Wed, 13 Jun 2018 01:16:32 +0200 Subject: [PATCH] Clear tmp folder and good creating time fix for #10 feature for #8 --- configuration.default.ini | 8 ++++++-- media.py | 38 ++++++++++++++++++++++++++++++++++++++ mumbleBot.py | 2 ++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/configuration.default.ini b/configuration.default.ini index 927fa6f..f519775 100644 --- a/configuration.default.ini +++ b/configuration.default.ini @@ -1,9 +1,13 @@ [bot] comment = Hi, I'm here to play radio, local music or youtube/soundcloud music. Have fun ! volume = 0.1 -admin = User1;User2; -music_folder = /home/azlux/botamusique/music_folder +admin = User1;User2; # Allow user to kill the bot +music_folder = /home/azlux/botamusique/music_folder/ tmp_folder = /tmp/ + +# in Mo, 0 for no cache, -1 for illimited size +tmp_folder_max_size = 10 + ignored_folders = tmp ignored_files = Thumbs.db diff --git a/media.py b/media.py index 8fbae1d..30c512a 100644 --- a/media.py +++ b/media.py @@ -4,6 +4,7 @@ import logging import json import http.client import struct +import os def get_radio_server_description(url): @@ -76,3 +77,40 @@ def get_url(string): return res.group(1) else: return False + + +def get_size_folder(path): + 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): + 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 + print(all_files) + for idx, file in enumerate(all_files): + size_tp += os.path.getsize(file) + if int(size_tp/(1024*1024)) > size: + logging.info("Cleaning tmp folder") + to_remove = all_files[idx:] + print(to_remove) + for f in to_remove: + logging.debug("Removing " + f) + os.remove(os.path.join(path, f)) + return diff --git a/mumbleBot.py b/mumbleBot.py index fb533c6..9447fc3 100644 --- a/mumbleBot.py +++ b/mumbleBot.py @@ -249,6 +249,7 @@ class MumbleBot: url = media.get_url(var.current_music[1]) if not url: return + media.clear_tmp_folder(var.config.get('bot', 'tmp_folder'), var.config.getint('bot', 'tmp_folder_max_size')) path, title = self.download_music(url) var.current_music[1] = url @@ -295,6 +296,7 @@ class MumbleBot: 'outtmpl': path, 'noplaylist': True, 'writethumbnail': True, + 'updatetime': False, 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3',