docs: fix prose linting errors
- Properly enclose code between triple backticks - Put paths and url between backticks - Remove links <> enclosing - Libretime styled name is LibreTime - Put urls and paths betwen backticks - Use sentence like capitalization for headings - Put tools name between backticks - Update links
This commit is contained in:
parent
75e3760f2e
commit
94d3c5e496
37 changed files with 414 additions and 319 deletions
|
@ -4,7 +4,7 @@ title: Dashboard
|
|||
|
||||
:::tip
|
||||
|
||||
Want to listen to Libretime's output stream? Click **Listen** below the **On Air** light.
|
||||
Want to listen to LibreTime's output stream? Click **Listen** below the **On Air** light.
|
||||
|
||||
:::
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Listener Statistics
|
||||
title: Listener statistics
|
||||
---
|
||||
|
||||
The Listener Stats page on the Analytics menu shows graphs of listener connections to the configured streaming servers for the selected date and time range. On the right side, a green **Status** indicator shows **OK** if the connection to the streaming server is active.
|
||||
|
|
|
@ -48,7 +48,7 @@ configured in the LibreTime **Streams** page, on LibreTime's **System** menu.
|
|||
6. Still in settings click, **Audio** and select your audio input device under
|
||||
**Audio Device**
|
||||
|
||||
### Show Time
|
||||
### Show time
|
||||
|
||||
1. When its almost your show time go to your LibreTime page and look at the time in the top right when your show starts go to Butt.
|
||||
2. Click the white Play button (third button in the middle).
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Playlists and Smartblocks
|
||||
title: Playlists and smart blocks
|
||||
---
|
||||
|
||||
## Creating a new playlist
|
||||
|
@ -24,9 +24,9 @@ When your playlist is complete, click the **New** button in the top left corner
|
|||
|
||||
If you want to edit the playlist content or metadata later, you can find it by **Title**, **Creator**, **Last Modified** date, **Length**, **Owner** or **Year** using one of the search tools on the Library page. Click the playlist in the search results list, and then click **Edit** from the pop-up menu. You can also **Preview** the entire playlist in a pop-up audition window, **Duplicate** or **Delete** one of your playlists from this menu.
|
||||
|
||||
### Autoloading Playlists
|
||||
### Auto loading playlists
|
||||
|
||||
Libretime will schedule tracks from a selected playlist an hour before a show is scheduled to air. This is a great way to automatically schedule weekly shows which are received via. podcasts.
|
||||
LibreTime will schedule tracks from a selected playlist an hour before a show is scheduled to air. This is a great way to automatically schedule weekly shows which are received via. podcasts.
|
||||
|
||||
## Creating a Smartblock
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ If your station features playout from analogue sources such as turntables or mic
|
|||
|
||||
Log entries can also be manually deleted, using the button with the trashcan icon, to the right of the **+ Create Entry** button. Pages of entries can be selected for deletion using the **Select** drop-down menu.
|
||||
|
||||
## History Templates
|
||||
## History templates
|
||||
|
||||

