OP25 Issues with ADP decoding

Status
Not open for further replies.

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
To begin, what hardware platform and Linux OS is it that you have op25 installed on? This info is needed to determine specific configurations
Right now it's a virtual machine(vmware workstation 17.5) running Ubuntu 22.04.
I'd like, if possible, to hear the audio on the VM and have it save the audio files. Maybe 30 minute increments
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,215
Reaction score
465
Location
NE Wisconsin
Right now it's a virtual machine(vmware workstation 17.5) running Ubuntu 22.04.
I'd like, if possible, to hear the audio on the VM and have it save the audio files. Maybe 30 minute increments
No problem configuring this type of arrangement on Ubuntu 22.04 other than it will take a little reconfiguration of the Pulse Audio (PA)
system to facilitate Liquidsoap to skate around some permissions issues. This is especially true when it's desired that op25 and Liquidsoap
are desired to run as system services instead manually running them from terminal sessions.

PM me if interested in making the changes to the PA configs. I'd be willing to email you a word document outlining the steps to follow.
 

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
No problem configuring this type of arrangement on Ubuntu 22.04 other than it will take a little reconfiguration of the Pulse Audio (PA)
system to facilitate Liquidsoap to skate around some permissions issues. This is especially true when it's desired that op25 and Liquidsoap
are desired to run as system services instead manually running them from terminal sessions.

PM me if interested in making the changes to the PA configs. I'd be willing to email you a word document outlining the steps to follow.
There's no easier way to make this work? Haha nothing with op25 is easy.
Sending you a DM for assistance with this
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,215
Reaction score
465
Location
NE Wisconsin
There's no easier way to make this work? Haha nothing with op25 is easy.
Sending you a DM for assistance with this

Sent you the procedure to reconfigure Pulse Audio... Reference files: op25-liq.service & op25-rx.service found in the apps folder.
You can use these to crate services needed to run op25 and liquidsoap. Edit and replace "pi' as the username with your actual Linux username
before enabling and starting the services.
 

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
Sent you the procedure to reconfigure Pulse Audio... Reference files: op25-liq.service & op25-rx.service found in the apps folder.
You can use these to crate services needed to run op25 and liquidsoap. Edit and replace "pi' as the username with your actual Linux username
before enabling and starting the services.
I have all that fun stuff done, including the DMed part.
So the fun part, how do I make it save the audio files every 30 minutes verse your 60 minutes?
 
Last edited:

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,215
Reaction score
465
Location
NE Wisconsin
So the fun part, how do I make it save the audio files every 30 minutes verse your 60 minutes?

I haven't really thought about it. The volume of radio traffic in my area for the TGID's that I monitor easily fit a full hour of a typical day into
approximately 3–6-minute file lengths. Offhand, I don't see an easy way to cut them into smaller pieces from inside of Liquidsoap, but would
think you could easily craft some python code to keep track of the desired time segments then open and close the recordings accordingly.
 

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
I haven't really thought about it. The volume of radio traffic in my area for the TGID's that I monitor easily fit a full hour of a typical day into
approximately 3–6-minute file lengths. Offhand, I don't see an easy way to cut them into smaller pieces from inside of Liquidsoap, but would
think you could easily craft some python code to keep track of the desired time segments then open and close the recordings accordingly.
I decided to leave it at 1 hour. It's a trunk system so it's going to be larger than yours but I plan to check daily anyway.
 

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
I haven't really thought about it. The volume of radio traffic in my area for the TGID's that I monitor easily fit a full hour of a typical day into
approximately 3–6-minute file lengths. Offhand, I don't see an easy way to cut them into smaller pieces from inside of Liquidsoap, but would
think you could easily craft some python code to keep track of the desired time segments then open and close the recordings accordingly.
I have another issue. The files it's saving is empty. Do you know what could possibly be wrong?
 

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
Not without reviewing your op25 and liquidsoap configs.
Here you go. The liq file is a copy/paste of yours with changes to the wav location

.liq
Code:
#!/usr/bin/liquidsoap

# Example liquidsoap streaming from op25 to icecast
# (c) 2019-2021 gnorbury@bondcar.com, wllmbecks@gmail.com
#

set("log.stdout", true)
set("log.file", false)
set("log.level", 3)

# Make the native sample rate compatible with op25
set("frame.audio.samplerate", 8000)

