From 08092a6054266809176e8f58f3d7006d7f4ec016 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Tue, 1 Apr 2025 18:35:38 +0200 Subject: [PATCH] update --- player.py | 187 --------------- playlists/add.sh | 17 -- playlists/friday/day | 128 ----------- playlists/friday/late_night | 23 -- playlists/friday/night | 45 ---- playlists/monday/day | 129 ----------- playlists/monday/late_night | 24 -- playlists/monday/night | 47 ---- playlists/saturday/day | 128 ----------- playlists/saturday/late_night | 27 --- playlists/saturday/night | 48 ---- playlists/sunday/day | 128 ----------- playlists/sunday/late_night | 24 -- playlists/sunday/night | 45 ---- playlists/thursday/day | 128 ----------- playlists/thursday/late_night | 23 -- playlists/thursday/night | 45 ---- playlists/tuesday/day | 128 ----------- playlists/tuesday/late_night | 23 -- playlists/tuesday/night | 45 ---- playlists/tui.py | 399 --------------------------------- playlists/wednesday/day | 128 ----------- playlists/wednesday/late_night | 23 -- playlists/wednesday/night | 45 ---- radioPlayer.py | 199 ++++++++++++++++ radioPlaylist.py | 381 +++++++++++++++++++++++++++++++ requirements.txt | 1 + 27 files changed, 581 insertions(+), 1987 deletions(-) delete mode 100644 player.py delete mode 100755 playlists/add.sh delete mode 100644 playlists/friday/day delete mode 100644 playlists/friday/late_night delete mode 100644 playlists/friday/night delete mode 100644 playlists/monday/day delete mode 100644 playlists/monday/late_night delete mode 100644 playlists/monday/night delete mode 100644 playlists/saturday/day delete mode 100644 playlists/saturday/late_night delete mode 100644 playlists/saturday/night delete mode 100644 playlists/sunday/day delete mode 100644 playlists/sunday/late_night delete mode 100644 playlists/sunday/night delete mode 100644 playlists/thursday/day delete mode 100644 playlists/thursday/late_night delete mode 100644 playlists/thursday/night delete mode 100644 playlists/tuesday/day delete mode 100644 playlists/tuesday/late_night delete mode 100644 playlists/tuesday/night delete mode 100644 playlists/tui.py delete mode 100644 playlists/wednesday/day delete mode 100644 playlists/wednesday/late_night delete mode 100644 playlists/wednesday/night create mode 100644 radioPlayer.py create mode 100644 radioPlaylist.py create mode 100644 requirements.txt diff --git a/player.py b/player.py deleted file mode 100644 index a521e2e..0000000 --- a/player.py +++ /dev/null @@ -1,187 +0,0 @@ -import os -import random -import subprocess -import time -import sys -from datetime import datetime - -playlist_dir = '/home/user/playlists' - -def get_current_hour(): - return datetime.now().hour - -def get_current_day(): - return datetime.now().strftime('%A').lower() - -def load_dict_from_custom_format(file_path: str) -> dict: - result_dict = {} - with open(file_path, 'r') as file: - for line in file: - if line.strip() == "": - continue - key, value = line.split(':', 1) - result_dict[key.strip()] = value.strip() - return result_dict - -def update_rds(track_name): - try: - name_table = load_dict_from_custom_format("/home/user/mixes/name_table.txt") - try: - prt = f"Gramy: radio95 - {name_table[track_name]}" - except KeyError as e: - print("Unknown", e) - prt = "Gramy: radio95 - Program Godzinny" - - with open("/home/user/RDS", "w") as f: - f.write(f"TEXT={prt}\r") - - try: - with open("/home/user/RDS", "w") as f: - f.write(f"RTP=4,7,7,1,17,{len(str(name_table[track_name]))-1}\r") - except KeyError: - with open("/home/user/RDS", "w") as f: - f.write(f"RTP=4,7,7,1,17,15\r") - except Exception as e: - print(f"Error updating RDS: {e}") - -def get_playlist_modification_time(playlist_path): - """Get the modification time of the playlist file.""" - try: - return os.path.getmtime(playlist_path) - except OSError: - return 0 - -def load_playlist(playlist_path): - """Load tracks from playlist file.""" - try: - with open(playlist_path, 'r') as f: - tracks = [line.strip() for line in f.readlines() if line.strip()] - return tracks - except FileNotFoundError: - print(f"Warning: Playlist not found: {playlist_path}") - return [] - -def get_newest_track(tracks): - """Find the newest track (most recently modified) from the playlist.""" - if not tracks: - return None - - newest_track = None - newest_time = 0 - - for track in tracks: - track_path = os.path.expanduser(track) - try: - mod_time = os.path.getmtime(track_path) - if mod_time > newest_time: - newest_time = mod_time - newest_track = track - except OSError: - # Skip files that can't be accessed - continue - - return newest_track - -def play_playlist(playlist_path, play_newest_first=False): - last_modified_time = get_playlist_modification_time(playlist_path) - tracks = load_playlist(playlist_path) - if not tracks: - print(f"No tracks found in {playlist_path}, checking again in 30 seconds...") - time.sleep(30) - return - - if play_newest_first: - newest_track = get_newest_track(tracks) - if newest_track: - print(f"Playing newest track first: {os.path.basename(newest_track)}") - # Remove the newest track from the list - tracks.remove(newest_track) - # Shuffle the remaining tracks - random.shuffle(tracks) - # Add the newest track back at the beginning - tracks.insert(0, newest_track) - else: - random.shuffle(tracks) - - for track in tracks: - current_modified_time = get_playlist_modification_time(playlist_path) - if current_modified_time > last_modified_time: - print(f"Playlist {playlist_path} has been modified, reloading...") - return - - current_hour = get_current_hour() - current_day = get_current_day() - day_playlist_path = os.path.join(playlist_dir, current_day, 'day') - night_playlist_path = os.path.join(playlist_dir, current_day, 'night') - late_night_playlist_path = os.path.join(playlist_dir, current_day, 'late_night') - - if 8 <= current_hour < 20: - if playlist_path != day_playlist_path: - print("Time changed to day hours, switching playlist...") - return - elif 0 <= current_hour < 6: - if playlist_path != late_night_playlist_path: - print("Time changed to late night hours, switching playlist...") - return - else: - if playlist_path != night_playlist_path: - print("Time changed to night hours, switching playlist...") - return - - track_path = os.path.expanduser(track) - track_name = os.path.basename(track_path) - print(f"Now playing: {track_name}") - update_rds(track_name) - - subprocess.run(['ffplay', '-nodisp', '-stats', '-hide_banner', '-autoexit', track_path]) - -def main(): - # Check if the "n" argument was provided - play_newest_first = len(sys.argv) > 1 and sys.argv[1].lower() == "n" - - if play_newest_first: - print("Newest song will be played first") - - while True: - current_hour = get_current_hour() - current_day = get_current_day() - - day_playlist = os.path.join(playlist_dir, current_day, 'day') - night_playlist = os.path.join(playlist_dir, current_day, 'night') - late_night_playlist = os.path.join(playlist_dir, current_day, 'late_night') - - day_dir = os.path.dirname(day_playlist) - night_dir = os.path.dirname(night_playlist) - late_night_dir = os.path.dirname(late_night_playlist) - - if not os.path.exists(day_dir): - print(f"Creating directory: {day_dir}") - os.makedirs(day_dir, exist_ok=True) - - if not os.path.exists(night_dir): - print(f"Creating directory: {night_dir}") - os.makedirs(night_dir, exist_ok=True) - - if not os.path.exists(late_night_dir): - print(f"Creating directory: {late_night_dir}") - os.makedirs(late_night_dir, exist_ok=True) - - for playlist_path in [day_playlist, night_playlist, late_night_playlist]: - if not os.path.exists(playlist_path): - print(f"Creating empty playlist: {playlist_path}") - with open(playlist_path, 'w') as f: - pass - - if 8 <= current_hour < 20: - print(f"Playing {current_day} day playlist...") - play_playlist(day_playlist, play_newest_first) - elif 0 <= current_hour < 6: - print(f"Playing {current_day} late_night playlist...") - play_playlist(late_night_playlist, play_newest_first) - else: - print(f"Playing {current_day} night playlist...") - play_playlist(night_playlist, play_newest_first) - - -if __name__ == '__main__': - main() diff --git a/playlists/add.sh b/playlists/add.sh deleted file mode 100755 index 551c8ec..0000000 --- a/playlists/add.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -if [ "$#" -ne 2 ]; then - echo "Usage: $0 " - exit 1 -fi - -FILENAME="$1" -TEXT="$2" - -for dir in *; do - if [ -d "$dir" ]; then - echo "$TEXT" >> "$dir/$FILENAME" - fi -done - -echo "Text added to all directories." diff --git a/playlists/friday/day b/playlists/friday/day deleted file mode 100644 index b911774..0000000 --- a/playlists/friday/day +++ /dev/null @@ -1,128 +0,0 @@ -/home/user/mixes/Grunge2.mp3 -/home/user/mixes/Lata90_6.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/BonJovi.mp3 -/home/user/mixes/Madonna.mp3 -/home/user/mixes/Lata2010_4.mp3 -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/AliciaKeys.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Polskie60.mp3 -/home/user/mixes/Blink182.mp3 -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Jamiroquai.mp3 -/home/user/mixes/Finlandia.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Romania.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Polskie80.mp3 -/home/user/mixes/Lata80_5.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lata90_3.mp3 -/home/user/mixes/Lata90.mp3 -/home/user/mixes/Polskie70.mp3 -/home/user/mixes/Abba.mp3 -/home/user/mixes/Lata2010_3.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Blues2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Pop1.mp3 -/home/user/mixes/Rock2.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/BruceSpringsteen.m4a -/home/user/mixes/Paramore.mp3 -/home/user/mixes/Hiszpanka.mp3 -/home/user/mixes/Synthwave2.mp3 -/home/user/mixes/Lata2000.mp3 -/home/user/mixes/BryanAdams.mp3 -/home/user/mixes/Lata2000_3.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Lata60.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/MariahCarey.mp3 -/home/user/mixes/Hiszpanska2.m4a -/home/user/mixes/Wloszczyzna2.mp3 -/home/user/mixes/Lata80_4.mp3 -/home/user/mixes/LeonardCohen.m4a -/home/user/mixes/Lata70_3.mp3 -/home/user/mixes/Polskie4.mp3 -/home/user/mixes/Synthwave4.m4a -/home/user/mixes/Lata60_2.mp3 -/home/user/mixes/Lata90_2.mp3 -/home/user/mixes/Wloszczyzna.mp3 -/home/user/mixes/Lata70_4.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Portugal.mp3 -/home/user/mixes/Coldplay.mp3 -/home/user/mixes/TheRollingStones.mp3 -/home/user/mixes/Grunge3.mp3 -/home/user/mixes/Blues.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/DamskoMeskieDuety.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Greenday.m4a -/home/user/mixes/Lata2010_5.mp3 -/home/user/mixes/Lata2000_2.mp3 -/home/user/mixes/Dzem.m4a -/home/user/mixes/Polskie3.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Pop2.mp3 -/home/user/mixes/Queen.mp3 -/home/user/mixes/GunsNRoses.m4a -/home/user/mixes/Islandia.mp3 -/home/user/mixes/KylieMinogue.mp3 -/home/user/mixes/PinkFloyd.mp3 -/home/user/mixes/JoeCocker.m4a -/home/user/mixes/Japan.mp3 -/home/user/mixes/Lata80_2.mp3 -/home/user/mixes/Enigma.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/Blues3.mp3 -/home/user/mixes/Blues4.mp3 -/home/user/mixes/Lata90_5.mp3 -/home/user/mixes/Lata2010.mp3 -/home/user/mixes/Lata2000_4.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/LedZeppelin.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie6.m4a -/home/user/mixes/Rock3.mp3 -/home/user/mixes/Dunska.mp3 -/home/user/mixes/Norweska.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/Oasis.mp3 -/home/user/mixes/KatyPerry.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Blues5.mp3 -/home/user/mixes/Polskie8.m4a -/home/user/mixes/MediumlistaPolskieLata80.m4a -/home/user/mixes/Lata2000_5.mp3 -/home/user/mixes/Polskie7.m4a -/home/user/mixes/Korean.mp3 -/home/user/mixes/Rock.mp3 -/home/user/mixes/TheKellyFamily.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Lata80_3.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Country2.mp3 -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Lata80.mp3 -/home/user/mixes/Lata2010_2.mp3 -/home/user/mixes/Szwedzka.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/Lata70.mp3 -/home/user/mixes/Lata90_4.mp3 -/home/user/mixes/Aerosmith.mp3 -/home/user/mixes/Country.mp3 -/home/user/mixes/Polskie5.mp3 -/home/user/mixes/TheBeatles.mp3 -/home/user/mixes/Lata70_2.mp3 -/home/user/mixes/Polskie9.m4a -/home/user/mixes/U2.mp3 diff --git a/playlists/friday/late_night b/playlists/friday/late_night deleted file mode 100644 index d3edc54..0000000 --- a/playlists/friday/late_night +++ /dev/null @@ -1,23 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Synthwave3.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/playlists/friday/night b/playlists/friday/night deleted file mode 100644 index eea9ac8..0000000 --- a/playlists/friday/night +++ /dev/null @@ -1,45 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/VocalJazz2.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Soul3.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Progresywnie2.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Soul.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/VocalJazz3.mp3 -/home/user/mixes/Ciezkie.mp3 -/home/user/mixes/Soul2.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/playlists/monday/day b/playlists/monday/day deleted file mode 100644 index 433f990..0000000 --- a/playlists/monday/day +++ /dev/null @@ -1,129 +0,0 @@ -/home/user/mixes/Abba.mp3 -/home/user/mixes/Aerosmith.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/AliciaKeys.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Blink182.mp3 -/home/user/mixes/Blues.mp3 -/home/user/mixes/Blues2.mp3 -/home/user/mixes/Blues3.mp3 -/home/user/mixes/Blues4.mp3 -/home/user/mixes/Blues5.mp3 -/home/user/mixes/BonJovi.mp3 -/home/user/mixes/BryanAdams.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/Coldplay.mp3 -/home/user/mixes/Country.mp3 -/home/user/mixes/Country2.mp3 -/home/user/mixes/DamskoMeskieDuety.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Dunska.mp3 -/home/user/mixes/Enigma.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Finlandia.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Greenday.m4a -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Grunge2.mp3 -/home/user/mixes/Grunge3.mp3 -/home/user/mixes/GunsNRoses.m4a -/home/user/mixes/Hiszpanka.mp3 -/home/user/mixes/Hiszpanska2.m4a -/home/user/mixes/Islandia.mp3 -/home/user/mixes/Jamiroquai.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/KatyPerry.mp3 -/home/user/mixes/Korean.mp3 -/home/user/mixes/KylieMinogue.mp3 -/home/user/mixes/Lata2000.mp3 -/home/user/mixes/Lata2000_2.mp3 -/home/user/mixes/Lata2000_3.mp3 -/home/user/mixes/Lata2000_4.mp3 -/home/user/mixes/Lata2000_5.mp3 -/home/user/mixes/Lata2010.mp3 -/home/user/mixes/Lata2010_2.mp3 -/home/user/mixes/Lata2010_3.mp3 -/home/user/mixes/Lata2010_4.mp3 -/home/user/mixes/Lata2010_5.mp3 -/home/user/mixes/Lata60.mp3 -/home/user/mixes/Lata60_2.mp3 -/home/user/mixes/Lata70.mp3 -/home/user/mixes/Lata70_2.mp3 -/home/user/mixes/Lata70_3.mp3 -/home/user/mixes/Lata70_4.mp3 -/home/user/mixes/Lata80.mp3 -/home/user/mixes/Lata80_2.mp3 -/home/user/mixes/Lata80_3.mp3 -/home/user/mixes/Lata80_4.mp3 -/home/user/mixes/Lata80_5.mp3 -/home/user/mixes/Lata90.mp3 -/home/user/mixes/Lata90_2.mp3 -/home/user/mixes/Lata90_3.mp3 -/home/user/mixes/Lata90_4.mp3 -/home/user/mixes/Lata90_5.mp3 -/home/user/mixes/Lata90_6.mp3 -/home/user/mixes/LedZeppelin.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/LeonardCohen.m4a -/home/user/mixes/Madonna.mp3 -/home/user/mixes/MariahCarey.mp3 -/home/user/mixes/MediumlistaPolskieLata80.m4a -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Norweska.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/Oasis.mp3 -/home/user/mixes/Paramore.mp3 -/home/user/mixes/PinkFloyd.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Polskie3.mp3 -/home/user/mixes/Polskie4.mp3 -/home/user/mixes/Polskie5.mp3 -/home/user/mixes/Polskie6.m4a -/home/user/mixes/Polskie60.mp3 -/home/user/mixes/Polskie7.m4a -/home/user/mixes/Polskie70.mp3 -/home/user/mixes/Polskie8.m4a -/home/user/mixes/Polskie80.mp3 -/home/user/mixes/Polskie9.m4a -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Pop1.mp3 -/home/user/mixes/Pop2.mp3 -/home/user/mixes/Portugal.mp3 -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Queen.mp3 -/home/user/mixes/Rock.mp3 -/home/user/mixes/Rock2.mp3 -/home/user/mixes/Rock3.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Romania.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/Synthwave2.mp3 -/home/user/mixes/Synthwave4.m4a -/home/user/mixes/Szwedzka.mp3 -/home/user/mixes/TheBeatles.mp3 -/home/user/mixes/TheKellyFamily.mp3 -/home/user/mixes/TheRollingStones.mp3 -/home/user/mixes/U2.mp3 -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Wloszczyzna.mp3 -/home/user/mixes/Wloszczyzna2.mp3 -/home/user/mixes/BruceSpringsteen.m4a -/home/user/mixes/JoeCocker.m4a -/home/user/mixes/Dzem.m4a -/home/user/mixes/Ciezkie.mp3 diff --git a/playlists/monday/late_night b/playlists/monday/late_night deleted file mode 100644 index 0c413a6..0000000 --- a/playlists/monday/late_night +++ /dev/null @@ -1,24 +0,0 @@ -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/Synthwave3.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Nostalgia2.mp3 diff --git a/playlists/monday/night b/playlists/monday/night deleted file mode 100644 index e338319..0000000 --- a/playlists/monday/night +++ /dev/null @@ -1,47 +0,0 @@ -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/Ciezkie.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Progresywnie2.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Sade.mp3 -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/Soul.mp3 -/home/user/mixes/Soul2.mp3 -/home/user/mixes/Soul3.mp3 -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/VocalJazz2.mp3 -/home/user/mixes/VocalJazz3.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Grunge.mp3 diff --git a/playlists/saturday/day b/playlists/saturday/day deleted file mode 100644 index b911774..0000000 --- a/playlists/saturday/day +++ /dev/null @@ -1,128 +0,0 @@ -/home/user/mixes/Grunge2.mp3 -/home/user/mixes/Lata90_6.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/BonJovi.mp3 -/home/user/mixes/Madonna.mp3 -/home/user/mixes/Lata2010_4.mp3 -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/AliciaKeys.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Polskie60.mp3 -/home/user/mixes/Blink182.mp3 -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Jamiroquai.mp3 -/home/user/mixes/Finlandia.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Romania.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Polskie80.mp3 -/home/user/mixes/Lata80_5.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lata90_3.mp3 -/home/user/mixes/Lata90.mp3 -/home/user/mixes/Polskie70.mp3 -/home/user/mixes/Abba.mp3 -/home/user/mixes/Lata2010_3.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Blues2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Pop1.mp3 -/home/user/mixes/Rock2.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/BruceSpringsteen.m4a -/home/user/mixes/Paramore.mp3 -/home/user/mixes/Hiszpanka.mp3 -/home/user/mixes/Synthwave2.mp3 -/home/user/mixes/Lata2000.mp3 -/home/user/mixes/BryanAdams.mp3 -/home/user/mixes/Lata2000_3.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Lata60.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/MariahCarey.mp3 -/home/user/mixes/Hiszpanska2.m4a -/home/user/mixes/Wloszczyzna2.mp3 -/home/user/mixes/Lata80_4.mp3 -/home/user/mixes/LeonardCohen.m4a -/home/user/mixes/Lata70_3.mp3 -/home/user/mixes/Polskie4.mp3 -/home/user/mixes/Synthwave4.m4a -/home/user/mixes/Lata60_2.mp3 -/home/user/mixes/Lata90_2.mp3 -/home/user/mixes/Wloszczyzna.mp3 -/home/user/mixes/Lata70_4.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Portugal.mp3 -/home/user/mixes/Coldplay.mp3 -/home/user/mixes/TheRollingStones.mp3 -/home/user/mixes/Grunge3.mp3 -/home/user/mixes/Blues.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/DamskoMeskieDuety.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Greenday.m4a -/home/user/mixes/Lata2010_5.mp3 -/home/user/mixes/Lata2000_2.mp3 -/home/user/mixes/Dzem.m4a -/home/user/mixes/Polskie3.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Pop2.mp3 -/home/user/mixes/Queen.mp3 -/home/user/mixes/GunsNRoses.m4a -/home/user/mixes/Islandia.mp3 -/home/user/mixes/KylieMinogue.mp3 -/home/user/mixes/PinkFloyd.mp3 -/home/user/mixes/JoeCocker.m4a -/home/user/mixes/Japan.mp3 -/home/user/mixes/Lata80_2.mp3 -/home/user/mixes/Enigma.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/Blues3.mp3 -/home/user/mixes/Blues4.mp3 -/home/user/mixes/Lata90_5.mp3 -/home/user/mixes/Lata2010.mp3 -/home/user/mixes/Lata2000_4.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/LedZeppelin.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie6.m4a -/home/user/mixes/Rock3.mp3 -/home/user/mixes/Dunska.mp3 -/home/user/mixes/Norweska.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/Oasis.mp3 -/home/user/mixes/KatyPerry.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Blues5.mp3 -/home/user/mixes/Polskie8.m4a -/home/user/mixes/MediumlistaPolskieLata80.m4a -/home/user/mixes/Lata2000_5.mp3 -/home/user/mixes/Polskie7.m4a -/home/user/mixes/Korean.mp3 -/home/user/mixes/Rock.mp3 -/home/user/mixes/TheKellyFamily.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Lata80_3.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Country2.mp3 -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Lata80.mp3 -/home/user/mixes/Lata2010_2.mp3 -/home/user/mixes/Szwedzka.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/Lata70.mp3 -/home/user/mixes/Lata90_4.mp3 -/home/user/mixes/Aerosmith.mp3 -/home/user/mixes/Country.mp3 -/home/user/mixes/Polskie5.mp3 -/home/user/mixes/TheBeatles.mp3 -/home/user/mixes/Lata70_2.mp3 -/home/user/mixes/Polskie9.m4a -/home/user/mixes/U2.mp3 diff --git a/playlists/saturday/late_night b/playlists/saturday/late_night deleted file mode 100644 index 5e8e513..0000000 --- a/playlists/saturday/late_night +++ /dev/null @@ -1,27 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Synthwave3.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Grunge.mp3 diff --git a/playlists/saturday/night b/playlists/saturday/night deleted file mode 100644 index 24c1402..0000000 --- a/playlists/saturday/night +++ /dev/null @@ -1,48 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/VocalJazz2.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Soul3.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Progresywnie2.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Soul.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/VocalJazz3.mp3 -/home/user/mixes/Ciezkie.mp3 -/home/user/mixes/Soul2.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 -/home/user/mixes/Blink182.mp3 -/home/user/mixes/Grunge2.mp3 -/home/user/mixes/Grunge3.mp3 diff --git a/playlists/sunday/day b/playlists/sunday/day deleted file mode 100644 index b911774..0000000 --- a/playlists/sunday/day +++ /dev/null @@ -1,128 +0,0 @@ -/home/user/mixes/Grunge2.mp3 -/home/user/mixes/Lata90_6.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/BonJovi.mp3 -/home/user/mixes/Madonna.mp3 -/home/user/mixes/Lata2010_4.mp3 -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/AliciaKeys.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Polskie60.mp3 -/home/user/mixes/Blink182.mp3 -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Jamiroquai.mp3 -/home/user/mixes/Finlandia.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Romania.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Polskie80.mp3 -/home/user/mixes/Lata80_5.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lata90_3.mp3 -/home/user/mixes/Lata90.mp3 -/home/user/mixes/Polskie70.mp3 -/home/user/mixes/Abba.mp3 -/home/user/mixes/Lata2010_3.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Blues2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Pop1.mp3 -/home/user/mixes/Rock2.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/BruceSpringsteen.m4a -/home/user/mixes/Paramore.mp3 -/home/user/mixes/Hiszpanka.mp3 -/home/user/mixes/Synthwave2.mp3 -/home/user/mixes/Lata2000.mp3 -/home/user/mixes/BryanAdams.mp3 -/home/user/mixes/Lata2000_3.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Lata60.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/MariahCarey.mp3 -/home/user/mixes/Hiszpanska2.m4a -/home/user/mixes/Wloszczyzna2.mp3 -/home/user/mixes/Lata80_4.mp3 -/home/user/mixes/LeonardCohen.m4a -/home/user/mixes/Lata70_3.mp3 -/home/user/mixes/Polskie4.mp3 -/home/user/mixes/Synthwave4.m4a -/home/user/mixes/Lata60_2.mp3 -/home/user/mixes/Lata90_2.mp3 -/home/user/mixes/Wloszczyzna.mp3 -/home/user/mixes/Lata70_4.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Portugal.mp3 -/home/user/mixes/Coldplay.mp3 -/home/user/mixes/TheRollingStones.mp3 -/home/user/mixes/Grunge3.mp3 -/home/user/mixes/Blues.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/DamskoMeskieDuety.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Greenday.m4a -/home/user/mixes/Lata2010_5.mp3 -/home/user/mixes/Lata2000_2.mp3 -/home/user/mixes/Dzem.m4a -/home/user/mixes/Polskie3.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Pop2.mp3 -/home/user/mixes/Queen.mp3 -/home/user/mixes/GunsNRoses.m4a -/home/user/mixes/Islandia.mp3 -/home/user/mixes/KylieMinogue.mp3 -/home/user/mixes/PinkFloyd.mp3 -/home/user/mixes/JoeCocker.m4a -/home/user/mixes/Japan.mp3 -/home/user/mixes/Lata80_2.mp3 -/home/user/mixes/Enigma.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/Blues3.mp3 -/home/user/mixes/Blues4.mp3 -/home/user/mixes/Lata90_5.mp3 -/home/user/mixes/Lata2010.mp3 -/home/user/mixes/Lata2000_4.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/LedZeppelin.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie6.m4a -/home/user/mixes/Rock3.mp3 -/home/user/mixes/Dunska.mp3 -/home/user/mixes/Norweska.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/Oasis.mp3 -/home/user/mixes/KatyPerry.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Blues5.mp3 -/home/user/mixes/Polskie8.m4a -/home/user/mixes/MediumlistaPolskieLata80.m4a -/home/user/mixes/Lata2000_5.mp3 -/home/user/mixes/Polskie7.m4a -/home/user/mixes/Korean.mp3 -/home/user/mixes/Rock.mp3 -/home/user/mixes/TheKellyFamily.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Lata80_3.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Country2.mp3 -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Lata80.mp3 -/home/user/mixes/Lata2010_2.mp3 -/home/user/mixes/Szwedzka.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/Lata70.mp3 -/home/user/mixes/Lata90_4.mp3 -/home/user/mixes/Aerosmith.mp3 -/home/user/mixes/Country.mp3 -/home/user/mixes/Polskie5.mp3 -/home/user/mixes/TheBeatles.mp3 -/home/user/mixes/Lata70_2.mp3 -/home/user/mixes/Polskie9.m4a -/home/user/mixes/U2.mp3 diff --git a/playlists/sunday/late_night b/playlists/sunday/late_night deleted file mode 100644 index f4889bd..0000000 --- a/playlists/sunday/late_night +++ /dev/null @@ -1,24 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Synthwave3.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 -/home/user/mixes/Ciezkie.mp3 diff --git a/playlists/sunday/night b/playlists/sunday/night deleted file mode 100644 index eea9ac8..0000000 --- a/playlists/sunday/night +++ /dev/null @@ -1,45 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/VocalJazz2.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Soul3.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Progresywnie2.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Soul.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/VocalJazz3.mp3 -/home/user/mixes/Ciezkie.mp3 -/home/user/mixes/Soul2.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/playlists/thursday/day b/playlists/thursday/day deleted file mode 100644 index b911774..0000000 --- a/playlists/thursday/day +++ /dev/null @@ -1,128 +0,0 @@ -/home/user/mixes/Grunge2.mp3 -/home/user/mixes/Lata90_6.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/BonJovi.mp3 -/home/user/mixes/Madonna.mp3 -/home/user/mixes/Lata2010_4.mp3 -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/AliciaKeys.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Polskie60.mp3 -/home/user/mixes/Blink182.mp3 -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Jamiroquai.mp3 -/home/user/mixes/Finlandia.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Romania.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Polskie80.mp3 -/home/user/mixes/Lata80_5.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lata90_3.mp3 -/home/user/mixes/Lata90.mp3 -/home/user/mixes/Polskie70.mp3 -/home/user/mixes/Abba.mp3 -/home/user/mixes/Lata2010_3.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Blues2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Pop1.mp3 -/home/user/mixes/Rock2.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/BruceSpringsteen.m4a -/home/user/mixes/Paramore.mp3 -/home/user/mixes/Hiszpanka.mp3 -/home/user/mixes/Synthwave2.mp3 -/home/user/mixes/Lata2000.mp3 -/home/user/mixes/BryanAdams.mp3 -/home/user/mixes/Lata2000_3.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Lata60.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/MariahCarey.mp3 -/home/user/mixes/Hiszpanska2.m4a -/home/user/mixes/Wloszczyzna2.mp3 -/home/user/mixes/Lata80_4.mp3 -/home/user/mixes/LeonardCohen.m4a -/home/user/mixes/Lata70_3.mp3 -/home/user/mixes/Polskie4.mp3 -/home/user/mixes/Synthwave4.m4a -/home/user/mixes/Lata60_2.mp3 -/home/user/mixes/Lata90_2.mp3 -/home/user/mixes/Wloszczyzna.mp3 -/home/user/mixes/Lata70_4.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Portugal.mp3 -/home/user/mixes/Coldplay.mp3 -/home/user/mixes/TheRollingStones.mp3 -/home/user/mixes/Grunge3.mp3 -/home/user/mixes/Blues.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/DamskoMeskieDuety.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Greenday.m4a -/home/user/mixes/Lata2010_5.mp3 -/home/user/mixes/Lata2000_2.mp3 -/home/user/mixes/Dzem.m4a -/home/user/mixes/Polskie3.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Pop2.mp3 -/home/user/mixes/Queen.mp3 -/home/user/mixes/GunsNRoses.m4a -/home/user/mixes/Islandia.mp3 -/home/user/mixes/KylieMinogue.mp3 -/home/user/mixes/PinkFloyd.mp3 -/home/user/mixes/JoeCocker.m4a -/home/user/mixes/Japan.mp3 -/home/user/mixes/Lata80_2.mp3 -/home/user/mixes/Enigma.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/Blues3.mp3 -/home/user/mixes/Blues4.mp3 -/home/user/mixes/Lata90_5.mp3 -/home/user/mixes/Lata2010.mp3 -/home/user/mixes/Lata2000_4.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/LedZeppelin.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie6.m4a -/home/user/mixes/Rock3.mp3 -/home/user/mixes/Dunska.mp3 -/home/user/mixes/Norweska.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/Oasis.mp3 -/home/user/mixes/KatyPerry.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Blues5.mp3 -/home/user/mixes/Polskie8.m4a -/home/user/mixes/MediumlistaPolskieLata80.m4a -/home/user/mixes/Lata2000_5.mp3 -/home/user/mixes/Polskie7.m4a -/home/user/mixes/Korean.mp3 -/home/user/mixes/Rock.mp3 -/home/user/mixes/TheKellyFamily.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Lata80_3.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Country2.mp3 -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Lata80.mp3 -/home/user/mixes/Lata2010_2.mp3 -/home/user/mixes/Szwedzka.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/Lata70.mp3 -/home/user/mixes/Lata90_4.mp3 -/home/user/mixes/Aerosmith.mp3 -/home/user/mixes/Country.mp3 -/home/user/mixes/Polskie5.mp3 -/home/user/mixes/TheBeatles.mp3 -/home/user/mixes/Lata70_2.mp3 -/home/user/mixes/Polskie9.m4a -/home/user/mixes/U2.mp3 diff --git a/playlists/thursday/late_night b/playlists/thursday/late_night deleted file mode 100644 index d3edc54..0000000 --- a/playlists/thursday/late_night +++ /dev/null @@ -1,23 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Synthwave3.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/playlists/thursday/night b/playlists/thursday/night deleted file mode 100644 index eea9ac8..0000000 --- a/playlists/thursday/night +++ /dev/null @@ -1,45 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/VocalJazz2.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Soul3.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Progresywnie2.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Soul.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/VocalJazz3.mp3 -/home/user/mixes/Ciezkie.mp3 -/home/user/mixes/Soul2.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/playlists/tuesday/day b/playlists/tuesday/day deleted file mode 100644 index b911774..0000000 --- a/playlists/tuesday/day +++ /dev/null @@ -1,128 +0,0 @@ -/home/user/mixes/Grunge2.mp3 -/home/user/mixes/Lata90_6.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/BonJovi.mp3 -/home/user/mixes/Madonna.mp3 -/home/user/mixes/Lata2010_4.mp3 -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/AliciaKeys.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Polskie60.mp3 -/home/user/mixes/Blink182.mp3 -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Jamiroquai.mp3 -/home/user/mixes/Finlandia.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Romania.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Polskie80.mp3 -/home/user/mixes/Lata80_5.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lata90_3.mp3 -/home/user/mixes/Lata90.mp3 -/home/user/mixes/Polskie70.mp3 -/home/user/mixes/Abba.mp3 -/home/user/mixes/Lata2010_3.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Blues2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Pop1.mp3 -/home/user/mixes/Rock2.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/BruceSpringsteen.m4a -/home/user/mixes/Paramore.mp3 -/home/user/mixes/Hiszpanka.mp3 -/home/user/mixes/Synthwave2.mp3 -/home/user/mixes/Lata2000.mp3 -/home/user/mixes/BryanAdams.mp3 -/home/user/mixes/Lata2000_3.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Lata60.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/MariahCarey.mp3 -/home/user/mixes/Hiszpanska2.m4a -/home/user/mixes/Wloszczyzna2.mp3 -/home/user/mixes/Lata80_4.mp3 -/home/user/mixes/LeonardCohen.m4a -/home/user/mixes/Lata70_3.mp3 -/home/user/mixes/Polskie4.mp3 -/home/user/mixes/Synthwave4.m4a -/home/user/mixes/Lata60_2.mp3 -/home/user/mixes/Lata90_2.mp3 -/home/user/mixes/Wloszczyzna.mp3 -/home/user/mixes/Lata70_4.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Portugal.mp3 -/home/user/mixes/Coldplay.mp3 -/home/user/mixes/TheRollingStones.mp3 -/home/user/mixes/Grunge3.mp3 -/home/user/mixes/Blues.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/DamskoMeskieDuety.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Greenday.m4a -/home/user/mixes/Lata2010_5.mp3 -/home/user/mixes/Lata2000_2.mp3 -/home/user/mixes/Dzem.m4a -/home/user/mixes/Polskie3.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Pop2.mp3 -/home/user/mixes/Queen.mp3 -/home/user/mixes/GunsNRoses.m4a -/home/user/mixes/Islandia.mp3 -/home/user/mixes/KylieMinogue.mp3 -/home/user/mixes/PinkFloyd.mp3 -/home/user/mixes/JoeCocker.m4a -/home/user/mixes/Japan.mp3 -/home/user/mixes/Lata80_2.mp3 -/home/user/mixes/Enigma.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/Blues3.mp3 -/home/user/mixes/Blues4.mp3 -/home/user/mixes/Lata90_5.mp3 -/home/user/mixes/Lata2010.mp3 -/home/user/mixes/Lata2000_4.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/LedZeppelin.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie6.m4a -/home/user/mixes/Rock3.mp3 -/home/user/mixes/Dunska.mp3 -/home/user/mixes/Norweska.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/Oasis.mp3 -/home/user/mixes/KatyPerry.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Blues5.mp3 -/home/user/mixes/Polskie8.m4a -/home/user/mixes/MediumlistaPolskieLata80.m4a -/home/user/mixes/Lata2000_5.mp3 -/home/user/mixes/Polskie7.m4a -/home/user/mixes/Korean.mp3 -/home/user/mixes/Rock.mp3 -/home/user/mixes/TheKellyFamily.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Lata80_3.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Country2.mp3 -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Lata80.mp3 -/home/user/mixes/Lata2010_2.mp3 -/home/user/mixes/Szwedzka.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/Lata70.mp3 -/home/user/mixes/Lata90_4.mp3 -/home/user/mixes/Aerosmith.mp3 -/home/user/mixes/Country.mp3 -/home/user/mixes/Polskie5.mp3 -/home/user/mixes/TheBeatles.mp3 -/home/user/mixes/Lata70_2.mp3 -/home/user/mixes/Polskie9.m4a -/home/user/mixes/U2.mp3 diff --git a/playlists/tuesday/late_night b/playlists/tuesday/late_night deleted file mode 100644 index d3edc54..0000000 --- a/playlists/tuesday/late_night +++ /dev/null @@ -1,23 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Synthwave3.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/playlists/tuesday/night b/playlists/tuesday/night deleted file mode 100644 index eea9ac8..0000000 --- a/playlists/tuesday/night +++ /dev/null @@ -1,45 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/VocalJazz2.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Soul3.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Progresywnie2.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Soul.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/VocalJazz3.mp3 -/home/user/mixes/Ciezkie.mp3 -/home/user/mixes/Soul2.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/playlists/tui.py b/playlists/tui.py deleted file mode 100644 index 35cae52..0000000 --- a/playlists/tui.py +++ /dev/null @@ -1,399 +0,0 @@ -#!/usr/bin/env python3 -import os -import sys -import termios -import tty -import signal -import shutil -from datetime import datetime - -def get_audio_files(directory): - """Get all mp3 and m4a files from the specified directory""" - audio_files = [] - try: - for file in os.listdir(directory): - if file.lower().endswith(('.mp3', '.m4a')): - audio_files.append(file) - return sorted(audio_files) - except FileNotFoundError: - print(f"Error: Directory '{directory}' not found.") - return [] - except PermissionError: - print(f"Error: Permission denied for directory '{directory}'.") - return [] - -def get_char(): - """Get a single character from standard input""" - fd = sys.stdin.fileno() - old_settings = termios.tcgetattr(fd) - try: - tty.setraw(sys.stdin.fileno()) - ch = sys.stdin.read(1) - finally: - termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) - return ch - -def clear_screen(): - """Clear the terminal screen""" - print("\033c", end="") - -def get_terminal_size(): - """Get the current terminal size""" - return shutil.get_terminal_size() - -def get_days_of_week(): - """Get list of days of the week starting from today""" - days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] - today = datetime.now().weekday() # 0 is Monday, 6 is Sunday - # Reorder days so today is first - return days[today:] + days[:today] - -def ensure_playlist_dir(day): - """Ensure playlist directory exists for the given day""" - playlist_dir = os.path.expanduser(f"~/playlists/{day}") - if not os.path.exists(playlist_dir): - os.makedirs(playlist_dir) - return playlist_dir - -def update_playlist_file(day, period, filepath, add): - """Add or remove a file from a playlist""" - # Ensure day directory exists - playlist_dir = ensure_playlist_dir(day) - playlist_file = os.path.join(playlist_dir, period) - - # Get full path of the audio file - full_filepath = os.path.join("/home/user/mixes", filepath) - - # Create file if it doesn't exist - if not os.path.exists(playlist_file): - with open(playlist_file, 'w') as f: - pass - - # Read current playlist content - with open(playlist_file, 'r') as f: - lines = f.read().splitlines() - - # Add or remove file - if add and full_filepath not in lines: - lines.append(full_filepath) - elif not add and full_filepath in lines: - lines.remove(full_filepath) - - # Write updated playlist back to file - with open(playlist_file, 'w') as f: - f.write('\n'.join(lines) + ('\n' if lines else '')) - -def load_playlists(days): - """Load existing playlists for all days""" - playlists = {} - for day in days: - playlists[day] = {'day': set(), 'night': set(), 'late_night': set()} - playlist_dir = os.path.expanduser(f"~/playlists/{day}") - - if os.path.exists(playlist_dir): - for period in ['day', 'night', 'late_night']: - playlist_file = os.path.join(playlist_dir, period) - if os.path.exists(playlist_file): - with open(playlist_file, 'r') as f: - for line in f: - line = line.strip() - if line: - # Extract filename only - filename = os.path.basename(line) - playlists[day][period].add(filename) - - return playlists - -def copy_day_to_all(playlists, source_day, days, audio_files): - """Copy playlists from source day to all other days""" - periods = ['day', 'night', 'late_night'] - - for target_day in days: - if target_day == source_day: - continue - - for period in periods: - # Clear target day's period playlist - target_dir = ensure_playlist_dir(target_day) - target_file = os.path.join(target_dir, period) - - # Get files to write - filepaths = [] - for filename in playlists[source_day][period]: - full_path = os.path.join("/home/user/mixes", filename) - filepaths.append(full_path) - - # Update the target playlist file - with open(target_file, 'w') as f: - f.write('\n'.join(filepaths) + ('\n' if filepaths else '')) - - # Update the playlists dictionary to match - playlists[target_day][period] = set(playlists[source_day][period]) - - return playlists - -def copy_current_file_to_all(playlists, source_day, days, current_file): - """Sync current file's presence in all days based on source_day's state""" - # Get the source day's state for each period - source_periods = { - 'day': current_file in playlists[source_day]['day'], - 'night': current_file in playlists[source_day]['night'], - 'late_night': current_file in playlists[source_day]['late_night'] - } - - # If file isn't in any playlist of the source day, return - if not any(source_periods.values()): - return playlists, False - - # Sync to all other days - for target_day in days: - if target_day == source_day: - continue - - for period, is_present in source_periods.items(): - target_set = playlists[target_day][period] - full_path = os.path.join("/home/user/mixes", current_file) - - # Update the in-memory playlist - if is_present: - target_set.add(current_file) - else: - target_set.discard(current_file) - - # Update the physical file - playlist_dir = ensure_playlist_dir(target_day) - playlist_file = os.path.join(playlist_dir, period) - - # Read existing content - if os.path.exists(playlist_file): - with open(playlist_file, 'r') as f: - lines = [line.strip() for line in f.readlines()] - else: - lines = [] - - # Add or remove the file - if is_present and full_path not in lines: - lines.append(full_path) - elif not is_present: - while full_path in lines: - lines.remove(full_path) - - # Write updated content - with open(playlist_file, 'w') as f: - f.write('\n'.join(lines) + ('\n' if lines else '')) - - return playlists, True - -def draw_interface(audio_files, playlists, selected_idx, current_day_idx, scroll_offset, message=None): - """Draw the TUI interface with day-of-week sections""" - clear_screen() - term_width, term_height = get_terminal_size() - days = get_days_of_week() - current_day = days[current_day_idx] - - # Calculate visible range with scrolling - available_lines = term_height - 5 # Header + status lines + message + footer - start_idx = max(0, min(scroll_offset, len(audio_files) - available_lines)) - end_idx = min(start_idx + available_lines, len(audio_files)) - - # Day navigation bar - day_bar = "" - for i, day in enumerate(days): - if i == current_day_idx: - day_bar += f"\033[1;44m[{day}]\033[0m " - else: - day_bar += f"[{day}] " - print(day_bar.strip()) - - # Controls and info line - print(f"UP/DOWN: Navigate | D/N/L: Toggle | C: Copy day to all | F: Copy file to all | Q: Quit") - - # Display scroll indicators if needed - if start_idx > 0: - print("↑", end="") - else: - print(" ", end="") - - # Display position info in the middle - position_info = f" {current_day.capitalize()} | File {selected_idx + 1}/{len(audio_files)} " - padding = term_width - len(position_info) - 2 # 2 for scroll indicators - print(position_info.center(padding), end="") - - # Display scroll indicator if more files below - if end_idx < len(audio_files): - print("↓") - else: - print(" ") - - # Display message if provided - if message: - print(f"\033[1;32m{message}\033[0m") - else: - print() # Empty line for consistent spacing - - # Display visible files - for idx in range(start_idx, end_idx): - file = audio_files[idx] - - # Check if file is in playlists - in_day = file in playlists[current_day]['day'] - in_night = file in playlists[current_day]['night'] - in_late_night = file in playlists[current_day]['late_night'] - - d_color = "\033[1;32m" if in_day else "\033[1;30m" - n_color = "\033[1;32m" if in_night else "\033[1;30m" - l_color = "\033[1;32m" if in_late_night else "\033[1;30m" - - # Row highlighting for current selection - if idx == selected_idx: - row_highlight = "\033[1;44m" # Blue background - else: - row_highlight = "" - - # Truncate filename if too long for the terminal width - max_filename_length = term_width - 15 # Account for the selector buttons and spacing - if len(file) > max_filename_length: - file = file[:max_filename_length-3] + "..." - - print(f"{row_highlight}[{d_color}D\033[0m{row_highlight}] [{n_color}N\033[0m{row_highlight}] [{l_color}L\033[0m{row_highlight}] {file}\033[0m") - -def main(): - """Main function to run the TUI""" - directory = "/home/user/mixes" - audio_files = get_audio_files(directory) - - if not audio_files: - print("No audio files found. Exiting.") - return - - days_of_week = get_days_of_week() - playlists = load_playlists(days_of_week) - - selected_idx = 0 # Currently selected file index - current_day_idx = 0 # Currently displayed day (0 = today) - scroll_offset = 0 # Starting scroll position - flash_message = None # Message to display - message_timer = 0 # Timer to clear the message - - # Handle Ctrl+C gracefully - def signal_handler(sig, frame): - clear_screen() - sys.exit(0) - - signal.signal(signal.SIGINT, signal_handler) - - # Main loop - while True: - term_width, term_height = get_terminal_size() - visible_lines = term_height - 5 # Adjust for header, message and footer - - # Adjust scroll offset to keep selected item visible - if selected_idx < scroll_offset: - scroll_offset = selected_idx - elif selected_idx >= scroll_offset + visible_lines: - scroll_offset = selected_idx - visible_lines + 1 - - # Draw the interface - draw_interface(audio_files, playlists, selected_idx, current_day_idx, scroll_offset, flash_message) - - # Clear message after a short time (faster) - if flash_message: - message_timer += 1 - if message_timer > 1: # Clear after 2 renders (faster) - flash_message = None - message_timer = 0 - - # Get user input - key = get_char() - - if key == 'q': # Quit - clear_screen() - break - elif key == '\x1b': # Escape sequence for arrow keys - next_key = get_char() - if next_key == '[': - arrow_key = get_char() - if arrow_key == 'A': # Up arrow - selected_idx = max(0, selected_idx - 1) - elif arrow_key == 'B': # Down arrow - selected_idx = min(len(audio_files) - 1, selected_idx + 1) - elif arrow_key == 'C': # Right arrow - next day - current_day_idx = (current_day_idx + 1) % len(days_of_week) - elif arrow_key == 'D': # Left arrow - previous day - current_day_idx = (current_day_idx - 1) % len(days_of_week) - elif arrow_key == '5': # Page Up - try: - next_key = get_char() # Consume the trailing ~ character - except: - pass - selected_idx = max(0, selected_idx - visible_lines) - elif arrow_key == '6': # Page Down - try: - next_key = get_char() # Consume the trailing ~ character - except: - pass - selected_idx = min(len(audio_files) - 1, selected_idx + visible_lines) - elif key == ' ': # Space for Page Down - selected_idx = min(len(audio_files) - 1, selected_idx + visible_lines) - elif key.lower() == 'd': # Toggle Day playlist - current_day = days_of_week[current_day_idx] - file = audio_files[selected_idx] - is_in_playlist = file in playlists[current_day]['day'] - - if is_in_playlist: - playlists[current_day]['day'].remove(file) - else: - playlists[current_day]['day'].add(file) - - update_playlist_file(current_day, 'day', file, not is_in_playlist) - - elif key.lower() == 'n': # Toggle Night playlist - current_day = days_of_week[current_day_idx] - file = audio_files[selected_idx] - is_in_playlist = file in playlists[current_day]['night'] - - if is_in_playlist: - playlists[current_day]['night'].remove(file) - else: - playlists[current_day]['night'].add(file) - - update_playlist_file(current_day, 'night', file, not is_in_playlist) - - elif key.lower() == 'l': # Toggle Late Night playlist - current_day = days_of_week[current_day_idx] - file = audio_files[selected_idx] - is_in_playlist = file in playlists[current_day]['late_night'] - - if is_in_playlist: - playlists[current_day]['late_night'].remove(file) - else: - playlists[current_day]['late_night'].add(file) - - update_playlist_file(current_day, 'late_night', file, not is_in_playlist) - - elif key.lower() == 'c': # Copy current day to all other days - current_day = days_of_week[current_day_idx] - playlists = copy_day_to_all(playlists, current_day, days_of_week, audio_files) - flash_message = f"Playlists from {current_day} copied to all other days!" - message_timer = 0 - - elif key.lower() == 'f': # Copy current file to all other days - current_day = days_of_week[current_day_idx] - current_file = audio_files[selected_idx] - - # Try to copy the file to all days - playlists, success = copy_current_file_to_all(playlists, current_day, days_of_week, current_file) - - if success: - flash_message = f"File '{current_file}' copied to all days!" - else: - flash_message = f"File not in any playlist! Add it first." - message_timer = 0 - - elif key == 'g': # Go to beginning - selected_idx = 0 - elif key == 'G': # Go to end - selected_idx = len(audio_files) - 1 - -if __name__ == "__main__": - main() diff --git a/playlists/wednesday/day b/playlists/wednesday/day deleted file mode 100644 index b911774..0000000 --- a/playlists/wednesday/day +++ /dev/null @@ -1,128 +0,0 @@ -/home/user/mixes/Grunge2.mp3 -/home/user/mixes/Lata90_6.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/BonJovi.mp3 -/home/user/mixes/Madonna.mp3 -/home/user/mixes/Lata2010_4.mp3 -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/AliciaKeys.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Polskie60.mp3 -/home/user/mixes/Blink182.mp3 -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Jamiroquai.mp3 -/home/user/mixes/Finlandia.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Romania.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Polskie80.mp3 -/home/user/mixes/Lata80_5.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lata90_3.mp3 -/home/user/mixes/Lata90.mp3 -/home/user/mixes/Polskie70.mp3 -/home/user/mixes/Abba.mp3 -/home/user/mixes/Lata2010_3.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Blues2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Pop1.mp3 -/home/user/mixes/Rock2.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/BruceSpringsteen.m4a -/home/user/mixes/Paramore.mp3 -/home/user/mixes/Hiszpanka.mp3 -/home/user/mixes/Synthwave2.mp3 -/home/user/mixes/Lata2000.mp3 -/home/user/mixes/BryanAdams.mp3 -/home/user/mixes/Lata2000_3.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/Lata60.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/MariahCarey.mp3 -/home/user/mixes/Hiszpanska2.m4a -/home/user/mixes/Wloszczyzna2.mp3 -/home/user/mixes/Lata80_4.mp3 -/home/user/mixes/LeonardCohen.m4a -/home/user/mixes/Lata70_3.mp3 -/home/user/mixes/Polskie4.mp3 -/home/user/mixes/Synthwave4.m4a -/home/user/mixes/Lata60_2.mp3 -/home/user/mixes/Lata90_2.mp3 -/home/user/mixes/Wloszczyzna.mp3 -/home/user/mixes/Lata70_4.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Portugal.mp3 -/home/user/mixes/Coldplay.mp3 -/home/user/mixes/TheRollingStones.mp3 -/home/user/mixes/Grunge3.mp3 -/home/user/mixes/Blues.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/DamskoMeskieDuety.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Greenday.m4a -/home/user/mixes/Lata2010_5.mp3 -/home/user/mixes/Lata2000_2.mp3 -/home/user/mixes/Dzem.m4a -/home/user/mixes/Polskie3.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Pop2.mp3 -/home/user/mixes/Queen.mp3 -/home/user/mixes/GunsNRoses.m4a -/home/user/mixes/Islandia.mp3 -/home/user/mixes/KylieMinogue.mp3 -/home/user/mixes/PinkFloyd.mp3 -/home/user/mixes/JoeCocker.m4a -/home/user/mixes/Japan.mp3 -/home/user/mixes/Lata80_2.mp3 -/home/user/mixes/Enigma.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/Blues3.mp3 -/home/user/mixes/Blues4.mp3 -/home/user/mixes/Lata90_5.mp3 -/home/user/mixes/Lata2010.mp3 -/home/user/mixes/Lata2000_4.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/LedZeppelin.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie6.m4a -/home/user/mixes/Rock3.mp3 -/home/user/mixes/Dunska.mp3 -/home/user/mixes/Norweska.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/Oasis.mp3 -/home/user/mixes/KatyPerry.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Blues5.mp3 -/home/user/mixes/Polskie8.m4a -/home/user/mixes/MediumlistaPolskieLata80.m4a -/home/user/mixes/Lata2000_5.mp3 -/home/user/mixes/Polskie7.m4a -/home/user/mixes/Korean.mp3 -/home/user/mixes/Rock.mp3 -/home/user/mixes/TheKellyFamily.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Lata80_3.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Country2.mp3 -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Lata80.mp3 -/home/user/mixes/Lata2010_2.mp3 -/home/user/mixes/Szwedzka.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/Lata70.mp3 -/home/user/mixes/Lata90_4.mp3 -/home/user/mixes/Aerosmith.mp3 -/home/user/mixes/Country.mp3 -/home/user/mixes/Polskie5.mp3 -/home/user/mixes/TheBeatles.mp3 -/home/user/mixes/Lata70_2.mp3 -/home/user/mixes/Polskie9.m4a -/home/user/mixes/U2.mp3 diff --git a/playlists/wednesday/late_night b/playlists/wednesday/late_night deleted file mode 100644 index d3edc54..0000000 --- a/playlists/wednesday/late_night +++ /dev/null @@ -1,23 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Synthwave.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Synthwave3.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/playlists/wednesday/night b/playlists/wednesday/night deleted file mode 100644 index eea9ac8..0000000 --- a/playlists/wednesday/night +++ /dev/null @@ -1,45 +0,0 @@ -/home/user/mixes/ShortlistaAkustycznie.m4a -/home/user/mixes/VocalJazz2.mp3 -/home/user/mixes/Alternatywnie.mp3 -/home/user/mixes/Evanescence.mp3 -/home/user/mixes/Alternatywnie2.mp3 -/home/user/mixes/Lekkie4.mp3 -/home/user/mixes/RockowoAlternatywnie.m4a -/home/user/mixes/Polskie2000.mp3 -/home/user/mixes/VocalJazz.mp3 -/home/user/mixes/Soul3.mp3 -/home/user/mixes/Polskie2.mp3 -/home/user/mixes/MuzykaCeltycka.m4a -/home/user/mixes/WithinTemptation.mp3 -/home/user/mixes/Akustycznie2.mp3 -/home/user/mixes/Lekkie3.mp3 -/home/user/mixes/Sade.mp3 -/home/user/mixes/Alternatywnie3.mp3 -/home/user/mixes/Lekkie5.m4a -/home/user/mixes/Polskie1.mp3 -/home/user/mixes/Niemieckie.mp3 -/home/user/mixes/Francuska.mp3 -/home/user/mixes/Placebo.mp3 -/home/user/mixes/Nostalgia2.mp3 -/home/user/mixes/Nostalgia1.mp3 -/home/user/mixes/DepecheMode.mp3 -/home/user/mixes/Japan.mp3 -/home/user/mixes/Polskie90.mp3 -/home/user/mixes/Progresywnie.mp3 -/home/user/mixes/Progresywnie2.mp3 -/home/user/mixes/Prodigy.mp3 -/home/user/mixes/Grunge.mp3 -/home/user/mixes/Lekkie2.mp3 -/home/user/mixes/Nostalgia3.m4a -/home/user/mixes/ProcolHarum.mp3 -/home/user/mixes/Soul.mp3 -/home/user/mixes/Muzykafilmowa.mp3 -/home/user/mixes/GloriaEstefan.mp3 -/home/user/mixes/Akustycznie.mp3 -/home/user/mixes/VocalJazz3.mp3 -/home/user/mixes/Ciezkie.mp3 -/home/user/mixes/Soul2.mp3 -/home/user/mixes/ChrisRea.mp3 -/home/user/mixes/Lekkie.mp3 -/home/user/mixes/Polskie2010.mp3 -/home/user/mixes/Muzykafilmowa2.mp3 diff --git a/radioPlayer.py b/radioPlayer.py new file mode 100644 index 0000000..1a4a2bb --- /dev/null +++ b/radioPlayer.py @@ -0,0 +1,199 @@ +#!/usr/bin/env python3 +import os +import random +import subprocess +import time +import sys +from datetime import datetime + +playlist_dir = "/home/user/playlists" +name_table_dir = "/home/user/mixes/name_table.txt" + +rds_base = "Gramy: radio95 - {}" +rds_default_name = "Program Godzinny" +rds_path = "/home/user/RDS" +rds_rtp_data = "4,7,7,1,17" + +def get_current_hour(): + return datetime.now().hour + +def get_current_day(): + return datetime.now().strftime('%A').lower() + +def load_dict_from_custom_format(file_path: str) -> dict: + result_dict = {} + with open(file_path, 'r') as file: + for line in file: + if line.strip() == "": + continue + key, value = line.split(':', 1) + result_dict[key.strip()] = value.strip() + return result_dict + +def update_rds(track_name): + try: + name_table = load_dict_from_custom_format(name_table_dir) + try: + prt = rds_base.format(name_table[track_name]) + except KeyError as e: + print("Unknown", e) + prt = rds_base.format(rds_default_name) + + f = open(rds_path, "w") + f.write(f"TEXT={prt}\r") + + try: + f.write(f"RTP={rds_rtp_data},{len(str(name_table[track_name]))-1}\r") + except KeyError: + f.write(f"RTP={rds_rtp_data},{len(rds_default_name)-1}\r") + f.close() + except Exception as e: + print(f"Error updating RDS: {e}") + +def get_playlist_modification_time(playlist_path): + try: + return os.path.getmtime(playlist_path) + except OSError: + return 0 + +def load_playlist(playlist_path): + try: + with open(playlist_path, 'r') as f: + tracks = [line.strip() for line in f.readlines() if line.strip()] + return tracks + except FileNotFoundError: + print(f"Warning: Playlist not found: {playlist_path}") + return [] + +def get_newest_track(tracks): + if not tracks: + return None + + newest_track = None + newest_time = 0 + + for track in tracks: + track_path = os.path.expanduser(track) + try: + mod_time = os.path.getmtime(track_path) + if mod_time > newest_time: + newest_time = mod_time + newest_track = track + except OSError: + continue + + return newest_track + +def play_playlist(playlist_path, play_newest_first=False): + last_modified_time = get_playlist_modification_time(playlist_path) + tracks = load_playlist(playlist_path) + if not tracks: + print(f"No tracks found in {playlist_path}, checking again in 15 seconds...") + time.sleep(15) + return + + if play_newest_first: + newest_track = get_newest_track(tracks) + if newest_track: + print(f"Playing newest track first: {os.path.basename(newest_track)}") + tracks.remove(newest_track) + random.shuffle(tracks) + tracks.insert(0, newest_track) + else: + random.shuffle(tracks) + + for track in tracks: + current_modified_time = get_playlist_modification_time(playlist_path) + if current_modified_time > last_modified_time: + print(f"Playlist {playlist_path} has been modified, reloading...") + return + + current_hour = get_current_hour() + current_day = get_current_day() + morning_playlist_path = os.path.join(playlist_dir, current_day, 'morning') + day_playlist_path = os.path.join(playlist_dir, current_day, 'day') + night_playlist_path = os.path.join(playlist_dir, current_day, 'night') + late_night_playlist_path = os.path.join(playlist_dir, current_day, 'late_night') + + if 10 <= current_hour < 20: + if playlist_path != day_playlist_path: + print("Time changed to day hours, switching playlist...") + return + elif 6 <= current_hour < 10: + if playlist_path != morning_playlist_path: + print("Time changed to morning hours, switching playlist...") + return + elif 0 <= current_hour < 6: + if playlist_path != late_night_playlist_path: + print("Time changed to late night hours, switching playlist...") + return + else: + if playlist_path != night_playlist_path: + print("Time changed to night hours, switching playlist...") + return + + track_path = os.path.expanduser(track) + track_name = os.path.basename(track_path) + print(f"Now playing: {track_name}") + update_rds(track_name) + + subprocess.run(['ffplay', '-nodisp', '-stats', '-hide_banner', '-autoexit', track_path]) + +def main(): + play_newest_first = len(sys.argv) > 1 and sys.argv[1].lower() == "n" + + if play_newest_first: + print("Newest song will be played first") + + while True: + current_hour = get_current_hour() + current_day = get_current_day() + + morning_playlist = os.path.join(playlist_dir, current_day, 'morning') + day_playlist = os.path.join(playlist_dir, current_day, 'day') + night_playlist = os.path.join(playlist_dir, current_day, 'night') + late_night_playlist = os.path.join(playlist_dir, current_day, 'late_night') + + morning_dir = os.path.dirname(morning_playlist) + day_dir = os.path.dirname(day_playlist) + night_dir = os.path.dirname(night_playlist) + late_night_dir = os.path.dirname(late_night_playlist) + + if not os.path.exists(morning_dir): + print(f"Creating directory: {morning_dir}") + os.makedirs(morning_dir, exist_ok=True) + + if not os.path.exists(day_dir): + print(f"Creating directory: {day_dir}") + os.makedirs(day_dir, exist_ok=True) + + if not os.path.exists(night_dir): + print(f"Creating directory: {night_dir}") + os.makedirs(night_dir, exist_ok=True) + + if not os.path.exists(late_night_dir): + print(f"Creating directory: {late_night_dir}") + os.makedirs(late_night_dir, exist_ok=True) + + for playlist_path in [morning_playlist, day_playlist, night_playlist, late_night_playlist]: + if not os.path.exists(playlist_path): + print(f"Creating empty playlist: {playlist_path}") + with open(playlist_path, 'w') as f: + pass + + if 10 <= current_hour < 20: + print(f"Playing {current_day} day playlist...") + play_playlist(day_playlist, play_newest_first) + elif 6 <= current_hour < 10: + print(f"Playing {current_day} morning playlist...") + play_playlist(morning_playlist, play_newest_first) + elif 0 <= current_hour < 6: + print(f"Playing {current_day} late_night playlist...") + play_playlist(late_night_playlist, play_newest_first) + else: + print(f"Playing {current_day} night playlist...") + play_playlist(night_playlist, play_newest_first) + + +if __name__ == '__main__': + main() diff --git a/radioPlaylist.py b/radioPlaylist.py new file mode 100644 index 0000000..dc0bd8b --- /dev/null +++ b/radioPlaylist.py @@ -0,0 +1,381 @@ +#!/usr/bin/env python3 +import os +import sys +import termios +import tty +import signal +import shutil +import libcache +from datetime import datetime + +files_dir = "/home/user/mixes/" +playlists_dir = "/home/user/playlists/" + +formats = ('.mp3', '.m4a') + +def get_audio_files(directory) -> list[str]: + audio_files = [] + try: + for file in os.listdir(directory): + file: str + if file.lower().endswith(formats): + audio_files.append(file) + return sorted(audio_files) + except FileNotFoundError: + print(f"Error: Directory '{directory}' not found.") + return [] + except PermissionError: + print(f"Error: Permission denied for directory '{directory}'.") + return [] + +def get_char() -> str: + fd = sys.stdin.fileno() + old_settings = termios.tcgetattr(fd) + try: + tty.setraw(sys.stdin.fileno()) + ch = sys.stdin.read(1) + finally: + termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) + return ch + +def clear_screen() -> None: + print("\033c", end="") + +def get_terminal_size() -> os.terminal_size: + return shutil.get_terminal_size() + +def get_days_of_week() -> list[str]: + days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] + today = datetime.now().weekday() + return days[today:] + days[:today] + +def ensure_playlist_dir(day: str) -> str: + playlist_dir = os.path.expanduser(os.path.join(playlists_dir, day)) + if not os.path.exists(playlist_dir): + os.makedirs(playlist_dir) + return playlist_dir + +def update_playlist_file(day: str, period: str, filepath: str, add: bool): + playlist_dir = ensure_playlist_dir(day) + playlist_file = os.path.join(playlist_dir, period) + + full_filepath = os.path.join(files_dir, filepath) + + if not os.path.exists(playlist_file): + with open(playlist_file, 'w') as f: + pass + + with open(playlist_file, 'r') as f: + lines = f.read().splitlines() + + if add and full_filepath not in lines: + lines.append(full_filepath) + elif not add and full_filepath in lines: + lines.remove(full_filepath) + + with open(playlist_file, 'w') as f: + f.write('\n'.join(lines) + ('\n' if lines else '')) + +def load_playlists(days: list[str]): + playlists = {} + for day in days: + playlists[day] = {'morning': set(), 'day': set(), 'night': set(), 'late_night': set()} + playlist_dir = os.path.expanduser(os.path.join(playlists_dir, day)) + + if os.path.exists(playlist_dir): + for period in ['morning', 'day', 'night', 'late_night']: + playlist_file = os.path.join(playlist_dir, period) + if os.path.exists(playlist_file): + with open(playlist_file, 'r') as f: + for line in f: + line = line.strip() + if line: + filename = os.path.basename(line) + playlists[day][period].add(filename) + + return playlists + +def copy_day_to_all(playlists: dict, source_day: str, days: list[str]): + periods = ['morning', 'day', 'night', 'late_night'] + + for target_day in days: + if target_day == source_day: + continue + + for period in periods: + target_dir = ensure_playlist_dir(target_day) + target_file = os.path.join(target_dir, period) + + filepaths = [] + for filename in playlists[source_day][period]: + full_path = os.path.join(playlists_dir, filename) + filepaths.append(full_path) + + with open(target_file, 'w') as f: + f.write('\n'.join(filepaths) + ('\n' if filepaths else '')) + + playlists[target_day][period] = set(playlists[source_day][period]) + + return playlists + +def copy_current_file_to_all(playlists: dict, source_day: str, days: list[str], current_file: str): + source_periods = { + 'morning': current_file in playlists[source_day]['morning'], + 'day': current_file in playlists[source_day]['day'], + 'night': current_file in playlists[source_day]['night'], + 'late_night': current_file in playlists[source_day]['late_night'] + } + + if not any(source_periods.values()): + return playlists, False + + for target_day in days: + if target_day == source_day: + continue + + for period, is_present in source_periods.items(): + target_set = playlists[target_day][period] + full_path = os.path.join(playlists_dir, current_file) + + if is_present: + target_set.add(current_file) + else: + target_set.discard(current_file) + + playlist_dir = ensure_playlist_dir(target_day) + playlist_file = os.path.join(playlist_dir, period) + + if os.path.exists(playlist_file): + with open(playlist_file, 'r') as f: + lines = [line.strip() for line in f.readlines()] + else: + lines = [] + + if is_present and full_path not in lines: + lines.append(full_path) + elif not is_present: + while full_path in lines: + lines.remove(full_path) + + with open(playlist_file, 'w') as f: + f.write('\n'.join(lines) + ('\n' if lines else '')) + + return playlists, True + +def draw_interface(audio_files: list, playlists: dict, selected_idx: int, current_day_idx: int, scroll_offset: int, terminal_size_cache: libcache.Cache, message=None): + """Draw the TUI interface with day-of-week sections""" + clear_screen() + term_width, term_height = terminal_size_cache.getElement("width", False), terminal_size_cache.getElement("height", False) + if term_width or term_height == 0: + term_width, term_height = get_terminal_size() + terminal_size_cache.saveElement("width", term_width, 30, False, True) + terminal_size_cache.saveElement("height", term_height, 30, False, True) + days = get_days_of_week() + current_day = days[current_day_idx] + + available_lines = term_height - 5 + start_idx = max(0, min(scroll_offset, len(audio_files) - available_lines)) + end_idx = min(start_idx + available_lines, len(audio_files)) + + day_bar = "" + for i, day in enumerate(days): + if i == current_day_idx: + day_bar += f"\033[1;44m[{day}]\033[0m " + else: + day_bar += f"[{day}] " + print(day_bar.strip()) + + print("UP/DOWN: Navigate | D/N/L: Toggle | C: Copy day to all | F: Copy file to all | Q: Quit") + + if start_idx > 0: + print("↑", end="") + else: + print(" ", end="") + + position_info = f" {current_day.capitalize()} | File {selected_idx + 1}/{len(audio_files)} " + padding = term_width - len(position_info) - 2 + print(position_info.center(padding), end="") + + if end_idx < len(audio_files): + print("↓") + else: + print(" ") + + if message: + print(f"\033[1;32m{message}\033[0m") + else: + print() + + for idx in range(start_idx, end_idx): + file = audio_files[idx] + + in_morning = file in playlists[current_day]['morning'] + in_day = file in playlists[current_day]['day'] + in_night = file in playlists[current_day]['night'] + in_late_night = file in playlists[current_day]['late_night'] + + m_color = "\033[1;32m" if in_morning else "\033[1;30m" + d_color = "\033[1;32m" if in_day else "\033[1;30m" + n_color = "\033[1;32m" if in_night else "\033[1;30m" + l_color = "\033[1;32m" if in_late_night else "\033[1;30m" + + if idx == selected_idx: + row_highlight = "\033[1;44m" + else: + row_highlight = "" + + max_filename_length = term_width - 15 + if len(file) > max_filename_length: + file = file[:max_filename_length-3] + "..." + + print(f"{row_highlight}[{m_color}M\033[0m{row_highlight}] [{d_color}D\033[0m{row_highlight}] [{n_color}N\033[0m{row_highlight}] [{l_color}L\033[0m{row_highlight}] {file}\033[0m") + +def main(): + audio_files = get_audio_files(files_dir) + + if not audio_files: + print("No audio files found. Exiting.") + return + + days_of_week = get_days_of_week() + playlists = load_playlists(days_of_week) + + selected_idx = 0 + current_day_idx = 0 + scroll_offset = 0 + flash_message = None + message_timer = 0 + + def signal_handler(sig, frame): + clear_screen() + sys.exit(0) + + signal.signal(signal.SIGINT, signal_handler) + + terminal_size_cache = libcache.Cache() + + # Main loop + while True: + term_width, term_height = terminal_size_cache.getElement("width", False), terminal_size_cache.getElement("height", False) + if term_width or term_height == 0: + term_width, term_height = get_terminal_size() + terminal_size_cache.saveElement("width", term_width, 30, False, True) + terminal_size_cache.saveElement("height", term_height, 30, False, True) + visible_lines = term_height - 5 + + if selected_idx < scroll_offset: + scroll_offset = selected_idx + elif selected_idx >= scroll_offset + visible_lines: + scroll_offset = selected_idx - visible_lines + 1 + + draw_interface(audio_files, playlists, selected_idx, current_day_idx, scroll_offset, terminal_size_cache, flash_message) + + if flash_message: + message_timer += 1 + if message_timer > 1: + flash_message = None + message_timer = 0 + + key = get_char() + + if key == 'q': + clear_screen() + break + elif key == '\x1b': + next_key = get_char() + if next_key == '[': + arrow_key = get_char() + if arrow_key == 'A': + selected_idx = max(0, selected_idx - 1) + elif arrow_key == 'B': + selected_idx = min(len(audio_files) - 1, selected_idx + 1) + elif arrow_key == 'C': + current_day_idx = (current_day_idx + 1) % len(days_of_week) + elif arrow_key == 'D': + current_day_idx = (current_day_idx - 1) % len(days_of_week) + elif arrow_key == '5': + try: + next_key = get_char() + except: + pass + selected_idx = max(0, selected_idx - visible_lines) + elif arrow_key == '6': + try: + next_key = get_char() + except: + pass + selected_idx = min(len(audio_files) - 1, selected_idx + visible_lines) + elif key == ' ': + selected_idx = min(len(audio_files) - 1, selected_idx + visible_lines) + elif key.lower() == 'm': + current_day = days_of_week[current_day_idx] + file = audio_files[selected_idx] + is_in_playlist = file in playlists[current_day]['morning'] + + if is_in_playlist: + playlists[current_day]['morning'].remove(file) + else: + playlists[current_day]['morning'].add(file) + + update_playlist_file(current_day, 'morning', file, not is_in_playlist) + elif key.lower() == 'd': + current_day = days_of_week[current_day_idx] + file = audio_files[selected_idx] + is_in_playlist = file in playlists[current_day]['day'] + + if is_in_playlist: + playlists[current_day]['day'].remove(file) + else: + playlists[current_day]['day'].add(file) + + update_playlist_file(current_day, 'day', file, not is_in_playlist) + + elif key.lower() == 'n': + current_day = days_of_week[current_day_idx] + file = audio_files[selected_idx] + is_in_playlist = file in playlists[current_day]['night'] + + if is_in_playlist: + playlists[current_day]['night'].remove(file) + else: + playlists[current_day]['night'].add(file) + + update_playlist_file(current_day, 'night', file, not is_in_playlist) + + elif key.lower() == 'l': + current_day = days_of_week[current_day_idx] + file = audio_files[selected_idx] + is_in_playlist = file in playlists[current_day]['late_night'] + + if is_in_playlist: + playlists[current_day]['late_night'].remove(file) + else: + playlists[current_day]['late_night'].add(file) + + update_playlist_file(current_day, 'late_night', file, not is_in_playlist) + + elif key.lower() == 'c': + current_day = days_of_week[current_day_idx] + playlists = copy_day_to_all(playlists, current_day, days_of_week) + flash_message = f"Playlists from {current_day} copied to all other days!" + message_timer = 0 + + elif key.lower() == 'f': + current_day = days_of_week[current_day_idx] + current_file = audio_files[selected_idx] + + playlists, success = copy_current_file_to_all(playlists, current_day, days_of_week, current_file) + + if success: + flash_message = f"File '{current_file}' copied to all days!" + else: + flash_message = f"File not in any playlist! Add it first." + message_timer = 0 + + elif key == 'g': + selected_idx = 0 + elif key == 'G': + selected_idx = len(audio_files) - 1 + +if __name__ == "__main__": + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..402e1f8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +libcache \ No newline at end of file