diff --git a/player.py b/player.py new file mode 100644 index 0000000..a521e2e --- /dev/null +++ b/player.py @@ -0,0 +1,187 @@ +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 new file mode 100755 index 0000000..551c8ec --- /dev/null +++ b/playlists/add.sh @@ -0,0 +1,17 @@ +#!/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 new file mode 100644 index 0000000..b911774 --- /dev/null +++ b/playlists/friday/day @@ -0,0 +1,128 @@ +/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 new file mode 100644 index 0000000..d3edc54 --- /dev/null +++ b/playlists/friday/late_night @@ -0,0 +1,23 @@ +/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 new file mode 100644 index 0000000..eea9ac8 --- /dev/null +++ b/playlists/friday/night @@ -0,0 +1,45 @@ +/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 new file mode 100644 index 0000000..433f990 --- /dev/null +++ b/playlists/monday/day @@ -0,0 +1,129 @@ +/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 new file mode 100644 index 0000000..0c413a6 --- /dev/null +++ b/playlists/monday/late_night @@ -0,0 +1,24 @@ +/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 new file mode 100644 index 0000000..e338319 --- /dev/null +++ b/playlists/monday/night @@ -0,0 +1,47 @@ +/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 new file mode 100644 index 0000000..b911774 --- /dev/null +++ b/playlists/saturday/day @@ -0,0 +1,128 @@ +/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 new file mode 100644 index 0000000..5e8e513 --- /dev/null +++ b/playlists/saturday/late_night @@ -0,0 +1,27 @@ +/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 new file mode 100644 index 0000000..24c1402 --- /dev/null +++ b/playlists/saturday/night @@ -0,0 +1,48 @@ +/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 new file mode 100644 index 0000000..b911774 --- /dev/null +++ b/playlists/sunday/day @@ -0,0 +1,128 @@ +/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 new file mode 100644 index 0000000..f4889bd --- /dev/null +++ b/playlists/sunday/late_night @@ -0,0 +1,24 @@ +/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 new file mode 100644 index 0000000..eea9ac8 --- /dev/null +++ b/playlists/sunday/night @@ -0,0 +1,45 @@ +/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 new file mode 100644 index 0000000..b911774 --- /dev/null +++ b/playlists/thursday/day @@ -0,0 +1,128 @@ +/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 new file mode 100644 index 0000000..d3edc54 --- /dev/null +++ b/playlists/thursday/late_night @@ -0,0 +1,23 @@ +/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 new file mode 100644 index 0000000..eea9ac8 --- /dev/null +++ b/playlists/thursday/night @@ -0,0 +1,45 @@ +/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 new file mode 100644 index 0000000..b911774 --- /dev/null +++ b/playlists/tuesday/day @@ -0,0 +1,128 @@ +/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 new file mode 100644 index 0000000..d3edc54 --- /dev/null +++ b/playlists/tuesday/late_night @@ -0,0 +1,23 @@ +/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 new file mode 100644 index 0000000..eea9ac8 --- /dev/null +++ b/playlists/tuesday/night @@ -0,0 +1,45 @@ +/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 new file mode 100644 index 0000000..35cae52 --- /dev/null +++ b/playlists/tui.py @@ -0,0 +1,399 @@ +#!/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 new file mode 100644 index 0000000..b911774 --- /dev/null +++ b/playlists/wednesday/day @@ -0,0 +1,128 @@ +/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 new file mode 100644 index 0000000..d3edc54 --- /dev/null +++ b/playlists/wednesday/late_night @@ -0,0 +1,23 @@ +/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 new file mode 100644 index 0000000..eea9ac8 --- /dev/null +++ b/playlists/wednesday/night @@ -0,0 +1,45 @@ +/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