input = input.external.rawaudio(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -u 23450 -x 1.35 -s")


# Consider increasing the buffer value on slow systems such as RPi3. e.g. buffer=0.25
# Longer buffer results in less choppy audio but at the expense of increased latency.


# OPTIONAL AUDIO SIGNAL PROCESSING BLOCKS
# Uncomment to enable

# High pass filter
#input = filter.iir.butterworth.high(frequency = 200.0, order = 4, input)

# Low pass filter
#input = filter.iir.butterworth.low(frequency = 3250.0, order = 4, input)

# Compression
# This MIGHT be the spot we change release = 60.0 to 30.0 to save @ 30 minutes
input = compress(input, attack = 15.0, gain = 2.0, knee = 1.0, ratio = 3.0, release = 60.0, threshold = -24.0)

# Normalization
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0)

# Optimize  mp3 audio recording level
mp3_audio = amplify(0.65,input)

# Create infallible local speaker and streaming audio
input_safe = mksafe(input)

# LOCAL AUDIO OUTPUT
# Uncomment the appropriate line below to enable local sound

# Default audio subsystem
#out (input)

# PulseAudio
#output.pulseaudio(input)

# ALSA
output.alsa(input_safe)

# Dump mp3 audio files to Apache web server
output.file(%mp3(stereo=true), "~/Desktop/WAV/1234-%m-%d-%Y/hour-%H.mp3", mp3_audio, fallible=true, append=true,
reopen_when={0m})

# ICECAST STREAMING
# Uncomment to enable output to an icecast server
# Change the "host", "password", and "mount" strings appropriately first!
# For metadata to work properly, the host address given here MUST MATCH the address in op25's meta.json file

output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="1234", genre="4321",
url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="op25", password="hackme", mean(input_safe))

op25.sh
Code:
./rx.py  --args "rtl" --gains 'lna:36' -S 960000 -X -q 1 -v 11 -V -U -l 'curses' --crypt-behavior=0 -k enc_keys.json -T trunk.tsv 2> 1234.log
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,215
Reaction score
465
Location
NE Wisconsin
op25.sh
Code:
./rx.py  --args "rtl" --gains 'lna:36' -S 960000 -X -q 1 -v 11 -V -U -l 'curses' --crypt-behavior=0 -k enc_keys.json -T trunk.tsv 2> 1234.log

Your op25.sh command line is directing audio directly from op25 to the Linux default (-U) sound device and not to the network loopback
adapter where liquidsoap is listening for PCM audio packets originating from op25. You'll need to revise op25.sh to direct audio using what
is known as the "Wireshark" port per the command line parameters bolded below.

./rx.py --args "rtl" --gains 'lna:36' -S 960000 -X -q 1 -v 11 -V -w -u 23450 -l 'curses' --crypt-behavior=0 -k enc_keys.json -T trunk.tsv 2> 1234.log

Next, change you .liq's "Local Audio Output" section to provide local speaker audio using Ubuntu's Pulse Audio (PA) subsystem.

# LOCAL AUDIO OUTPUT
# Uncomment the appropriate line below to enable local sound

# Default audio subsystem
#out (input_safe)

# PulseAudio
output.pulseaudio(input_safe)

# ALSA
#output.alsa(input_safe)

Finally, verify that your audio archive folder has permissions to allow file creation by liquidsoap. It's likely this is already the same as your
Linux login username and will probably not require any changes unlike a folder that's accessible in an Apache or Nginx webserver.


# Dump mp3 audio files to Apache web server
output.file(%mp3(stereo=true), "~/Desktop/WAV/1234-%m-%d-%Y/hour-%H.mp3", mp3_audio, fallible=true, append=true,
reopen_when={0m})
 
Last edited:

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
Your op25.sh command line is directing audio directly from op25 to the Linux default (-U) sound device and not to the network loopback
adapter where liquidsoap is listening for PCM audio packets originating from op25. You'll need to revise op25.sh to direct audio using what
is known as the "Wireshark" port per the command line parameters bolded below.

./rx.py --args "rtl" --gains 'lna:36' -S 960000 -X -q 1 -v 11 -V -w -u 23450 -l 'curses' --crypt-behavior=0 -k enc_keys.json -T trunk.tsv 2> 1234.log

Next, change you .liq's "Local Audio Output" section to provide local speaker audio using Ubuntu's Pulse Audio (PA) subsystem.

# LOCAL AUDIO OUTPUT
# Uncomment the appropriate line below to enable local sound

# Default audio subsystem
#out (input_safe)

# PulseAudio
output.pulseaudio(input_safe)

# ALSA
#output.alsa(input_safe)

Finally, verify that your audio archive folder has permissions to allow file creation by liquidsoap. It's likely this is already the same as your
Linux login username and will probably not require any changes unlike a folder that's accessible in an Apache or Nginx webserver.