|
||||
|
||||
|
@ -44,125 +44,158 @@ There are two kinds of information that can be retrieved remotely from the Libre
|
|||
|
||||
If your LibreTime server was accessible at https://libretime.example.com the live show information could be retrieved by your web server using this URL:
|
||||
|
||||
https://libretime.example.com/api/live-info/?callback
|
||||
```
|
||||
https://libretime.example.com/api/live-info/?callback
|
||||
```
|
||||
|
||||
The comma-separated text metadata returned to your web server might be something like this:
|
||||
|
||||
({"env":"production",
|
||||
"schedulerTime":"2013-07-03 14:07:31",
|
||||
```json
|
||||
{
|
||||
"env": "production",
|
||||
"schedulerTime": "2013-07-03 14:07:31",
|
||||
|
||||
"previous":{"name":"Earth, Wind & Fire - Boogie Wonderland",
|
||||
"starts":"2013-07-01 22:53:00",
|
||||
"ends":"2013-07-01 22:55:00",
|
||||
"type":"track"},
|
||||
"current":{"name":"Deodato - Also Sprach Zarathustra",
|
||||
"starts":"2013-07-03 13:07:06",
|
||||
"ends":"2013-07-03 13:16:05",
|
||||
"media_item_played":true,
|
||||
"record":0,
|
||||
"type":"track"},
|
||||
"previous": {
|
||||
"name": "Earth, Wind & Fire - Boogie Wonderland",
|
||||
"starts": "2013-07-01 22:53:00",
|
||||
"ends": "2013-07-01 22:55:00",
|
||||
"type": "track"
|
||||
},
|
||||
"current": {
|
||||
"name": "Deodato - Also Sprach Zarathustra",
|
||||
"starts": "2013-07-03 13:07:06",
|
||||
"ends": "2013-07-03 13:16:05",
|
||||
"media_item_played": true,
|
||||
"record": 0,
|
||||
"type": "track"
|
||||
},
|
||||
|
||||
"next":{"id":8,
|
||||
"instance_id":10,
|
||||
"name":"Rock Show",
|
||||
"url":"https:\/\/rock.example.com\/",
|
||||
"start_timestamp":"2013-07-03 14:00:00",
|
||||
"end_timestamp":"2013-07-03 15:00:00",
|
||||
"starts":"2013-07-03 14:00:00",
|
||||
"ends":"2013-07-03 15:00:00",
|
||||
"record":0,
|
||||
"type":"show"},
|
||||
"next": {
|
||||
"id": 8,
|
||||
"instance_id": 10,
|
||||
"name": "Rock Show",
|
||||
"url": "https://rock.example.com/",
|
||||
"start_timestamp": "2013-07-03 14:00:00",
|
||||
"end_timestamp": "2013-07-03 15:00:00",
|
||||
"starts": "2013-07-03 14:00:00",
|
||||
"ends": "2013-07-03 15:00:00",
|
||||
"record": 0,
|
||||
"type": "show"
|
||||
},
|
||||
|
||||
"currentShow":[{"start_timestamp":"2013-07-03 14:07:00",
|
||||
"0":"2013-07-03 13:07:00",
|
||||
"end_timestamp":"2013-07-03 15:00:00",
|
||||
"1":"2013-07-03 14:00:00",
|
||||
"name":"Funk Show",
|
||||
"2":"Funk Show",
|
||||
"id":7,
|
||||
"3":7,
|
||||
"instance_id":9,"4":9,
|
||||
"record":0,
|
||||
"5":0,
|
||||
"url":"https:\/\/funk.example.com\/",
|
||||
"6":"",
|
||||
"starts":"2013-07-03 14:07:00",
|
||||
"7":"2013-07-03 13:07:00",
|
||||
"ends":"2013-07-03 15:00:00",
|
||||
"8":"2013-07-03 14:00:00"}],
|
||||
"currentShow": [
|
||||
{
|
||||
"start_timestamp": "2013-07-03 14:07:00",
|
||||
"0": "2013-07-03 13:07:00",
|
||||
"end_timestamp": "2013-07-03 15:00:00",
|
||||
"1": "2013-07-03 14:00:00",
|
||||
"name": "Funk Show",
|
||||
"2": "Funk Show",
|
||||
"id": 7,
|
||||
"3": 7,
|
||||
"instance_id": 9,
|
||||
"4": 9,
|
||||
"record": 0,
|
||||
"5": 0,
|
||||
"url": "https://funk.example.com/",
|
||||
"6": "",
|
||||
"starts": "2013-07-03 14:07:00",
|
||||
"7": "2013-07-03 13:07:00",
|
||||
"ends": "2013-07-03 15:00:00",
|
||||
"8": "2013-07-03 14:00:00"
|
||||
}
|
||||
],
|
||||
|
||||
"nextShow":[{"id":8,
|
||||
"instance_id":10,
|
||||
"name":"Rock Show",
|
||||
"url":"https:\/\/rock.example.com\/",
|
||||
"start_timestamp":"2013-07-03 15:00:00",
|
||||
"end_timestamp":"2013-07-03 16:00:00",
|
||||
"starts":"2013-07-03 15:00:00",
|
||||
"ends":"2013-07-03 16:00:00",
|
||||
"record":0,
|
||||
"type":"show"}],
|
||||
"nextShow": [
|
||||
{
|
||||
"id": 8,
|
||||
"instance_id": 10,
|
||||
"name": "Rock Show",
|
||||
"url": "https://rock.example.com/",
|
||||
"start_timestamp": "2013-07-03 15:00:00",
|
||||
"end_timestamp": "2013-07-03 16:00:00",
|
||||
"starts": "2013-07-03 15:00:00",
|
||||
"ends": "2013-07-03 16:00:00",
|
||||
"record": 0,
|
||||
"type": "show"
|
||||
}
|
||||
],
|
||||
|
||||
"timezone":"BST",
|
||||
"timezoneOffset":"3600",
|
||||
"AIRTIME_API_VERSION":"1.1"})
|
||||
"timezone": "BST",
|
||||
"timezoneOffset": "3600",
|
||||
"AIRTIME_API_VERSION": "1.1"
|
||||
}
|
||||
```
|
||||
|
||||
The information for the current week's schedule could be retrieved using the URL:
|
||||
|
||||
https://libretime.example.com/api/week-info/?callback
|
||||
```
|
||||
https://libretime.example.com/api/week-info/?callback
|
||||
```
|
||||
|
||||
In this case, the metadata returned would be in a different format from the above example, something like the following. To keep the example short, this particular schedule export only contains four shows on a Monday. A full weekly schedule export would contain a great deal more text.
|
||||
|
||||
({"monday":[
|
||||
```json
|
||||
{
|
||||
"monday": [
|
||||
{
|
||||
"start_timestamp": "2013-07-01 12:05:00",
|
||||
"end_timestamp": "2013-07-01 13:00:00",
|
||||
"name": "Elvis Show",
|
||||
"id": 2,
|
||||
"instance_id": 2,
|
||||
"record": 0,
|
||||
"url": "https://elvis.example.com/",
|
||||
"starts": "2013-07-01 12:05:00",
|
||||
"ends": "2013-07-01 13:00:00"
|
||||
},
|
||||
|
||||
{"start_timestamp":"2013-07-01 12:05:00",
|
||||
"end_timestamp":"2013-07-01 13:00:00",
|
||||
"name":"Elvis Show",
|
||||
"id":2,
|
||||
"instance_id":2,
|
||||
"record":0,
|
||||
"url":"https:\/\/elvis.example.com\/",
|
||||
"starts":"2013-07-01 12:05:00",
|
||||
"ends":"2013-07-01 13:00:00"},
|
||||
{
|
||||
"start_timestamp": "2013-07-01 13:00:00",
|
||||
"end_timestamp": "2013-07-01 14:00:00",
|
||||
"name": "News",
|
||||
"id": 3,
|
||||
"instance_id": 4,
|
||||
"record": 0,
|
||||
"url": "https://news.example.com/",
|
||||
"starts": "2013-07-01 13:00:00",
|
||||
"ends": "2013-07-01 14:00:00"
|
||||
},
|
||||
|
||||
{"start_timestamp":"2013-07-01 13:00:00",
|
||||
"end_timestamp":"2013-07-01 14:00:00",
|
||||
"name":"News",
|
||||
"id":3,
|
||||
"instance_id":4,
|
||||
"record":0,
|
||||
"url":"https:\/\/news.example.com\/",
|
||||
"starts":"2013-07-01 13:00:00",
|
||||
"ends":"2013-07-01 14:00:00"},
|
||||
{
|
||||
"start_timestamp": "2013-07-01 14:00:00",
|
||||
"end_timestamp": "2013-07-01 15:00:00",
|
||||
"name": "Funk Show",
|
||||
"id": 4,
|
||||
"instance_id": 6,
|
||||
"record": 0,
|
||||
"url": "https://funk.example.com/",
|
||||
"starts": "2013-07-01 14:00:00",
|
||||
"ends": "2013-07-01 15:00:00"
|
||||
},
|
||||
|
||||
{"start_timestamp":"2013-07-01 14:00:00",
|
||||
"end_timestamp":"2013-07-01 15:00:00",
|
||||
"name":"Funk Show",
|
||||
"id":4,
|
||||
"instance_id":6,
|
||||
"record":0,
|
||||
"url":"https:\/\/funk.example.com\/",
|
||||
"starts":"2013-07-01 14:00:00",
|
||||
"ends":"2013-07-01 15:00:00"},
|
||||
{
|
||||
"start_timestamp": "2013-07-01 15:00:00",
|
||||
"end_timestamp": "2013-07-01 17:30:00",
|
||||
"name": "Rock Show",
|
||||
"id": 5,
|
||||
"instance_id": 7,
|
||||
"record": 0,
|
||||
"url": "https://rock.example.com/",
|
||||
"starts": "2013-07-01 15:00:00",
|
||||
"ends": "2013-07-01 17:30:00"
|
||||
}
|
||||
],
|
||||
|
||||
{"start_timestamp":"2013-07-01 15:00:00",
|
||||
"end_timestamp":"2013-07-01 17:30:00",
|
||||
"name":"Rock Show",
|
||||
"id":5,
|
||||
"instance_id":7,
|
||||
"record":0,
|
||||
"url":"https:\/\/rock.example.com\/",
|
||||
"starts":"2013-07-01 15:00:00",
|
||||
"ends":"2013-07-01 17:30:00"},
|
||||
|
||||
],
|
||||
|
||||
"tuesday":[],
|
||||
"wednesday":[],
|
||||
"thursday":[],
|
||||
"friday":[],
|
||||
"saturday":[],
|
||||
"sunday":[],
|
||||
"AIRTIME_API_VERSION":"1.1"})
|
||||
"tuesday": [],
|
||||
"wednesday": [],
|
||||
"thursday": [],
|
||||
"friday": [],
|
||||
"saturday": [],
|
||||
"sunday": [],
|
||||
"AIRTIME_API_VERSION": "1.1"
|
||||
}
|
||||
```
|
||||
|
||||
If you see the message _You are not allowed to access this resource_ when attempting to display schedule information in your web browser, log in to the LibreTime administration interface, click _System_ in the main menu, then _Preferences_. Set **Allow Remote Websites To Access "Schedule" Info?** to **Enabled**, click the **Save** button, then refresh the browser window opened on the schedule export URL. If you do not wish to make schedule information available to the public, set this option to **Disabled** instead.
|
||||
|
||||
|
@ -174,86 +207,112 @@ Your system administrator can set up schedule caching on a standard Apache and P
|
|||
|
||||
1. Create a shell script on the schedule server (schedule.example.com) that polls the remote LibreTime server (libretime.example.com), and writes the metadata returned into a pair of local temporary files:
|
||||
|
||||
sudo nano /usr/local/bin/libretime-schedule.sh
|
||||
```
|
||||
sudo nano /usr/local/bin/libretime-schedule.sh
|
||||
```
|
||||
|
||||
The content of this file should be like the following script, replacing libretime.example.com with the name of your LibreTime server:
|
||||
|
||||
#!/bin/sh
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
curl -s "https://libretime.example.com/api/live-info/?callback=***" > /tmp/live-info
|
||||
curl -s "https://libretime.example.com/api/live-info/?callback=***" > /tmp/live-info
|
||||
|
||||
curl -s "https://libretime.example.com/api/week-info/?callback=***" > /tmp/week-info
|
||||
curl -s "https://libretime.example.com/api/week-info/?callback=***" > /tmp/week-info
|
||||
```
|
||||
|
||||
2. Make the script executable:
|
||||
|
||||
sudo chmod +x /usr/local/bin/libretime-schedule.sh
|
||||
```
|
||||
sudo chmod +x /usr/local/bin/libretime-schedule.sh
|
||||
```
|
||||
|
||||
3. Create an Apache VirtualHost configuration for the schedule server:
|
||||
|
||||
sudo nano /etc/apache2/sites-available/schedule
|
||||
```
|
||||
sudo nano /etc/apache2/sites-available/schedule
|
||||
```
|
||||
|
||||
containing a definition like the following, replacing _schedule.example.com_ with the name of your schedule server:
|
||||
containing a definition like the following, replacing `schedule.example.com` with the name of your schedule server:
|
||||
|
||||
```apacheconf
|
||||
<VirtualHost *:80>
|
||||
ServerName schedule.example.com
|
||||
DocumentRoot /var/www/schedule/
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
4. In the schedule server's DocumentRoot folder, create the folders _api/live-info/_ and _api/week-info/_
|
||||
4. In the schedule server's DocumentRoot folder, create the folders `api/live-info/` and `api/week-info/`
|
||||
|
||||
sudo mkdir -p /var/www/schedule/api/live-info/
|
||||
sudo mkdir -p /var/www/schedule/api/week-info/
|
||||
```bash
|
||||
sudo mkdir -p /var/www/schedule/api/live-info/
|
||||
sudo mkdir -p /var/www/schedule/api/week-info/
|
||||
```
|
||||
|
||||
5. Create an index.php file in the _api/live-info/_ folder:
|
||||
5. Create an index.php file in the `api/live-info/` folder:
|
||||
|
||||
sudo nano /var/www/schedule/api/live-info/index.php
|
||||
```bash
|
||||
sudo nano /var/www/schedule/api/live-info/index.php
|
||||
```
|
||||
|
||||
containing the following code:
|
||||
|
||||
<?php
|
||||
$filename = '/tmp/live-info'; // define here the path and name of uploaded live-info file
|
||||
```php
|
||||
<?php
|
||||
$filename = '/tmp/live-info'; // define here the path and name of uploaded live-info file
|
||||
|
||||
header('Content-Type: text/javascript');
|
||||
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
header('Content-Type: text/javascript');
|
||||
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
|
||||
$callback = empty($_GET['callback']) ? null : $_GET['callback'];
|
||||
$content = file_get_contents($filename);
|
||||
$content = str_replace('***', $callback, $content);
|
||||
echo $content;
|
||||
?>
|
||||
$callback = empty($_GET['callback']) ? null : $_GET['callback'];
|
||||
$content = file_get_contents($filename);
|
||||
$content = str_replace('***', $callback, $content);
|
||||
echo $content;
|
||||
?>
|
||||
```
|
||||
|
||||
6. Create an index.php file in the _api/week-info/_ folder:
|
||||
6. Create an index.php file in the `api/week-info/` folder:
|
||||
|
||||
sudo nano /var/www/schedule/api/week-info/index.php
|
||||
```
|
||||
sudo nano /var/www/schedule/api/week-info/index.php
|
||||
```
|
||||
|
||||
containing the following code:
|
||||
|
||||
<?php
|
||||
$filename = '/tmp/week-info'; // define here the path and name of uploaded week-info file
|
||||
```php
|
||||
<?php
|
||||
$filename = '/tmp/week-info'; // define here the path and name of uploaded week-info file
|
||||
|
||||
header('Content-Type: text/javascript');
|
||||
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
header('Content-Type: text/javascript');
|
||||
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
|
||||
$callback = empty($_GET['callback']) ? null : $_GET['callback'];
|
||||
$content = file_get_contents($filename);
|
||||
$content = str_replace('***', $callback, $content);
|
||||
echo $content;
|
||||
?>
|
||||
$callback = empty($_GET['callback']) ? null : $_GET['callback'];
|
||||
$content = file_get_contents($filename);
|
||||
$content = str_replace('***', $callback, $content);
|
||||
echo $content;
|
||||
?>
|
||||
```
|
||||
|
||||
7. Enable the new configuration and reload the Apache web server:
|
||||
|
||||
sudo a2ensite schedule
|
||||
sudo /etc/init.d/apache2 reload
|
||||
```bash
|
||||
sudo a2ensite schedule
|
||||
sudo /etc/init.d/apache2 reload
|
||||
```
|
||||
|
||||
8. Create a cron job to run the shell script each minute:
|
||||
|
||||
sudo nano /etc/cron.d/libretime-schedule
|
||||
```bash
|
||||
sudo nano /etc/cron.d/libretime-schedule
|
||||
```
|
||||
|
||||
containing the line:
|
||||
|
||||
* * * * * www-data /usr/local/bin/libretime-schedule.sh
|
||||
```
|
||||
* * * * * www-data /usr/local/bin/libretime-schedule.sh
|
||||
```
|
||||
|
||||
The schedule server will now be serving the same show information as the LibreTime server, with a cache lifetime of one minute. You can adjust the cache lifetime by altering the frequency of the cron job that polls the LibreTime server.
|
||||
|
||||
|
@ -261,23 +320,27 @@ The schedule server will now be serving the same show information as the LibreTi
|
|||
|
||||
If there is no inbound access to the LibreTime server at all, an FTP script can be used to push cached schedule data from LibreTime to an external web server. The standard ftp command should be available on the LibreTime server and the external web server should have a suitably restricted FTP account set up. After following steps 1 and 2 above to export schedule data to a pair of temporary files on the LibreTime server, create a new script on the LibreTime server to automatically make the upload:
|
||||
|
||||
sudo nano /usr/local/bin/upload-schedule-data.sh
|
||||
```
|
||||
sudo nano /usr/local/bin/upload-schedule-data.sh
|
||||
```
|
||||
|
||||
Replace host, user and password values with appropriate values for your external web server:
|
||||
|
||||
#!/bin/sh
|
||||
HOST='website.example.com'
|
||||
USER='ftp_user'
|
||||
PASSWD='ftp_password'
|
||||
```bash
|
||||
#!/bin/sh
|
||||
HOST='website.example.com'
|
||||
USER='ftp_user'
|
||||
PASSWD='ftp_password'
|
||||
|
||||
ftp -n -v $HOST << EOT
|
||||
user $USER $PASSWD
|
||||
ascii
|
||||
prompt
|
||||
put /tmp/airtime-week-info
|
||||
put /tmp/airtime-live-info
|
||||
bye
|
||||
EOT
|
||||
ftp -n -v $HOST << EOT
|
||||
user $USER $PASSWD
|
||||
ascii
|
||||
prompt
|
||||
put /tmp/airtime-week-info
|
||||
put /tmp/airtime-live-info
|
||||
bye
|
||||
EOT
|
||||
```
|
||||
|
||||
Then make the new script executable and create a cron job to launch it every minute, as in step 8 above. Steps 3 to 7 above should be carried out on the external web server so that it can convert the two temporary files uploaded via FTP into public schedule data.
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ The podcast interfaces provides you with the ability to generate [Smartblocks](/
|
|||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/g-4UcD8qvR8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</html>
|
||||
|
||||
### Podcasts Dashboard
|
||||
### Podcasts dashboard
|
||||
|
||||

|
||||
|
||||
|
|
|
@ -27,37 +27,43 @@ The program **mid3iconv** (part of the **python-mutagen** package in Debian and
|
|||
|
||||
<span id="Convert_MP3_Tags_using_mid3iconv" class="mw-headline"> For example, to preview the conversion of tags from Windows-1251 </span><span id="Convert_MP3_Tags_using_mid3iconv" class="mw-headline">(CP1251)</span><span id="Convert_MP3_Tags_using_mid3iconv" class="mw-headline"> character set to UTF-8 for a whole archive of MP3 files, you could use the command: </span>
|
||||
|
||||
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d -p
|
||||
```bash
|
||||
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d -p
|
||||
```
|
||||
|
||||
in the base directory of the archive. The **-d** option specifies that the new tag should be printed to the server console (debug mode), and the **-p** option specifies a preview run. This preview will enable you to confirm that the metadata is being read and converted correctly before writing the new tags.
|
||||
|
||||
To actually convert all of the tags and strip any legacy ID3v1 tag present from each file at the same time, you could use the command:
|
||||
|
||||
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 --remove-v1
|
||||
```bash
|
||||
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 --remove-v1
|
||||
```
|
||||
|
||||
The name of the original character set follows the **-e** option. Other legacy character sets that mid3iconv can convert to UTF-8 include:
|
||||
|
||||
KOI8-R: Russian
|
||||
KOI8-U: Ukrainian
|
||||
```
|
||||
KOI8-R: Russian
|
||||
KOI8-U: Ukrainian
|
||||
|
||||
GBK: Traditional Chinese
|
||||
GB2312: Simplified Chinese
|
||||
GBK: Traditional Chinese
|
||||
GB2312: Simplified Chinese
|
||||
|
||||
EUC-KR: Korean
|
||||
EUC-JP: Japanese
|
||||
EUC-KR: Korean
|
||||
EUC-JP: Japanese
|
||||
|
||||
CP1253: Greek
|
||||
CP1254: Turkish
|
||||
CP1255: Hebrew
|
||||
CP1256: Arabic
|
||||
CP1253: Greek
|
||||
CP1254: Turkish
|
||||
CP1255: Hebrew
|
||||
CP1256: Arabic
|
||||
```
|
||||
|
||||
## Audio loudness
|
||||
|
||||
On file ingest, LibreTime analyzes each Ogg Vorbis, MP3, AAC or FLAC file's loudness, and stores a _ReplayGain_ value for that file in its database. At playout time, the ReplayGain value is provided to Liquidsoap so that gain can be automatically adjusted to provide an average output of -14 dBFS loudness (14 decibels below full scale). See https://en.wikipedia.org/wiki/ReplayGain for more details of ReplayGain.
|
||||
|
||||
Because of this automatic gain adjustment, any files with average loudness higher than -14 dBFS will not sound louder than quieter files at playout time, but the lower crest factor in the louder files (their relatively low peak-to-average ratio) may be apparent in the output, making those files sound less dynamic. This may be an issue for contemporary popular music, which can average at -9 dBFS or louder before ReplayGain adjustment. (See <https://www.soundonsound.com/sound-advice/dynamic-range-loudness-war> for a detailed analysis of the problem).
|
||||
Because of this automatic gain adjustment, any files with average loudness higher than -14 dBFS will not sound louder than quieter files at playout time, but the lower crest factor in the louder files (their relatively low peak-to-average ratio) may be apparent in the output, making those files sound less dynamic. This may be an issue for contemporary popular music, which can average at -9 dBFS or louder before ReplayGain adjustment. (See https://www.soundonsound.com/sound-advice/dynamic-range-loudness-war for a detailed analysis of the problem).
|
||||
|
||||
Your station's producers should therefore aim for 14dB between peak and average loudness to maintain the crest factor of their prepared material (also known as _DR14_ on some dynamic range meters, such as the command-line DR14 T.meter available from <https://sourceforge.net/projects/dr14tmeter/>). If the producers are working to a different loudness standard, the ReplayGain modifier in LibreTime's Stream Settings page can be adjusted to suit their material.
|
||||
Your station's producers should therefore aim for 14dB between peak and average loudness to maintain the crest factor of their prepared material (also known as _DR14_ on some dynamic range meters, such as the command-line DR14 T.meter available from https://sourceforge.net/projects/dr14tmeter/). If the producers are working to a different loudness standard, the ReplayGain modifier in LibreTime's Stream Settings page can be adjusted to suit their material.
|
||||
|
||||
Large transient peaks in otherwise quiet files should be avoided, to guard against the need for peak limiting when ReplayGain is applied to those quieter files.
|
||||
|
||||
|
@ -65,21 +71,25 @@ The **vorbisgain** command-line tool, available in the **vorbisgain** package in
|
|||
|
||||
Here is an example of a very quiet file where the use of ReplayGain would make the output more than 17dB louder:
|
||||
|
||||
$ vorbisgain -d Peter_Lawson-Three_Gymn.ogg
|
||||
Analyzing files...
|
||||
```bash
|
||||
$ vorbisgain -d Peter_Lawson-Three_Gymn.ogg
|
||||
Analyzing files...
|
||||
|
||||
Gain | Peak | Scale | New Peak | Track
|
||||
----------+------+-------+----------+------
|
||||
+17.39 dB | 4536 | 7.40 | 33585 | Peter_Lawson-Three_Gymn.ogg
|
||||
Gain | Peak | Scale | New Peak | Track
|
||||
----------+------+-------+----------+------
|
||||
+17.39 dB | 4536 | 7.40 | 33585 | Peter_Lawson-Three_Gymn.ogg
|
||||
```
|
||||
|
||||
And here is an example of a very loud file, with lower crest factor, where the output will be more than 7dB quieter with ReplayGain applied:
|
||||
|
||||
$ vorbisgain -d Snoop_Dogg-Doggfather.ogg
|
||||
Analyzing files...
|
||||
```bash
|
||||
$ vorbisgain -d Snoop_Dogg-Doggfather.ogg
|
||||
Analyzing files...
|
||||
|
||||
Gain | Peak | Scale | New Peak | Track
|
||||
----------+-------+-------+----------+------
|
||||
-7.86 dB | 36592 | 0.40 | 14804 | Snoop_Dogg-Doggfather.ogg
|
||||
Gain | Peak | Scale | New Peak | Track
|
||||
----------+-------+-------+----------+------
|
||||
-7.86 dB | 36592 | 0.40 | 14804 | Snoop_Dogg-Doggfather.ogg
|
||||
```
|
||||
|
||||
In the output from vorbisgain, _Peak_ is the maximum sample value of the file before any ReplayGain has been applied, where a value of 32,767 represents full scale when decoding to signed 16 bit samples. Note that lossy compressed files can have peaks greater than full scale, due to encoding artifacts. The _New Peak_ value for the Snoop Dogg file may be relatively low due to the hard limiting used in the mastering of that piece of music.
|
||||
|
||||
|
@ -93,6 +103,6 @@ Gaps in playout or dead air can have legal repercussions for your station. Check
|
|||
|
||||
:::
|
||||
|
||||
Quiet introductions or extended fades can also lead to apparent gaps in your broadcast playout. This is more common when playing back audio from ripped CDs or dubbed from tape or vinyl. Long periods of silence should be removed from files before uploading to Libretime.
|
||||
Quiet introductions or extended fades can also lead to apparent gaps in your broadcast playout. This is more common when playing back audio from ripped CDs or dubbed from tape or vinyl. Long periods of silence should be removed from files before uploading to LibreTime.
|
||||
|
||||

|
||||
|
|
|
@ -55,7 +55,7 @@ When media is playing, the **On Air** indicator at the top will turn red.
|
|||
You can listen to your stream by going to `yourserverIP:8000` or by clicking the **Listen** button under the On Air
|
||||
indicator.
|
||||
|
||||
### Show Properties Appendix
|
||||
### Show properties appendix
|
||||
|
||||
| Field | Description |
|
||||
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: Settings
|
||||
---
|
||||
|
||||
## General Settings
|
||||
## General settings
|
||||
|
||||

|
||||
|
||||
|
@ -67,7 +67,7 @@ reverse proxy, the URLs that will be used to access it should be added here.
|
|||
|
||||
The **Display login button on your Radio Page?** will determine whether visitors
|
||||
to your site see a link to login. If this is disabled, DJs and admins will need
|
||||
to goto http://SITEURL/login to be able to login.
|
||||
to goto http://example.org/login to be able to login.
|
||||
|
||||
The **Tune-In Settings** section is intended for stations that have partnered
|
||||
with TuneIn to automatically push their now playing metadata to TuneIn. This
|
||||
|
@ -77,7 +77,7 @@ The **Dangerous Options** section provides an administrator the ability to erase
|
|||
|
||||
:::danger
|
||||
|
||||
Erasing Libretime's track library cannot be undone.
|
||||
Erasing LibreTime's track library cannot be undone.
|
||||
|
||||
:::
|
||||
|
||||
|
@ -87,7 +87,7 @@ their username on the right side of the menu bar.
|
|||
|
||||
---
|
||||
|
||||
## Track Types
|
||||
## Track types
|
||||
|
||||
### Create track types
|
||||
|
||||
|
@ -97,12 +97,12 @@ their username on the right side of the menu bar.
|
|||
1. On the "Code" field, type a unique code that can be easily identifiable. Example, for Music use "MUS" or for Sound Effects use something like "FX".
|
||||
1. On the "Type Name" field, type a the name of the type of tracks. Example, "Station IDs".
|
||||
1. On the "Description" field, enter the description of the type given.
|
||||
1. On the "Visibility" drop down menu, choose to enable or disable the track type. By default, it is enabled. If disabled, it won't be shown across Libretime or in the API for developers.
|
||||
1. On the "Visibility" drop down menu, choose to enable or disable the track type. By default, it is enabled. If disabled, it won't be shown across LibreTime or in the API for developers.
|
||||
1. Click **Save**.
|
||||
|
||||
---
|
||||
|
||||
## Stream Settings
|
||||
## Stream settings
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/QPNo52Fc0ck" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: System Status
|
||||
title: System status
|
||||
---
|
||||
|
||||
On the **Settings** menu, the **Status** page provides an overview of the health and resource usage of the various
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Managing Users
|
||||
title: Managing users
|
||||
---
|
||||
|
||||
:::danger
|
||||
|
@ -8,7 +8,7 @@ It is strongly recommended not to use the default `admin` account in production,
|
|||
|
||||
:::
|
||||
|
||||
## User Account Types
|
||||
## User account types
|
||||
|
||||
To add further user accounts to the system, one for each of your station staff that need access to Airtime, click the **New User** button with the plus icon. Enter a user name, password and contact details, and then select the **User Type** from the drop down menu, which can be _Admin_, _Program Manager_, _DJ_, or _Guest_.
|
||||
|
||||
|
@ -25,7 +25,7 @@ To add further user accounts to the system, one for each of your station staff t
|
|||
- Preview uploaded media _without_ affecting the live playout
|
||||
- Create Playlists, Smart Blocks, and connect Podcasts and Webstreams to LibreTime
|
||||
|
||||
### Program Managers
|
||||
### Program managers
|
||||
|
||||
- Everything DJs can do, plus
|
||||
- Manage other users' libraries in addition to their own
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue