(Το ζητάω φωνητικά με την εντολή "παίξε" και λέω ένα όνομα κι αν βρει το κατάλληλο έχει καλώς. Αν όχι και παίξει κάποιο με παραπλήσιο όνομα ή γενικά ό,τι κατάλαβε και πάλι έχει καλώς! Συνηθισμένα τα βουνά. Λέω στην Αλέξα να παίξει Τζαζ και ακούει Τζακ και μου ανοίγει στο Σπότιφάι το χιτ δε ρόουντ Τζακ. Είπα να κάνω ένα τοπικό σποτιφάι να ακούω τουλάχιστον τις εκτελέσεις που περιμένω όχι τη συναυλία του τραγουδιστή το 2020 στο κολλέγιο της Μασαχουσέτης.)
Ψιλο-ικανοποιημένος από την αναζήτηση, αλλά η αναπαραγωγή γίνεται πότε σε παράθυρο του mpv και πότε στο παρασκήνιο χωρίς παράθυρο. Αυτό είναι πρόβλημα γιατί δεν μπορώ να το κλείνω. Θα πρέπει να δώσω ps -A για να δω στο τέλος τέλος (ευτυχώς) τον αριθμό διαδικασίας να μπορέσω να τον κάνω kill
(παρόλο που έχω στο κάτω panel εικονιδιάκι που εκτελεί killall mpv, αλλά τρέχει κι άλλο mpv εκείνη τη στιγμή που δεν θέλω να κλείνει.)
Πως θα το κάνω να ανοίγει τον mpv αποκλειστικά σε παράθυρο;
Να το κομμάτι του κώδικα που λέει για τον mpv
- Κώδικας: Επιλογή όλων
def play_music(self, query=None):
music_directories = [
"/media/SELINI/Enjoy/music/mp3",
"/home/family/Μουσική",
]
music_files = []
for directory in music_directories:
if os.path.exists(directory):
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith((".mp3", ".wav", ".ogg", ".mp4", ".avi", ".m3u")):
file_path = os.path.join(root, file)
music_files.append(file_path)
if music_files:
if query:
query = unidecode(query) # Μετατρέπουμε το ερώτημα σε αγγλικούς χαρακτήρες
matching_files = []
for file in music_files:
file_name = os.path.basename(file).lower()
if fuzz.partial_ratio(query.lower(), file_name) >= 90:
matching_files.append(file)
if matching_files:
music_file = matching_files[0]
else:
print("Δεν βρέθηκαν μουσικά αρχεία που να ταιριάζουν στην αναζήτηση.")
os.system('notify-send "Δεν βρέθηκαν μουσικά αρχεία που να ταιριάζουν στην αναζήτηση."')
return
else:
music_file = music_files[0]
subprocess.Popen(["mpv", "--no-terminal", music_file])
else:
print("Δεν βρέθηκαν μουσικά αρχεία.")
os.system('notify-send "Δεν βρέθηκαν μουσικά αρχεία."')
Τη γραμμή subprocess.Popen(["mpv", "--no-terminal", music_file]) την είχα και σκέτη, χωρίς "--no-terminal" αλλά δεν είδα διαφορά.
Άλλες δύο συναρτήσεις που αφορούν το κομμάτι της μουσικής από την όλη λειτουργικότητα του κώδικα:
- Κώδικας: Επιλογή όλων
def execute_command(self, command):
if command:
............................................................................
#Άλλες γραμμές που αγορούν άλλες λειτουργίες
............................................................................
elif command.startswith(("παίξε", "play")):
query = command.split(" ", 1)[-1]
self.play_music(query)
και
- Κώδικας: Επιλογή όλων
def search_music_files(self, query):
query = query.lower()
results = []
for root, dirs, files in os.walk("/media/SELINI/Enjoy/music/mp3"):
for file in files:
file_name = file.lower()
if query in file_name:
file_path = os.path.join(root, file)
results.append(file_path)
return results