# Dump mp3 audio files to Apache web server
output.file(%mp3(stereo=true), "~/Desktop/WAV/1234-%m-%d-%Y/hour-%H.mp3", mp3_audio, fallible=true, append=true,
reopen_when={0m})
I tried to google my error and nothing resolved it. I setup apache, got my localhost website working correctly but still nothing.
Code:
At ./op25.liq, line 35, char 86-91:
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0)

Error 7: Invalid value:
That source is fallible

Line 35: input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0)

It's the same exact line you gave me in post #40
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,215
Reaction score
465
Location
NE Wisconsin
Post the following list files and I will take a look.

/etc/pulse/client.conf
/etc/systemd/system/pulseaudio.service
op25.sh
op25.liq

Also, the do following queries and capture the output.

cat /etc/os-release
liquidsoap --version
 

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
Post the following list files and I will take a look.

/etc/pulse/client.conf
/etc/systemd/system/pulseaudio.service
op25.sh
op25.liq

Also, the do following queries and capture the output.

cat /etc/os-release
liquidsoap --version


/etc/pulse/client.conf || Screenshot
/etc/systemd/system/pulseaudio.service || Screenshot

op25.sh
Code:
./rx.py  --args "rtl" --gains 'lna:36' -S 960000 -X -q 1 -v 11 -V -w -u 23450 -l 'curses' --crypt-behavior=0 -k enc_keys.json -T trunk.tsv 2> 1234.log

op25.liq
Code:
#!/usr/bin/liquidsoap

# Example liquidsoap streaming from op25 to icecast
# (c) 2019-2021 gnorbury@bondcar.com, wllmbecks@gmail.com
#

set("log.stdout", true)
set("log.file", false)
set("log.level", 3)


# Make the native sample rate compatible with op25
set("frame.audio.samplerate", 8000)

input = input.external.rawaudio(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -u 23450 -x 1.35 -s")


# Consider increasing the buffer value on slow systems such as RPi3. e.g. buffer=0.25
# Longer buffer results in less choppy audio but at the expense of increased latency.


# OPTIONAL AUDIO SIGNAL PROCESSING BLOCKS 
# Uncomment to enable
#
# High pass filter
#input = filter.iir.butterworth.high(frequency = 200.0, order = 4, input)

# Low pass filter
#input = filter.iir.butterworth.low(frequency = 3250.0, order = 4, input)

# Compression
input = compress(input, attack = 15.0, gain = 2.0, knee = 1.0, ratio = 3.0, release = 60.0, threshold = -24.0)

# Normalization
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0,)

# Optimize  mp3 audio recording level
mp3_audio = amplify(0.65,input)

# Create infallible local speaker and streaming audio
input_safe = mksafe(input)



# LOCAL AUDIO OUTPUT
# Uncomment the appropriate line below to enable local sound
#
# Default audio subsystem
#out (input_safe)
#
# PulseAudio
#output.pulseaudio(input) ### commenting this out works for the server. No files save and no audio comes through speakers on pc

#
# ALSA
output.alsa(input_safe)


# Dump mp3 audio files to Apache web server
output.file(%mp3(stereo=true), "/var/www/html/op25/1234-%Y-%m-%d/hour-%H.mp3", mp3_audio, fallible=true, append=true, reopen_when={0m})


# ICECAST STREAMING
# Uncomment to enable output to an icecast server
# Change the "host", "password", and "mount" strings appropriately first!
# For metadata to work properly, the host address given here MUST MATCH the address in op25's meta.json file
#
output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="op25", genre="Public Safety",
url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="op25", password="hackme", mean(input_safe))


cat /etc/os-release || Screenshot
liquidsoap --version || Liquidsoap 2.0.2
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,215
Reaction score
465
Location
NE Wisconsin
# Example liquidsoap streaming from op25 to icecast
# (c) 2019-2021 gnorbury@bondcar.com, wllmbecks@gmail.com
#

set("log.stdout", true)
set("log.file", false)
set("log.level", 3)


# Make the native sample rate compatible with op25
set("frame.audio.samplerate", 8000)

input = input.external.rawaudio(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -u 23450 -x 1.35 -s")


# Consider increasing the buffer value on slow systems such as RPi3. e.g. buffer=0.25
# Longer buffer results in less choppy audio but at the expense of increased latency.


# OPTIONAL AUDIO SIGNAL PROCESSING BLOCKS
# Uncomment to enable
#
# High pass filter
#input = filter.iir.butterworth.high(frequency = 200.0, order = 4, input)

# Low pass filter
#input = filter.iir.butterworth.low(frequency = 3250.0, order = 4, input)

# Compression
input = compress(input, attack = 15.0, gain = 2.0, knee = 1.0, ratio = 3.0, release = 60.0, threshold = -24.0)

# Normalization
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0,)

