diff --git a/gui/modules/pads/fill_pads_from_settings.py b/gui/modules/pads/fill_pads_from_settings.py index 5b42e57..e93e105 100644 --- a/gui/modules/pads/fill_pads_from_settings.py +++ b/gui/modules/pads/fill_pads_from_settings.py @@ -1,5 +1,6 @@ import os from modules.padslist import Pads +from gui.modules.pads.pad_name import get_button_name from gui.gui import Ui_MainWindow from PyQt5 import QtWidgets, QtCore from PyQt5.QtWidgets import QMainWindow @@ -20,11 +21,11 @@ def fill_pads(ui: Ui_MainWindow, MainWindow: QMainWindow, p: Player): item = first_pads_list[i] if item == '': continue - ui.first_pads_dict[os.path.split(item)[-1][:24:]] = item + ui.first_pads_dict[get_button_name(item)] = item button = QtWidgets.QPushButton() button.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) - button.setText(os.path.split(item)[-1][:24:]) + button.setText(get_button_name(item)) button.clicked.connect( ( lambda: ( @@ -46,11 +47,11 @@ def fill_pads(ui: Ui_MainWindow, MainWindow: QMainWindow, p: Player): item = second_pads_list[i] if item == '': continue - ui.second_pads_dict[os.path.split(item)[-1][:24:]] = item + ui.second_pads_dict[get_button_name(item)] = item button = QtWidgets.QPushButton() button.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) - button.setText(os.path.split(item)[-1][:24:]) + button.setText(get_button_name(item)) button.clicked.connect( ( lambda: ( diff --git a/gui/modules/pads/pad_name.py b/gui/modules/pads/pad_name.py new file mode 100644 index 0000000..ae44632 --- /dev/null +++ b/gui/modules/pads/pad_name.py @@ -0,0 +1,46 @@ +import validators +import pafy +import sclib +from modules.spotify.spotify_dl import Spotify +from modules.anonfiles.anonfiles import Anonfiles +import urllib.parse +import os.path +import json + + +def get_button_name(path: str, length: int = 24) -> str: + if not os.path.isfile('temp/' + '0' * 32): + with open('temp/' + '0' * 32, 'w') as f: + f.write('{}') + + try: + with open('temp/' + '0' * 32) as f: + name_cache = json.load(f) + except Exception as e: + print(e) + with open('temp/' + '0' * 32) as f: + f.write('{}') + name_cache = dict() + + if name_cache.get(path): + return name_cache.get(path) + + if validators.url(path): + if 'spotify' in path.lower(): + name = (lambda x: f"{x.artist} - {x.name}")(Spotify().get_song(path)) + elif 'youtu' in path.lower(): + name = (lambda x: f"{x.title} ({x.author})")(pafy.new(path)) + elif 'anonfiles' in path.lower(): + name = urllib.parse.quote(Anonfiles.get_direct(path), safe=':/').split('/')[-1] + elif 'soundcloud' in path.lower(): + name = (lambda x: f"{x.artist} - {x.title}")(sclib.SoundcloudAPI().resolve(path)) + else: + name = path.split('/')[-1] + else: + name = os.path.split(path)[-1] + + name_cache[path] = name[:length:] + with open('temp/' + '0' * 32, 'w') as f: + json.dump(name_cache, f) + + return name[:length:]