Compare commits

...

6 Commits

Author SHA1 Message Date
Glenn Thompson 679d8f68b5 Merge branch 'main' into experiment/parenscript-conversion 2025-11-14 09:11:51 +03:00
Glenn Thompson 781b5afb28 fix: Admin login and authentication issues
- Fix undefined uri-path function - use radiance:path instead
- Fix redirect paths for subdomain routing (remove /asteroid prefix)
- Add error handling and debug logging to admin page
- Fix login redirect to use correct paths for asteroid.localhost
- Add debug output to track authentication flow
2025-11-14 09:11:44 +03:00
Glenn Thompson 96a3ce2b64 Merge remote-tracking branch 'upstream/main' 2025-11-14 09:08:31 +03:00
Glenn Thompson 8c5cb6be31 fix: Use sequential mode in liquidsoap to play through entire playlist
The playlist was stuck on the first track because mode='normal' stops
after playing once. Changed to mode='sequential' which plays through
the entire playlist in order and then loops.

Also improved reload mechanism:
- Use reload_mode='watch' for efficient file change detection
- Increased reload interval to 5 minutes (less disruptive)
2025-11-13 17:30:19 -05:00
Glenn Thompson 63d606b39b fix: Use sequential mode in liquidsoap to play through entire playlist
The playlist was stuck on the first track because mode='normal' stops
after playing once. Changed to mode='sequential' which plays through
the entire playlist in order and then loops.

Also improved reload mechanism:
- Use reload_mode='watch' for efficient file change detection
- Increased reload interval to 5 minutes (less disruptive)
2025-11-13 07:08:25 +03:00
Brian O'Reilly 0204485407 ... but, you know, with actually correct paths. 2025-11-12 20:44:04 -05:00
12 changed files with 475 additions and 212 deletions

View File