# Optimize mp3 audio recording level
mp3_audio = amplify(0.65,input)

# Create infallible local speaker and streaming audio
input_safe = mksafe(input)



# LOCAL AUDIO OUTPUT
# Uncomment the appropriate line below to enable local sound
#
# Default audio subsystem
#out (input_safe)
#
# PulseAudio
#output.pulseaudio(input) ### commenting this out works for the server. No files save and no audio comes through speakers on pc

#
# ALSA
output.alsa(input_safe)


# Dump mp3 audio files to Apache web server
output.file(%mp3(stereo=true), "/var/www/html/op25/1234-%Y-%m-%d/hour-%H.mp3", mp3_audio, fallible=true, append=true, reopen_when={0m})


# ICECAST STREAMING
# Uncomment to enable output to an icecast server
# Change the "host", "password", and "mount" strings appropriately first!
# For metadata to work properly, the host address given here MUST MATCH the address in op25's meta.json file
#
output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="op25", genre="Public Safety",
url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="op25", password="hackme", mean(input_safe))

OK. Easy fix. Edit op25.liq to correct the lines as shown below.

# Normalization
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0)

Remove the comma after -40.0,)

# PulseAudio
output.pulseaudio(input_safe)

The local speaker (sound device) and the output.icecast operator require an "infallible" source, whereas the output.file
operator relies on a fallible source to trigger (start/stop) recording in accordance with the presence of decoded audio.


------

Here's my op25.liq for reference that's compatible and tested with Liquidsoap 2.0.2


#!/usr/bin/liquidsoap

# Example liquidsoap v2.x streaming from op25 to icecast
# (c) 2019-2024 gnorbury@bondcar.com, wllmbecks@gmail.com
#

settings.log.stdout.set(true)
settings.log.file.set(false)
settings.log.file.path.set("/home/op25/op25/op25/gr-op25_repeater/apps/liquidsoap.log")
settings.log.level.set(3)
settings.log.file.append.set(false)


# Make the native sample rate compatible with op25
settings.frame.audio.size.set(8000)

input = input.external.rawaudio(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -u 23450 -x 1.25 -s")


# Consider increasing the buffer value on slow systems such as RPi3. e.g. buffer=0.25
# Longer buffer results in less choppy audio but at the expense of increased latency.



# OPTIONAL AUDIO SIGNAL PROCESSING BLOCKS
# Uncomment to enable
#
# High pass filter
#input = filter.iir.butterworth.high(frequency = 200.0, order = 4, input)

# Low pass filter
#input = filter.iir.butterworth.low(frequency = 3250.0, order = 4, input)

# Compression
input = compress(input, attack = 15.0, gain = 2.0, knee = 1.0, ratio = 3.0, release = 60.0, threshold = -24.0)

# Normalization
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0)

# Optimize mp3 audio recording level
mp3_audio = amplify(0.65,input)

# Create infallible local speaker and streaming audio
input_safe = mksafe(input)

# Dump mp3 audio files to Apache web server
output.file(%mp3(stereo=true), "/var/www/html/op25/MPSCS-%Y-%m-%d/hour-%H.mp3", mp3_audio, fallible=true, append=true,
reopen_when={0m})


# LOCAL AUDIO OUTPUT
# Uncomment the appropriate line below to enable local sound
#
# Default audio subsystem
#out (input_safe)
#
# PulseAudio
output.pulseaudio(input_safe)
#
# ALSA
#output.alsa(input_safe)

# ICECAST STREAMING
# Uncomment to enable output to an icecast server
# Change the "host", "password", and "mount" strings appropriately first!
# For metadata to work properly, the host address given here MUST MATCH the address in op25's meta.json file
#
output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="OP25", genre="Public Safety",
url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="op25", password="hackme", mean(input_safe))
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,215
Reaction score
465
Location
NE Wisconsin
Once you have audio archival up and running, you may want to delete files after they have aged so many days. On my system,
I have set a cron job to delete the mp3 audio files after they have aged past seven days.

