This website requires JavaScript.
490eed2a24
Do not copy radio-listener-* scripts.
Alexander "Arav" Andreev
2023-10-08 22:20:16 +0400
a1b951845f
Version set to 23.40.1.
Alexander "Arav" Andreev
2023-10-08 22:19:49 +0400
dbf71f3f64
Fixed listeners number update, well, on-dis/connect in mount is for a SOURCE. To get listeners you need to use <authentication type="url">. Also, disabled all listener handler, added POST /api/listener/icecast handler.
Alexander "Arav" Andreev
2023-10-08 22:17:56 +0400
635fc4ec1d
Fixed a typo in Makefile.
v23.40.0
Alexander "Arav" Andreev
2023-10-08 04:30:46 +0400
5c061b82f0
In radio-* scripts fixed the malformed URLs.
Alexander "Arav" Andreev
2023-10-08 04:30:19 +0400
7f1a49ec91
In main.js also update MLS.
Alexander "Arav" Andreev
2023-10-08 04:09:41 +0400
2ea21e12b2
In index.pug added ids for MLS fields.
Alexander "Arav" Andreev
2023-10-08 04:09:05 +0400
24ce8115e7
MostListenedDateFormat was changed.
Alexander "Arav" Andreev
2023-10-08 04:08:27 +0400
b9ecf9a3c6
In Makefile un/install target added an override for an Icecast service.
Alexander "Arav" Andreev
2023-10-08 03:12:52 +0400
740d47fb9d
Added an override for icecast.service.
Alexander "Arav" Andreev
2023-10-08 03:06:53 +0400
730bc0599f
In ezstream.service changed order in Requires= and After=.
Alexander "Arav" Andreev
2023-10-08 03:04:55 +0400
a567007463
In ezstream.service Requires= also added a dwelling-radio.service.
Alexander "Arav" Andreev
2023-10-08 03:02:26 +0400
1efa8b73ed
In ezstream.service After= added a dwelling-radio.service.
Alexander "Arav" Andreev
2023-10-08 03:01:31 +0400
83955866c9
Alter an artist tag to tell that there is nothing left to play, so a fallback song is used to fill a silence.
Alexander "Arav" Andreev
2023-10-08 02:56:19 +0400
22a6200ddb
In radio.service added a -fallback-song option.
Alexander "Arav" Andreev
2023-10-08 02:52:57 +0400
f0aa00b932
Added a fallback song option. Altered a PlaylistNext() header to use it.
Alexander "Arav" Andreev
2023-10-08 02:52:37 +0400
e0e5e314f1
Added icecast.xml.
Alexander "Arav" Andreev
2023-10-08 02:40:54 +0400
d549393e42
Updated radioctl. Changed a name for ezstream playlist gen. Added commands to reaload a playlist for ezstream and dwelling-radio.
Alexander "Arav" Andreev
2023-10-08 02:39:23 +0400
099824bfed
Version set to 23.40.0.
Alexander "Arav" Andreev
2023-10-08 02:05:18 +0400
6311b998d4
In nginx.conf deny access to /api/{listener,playlist} from outside, scripts are connecting directly to theservice via a unix socket.
Alexander "Arav" Andreev
2023-10-08 02:04:24 +0400
1599d502c1
Decided to keep handlers for /api/{song,songs,mostlistenedsong} but disable them. Everything can be fetched at an /api/status endpoint.
Alexander "Arav" Andreev
2023-10-08 02:03:06 +0400
eb65071b51
In OggFile.GetTag() was added another layer of indexing, this time we are looking for a capitalised tag name (e.g. Artist). Why there's no consistency in OGG vorbis tags..? *Sigh*
Alexander "Arav" Andreev
2023-10-08 01:23:28 +0400
0d8032da46
MostListenedSong was rewritten.
Alexander "Arav" Andreev
2023-10-08 00:52:40 +0400
d84d985962
In ListenerCounter a sync.Mutex was replaced by a sync.RWMutex.
Alexander "Arav" Andreev
2023-10-07 23:21:00 +0400
da4e97f1aa
In Playlist.load() a check for an empty file was added.
Alexander "Arav" Andreev
2023-10-07 23:17:42 +0400
131ea35341
A reduntant method Song.ArtistTitle() was removed.
Alexander "Arav" Andreev
2023-10-07 21:31:00 +0400
4a4c228984
In main.js added a call to updateStatus() before starting an interval.
Alexander "Arav" Andreev
2023-10-07 21:30:19 +0400
eba2c7d18f
Do not install liquidsoap's files.
Alexander "Arav" Andreev
2023-10-07 18:03:12 +0400
141e0f3717
In radio-listener-* vars was removed.
Alexander "Arav" Andreev
2023-10-07 06:04:49 +0400
0590eaa1c5
Fixed and simplified radio-fetch.
Alexander "Arav" Andreev
2023-10-07 06:03:16 +0400
65ec8c1db2
In index.pug avoid nil pointer dereferencing.
Alexander "Arav" Andreev
2023-10-07 05:35:16 +0400
b8afed6e1b
In PlaylistNext() CheckAndUpdateMostListenedSong() call was moved after songList.Add to avoid nil pointer dereferencing.
Alexander "Arav" Andreev
2023-10-07 05:34:50 +0400
f0420e9bcd
main.js was rewritten and now it displays estimate and total duration of a current song.
Alexander "Arav" Andreev
2023-10-07 05:33:57 +0400
238705b00f
In an index.pug file make a copy of a current song for thread safety.
Alexander "Arav" Andreev
2023-10-07 05:25:13 +0400
020676f113
While I want thread safety I also want a not set current song to not appear in a status JSON object.
Alexander "Arav" Andreev
2023-10-07 05:23:45 +0400
07b0199193
In a PlaylistNext() handler pass a current song as a copy.
Alexander "Arav" Andreev
2023-10-07 05:20:27 +0400
f53f30963d
sync.Mutex was replaced by sync.RWMutex for SongList.
Alexander "Arav" Andreev
2023-10-07 05:16:16 +0400
1d50bbe790
In MarshalJSON() for Song a string field Duration was removed, just msec left.
Alexander "Arav" Andreev
2023-10-07 05:11:58 +0400
62f6e3b976
Updated SIG* handling code in main().
Alexander "Arav" Andreev
2023-10-06 04:58:58 +0400
3251d9e983
In .gitignore added a file mls-test.
Alexander "Arav" Andreev
2023-10-06 03:17:59 +0400
2f96976f19
In DJHandlers.Status in an anonymous struct removed a pointer to Song.
Alexander "Arav" Andreev
2023-10-05 18:54:44 +0400
c33ff03bd8
Updated using of SongList.Current() in an index.pug file.
Alexander "Arav" Andreev
2023-10-05 18:53:57 +0400
9beb179cc0
SongList.Current() now returns a copy of Song instead of a pointer.
Alexander "Arav" Andreev
2023-10-05 18:52:18 +0400
9b14d7846b
In CheckAndUpdateMostListenedSong() accept Song by value instead of a pointer.
Alexander "Arav" Andreev
2023-10-05 18:19:41 +0400
c7f6b3072d
Embedded a sync.Mutex to a ListenerCounter.
Alexander "Arav" Andreev
2023-10-05 18:18:48 +0400
f1eaba016f
In DJHandlers.ListenersInc() a code for updating max listeners was replaced by a function call to UpdateCurrentMaxListeners().
Alexander "Arav" Andreev
2023-10-05 18:05:27 +0400
eeadbc4f96
To a SongList a method UpdateCurrentMaxListeners() was added, it checks and updates max listeners for a current song in a thread safe manner.
Alexander "Arav" Andreev
2023-10-05 18:04:15 +0400
b659464118
For Song.ArtistTitle() a comment was updated.
Alexander "Arav" Andreev
2023-10-05 18:02:33 +0400
8079058b5c
Added a handler for SIGHUP signal that is used for playlist reloading.
Alexander "Arav" Andreev
2023-10-05 17:37:13 +0400
f8fd13f8ed
In playlist load() add an error message.
Alexander "Arav" Andreev
2023-10-05 17:36:02 +0400
e0fa65fbd7
Decided to remove inotify watcher from playlist.
Alexander "Arav" Andreev
2023-10-05 17:31:12 +0400
8587225dfc
Added SIGABRT to doneSignal.
Alexander "Arav" Andreev
2023-10-05 17:26:48 +0400
6ae8a40493
In oggtag.go a struct named OggFIle was created, ReadFile turned into a constructor NewOggFile. And GetTag and GetDuration turned into methods.
Alexander "Arav" Andreev
2023-10-05 17:26:13 +0400
10bc3a3785
In Playlist embed a sync.Mutex instead.
Alexander "Arav" Andreev
2023-10-04 18:37:13 +0400
6ce4700420
In index.pug: songList.Len() was replaced with songList.MaxLen().
Alexander "Arav" Andreev
2023-10-04 18:15:09 +0400
1c6d288cd7
In song.go: added comments; embed sync.Mutex in SongList instead of having it as a field; changed a json field name duration_milliseconds to duration_msec; listMaxLen field was renamed to maxLen; Len() was renamed to MaxLen().
Alexander "Arav" Andreev
2023-10-04 18:10:17 +0400
20b8b62b73
In an index.pug file added a tbody tag to a table.
Alexander "Arav" Andreev
2023-10-02 18:20:07 +0400
98ed4035a7
In ListenersDec() handler added a missing return.
Alexander "Arav" Andreev
2023-10-02 18:09:25 +0400
0bf81f93c8
In Song.DurationString() updated format.
Alexander "Arav" Andreev
2023-10-02 18:08:57 +0400
64c2868fcf
Updated CheckAndUpdateMostListenedSong() func.
Alexander "Arav" Andreev
2023-10-02 15:04:51 +0400
1990f1c7f0
In a PlaylistNext handler return a \n character as well.
Alexander "Arav" Andreev
2023-10-02 15:03:47 +0400
29714b30ca
A file listeners.go was renamed to listener_counter.go.
Alexander "Arav" Andreev
2023-10-02 04:33:11 +0400
8c510e6958
Fixed a dwelling-radio intake. Replaced a default playlist with this one.
Alexander "Arav" Andreev
2023-10-02 04:10:15 +0400
44d0f6fc3b
Updated args in radio.service.
Alexander "Arav" Andreev
2023-10-02 04:03:39 +0400
fe61d71149
Removed an unneeded radiodj.service file.
Alexander "Arav" Andreev
2023-10-02 04:03:23 +0400
976ad683ca
Updated tools/radio-*.
Alexander "Arav" Andreev
2023-10-02 04:00:59 +0400
c2c8c82212
Updated main.js. Added a new update() function that does everything. Not completed yet.
Alexander "Arav" Andreev
2023-10-02 03:56:57 +0400
35429e57d2
In an index.pug added span#radio-duration.
Alexander "Arav" Andreev
2023-10-02 03:55:51 +0400
9757f5f748
Oh, time.Duration works a little differently...
Alexander "Arav" Andreev
2023-10-02 03:55:17 +0400
f1e2eca876
Added a DurationString() method for a Song that returns time in format 04:05 or 15:04:05 if a song is one hour or more long.
Alexander "Arav" Andreev
2023-10-02 03:52:26 +0400
010774d775
Return a formatted string alongside with duration in milliseconds.
Alexander "Arav" Andreev
2023-10-02 03:48:31 +0400
437403aa9e
From Makefile dwelling-radiodj was purged completely.
Alexander "Arav" Andreev
2023-10-02 03:22:06 +0400
0519bc979c
Status() and LastSong() handlers was removed from main handlers.
Alexander "Arav" Andreev
2023-10-02 03:20:48 +0400
3e0a1fe181
Updated index.pug.
Alexander "Arav" Andreev
2023-10-02 03:19:48 +0400
bd9b80076a
Updated CheckAndUpdateMostListenedSong() to work with a new Song struct.
Alexander "Arav" Andreev
2023-10-02 03:19:23 +0400
58b3d18288
Pass a SongList instead of instantiating.
Alexander "Arav" Andreev
2023-10-02 03:18:54 +0400
f9d85d45f5
Song_ was renamed to Song. Also added Len() method to a SongList.
Alexander "Arav" Andreev
2023-10-02 03:18:30 +0400
d0722131df
Added handlers and flags and instantiated all need stuff. Removed flags for icecast.
Alexander "Arav" Andreev
2023-10-02 03:16:17 +0400
5e8e9943f9
Icecast-specific code was removed, because now it all is controled inside a service.
Alexander "Arav" Andreev
2023-10-02 03:15:05 +0400
0245145a64
tools/radiodj-* was renamed to tools/radio-*.
Alexander "Arav" Andreev
2023-10-02 03:14:12 +0400
698d7787e6
A separate executable dwelling-radiodj was removed.
Alexander "Arav" Andreev
2023-10-02 03:13:39 +0400
f0438ff822
In ListenersGet() text/plain was replaced by application/json.
Alexander "Arav" Andreev
2023-10-02 02:35:01 +0400
d2851c6fb8
Added http.Error() to a PlaylistNext() handler.
Alexander "Arav" Andreev
2023-10-02 02:29:18 +0400
f709ac4b02
Added a MostListenedSong() handler.
Alexander "Arav" Andreev
2023-10-02 02:28:46 +0400
8322d2a7a8
In Status handler: added missing Content-Type; Added most listened song; Removed with-list query, just return everything; Added http.Error().
Alexander "Arav" Andreev
2023-10-02 02:22:14 +0400
1b38c5d86c
Added a /mostlistenedsong endpoint.
Alexander "Arav" Andreev
2023-10-02 02:08:38 +0400
7e4ca6990b
Removed Sub for a /playlist endpoint.
Alexander "Arav" Andreev
2023-10-02 02:08:16 +0400
3ed0f7b62a
Added MarshalJSON() method to MostListenedSong.
Alexander "Arav" Andreev
2023-10-02 02:07:39 +0400
ddf5f3d0f7
Added check if mostListened set.
Alexander "Arav" Andreev
2023-10-02 02:07:08 +0400
7cc228968d
In handlers made use of oggtag.ReadFile() func. Also updated func names.
Alexander "Arav" Andreev
2023-10-02 01:27:14 +0400
c054c3b32e
Added a duration field to Song_ struct.
Alexander "Arav" Andreev
2023-10-02 01:26:22 +0400
a741e3eb9a
In oggtag a prefix Ogg was removed from funtions and consts. Also added the consts that hold len of sequences.
Alexander "Arav" Andreev
2023-10-02 01:25:43 +0400
17eeebf1f3
Implemented OggReadFile() func to get raw data from an OGG file. Also a func OggGetDuration() was implemented that returns duration of a song.
Alexander "Arav" Andreev
2023-10-02 01:08:24 +0400
aaf14e0c83
A /status endpoint was added that returns all data available. At this time cur song, listeners cur and peak, and a list of prev songs.
Alexander "Arav" Andreev
2023-10-01 22:07:04 +0400
96baa42fe0
/song endpoint was broken into two, the second one is /songs that returns a list of prev played songs, and /song just a current one.
Alexander "Arav" Andreev
2023-10-01 22:05:39 +0400
381da691a4
For ListenerCounter implemented MarshalJSON() method.
Alexander "Arav" Andreev
2023-10-01 22:03:26 +0400
2be516236b
SongList.Current() will return nil if current song wasn't set yet.
Alexander "Arav" Andreev
2023-10-01 22:02:54 +0400
dea283df27
Listeners struct was renamed to ListenerCounter.
Alexander "Arav" Andreev
2023-10-01 20:32:07 +0400
dc3658d6de
Decided to implement an inotify watcher for a playlist file. Dunno if it works correctly, but it seems like, not tested yet.
Alexander "Arav" Andreev
2023-10-01 06:44:36 +0400
4faf2a0309
In Playlist a method Load() was renamed into load(), and a public Reload() method created.
Alexander "Arav" Andreev
2023-10-01 06:40:05 +0400