@ -445,8 +445,8 @@
"Main front page"
(clip:process-to-string
(load-template "front-page")
:title "🎵 ASTEROID RADIO 🎵"
:station-name "🎵 ASTEROID RADIO 🎵"
:title "ASTEROID RADIO"
:station-name "ASTEROID RADIO"
:status-message "🟢 LIVE - Broadcasting asteroid music for hackers"
:listeners "0"
:stream-quality "128kbps MP3"
@ -464,15 +464,15 @@
"Frameset wrapper with persistent audio player"
(clip:process-to-string
(load-template "frameset-wrapper")
:title "🎵 ASTEROID RADIO 🎵"))
:title "ASTEROID RADIO"))
;; Content frame - front page content without player
(define-page front-page-content #@"/content" ()
"Front page content (displayed in content frame)"
(clip:process-to-string
(load-template "front-page-content")
:title "🎵 ASTEROID RADIO 🎵"
:station-name "🎵 ASTEROID RADIO 🎵"
:title "ASTEROID RADIO"
:station-name "ASTEROID RADIO"
:status-message "🟢 LIVE - Broadcasting asteroid music for hackers"
:listeners "0"
:stream-quality "128kbps MP3"
@ -597,23 +597,34 @@
;; Admin page (requires authentication)
(define-page admin #@"/admin" ()
"Admin dashboard"
(require-authentication)
(let ((track-count (handler-case
(length (db:select "tracks" (db:query :all)))
(error () 0))))
(clip:process-to-string
(load-template "admin")
:title "🎵 ASTEROID RADIO - Admin Dashboard"
:server-status "🟢 Running"
:database-status (handler-case
(if (db:connected-p) "🟢 Connected" "🔴 Disconnected")
(error () "🔴 No Database Backend"))
:liquidsoap-status (check-liquidsoap-status)
:icecast-status (check-icecast-status)
:track-count (format nil "~d" track-count)
:library-path "/home/glenn/Projects/Code/asteroid/music/library/"
:stream-base-url *stream-base-url*
:default-stream-url (format nil "~a/asteroid.aac" *stream-base-url*))))
(format t "~%=== ADMIN PAGE CALLED ===~%")
(handler-case
(progn
(require-authentication)
(format t "~%=== AUTHENTICATION PASSED ===~%"))
(error (e)
(format t "~%ERROR IN require-authentication: ~a~%" e)
(error e)))
(handler-case
(let ((track-count (handler-case
(length (db:select "tracks" (db:query :all)))
(error () 0))))
(clip:process-to-string
(load-template "admin")
:title "ASTEROID RADIO - Admin Dashboard"
:server-status "🟢 Running"
:database-status (handler-case
(if (db:connected-p) "🟢 Connected" "🔴 Disconnected")
(error () "🔴 No Database Backend"))
:liquidsoap-status (check-liquidsoap-status)
:icecast-status (check-icecast-status)
:track-count (format nil "~d" track-count)
:library-path "/home/glenn/Projects/Code/asteroid/music/library/"
:stream-base-url *stream-base-url*
:default-stream-url (format nil "~a/asteroid.aac" *stream-base-url*)))
(error (e)
(format t "~%ERROR IN ADMIN PAGE: ~a~%" e)
(error e))))
;; User Management page (requires authentication)
(define-page users-management #@"/admin/user" ()
@ -621,7 +632,7 @@
(require-authentication)
(clip:process-to-string
(load-template "users")
:title "🎵 ASTEROID RADIO - User Management"))
:title "ASTEROID RADIO - User Management"))
;; User Profile page (requires authentication)
(define-page user-profile #@"/profile" ()

View File

@ -47,7 +47,7 @@
(define-page logout #@"/logout" ()
"Handle user logout"
(setf (session:field "user-id") nil)
(radiance:redirect "/asteroid/"))
(radiance:redirect "/"))
;; API: Get all users (admin only)
(define-api asteroid/users () ()

View File

@ -23,9 +23,9 @@ settings.server.telnet.bind_addr.set("0.0.0.0")
# This file is managed by Asteroid's stream control system
# Falls back to directory scan if playlist file doesn't exist
radio = playlist(
mode="normal", # Play in order (not randomized)
reload=30, # Check for playlist updates every 30 seconds
reload_mode="seconds", # Reload every N seconds (prevents running out of tracks)
mode="sequential", # Play through playlist in order, then loop
reload=300, # Check for playlist updates every 5 minutes
reload_mode="watch", # Watch file for changes (more efficient than polling)
"/app/stream-queue.m3u"
)

View File

@ -1,163 +1,371 @@
#EXTM3U
#EXTINF:370,Vector Lovers - City Lights From a Train
/app/music/Vector Lovers/City Lights From a Train.flac
#EXTINF:400,The Black Dog - Psil-Cosyin
/app/music/The Black Dog/Psil-Cosyin.flac
#EXTINF:320,Plaid - Eyen
/app/music/Plaid/Eyen.flac
#EXTINF:330,ISAN - Birds Over Barges
/app/music/ISAN/Birds Over Barges.flac
#EXTINF:360,Ochre - Bluebottle Farm
/app/music/Ochre/Bluebottle Farm.flac
#EXTINF:390,Arovane - Theme
/app/music/Arovane/Theme.flac
#EXTINF:380,Proem - Deep Like Airline Failure
/app/music/Proem/Deep Like Airline Failure.flac
#EXTINF:310,Solvent - My Radio (Remix)
/app/music/Solvent/My Radio (Remix).flac
#EXTINF:350,Bochum Welt - Marylebone (7th)
/app/music/Bochum Welt/Marylebone (7th).flac
#EXTINF:290,Mrs Jynx - Shibuya Lullaby
/app/music/Mrs Jynx/Shibuya Lullaby.flac
#EXTINF:340,Kettel - Whisper Me Wishes
/app/music/Kettel/Whisper Me Wishes.flac
#EXTINF:360,Christ. - Perlandine Friday
/app/music/Christ./Perlandine Friday.flac
#EXTINF:330,Cepia - Ithaca
/app/music/Cepia/Ithaca.flac
#EXTINF:340,Datassette - Vacuform
/app/music/Datassette/Vacuform.flac
#EXTINF:390,Plant43 - Dreams of the Sentient City
/app/music/Plant43/Dreams of the Sentient City.flac
#EXTINF:410,Claro Intelecto - Peace of Mind (Electrosoul)
/app/music/Claro Intelecto/Peace of Mind (Electrosoul).flac
#EXTINF:430,E.R.P. - Evoked
/app/music/E.R.P./Evoked.flac
#EXTINF:310,Der Zyklus - Formenverwandler
/app/music/Der Zyklus/Formenverwandler.flac
#EXTINF:330,Dopplereffekt - Infophysix
/app/music/Dopplereffekt/Infophysix.flac
#EXTINF:350,Drexciya - Wavejumper
/app/music/Drexciya/Wavejumper.flac
#EXTINF:375,The Other People Place - Sorrow & A Cup of Joe
/app/music/The Other People Place/Sorrow & A Cup of Joe.flac
#EXTINF:340,Arpanet - Wireless Internet
/app/music/Arpanet/Wireless Internet.flac
#EXTINF:380,Legowelt - Sturmvogel
/app/music/Legowelt/Sturmvogel.flac
#EXTINF:310,DMX Krew - Space Paranoia
/app/music/DMX Krew/Space Paranoia.flac
#EXTINF:360,Skywave Theory - Nova Drift
/app/music/Skywave Theory/Nova Drift.flac
#EXTINF:460,Pye Corner Audio - Transmission Four
/app/music/Pye Corner Audio/Transmission Four.flac
#EXTINF:390,B12 - Heaven Sent
/app/music/B12/Heaven Sent.flac
#EXTINF:450,Higher Intelligence Agency - Tortoise
/app/music/Higher Intelligence Agency/Tortoise.flac
#EXTINF:420,Biosphere - Kobresia
/app/music/Biosphere/Kobresia.flac
#EXTINF:870,Global Communication - 14:31
/app/music/Global Communication/14:31.flac
#EXTINF:500,Monolake - Cyan
/app/music/Monolake/Cyan.flac
#EXTINF:660,Deepchord - Electromagnetic
/app/music/Deepchord/Electromagnetic.flac
#EXTINF:1020,GAS - Pop 4
/app/music/GAS/Pop 4.flac
#EXTINF:600,Yagya - Rigning Nýju
/app/music/Yagya/Rigning Nýju.flac
#EXTINF:990,Voices From The Lake - Velo di Maya
/app/music/Voices From The Lake/Velo di Maya.flac
#EXTINF:3720,ASC - Time Heals All
/app/music/ASC/Time Heals All.flac
#EXTINF:540,36 - Room 237
/app/music/36/Room 237.flac
#EXTINF:900,Loscil - Endless Falls
/app/music/Loscil/Endless Falls.flac
#EXTINF:450,Kiasmos - Looped
/app/music/Kiasmos/Looped.flac
#EXTINF:590,Underworld - Rez
/app/music/Underworld/Rez.flac
#EXTINF:570,Orbital - Halcyon + On + On
/app/music/Orbital/Halcyon + On + On.flac
#EXTINF:1080,The Orb - A Huge Ever Growing Pulsating Brain
/app/music/The Orb/A Huge Ever Growing Pulsating Brain.flac
#EXTINF:360,Autechre - Slip
/app/music/Autechre/Slip.flac
#EXTINF:400,Labradford - S (Mi Media Naranja)
/app/music/Labradford/S (Mi Media Naranja).flac
#EXTINF:350,Vector Lovers - Rusting Cars and Wildflowers
/app/music/Vector Lovers/Rusting Cars and Wildflowers.flac
#EXTINF:390,The Black Dog - Raxmus
/app/music/The Black Dog/Raxmus.flac
#EXTINF:315,Plaid - Hawkmoth
/app/music/Plaid/Hawkmoth.flac
#EXTINF:320,ISAN - What This Button Did
/app/music/ISAN/What This Button Did.flac
#EXTINF:370,Ochre - Circadies
/app/music/Ochre/Circadies.flac
#EXTINF:420,Arovane - Tides
/app/music/Arovane/Tides.flac
#EXTINF:370,Proem - Nothing is as It Seems
/app/music/Proem/Nothing is as It Seems.flac
#EXTINF:300,Solvent - Loss For Words
/app/music/Solvent/Loss For Words.flac
#EXTINF:340,Bochum Welt - Saint (77sunset)
/app/music/Bochum Welt/Saint (77sunset).flac
#EXTINF:280,Mrs Jynx - Stay Home
/app/music/Mrs Jynx/Stay Home.flac
#EXTINF:330,Kettel - Church
/app/music/Kettel/Church.flac
#EXTINF:370,Christ. - Cordate
/app/music/Christ./Cordate.flac
#EXTINF:350,Datassette - Computers Elevate
/app/music/Datassette/Computers Elevate.flac
#EXTINF:420,Plant43 - The Cold Surveyor
/app/music/Plant43/The Cold Surveyor.flac
#EXTINF:380,Claro Intelecto - Section
/app/music/Claro Intelecto/Section.flac
#EXTINF:440,E.R.P. - Vox Automaton
/app/music/E.R.P./Vox Automaton.flac
#EXTINF:300,Dopplereffekt - Z-Boson
/app/music/Dopplereffekt/Z-Boson.flac
#EXTINF:380,Drexciya - Digital Tsunami
/app/music/Drexciya/Digital Tsunami.flac
#EXTINF:350,The Other People Place - You Said You Want Me
/app/music/The Other People Place/You Said You Want Me.flac
#EXTINF:370,Legowelt - Star Gazing
/app/music/Legowelt/Star Gazing.flac
#EXTINF:440,Pye Corner Audio - Electronic Rhythm Number 3
/app/music/Pye Corner Audio/Electronic Rhythm Number 3.flac
#EXTINF:460,B12 - Infinite Lites (Classic Mix)
/app/music/B12/Infinite Lites (Classic Mix).flac
#EXTINF:390,Biosphere - The Things I Tell You
/app/music/Biosphere/The Things I Tell You.flac
#EXTINF:580,Global Communication - 9:39
/app/music/Global Communication/9:39.flac
#EXTINF:460,Monolake - T-Channel
/app/music/Monolake/T-Channel.flac
#EXTINF:690,Deepchord - Vantage Isle (Variant)
/app/music/Deepchord/Vantage Isle (Variant).flac
#EXTINF:840,GAS - Königsforst 5
/app/music/GAS/Königsforst 5.flac
#EXTINF:520,Yagya - The Salt on Her Cheeks
/app/music/Yagya/The Salt on Her Cheeks.flac
#EXTINF:720,Voices From The Lake - Dream State
/app/music/Voices From The Lake/Dream State.flac
#EXTINF:510,36 - Night Rain
/app/music/36/Night Rain.flac
#EXTINF:470,Loscil - First Narrows
/app/music/Loscil/First Narrows.flac
#EXTINF:400,Kiasmos - Burnt
/app/music/Kiasmos/Burnt.flac
#EXTINF:570,Underworld - Jumbo (Extended)
/app/music/Underworld/Jumbo (Extended).flac
#EXTINF:480,Orbital - Belfast
/app/music/Orbital/Belfast.flac
#EXTINF:540,The Orb - Little Fluffy Clouds (Ambient Mix)
/app/music/The Orb/Little Fluffy Clouds (Ambient Mix).flac
#EXTINF:390,Autechre - Nine
/app/music/Autechre/Nine.flac
#EXTINF:380,Labradford - G (Mi Media Naranja)
/app/music/Labradford/G (Mi Media Naranja).flac
#EXTINF:-1,Underworld - Underworld - Confusion The Waitress
/app/music/Underworld/1996 - Second Toughest In The Infants/03. Underworld - Confusion The Waitress.flac
#EXTINF:-1,The Orb - Towers Of Dub
/app/music/The Orb/1992 - UFOrb/04-Towers Of Dub.mp3
#EXTINF:-1,Drexciya - Drexciya - Intensified Magnetron
/app/music/Drexciya/2013 - Journey Of The Deep Sea Dweller III/04. Drexciya - Intensified Magnetron.mp3
#EXTINF:-1,Labradford - Balanced on It's Own Flame
/app/music/Labradford/1995 - A Stable Reference/6 Balanced on It's Own Flame.flac
#EXTINF:-1,Vector Lovers - City Lights From A Train
/app/music/Vector Lovers/2005 - Capsule For One/01 - City Lights From A Train.mp3
#EXTINF:-1,Labradford - Leta O'Steen. Design assistance by John Piper
/app/music/Labradford/1999 - E luxo so/6. Leta O'Steen. Design assistance by John Piper.flac
#EXTINF:-1,Tape Loop Orchestra - Tape Loop Orchestra - Chapter 1   Reel One
/app/music/Tape Loop Orchestra/2009 - 1953 Culture Festival/01 Tape Loop Orchestra - Chapter 1   Reel One.mp3
#EXTINF:-1,Orbital - Time Becomes
/app/music/Orbital/1993 - Orbital - Orbital 2 (Brown Album - TRUCD2, 828 386.2)/00. Time Becomes.mp3
#EXTINF:-1,Proem - Proem - You Shall Have Ever Been - 05 No You Are $
/app/music/Proem/2006 - You Shall Have Ever Been/Proem - You Shall Have Ever Been - 05 No You Are $.flac
#EXTINF:-1,Pye Corner Audio - Pye Corner Audio - The Simplest Equation
/app/music/Pye Corner Audio/EP's & Singles/2016 - Pye Corner Audio With Dalhous - Run For The Shadows EP (WEB, #LPS13)/02 - Pye Corner Audio - The Simplest Equation.mp3
#EXTINF:-1,Brian Eno - Emerald and Lime
/app/music/Brian Eno/2024 - Eno (Original Motion Picture Soundtrack)/12. Emerald and Lime.flac
#EXTINF:-1,Bark Psychosis - (07) [Bark Psychosis] A Street Scene
/app/music/Bark Psychosis/1994 - Game Over/(07) [Bark Psychosis] A Street Scene.flac
#EXTINF:-1,Model 500 - model_500-digital_solutions
/app/music/Model 500/2015 - Digital Solutions/08-model_500-digital_solutions.flac
#EXTINF:-1,Labradford - Banco
/app/music/Labradford/1995 - A Stable Reference/4 Banco.flac
#EXTINF:-1,Labradford - Skyward With Motion
/app/music/Labradford/1993 - Prazision LP/11 Skyward With Motion.flac
#EXTINF:-1,Pye Corner Audio - The Mirror Ball Cracked
/app/music/Pye Corner Audio/2012 - Sleep Games (WEB, #GBX017)/08 - The Mirror Ball Cracked.mp3
#EXTINF:-1,Brian Eno - Foreign Affairs
/app/music/Brian Eno/1978 - After The Heat/01 - Foreign Affairs.flac
#EXTINF:-1,The Other People Place - B1 - Moonlight Rendezvous
/app/music/The Other People Place/2017 - Lifestyles Of The Laptop Café/B1 - Moonlight Rendezvous.flac
#EXTINF:-1,Drexciya - Unknown Journey IX
/app/music/Drexciya/2013 - Journey of the Deep Sea Dweller IV/10. Unknown Journey IX.mp3
#EXTINF:-1,Orbital - Crash And Carry
/app/music/Orbital/1994 - Orbital - Snivilisation (TRUCD5, 828 536.2)/04. Crash And Carry.mp3
#EXTINF:-1,Proem - Proem - Before it finds you - 09 We can watch it burn to the ground
/app/music/Proem/2013 - Before it finds you/Proem - Before it finds you - 09 We can watch it burn to the ground.flac
#EXTINF:-1,Proem - Proem - Before it finds you - 01 Stone into gravel
/app/music/Proem/2013 - Before it finds you/Proem - Before it finds you - 01 Stone into gravel.flac
#EXTINF:-1,Drexciya - Intro (The Unknown Aquazone)
/app/music/Drexciya/2013 - Journey of the Deep Sea Dweller IV/01. Intro (The Unknown Aquazone).mp3
#EXTINF:-1,Teeth Of The Sea - Get With the Program
/app/music/Teeth Of The Sea/2023 - Hive/02 Get With the Program.flac
#EXTINF:-1,Proem - Proem - Vault ep.4-4 - 02 Little girls
/app/music/Proem/2015 - Vault ep.4-4/Proem - Vault ep.4-4 - 02 Little girls.flac
#EXTINF:-1,Drexciya - Black Sea
/app/music/Drexciya/2013 - Journey of the Deep Sea Dweller IV/14. Black Sea.mp3
#EXTINF:-1,Autechre - Yulquen
/app/music/Autechre/1994 - Amber/09 Yulquen.flac
#EXTINF:-1,The Other People Place - C2 - Running From Love
/app/music/The Other People Place/2017 - Lifestyles Of The Laptop Café/C2 - Running From Love.flac
#EXTINF:-1,Brian Eno - D2 Written, Forgotten
/app/music/Brian Eno/2011 - Small Craft On a Milk Sea/D2 Written, Forgotten.flac
#EXTINF:-1,Autechre - Stud
/app/music/Autechre/1995 - Tri Repetae/05 Stud.flac
#EXTINF:-1,Model 500 - model_500-electric_night
/app/music/Model 500/2015 - Digital Solutions/02-model_500-electric_night.flac
#EXTINF:-1,The Orb - Close Encounters
/app/music/The Orb/1992 - UFOrb/05-Close Encounters.mp3
#EXTINF:-1,Model 500 - model_500-hi_nrg
/app/music/Model 500/2015 - Digital Solutions/01-model_500-hi_nrg.flac
#EXTINF:-1,Brian Eno - B3 Bone Jump
/app/music/Brian Eno/2011 - Small Craft On a Milk Sea/B3 Bone Jump.flac
#EXTINF:-1,Labradford - by Chris Johnston, Craig Markva, Jamie Evans,
/app/music/Labradford/1999 - E luxo so/4. by Chris Johnston, Craig Markva, Jamie Evans,.flac
#EXTINF:-1,The Orb - Star 6 & 7 8 9
/app/music/The Orb/1991 - The Orb's Adventures Beyond the Ultraworld (Double Album)/09 Star 6 & 7 8 9.mp3
#EXTINF:-1,Proem - Proem - Vault ep.1-4 (Noise) - 02 Half a Heart
/app/music/Proem/2016 - Vault ep.1-4 (Noise)/Proem - Vault ep.1-4 (Noise) - 02 Half a Heart.flac
#EXTINF:-1,Dopplereffekt - Spirangle
/app/music/Dopplereffekt/2017 - Cellular Automata/08. Spirangle.flac
#EXTINF:-1,Drexciya - Unknown Journey VII
/app/music/Drexciya/2013 - Journey of the Deep Sea Dweller IV/06. Unknown Journey VII.mp3
#EXTINF:-1,Drexciya - Mantaray
/app/music/Drexciya/2013 - Journey of the Deep Sea Dweller IV/04. Mantaray.mp3
#EXTINF:-1,Pye Corner Audio - Pye Corner Audio - Untitled
/app/music/Pye Corner Audio/EP's & Singles/2017 - Pye Corner Audio, Silent Servant, Not Waving - Limited Edition EP (Vinyl, #E031COL)/02 - Pye Corner Audio - Untitled.mp3
#EXTINF:-1,Underworld - Underworld - Juanita, Kiteless, To Dream Of Love
/app/music/Underworld/1996 - Second Toughest In The Infants/01. Underworld - Juanita, Kiteless, To Dream Of Love.flac
#EXTINF:-1,Proem - Proem - As They Go - 05 In a Timeless, Lightless World
/app/music/Proem/2019 - As They Go/Proem - As They Go - 05 In a Timeless, Lightless World.flac
#EXTINF:-1,Model 500 - model_500-standing_in_tomorow
/app/music/Model 500/2015 - Digital Solutions/03-model_500-standing_in_tomorow.flac
#EXTINF:-1,The Orb - Plum Island
/app/music/The Orb/2001 - Cydonia/09-Plum Island.mp3
#EXTINF:-1,Orbital - Lush 3-2
/app/music/Orbital/1993 - Orbital - Orbital 2 (Brown Album - TRUCD2, 828 386.2)/00. Lush 3-2.mp3
#EXTINF:-1,Dopplereffekt - Exponential Decay
/app/music/Dopplereffekt/2017 - Cellular Automata/09. Exponential Decay.flac
#EXTINF:-1,Brian Eno - Garden of Stars
/app/music/Brian Eno/2022 - ForeverAndEverNoMore/04 Garden of Stars.flac
#EXTINF:-1,The Other People Place - B2 - You Said You Want Me
/app/music/The Other People Place/2017 - Lifestyles Of The Laptop Café/B2 - You Said You Want Me.flac
#EXTINF:-1,Dopplereffekt - Mandelbrot Set
/app/music/Dopplereffekt/2017 - Cellular Automata/07. Mandelbrot Set.flac
#EXTINF:-1,Autechre - Foil
/app/music/Autechre/1994 - Amber/01 Foil.flac
#EXTINF:-1,Proem - Proem - As They Go - 04 What is Needed
/app/music/Proem/2019 - As They Go/Proem - As They Go - 04 What is Needed.flac
#EXTINF:-1,Vector Lovers - Post Arctic Industries
/app/music/Vector Lovers/2005 - Capsule For One/06 - Post Arctic Industries.mp3
#EXTINF:-1,Proem - proem - Negativ - 12 Skylup
/app/music/Proem/2001 - Negativ/proem - Negativ - 12 Skylup.flac
#EXTINF:-1,Model 500 - model_500-encounter
/app/music/Model 500/2015 - Digital Solutions/04-model_500-encounter.flac
#EXTINF:-1,Kraftwerk - Pocket Calculator
/app/music/Kraftwerk/1981 - Computer World/02 - Pocket Calculator.flac
#EXTINF:-1,Tape Loop Orchestra - Tape Loop Orchestra - Chapter 13   Reel Two End
/app/music/Tape Loop Orchestra/2009 - 1953 Culture Festival/13 Tape Loop Orchestra - Chapter 13   Reel Two End.mp3
#EXTINF:-1,Pye Corner Audio - Corrupt Data
/app/music/Pye Corner Audio/2017 - Half-Light (Prower Remixed) (WEB, #MTH011)/01 - Corrupt Data.mp3
#EXTINF:-1,Kiasmos - Kiasmos - II - 04 Laced
/app/music/Kiasmos/2024 - II/Kiasmos - II - 04 Laced.flac
#EXTINF:-1,Pye Corner Audio - Mindshaft
/app/music/Pye Corner Audio/2019 - Hollow Earth (WEB, #GBX032 DL)/05 - Mindshaft.mp3
#EXTINF:-1,Labradford - G
/app/music/Labradford/1997 - Mi Media Naranja/2 G.flac
#EXTINF:-1,Dopplereffekt - Isotropy
/app/music/Dopplereffekt/2017 - Cellular Automata/04. Isotropy.flac
#EXTINF:-1,Autechre - Further
/app/music/Autechre/1994 - Amber/08 Further.flac
#EXTINF:-1,Proem - Proem - You Shall Have Ever Been - 02 Eck The Badly Drawn
/app/music/Proem/2006 - You Shall Have Ever Been/Proem - You Shall Have Ever Been - 02 Eck The Badly Drawn.flac
#EXTINF:-1,Autechre - C-Pach
/app/music/Autechre/1995 - Tri Repetae/07 C-Pach.flac
#EXTINF:-1,Kraftwerk - Neon Lights
/app/music/Kraftwerk/1978 - The Man-Machine/05 - Neon Lights.flac
#EXTINF:-1,Labradford - twenty
/app/music/Labradford/2001 - fixed..context/1 twenty.flac
#EXTINF:-1,Bark Psychosis - (01) [Bark Psychosis] Blue
/app/music/Bark Psychosis/1994 - Game Over/(01) [Bark Psychosis] Blue.flac
#EXTINF:-1,Vector Lovers - Substrata
/app/music/Vector Lovers/2005 - Capsule For One/03 - Substrata.mp3
#EXTINF:-1,Kraftwerk - Computer World
/app/music/Kraftwerk/1981 - Computer World/01 - Computer World.flac
#EXTINF:-1,Underworld - Underworld - Air Towel
/app/music/Underworld/1996 - Second Toughest In The Infants/06. Underworld - Air Towel.flac
#EXTINF:-1,Underworld - Underworld - Blueski
/app/music/Underworld/1996 - Second Toughest In The Infants/07. Underworld - Blueski.flac
#EXTINF:-1,Labradford - Experience The Gated Oscillator
/app/music/Labradford/1993 - Prazision LP/05 Experience The Gated Oscillator.flac
#EXTINF:-1,Dopplereffekt - Gestalt Intelligence
/app/music/Dopplereffekt/2017 - Cellular Automata/03. Gestalt Intelligence.flac
#EXTINF:-1,Labradford - Dulcimers played by Peter Neff. Strings played
/app/music/Labradford/1999 - E luxo so/3. Dulcimers played by Peter Neff. Strings played.flac
#EXTINF:-1,Tape Loop Orchestra - Tape Loop Orchestra - Chapter 14   Tails Out
/app/music/Tape Loop Orchestra/2009 - 1953 Culture Festival/14 Tape Loop Orchestra - Chapter 14   Tails Out.mp3
#EXTINF:-1,Labradford - up to pizmo
/app/music/Labradford/2001 - fixed..context/2 up to pizmo.flac
#EXTINF:-1,Orbital - Sad But True
/app/music/Orbital/1994 - Orbital - Snivilisation (TRUCD5, 828 536.2)/03. Sad But True.mp3
#EXTINF:-1,Orbital - Lush 3-1
/app/music/Orbital/1993 - Orbital - Orbital 2 (Brown Album - TRUCD2, 828 386.2)/00. Lush 3-1.mp3
#EXTINF:-1,Dopplereffekt - Cellular Automata
/app/music/Dopplereffekt/2017 - Cellular Automata/01. Cellular Automata.flac
#EXTINF:-1,The Orb - Little Fluffy Clouds
/app/music/The Orb/1991 - The Orb's Adventures Beyond the Ultraworld (Double Album)/01 Little Fluffy Clouds.mp3
#EXTINF:-1,Bark Psychosis - All Different Things
/app/music/Bark Psychosis/1994 - Independency/03 - All Different Things.flac
#EXTINF:-1,Orbital - Kein Trink Wasser
/app/music/Orbital/1994 - Orbital - Snivilisation (TRUCD5, 828 536.2)/07. Kein Trink Wasser.mp3
#EXTINF:-1,The Orb - Perpetual Dawn
/app/music/The Orb/1991 - The Orb's Adventures Beyond the Ultraworld (Double Album)/06 Perpetual Dawn.mp3
#EXTINF:-1,Underworld - Underworld - Stagger
/app/music/Underworld/1996 - Second Toughest In The Infants/08. Underworld - Stagger.flac
#EXTINF:-1,Dopplereffekt - von Neumann Probe
/app/music/Dopplereffekt/2017 - Cellular Automata/02. von Neumann Probe.flac
#EXTINF:-1,The Orb - EDM
/app/music/The Orb/2001 - Cydonia/12-EDM.mp3
#EXTINF:-1,Teeth Of The Sea - Reaper
/app/music/Teeth Of The Sea/2013 - Master/02 - Reaper.mp3
#EXTINF:-1,Drexciya - Drexciya - Aquabahn
/app/music/Drexciya/2013 - Journey Of The Deep Sea Dweller III/03. Drexciya - Aquabahn.mp3
#EXTINF:-1,Autechre - Rsdio
/app/music/Autechre/1995 - Tri Repetae/10 Rsdio.flac
#EXTINF:-1,Teeth Of The Sea - Transfinite
/app/music/Teeth Of The Sea/2010 - Your Mercury/01 Transfinite.mp3
#EXTINF:-1,Orbital - Philosophy By Numbers
/app/music/Orbital/1994 - Orbital - Snivilisation (TRUCD5, 828 536.2)/06. Philosophy By Numbers.mp3
#EXTINF:-1,Autechre - Dael
/app/music/Autechre/1995 - Tri Repetae/01 Dael.flac
#EXTINF:-1,Vector Lovers - Boulevard
/app/music/Vector Lovers/2005 - Capsule For One/09 - Boulevard.mp3
#EXTINF:-1,Brian Eno - Reflection
/app/music/Brian Eno/2017 - Reflection/01. Reflection.mp3
#EXTINF:-1,Kiasmos - Thrown
/app/music/Kiasmos/2012 - Thrown EP/01 - Thrown.flac
#EXTINF:-1,The Other People Place - A2 - It's Your Love
/app/music/The Other People Place/2017 - Lifestyles Of The Laptop Café/A2 - It's Your Love.flac
#EXTINF:-1,Drexciya - Unknown Journey VIII
/app/music/Drexciya/2013 - Journey of the Deep Sea Dweller IV/07. Unknown Journey VIII.mp3
#EXTINF:-1,Bark Psychosis - I Know
/app/music/Bark Psychosis/1994 - Independency/01 - I Know.flac
#EXTINF:-1,Underworld - Underworld - Rowla
/app/music/Underworld/1996 - Second Toughest In The Infants/04. Underworld - Rowla.flac
#EXTINF:-1,Orbital - Forever
/app/music/Orbital/1994 - Orbital - Snivilisation (TRUCD5, 828 536.2)/01. Forever.mp3
#EXTINF:-1,Autechre - Clipper
/app/music/Autechre/1995 - Tri Repetae/02 Clipper.flac
#EXTINF:-1,The Other People Place - C1 - Let Me Be Me
/app/music/The Other People Place/2017 - Lifestyles Of The Laptop Café/C1 - Let Me Be Me.flac
#EXTINF:-1,Kraftwerk - Metropolis
/app/music/Kraftwerk/1978 - The Man-Machine/03 - Metropolis.flac
#EXTINF:-1,Labradford - The Cipher
/app/music/Labradford/1996 - Labradford/4 The Cipher.flac
#EXTINF:-1,Autechre - Silverside
/app/music/Autechre/1994 - Amber/03 Silverside.flac
#EXTINF:-1,Autechre - Nine
/app/music/Autechre/1994 - Amber/07 Nine.flac
#EXTINF:-1,Kraftwerk - Numbers
/app/music/Kraftwerk/1981 - Computer World/03 - Numbers.flac
#EXTINF:-1,Pye Corner Audio - Recrypt
/app/music/Pye Corner Audio/2011 - Black Mill Tapes Volume 2 - Do You Synthesize (WEB, #pca002)/06 - Recrypt.mp3
#EXTINF:-1,The Other People Place - D1 - Lifestyles Of The Casual
/app/music/The Other People Place/2017 - Lifestyles Of The Laptop Café/D1 - Lifestyles Of The Casual.flac
#EXTINF:-1,Autechre - Teartear
/app/music/Autechre/1994 - Amber/11 Teartear.flac
#EXTINF:-1,Teeth Of The Sea - in the space capsule (love theme)
/app/music/Teeth Of The Sea/2011 - Hypnoticon/01 in the space capsule (love theme).mp3
#EXTINF:-1,Kiasmos - Dragged
/app/music/Kiasmos/2014 - Kiasmos/06 - Dragged.flac
#EXTINF:-1,Dopplereffekt - Ulams Spiral
/app/music/Dopplereffekt/2017 - Cellular Automata/06. Ulams Spiral.flac
#EXTINF:-1,Brian Eno - Stiff
/app/music/Brian Eno/2024 - Eno (Original Motion Picture Soundtrack)/11. Stiff.flac
#EXTINF:-1,The Orb - A Huge Ever Growing Pulsating Brain That Rules From The Centre Of The Ultraworld_ Live Mix Mk 10
/app/music/The Orb/1991 - The Orb's Adventures Beyond the Ultraworld (Double Album)/10 A Huge Ever Growing Pulsating Brain That Rules From The Centre Of The Ultraworld_ Live Mix Mk 10.mp3
#EXTINF:-1,The Orb - Sticky End
/app/music/The Orb/1992 - UFOrb/07-Sticky End.mp3
#EXTINF:-1,Vector Lovers - Microtron
/app/music/Vector Lovers/2005 - Capsule For One/04 - Microtron.mp3
#EXTINF:-1,Kraftwerk - Home Computer
/app/music/Kraftwerk/1981 - Computer World/06 - Home Computer.flac
#EXTINF:-1,Pye Corner Audio - Foreshadowed
/app/music/Pye Corner Audio/2012 - Black Mill Tapes Volume 3 - All Pathways Open (WEB, #pca003)/08 - Foreshadowed.mp3
#EXTINF:-1,Tape Loop Orchestra - Tape Loop Orchestra - Chapter 2   Yasujiro Ozu
/app/music/Tape Loop Orchestra/2009 - 1953 Culture Festival/02 Tape Loop Orchestra - Chapter 2   Yasujiro Ozu.mp3
#EXTINF:-1,Brian Eno - Verdigris
/app/music/Brian Eno/2020 - Roger Eno and Brian Eno - Mixing Colours/08 Verdigris.flac
#EXTINF:-1,Tape Loop Orchestra - The Word On My Lips Is Your Name
/app/music/Tape Loop Orchestra/2012 - The Word On My Lips Is Your Name/Disc 1 - The Word On My Lips Is Your Name/01 - The Word On My Lips Is Your Name.flac
#EXTINF:-1,Vector Lovers - Melodies And Memory
/app/music/Vector Lovers/2005 - Capsule For One/07 - Melodies And Memory.mp3
#EXTINF:-1,Vector Lovers - To The Stars
/app/music/Vector Lovers/2005 - Capsule For One/12 - To The Stars.mp3
#EXTINF:-1,Dopplereffekt - Pascal's Recursion
/app/music/Dopplereffekt/2017 - Cellular Automata/05. Pascal's Recursion.flac
#EXTINF:-1,Orbital - Walk Now
/app/music/Orbital/1993 - Orbital - Orbital 2 (Brown Album - TRUCD2, 828 386.2)/00. Walk Now.mp3
#EXTINF:-1,Orbital - Quality Seconds
/app/music/Orbital/1994 - Orbital - Snivilisation (TRUCD5, 828 536.2)/08. Quality Seconds.mp3
#EXTINF:-1,Vector Lovers - Nostalgia 4 The Future
/app/music/Vector Lovers/2005 - Capsule For One/05 - Nostalgia 4 The Future.mp3
#EXTINF:-1,Brian Eno - D3 Late Anthropocene
/app/music/Brian Eno/2011 - Small Craft On a Milk Sea/D3 Late Anthropocene.flac
#EXTINF:-1,Autechre - Gnit
/app/music/Autechre/1995 - Tri Repetae/08 Gnit.flac
#EXTINF:-1,Pye Corner Audio - Electronic Rhythm Number Seven
/app/music/Pye Corner Audio/2011 - Black Mill Tapes Volume 2 - Do You Synthesize (WEB, #pca002)/02 - Electronic Rhythm Number Seven.mp3
#EXTINF:-1,Proem - Proem - Socially Inept - 05 Pinching Point
/app/music/Proem/2004 - Socially Inept/Proem - Socially Inept - 05 Pinching Point.flac
#EXTINF:-1,Vector Lovers - Empty Buildings, Falling Rain
/app/music/Vector Lovers/2005 - Capsule For One/08 - Empty Buildings, Falling Rain.mp3
#EXTINF:-1,Model 500 - model_500-control
/app/music/Model 500/2015 - Digital Solutions/09-model_500-control.flac
#EXTINF:-1,Proem - Proem - Vault ep.2-4 (Drone) - 02 Another Dull Moment
/app/music/Proem/2016 - Vault ep.2-4 (Drone)/Proem - Vault ep.2-4 (Drone) - 02 Another Dull Moment.flac
#EXTINF:-1,Teeth Of The Sea - Her Wraith
/app/music/Teeth Of The Sea/2019 - WRAITH/06 - Her Wraith.flac
#EXTINF:-1,Brian Eno - Slow Movement Sand
/app/music/Brian Eno/2020 - Roger Eno and Brian Eno - Mixing Colours/18 Slow Movement Sand.flac
#EXTINF:-1,Drexciya - Drexciya - You Don't Know
/app/music/Drexciya/2013 - Journey Of The Deep Sea Dweller III/13. Drexciya - You Don't Know.mp3
#EXTINF:-1,Proem - Proem - You Shall Have Ever Been - 07 Reddings
/app/music/Proem/2006 - You Shall Have Ever Been/Proem - You Shall Have Ever Been - 07 Reddings.flac
#EXTINF:-1,Teeth Of The Sea - Fortean Steed
/app/music/Teeth Of The Sea/2019 - WRAITH/04 - Fortean Steed.flac
#EXTINF:-1,Kraftwerk - The Model
/app/music/Kraftwerk/1978 - The Man-Machine/04 - The Model.flac
#EXTINF:-1,Pye Corner Audio - Yesterday's Entertainment
/app/music/Pye Corner Audio/2012 - Sleep Games (WEB, #GBX017)/07 - Yesterday's Entertainment.mp3
#EXTINF:-1,Brian Eno - B2 Forms Of Anger
/app/music/Brian Eno/2011 - Small Craft On a Milk Sea/B2 Forms Of Anger.flac
#EXTINF:-1,Vector Lovers - Neon Sky Rain
/app/music/Vector Lovers/2005 - Capsule For One/10 - Neon Sky Rain.mp3
#EXTINF:-1,Vector Lovers - Capsule For One
/app/music/Vector Lovers/2005 - Capsule For One/11 - Capsule For One.mp3
#EXTINF:-1,Pye Corner Audio - Solar Waves
/app/music/Pye Corner Audio/EP's & Singles/2019 - Dark Phase EP (WEB, #AF025)/02 - Solar Waves.mp3
#EXTINF:-1,Kraftwerk - Computer Love
/app/music/Kraftwerk/1981 - Computer World/05 - Computer Love.flac
#EXTINF:-1,Kiasmos - Held (Dauwd Remix)
/app/music/Kiasmos/2015 - Looped/02 Held (Dauwd Remix).flac
#EXTINF:-1,Tape Loop Orchestra - Tape Loop Orchestra - Chapter 9   Setsu Ko Hara
/app/music/Tape Loop Orchestra/2009 - 1953 Culture Festival/09 Tape Loop Orchestra - Chapter 9   Setsu Ko Hara.mp3
#EXTINF:-1,The Orb - Back Side of the Moon
/app/music/The Orb/1991 - The Orb's Adventures Beyond the Ultraworld (Double Album)/04 Back Side of the Moon.mp3
#EXTINF:-1,Model 500 - model_500-storm
/app/music/Model 500/2015 - Digital Solutions/05-model_500-storm.flac
#EXTINF:-1,Autechre - Montreal
/app/music/Autechre/1994 - Amber/02 Montreal.flac
#EXTINF:-1,Bark Psychosis - bark psychosis - eyes & smiles
/app/music/Bark Psychosis/1994 - Hex/05 - bark psychosis - eyes & smiles.mp3
#EXTINF:-1,The Other People Place - D2 - Sunrays
/app/music/The Other People Place/2017 - Lifestyles Of The Laptop Café/D2 - Sunrays.flac
#EXTINF:-1,Bark Psychosis - (06) [Bark Psychosis] Bloodrush
/app/music/Bark Psychosis/1994 - Game Over/(06) [Bark Psychosis] Bloodrush.flac
#EXTINF:-1,Bark Psychosis - bark psychosis - pendulum man
/app/music/Bark Psychosis/1994 - Hex/07 - bark psychosis - pendulum man.mp3
#EXTINF:-1,Autechre - Slip
/app/music/Autechre/1994 - Amber/04 Slip.flac
#EXTINF:-1,Kiasmos - Swayed
/app/music/Kiasmos/2014 - Kiasmos/04 - Swayed.flac
#EXTINF:-1,The Other People Place - A1 - Eye Contact
/app/music/The Other People Place/2017 - Lifestyles Of The Laptop Café/A1 - Eye Contact.flac
#EXTINF:-1,Kiasmos - Rival Consoles - Milo
/app/music/Kiasmos/2009 - 65, Milo (Kiasmos & Rival Consoles) (WEB)/03. Rival Consoles - Milo.flac
#EXTINF:-1,Teeth Of The Sea - Butterfly House
/app/music/Teeth Of The Sea/2023 - Hive/03 Butterfly House.flac
#EXTINF:-1,The Orb - A Mile Long Lump of Lard
/app/music/The Orb/2001 - Cydonia/07-A Mile Long Lump of Lard.mp3
#EXTINF:-1,Autechre - Eutow
/app/music/Autechre/1995 - Tri Repetae/06 Eutow.flac
#EXTINF:-1,Model 500 - model_500-the_groove
/app/music/Model 500/2015 - Digital Solutions/06-model_500-the_groove.flac
#EXTINF:-1,Bark Psychosis - bark psychosis - big shot
/app/music/Bark Psychosis/1994 - Hex/04 - bark psychosis - big shot.mp3
#EXTINF:-1,Kiasmos - Rival Consoles - ARP
/app/music/Kiasmos/2009 - 65, Milo (Kiasmos & Rival Consoles) (WEB)/05. Rival Consoles - ARP.flac
#EXTINF:-1,Kraftwerk - Spacelab
/app/music/Kraftwerk/1978 - The Man-Machine/02 - Spacelab.flac
#EXTINF:-1,Brian Eno - Who Gives a Thought
/app/music/Brian Eno/2022 - ForeverAndEverNoMore/01 Who Gives a Thought.flac
#EXTINF:-1,Proem - Proem - Vault ep.4-4 - 04 v. jirku 1
/app/music/Proem/2015 - Vault ep.4-4/Proem - Vault ep.4-4 - 04 v. jirku 1.flac
#EXTINF:-1,Tape Loop Orchestra - The Burnley Brass Band Plays On In My Heart
/app/music/Tape Loop Orchestra/2012 - The Word On My Lips Is Your Name/Disc 2 - The Burnley Brass Band Plays On In My Heart/01 - The Burnley Brass Band Plays On In My Heart.flac
#EXTINF:-1,Proem - Proem - Before it finds you - 06 Pretense for piano and synth
/app/music/Proem/2013 - Before it finds you/Proem - Before it finds you - 06 Pretense for piano and synth.flac
#EXTINF:-1,Orbital - Remind
/app/music/Orbital/1993 - Orbital - Orbital 2 (Brown Album - TRUCD2, 828 386.2)/00. Remind.mp3
#EXTINF:-1,Underworld - Underworld - Pearls Girl
/app/music/Underworld/1996 - Second Toughest In The Infants/05. Underworld - Pearls Girl.flac
#EXTINF:-1,Underworld - Underworld - Banstyle Sappys Curry
/app/music/Underworld/1996 - Second Toughest In The Infants/02. Underworld - Banstyle Sappys Curry.flac
#EXTINF:-1,Orbital - Attached
/app/music/Orbital/1994 - Orbital - Snivilisation (TRUCD5, 828 536.2)/10. Attached.mp3
#EXTINF:-1,Labradford - P
/app/music/Labradford/1997 - Mi Media Naranja/7 P.flac
#EXTINF:-1,Drexciya - Drexciya - Vampire Island
/app/music/Drexciya/2013 - Journey Of The Deep Sea Dweller III/10. Drexciya - Vampire Island.mp3
#EXTINF:-1,Vector Lovers - Arrival, Metropolis
/app/music/Vector Lovers/2005 - Capsule For One/02 - Arrival, Metropolis.mp3
#EXTINF:-1,Teeth Of The Sea - Teeth Of The Sea - Highly Deadly Black Tarantula - 03 Field Punishment
/app/music/Teeth Of The Sea/2015 - Highly Deadly Black Tarantula/Teeth Of The Sea - Highly Deadly Black Tarantula - 03 Field Punishment.flac
#EXTINF:-1,Kiasmos - Swept (Tale of Us remix)
/app/music/Kiasmos/2015 - Swept EP/04 - Swept (Tale of Us remix).mp3
#EXTINF:-1,Proem - Proem - Vault ep.1-4 (Noise) - 05 Only Eat the Grey Wolves
/app/music/Proem/2016 - Vault ep.1-4 (Noise)/Proem - Vault ep.1-4 (Noise) - 05 Only Eat the Grey Wolves.flac
#EXTINF:-1,The Orb - Firestar
/app/music/The Orb/2001 - Cydonia/06-Firestar.mp3
#EXTINF:-1,Tape Loop Orchestra - Tape Loop Orchestra - Chapter 11   Late Autumn
/app/music/Tape Loop Orchestra/2009 - 1953 Culture Festival/11 Tape Loop Orchestra - Chapter 11   Late Autumn.mp3
#EXTINF:-1,Kraftwerk - The Man·Machine
/app/music/Kraftwerk/1978 - The Man-Machine/06 - The Man·Machine.flac

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title lquery="(text title)">🎵 ASTEROID RADIO 🎵</title>
<title lquery="(text title)">ASTEROID RADIO</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script>

View File

@ -1,9 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title data-text="title">🎵 ASTEROID RADIO 🎵</title>
<title data-text="title">ASTEROID RADIO</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="/asteroid/static/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/asteroid/static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/asteroid/static/favicon-16x16.png">
<link rel="stylesheet" type="text/css" href="/asteroid/static/asteroid.css">
<script src="/asteroid/static/js/auth-ui.js"></script>
<script src="/asteroid/static/js/front-page.js"></script>
@ -11,7 +14,11 @@
<body>
<div class="container">
<header>
<h1 data-text="station-name">🎵 ASTEROID RADIO 🎵</h1>
<h1 style="display: flex; align-items: center; justify-content: center; gap: 15px;">
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 60px; width: auto;">
<span data-text="station-name">ASTEROID RADIO</span>
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 60px; width: auto;">
</h1>
<nav class="nav">
<a href="/asteroid/content" target="content-frame">Home</a>
<a href="/asteroid/player-content" target="content-frame">Player</a>

View File

@ -1,9 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title data-text="title">🎵 ASTEROID RADIO 🎵</title>
<title data-text="title">ASTEROID RADIO</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="/asteroid/static/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/asteroid/static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/asteroid/static/favicon-16x16.png">
<link rel="stylesheet" type="text/css" href="/asteroid/static/asteroid.css">
<script src="/asteroid/static/js/auth-ui.js"></script>
<script src="/asteroid/static/js/front-page.js"></script>
@ -11,7 +14,11 @@
<body>
<div class="container">
<header>
<h1 data-text="station-name">🎵 ASTEROID RADIO 🎵</h1>
<h1 style="display: flex; align-items: center; justify-content: center; gap: 15px;">
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 60px; width: auto;">
<span data-text="station-name">ASTEROID RADIO</span>
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 60px; width: auto;">
</h1>
<nav class="nav">
<a href="/asteroid/">Home</a>
<a href="/asteroid/player">Player</a>

View File

@ -4,12 +4,18 @@
<title data-text="title">Asteroid Radio - Login</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="/asteroid/static/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/asteroid/static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/asteroid/static/favicon-16x16.png">
<link rel="stylesheet" type="text/css" href="/static/asteroid.css">
</head>
<body>
<div class="container">
<header>
<h1>🎵 ASTEROID RADIO - LOGIN</h1>
<h1 style="display: flex; align-items: center; justify-content: center; gap: 15px;">
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 50px; width: auto;">
<span>ASTEROID RADIO - LOGIN</span>
</h1>
<nav class="nav">
<a href="/asteroid">Home</a>
<a href="/asteroid/player">Player</a>

View File

@ -10,7 +10,11 @@
</head>
<body>
<div class="container">
<h1>🎵 WEB PLAYER</h1>
<h1 style="display: flex; align-items: center; justify-content: center; gap: 15px;">
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 50px; width: auto;">
<span>WEB PLAYER</span>
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 50px; width: auto;">
</h1>
<div class="nav">
<a href="/asteroid/content" target="content-frame">Home</a>
<a href="/asteroid/profile" target="content-frame" data-show-if-logged-in>Profile</a>

View File

@ -4,13 +4,20 @@
<title data-text="title">Asteroid Radio - Web Player</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="/asteroid/static/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/asteroid/static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/asteroid/static/favicon-16x16.png">
<link rel="stylesheet" type="text/css" href="/asteroid/static/asteroid.css">
<script src="/asteroid/static/js/auth-ui.js"></script>
<script src="/asteroid/static/js/player.js"></script>
</head>
<body>
<div class="container">
<h1>🎵 WEB PLAYER</h1>
<h1 style="display: flex; align-items: center; justify-content: center; gap: 15px;">
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 50px; width: auto;">
<span>WEB PLAYER</span>
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 50px; width: auto;">
</h1>
<div class="nav">
<a href="/asteroid">Home</a>
<a href="/asteroid/profile">Profile</a>

View File

@ -4,12 +4,18 @@
<title data-text="title">Asteroid Radio - Register</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="/asteroid/static/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/asteroid/static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/asteroid/static/favicon-16x16.png">
<link rel="stylesheet" type="text/css" href="/asteroid/static/asteroid.css">
</head>
<body>
<div class="container">
<header>
<h1>🎵 ASTEROID RADIO - REGISTER</h1>
<h1 style="display: flex; align-items: center; justify-content: center; gap: 15px;">
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 50px; width: auto;">
<span>ASTEROID RADIO - REGISTER</span>
</h1>
<nav class="nav">
<a href="/asteroid">Home</a>
<a href="/asteroid/player">Player</a>

View File

@ -175,7 +175,7 @@
If :api t, returns JSON error (401). Otherwise redirects to login page.
Auto-detects API routes if not specified."
(let* ((user-id (session:field "user-id"))
(uri (uri-path (radiance:uri *request*)))
(uri (radiance:path (radiance:uri *request*)))
;; Use explicit flag if provided, otherwise auto-detect from URI
(is-api-request (if api t (search "/api/" uri))))
(format t "Authentication check - User ID: ~a, URI: ~a, Is API: ~a~%"
@ -194,7 +194,7 @@
;; Page request - redirect to login (redirect doesn't return)
(progn
(format t "Authentication failed - redirecting to login~%")
(radiance:redirect "/asteroid/login"))))))
(radiance:redirect "/login"))))))
(defun require-role (role &key (api nil))
"Require user to have a specific role.
@ -202,7 +202,7 @@
If :api t, returns JSON error (403). Otherwise redirects to login page.
Auto-detects API routes if not specified."
(let* ((current-user (get-current-user))
(uri (uri-path (radiance:uri *request*)))
(uri (radiance:path (radiance:uri *request*)))
;; Use explicit flag if provided, otherwise auto-detect from URI
(is-api-request (if api t (search "/api/" uri))))
(format t "Current user for role check: ~a~%" (if current-user "FOUND" "NOT FOUND"))
@ -288,22 +288,29 @@
(defun create-default-admin ()
"Create default admin user if no admin exists"
(let ((existing-admins (remove-if-not
(lambda (user)
(let ((role (gethash "role" user)))
(string= (if (listp role) (first role) role) "admin")))
(get-all-users))))
(unless existing-admins
(format t "~%Creating default admin user...~%")
(format t "Username: admin~%")
(format t "Password: asteroid123~%")
(format t "Please change this password after first login!~%~%")
(create-user "admin" "admin@asteroid.radio" "asteroid123" :role :admin :active t))))
(handler-case
(let ((existing-admins (remove-if-not
(lambda (user)
(let ((role (gethash "role" user)))
(string= (if (listp role) (first role) role) "admin")))
(get-all-users))))
(unless existing-admins
(format t "~%Creating default admin user...~%")
(format t "Username: admin~%")
(format t "Password: asteroid123~%")
(format t "Please change this password after first login!~%~%")
(create-user "admin" "admin@asteroid.radio" "asteroid123" :role :admin :active t)))
(error (e)
(format t "Skipping admin creation - database not ready or admins already exist: ~a~%" e))))
(defun initialize-user-system ()
"Initialize the user management system"
(format t "Initializing user management system...~%")
;; Skip database check at startup - database queries hang with current setup
(format t "Skipping admin creation check - database already initialized~%")
(format t "User management initialization complete.~%")
;; Try immediate initialization first
#+nil
(handler-case
(progn
(format t "Setting up user management...~%")