IE: sudo crontab -e
Add the following line at the end of the file.
0 0 * * * find /var/www/html/op25/* -type d -mtime +5 -exec rm -rf {} \;
Save and close the file.

Reload cron.
sudo service cron reload
 

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
OK. Easy fix. Edit op25.liq to correct the lines as shown below.

# Normalization
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0)

Remove the comma after -40.0,)

# PulseAudio
output.pulseaudio(input_safe)

The local speaker (sound device) and the output.icecast operator require an "infallible" source, whereas the output.file
operator relies on a fallible source to trigger (start/stop) recording in accordance with the presence of decoded audio.


------

Here's my op25.liq for reference that's compatible and tested with Liquidsoap 2.0.2


#!/usr/bin/liquidsoap

# Example liquidsoap v2.x streaming from op25 to icecast
# (c) 2019-2024 gnorbury@bondcar.com, wllmbecks@gmail.com
#

settings.log.stdout.set(true)
settings.log.file.set(false)
settings.log.file.path.set("/home/op25/op25/op25/gr-op25_repeater/apps/liquidsoap.log")
settings.log.level.set(3)
settings.log.file.append.set(false)


# Make the native sample rate compatible with op25
settings.frame.audio.size.set(8000)

input = input.external.rawaudio(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -u 23450 -x 1.25 -s")


# Consider increasing the buffer value on slow systems such as RPi3. e.g. buffer=0.25
# Longer buffer results in less choppy audio but at the expense of increased latency.



# OPTIONAL AUDIO SIGNAL PROCESSING BLOCKS
# Uncomment to enable
#
# High pass filter
#input = filter.iir.butterworth.high(frequency = 200.0, order = 4, input)

# Low pass filter
#input = filter.iir.butterworth.low(frequency = 3250.0, order = 4, input)

# Compression
input = compress(input, attack = 15.0, gain = 2.0, knee = 1.0, ratio = 3.0, release = 60.0, threshold = -24.0)

# Normalization
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -40.0)

# Optimize mp3 audio recording level
mp3_audio = amplify(0.65,input)

# Create infallible local speaker and streaming audio
input_safe = mksafe(input)

# Dump mp3 audio files to Apache web server
output.file(%mp3(stereo=true), "/var/www/html/op25/MPSCS-%Y-%m-%d/hour-%H.mp3", mp3_audio, fallible=true, append=true,
reopen_when={0m})


# LOCAL AUDIO OUTPUT
# Uncomment the appropriate line below to enable local sound
#
# Default audio subsystem
#out (input_safe)
#
# PulseAudio
output.pulseaudio(input_safe)
#
# ALSA
#output.alsa(input_safe)

# ICECAST STREAMING
# Uncomment to enable output to an icecast server
# Change the "host", "password", and "mount" strings appropriately first!
# For metadata to work properly, the host address given here MUST MATCH the address in op25's meta.json file
#
output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="OP25", genre="Public Safety",
url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="op25", password="hackme", mean(input_safe))
The changes you have for me worked perfectly - had to fix the permissions for some reason. But that's just Ubuntu being Ubuntu.
I made a 2nd file and made changes to the www/html folder to save it.

Once you have audio archival up and running, you may want to delete files after they have aged so many days. On my system,
I have set a cron job to delete the mp3 audio files after they have aged past seven days.

IE: sudo crontab -e
Add the following line at the end of the file.
0 0 * * * find /var/www/html/op25/* -type d -mtime +5 -exec rm -rf {} \;
Save and close the file.

Reload cron.
sudo service cron reload
If my google-fu is correct, and it took awhile, the +5 is delete files last modified 5 days ago.
Took me a while to find it since man crontab and crontab -h didn't turn up any results. Please correct me if I'm wrong
 

Reconrider

Inside the Galaxy
Premium Subscriber
Joined
Sep 26, 2017
Messages
1,996
Reaction score
929
Location
Radio Galaxy
What software do you use to listen to the audio?
I've tried 2 and only 1 worked - rdio-scanner which is terrible and doesn't link the audio to it
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,215
Reaction score
465
Location
NE Wisconsin
If my google-fu is correct, and it took awhile, the +5 is delete files last modified 5 days ago.
Took me a while to find it since man crontab and crontab -h didn't turn up any results. Please correct me if I'm wrong

As strange as it seems, +5 is the correct value to retain seven days of archives that includes the current day. The script crates folders
in full 24-hour (one-day) increments whereby the current day (date) while open is not counted for deletion, and that a closed (one-day)
folder has to age 24-hours before it will be counted for deletion, thus yielding seven consecutive days.

Here's a snapshot of the seven consecutive days archive folders as they appear in the web browser and whereby op25 and liquidsoap
are running 24x7x365.

OP25 Archive Folders.png
 
Status
Not open for further replies.
Top