Format code using prettier
This commit is contained in:
parent
65f7b41487
commit
efe4fa027e
|
@ -1,10 +1,9 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
title: ""
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
|
@ -12,6 +11,7 @@ A clear and concise description of what the bug is.
|
|||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
|
@ -24,18 +24,20 @@ A clear and concise description of what you expected to happen.
|
|||
Version from the upgrade popup if you can reach it.
|
||||
|
||||
**Installation method:**
|
||||
- OS: [e.g. Ubuntu]
|
||||
- OS Version [e.g. 16.04.5 LTS (Xenial Xerus)]
|
||||
- Method: [e.g. `./install` script or packages]
|
||||
- Details: [how did you call the install script, where did you get packages from]
|
||||
|
||||
- OS: [e.g. Ubuntu]
|
||||
- OS Version [e.g. 16.04.5 LTS (Xenial Xerus)]
|
||||
- Method: [e.g. `./install` script or packages]
|
||||
- Details: [how did you call the install script, where did you get packages from]
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Client (please complete the following information if applicable):**
|
||||
- OS: [e.g. Fedora]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
- OS: [e.g. Fedora]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
title: ""
|
||||
labels: feature-request
|
||||
assignees: ''
|
||||
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
|
|
|
@ -25,6 +25,5 @@ lockComment: >
|
|||
|
||||
# Assign `resolved` as the reason for locking. Set to `false` to disable
|
||||
setLockReason: true
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
# only: issues
|
||||
|
|
|
@ -2,11 +2,19 @@ name: Python and PHP Tests
|
|||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- "docs/**"
|
||||
pull_request:
|
||||
types: [opened, ready_for_review, review_requested, edited, reopened, synchronize]
|
||||
types:
|
||||
[
|
||||
opened,
|
||||
ready_for_review,
|
||||
review_requested,
|
||||
edited,
|
||||
reopened,
|
||||
synchronize,
|
||||
]
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- "docs/**"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
@ -19,7 +27,7 @@ jobs:
|
|||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.6'
|
||||
python-version: "3.6"
|
||||
- name: Setup PostgreSQL
|
||||
run: |
|
||||
sudo systemctl start postgresql.service
|
||||
|
@ -31,10 +39,9 @@ jobs:
|
|||
- name: Setup PHP with specific version
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '7.2'
|
||||
php-version: "7.2"
|
||||
- name: Install prerequisites
|
||||
run:
|
||||
sudo -E ./.github/scripts/install-bionic.sh
|
||||
run: sudo -E ./.github/scripts/install-bionic.sh
|
||||
- name: Run Python tests
|
||||
run: |
|
||||
sudo ./.github/scripts/python-pkg-install.sh
|
||||
|
@ -62,7 +69,7 @@ jobs:
|
|||
- name: Setup PHP with specific version
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '7.0'
|
||||
php-version: "7.0"
|
||||
- name: Install prerequisites
|
||||
run: sudo -E ./.github/scripts/install-xenial.sh
|
||||
- name: Run PHP tests
|
||||
|
|
|
@ -10,24 +10,24 @@ Creating an issue is the simplest form of contributing to a
|
|||
project. But there are many ways to contribute, including
|
||||
the following:
|
||||
|
||||
* Updating or correcting documentation
|
||||
* Feature requests
|
||||
* Bug reports
|
||||
- Updating or correcting documentation
|
||||
- Feature requests
|
||||
- Bug reports
|
||||
|
||||
Before opening an issue, please:
|
||||
|
||||
* read and be prepared to adhere to our [code of conduct](https://github.com/LibreTime/code-of-conduct/blob/master/CODE_OF_CONDUCT.md)
|
||||
* understand that we follow the standardized [C4 development process](https://rfc.zeromq.org/spec:42/C4/)
|
||||
* [search for existing duplicate or closed issues](https://github.com/LibreTime/libretime/issues?utf8=%E2%9C%93&q=is%3Aissue)
|
||||
* clearly state the problem you would like to solve in a meaningful way
|
||||
* be prepared to follow up on issues by providing additional information as requested by a maintainer or contributor helping you out
|
||||
- read and be prepared to adhere to our [code of conduct](https://github.com/LibreTime/code-of-conduct/blob/master/CODE_OF_CONDUCT.md)
|
||||
- understand that we follow the standardized [C4 development process](https://rfc.zeromq.org/spec:42/C4/)
|
||||
- [search for existing duplicate or closed issues](https://github.com/LibreTime/libretime/issues?utf8=%E2%9C%93&q=is%3Aissue)
|
||||
- clearly state the problem you would like to solve in a meaningful way
|
||||
- be prepared to follow up on issues by providing additional information as requested by a maintainer or contributor helping you out
|
||||
|
||||
For bug reports, please provide the following details:
|
||||
|
||||
* **version**: what version of LibreTime you were using when you experienced the bug?
|
||||
* **distro**: what distribution is your install on and which distro version are you using (ie. Ubuntu Trusty)
|
||||
* **reduced test case**: the minimum amount of detail needed to reproduce the bug
|
||||
* **error messages**: please paste any error reports into the issue or a gist
|
||||
- **version**: what version of LibreTime you were using when you experienced the bug?
|
||||
- **distro**: what distribution is your install on and which distro version are you using (ie. Ubuntu Trusty)
|
||||
- **reduced test case**: the minimum amount of detail needed to reproduce the bug
|
||||
- **error messages**: please paste any error reports into the issue or a gist
|
||||
|
||||
Please wrap all code and error messages in [markdown code
|
||||
fences](https://help.github.com/articles/creating-and-highlighting-code-blocks/).
|
||||
|
|
|
@ -4,6 +4,7 @@ This API provides access to LibreTime's database via a Django application. This
|
|||
API supersedes the [PHP API](../airtime_mvc/application/controllers/ApiController.php).
|
||||
|
||||
## Deploying
|
||||
|
||||
Deploying in a production environment is done in the [`install`](../install)
|
||||
script which installs LibreTime. This is how the API is installed in the Vagrant
|
||||
development images too. This method does not automatically reflect changes to
|
||||
|
@ -18,6 +19,7 @@ Endpoint exploration and documentation is available from
|
|||
instance.
|
||||
|
||||
### Development
|
||||
|
||||
For a live reloading version within Vagrant:
|
||||
|
||||
```
|
||||
|
@ -38,6 +40,7 @@ sudo -u www-data LIBRETIME_DEBUG=True python3 bin/libretime-api test libretimeap
|
|||
```
|
||||
|
||||
## 3rd Party Licences
|
||||
|
||||
`libretimeapi/tests/resources/song.mp3`: Steps - Tears On The Dancefloor (Album
|
||||
Teaser) by mceyedol. Downloaded from
|
||||
https://soundcloud.com/mceyedol/steps-tears-on-the-dancefloor-album-teaser
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
hostname: libretimeTest
|
||||
timezone: America/New York # change as needed
|
||||
ntp:
|
||||
pools: ['north-america.pool.ntp.org']
|
||||
servers: ['0.north-america.pool.ntp.org', '0.pool.ntp.org']
|
||||
pools: ["north-america.pool.ntp.org"]
|
||||
servers: ["0.north-america.pool.ntp.org", "0.pool.ntp.org"]
|
||||
|
||||
password: hackme
|
||||
chpasswd: { expire: False }
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{
|
||||
"autoload": {
|
||||
"classmap": ["airtime_mvc/application/"]
|
||||
"classmap": [
|
||||
"airtime_mvc/application/"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
"classmap": ["airtime_mvc/tests/application/", "vendor/phpunit/dbunit/src/"]
|
||||
"classmap": [
|
||||
"airtime_mvc/tests/application/",
|
||||
"vendor/phpunit/dbunit/src/"
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"james-heinrich/getid3": "dev-master",
|
||||
|
|
|
@ -9,7 +9,7 @@ includes_dir: _includes
|
|||
|
||||
favicon: favicon.ico
|
||||
|
||||
exclude: ['README']
|
||||
exclude: ["README"]
|
||||
|
||||
# Collections Settings
|
||||
collections:
|
||||
|
@ -20,4 +20,3 @@ collections:
|
|||
# Build settings
|
||||
plugins:
|
||||
- kramdown
|
||||
|
|
@ -4,7 +4,7 @@ title: LibreTime API Usage
|
|||
category: dev
|
||||
---
|
||||
|
||||
The LibreTime API enables many types of information about the broadcast schedule and configuration to be retrieved from the LibreTime server. Other than the live-info and week-info data fetched by website widgets (see the chapter *Exporting the schedule*), all API requests must be authenticated using the secret API key stored in the file */etc/airtime/api\_client.cfg* on the LibreTime server. This key is autogenerated during LibreTime installation and should be unique for each server.
|
||||
The LibreTime API enables many types of information about the broadcast schedule and configuration to be retrieved from the LibreTime server. Other than the live-info and week-info data fetched by website widgets (see the chapter _Exporting the schedule_), all API requests must be authenticated using the secret API key stored in the file _/etc/airtime/api_client.cfg_ on the LibreTime server. This key is autogenerated during LibreTime installation and should be unique for each server.
|
||||
|
||||
If you intend to use the LibreTime API across a public network, for security reasons it is highly recommended that all API requests are sent over encrypted https: and that the web server is configured to accept requests to the api/ directory from specific host names or IP addresses only.
|
||||
|
||||
|
@ -21,7 +21,7 @@ where api-action is the type of request and XXXXXX is the secret API key. Availa
|
|||
- get-stream-setting - gets the settings of LibreTime output streams
|
||||
- get-stream-parameters - gets the parameters of LibreTime output streams
|
||||
|
||||
For example, using the action *get-stream-setting* returns the following output for the first configured stream:
|
||||
For example, using the action _get-stream-setting_ returns the following output for the first configured stream:
|
||||
|
||||
{"keyname":"s1_type","value":"ogg","type":"string"},
|
||||
|
||||
|
@ -38,9 +38,9 @@ For example, using the action *get-stream-setting* returns the following output
|
|||
|
||||
{"keyname":"s1_genre","value":"Screamo","type":"string"},
|
||||
|
||||
which is enough information to construct a player widget dynamically. (s1\_url is the station's homepage, not the stream URL). The same information is provided with an s2\_ prefix for the second stream, and s3\_ prefix for the third stream.
|
||||
which is enough information to construct a player widget dynamically. (s1_url is the station's homepage, not the stream URL). The same information is provided with an s2\_ prefix for the second stream, and s3\_ prefix for the third stream.
|
||||
|
||||
Some API requests require the directory ID number to be specified as *dir\_id* including:
|
||||
Some API requests require the directory ID number to be specified as _dir_id_ including:
|
||||
|
||||
- list-all-files - list files in the specified directory
|
||||
- get-files-without-replay-gain - list files in the specified directory for which ReplayGain has not been calculated yet
|
||||
|
|
|
@ -6,10 +6,10 @@ category: admin
|
|||
|
||||
> At the moment, there is not a way to automatically restore a Libretime backup.
|
||||
> To restore a failed Libretime instance, install a fresh copy, go through the
|
||||
> standard setup process, and reupload the backed-up media files. A *Watched Folders*
|
||||
> standard setup process, and reupload the backed-up media files. A _Watched Folders_
|
||||
> feature is [currently in development](https://github.com/LibreTime/libretime/issues/70).
|
||||
|
||||
A backup script is supplied for your convenience in the *utils/* folder of the Libretime repo.
|
||||
A backup script is supplied for your convenience in the _utils/_ folder of the Libretime repo.
|
||||
Run it using:
|
||||
|
||||
```
|
||||
|
@ -59,8 +59,7 @@ to switch playout to this second machine relatively quickly, in case of a
|
|||
hardware failure or other emergency on the production server.)
|
||||
|
||||
Two notible backup tools are [rsync](http://rsync.samba.org/) (without version control) and
|
||||
[rdiff-backup](http://www.nongnu.org/rdiff-backup/) (with version control). *rsync* comes
|
||||
[rdiff-backup](http://www.nongnu.org/rdiff-backup/) (with version control). _rsync_ comes
|
||||
preinstalled with Ubuntu Server.
|
||||
|
||||
> **Note:** Standard *rsync* backups, which are used by the backup script, cannot restore files deleted in the backup itself
|
||||
|
||||
> **Note:** Standard _rsync_ backups, which are used by the backup script, cannot restore files deleted in the backup itself
|
||||
|
|
|
@ -30,7 +30,7 @@ To add content to a show, click the show in any view on the Calendar, and select
|
|||
|
||||

|
||||
|
||||
The **Schedule Tracks** action opens a window with the name of the show. Like when using the **Now Playing** page, you can search for content items and add them to the show schedule on the right side of the page. Refer to the *Now Playing* chapter for details.
|
||||
The **Schedule Tracks** action opens a window with the name of the show. Like when using the **Now Playing** page, you can search for content items and add them to the show schedule on the right side of the page. Refer to the _Now Playing_ chapter for details.
|
||||
|
||||
When your show has all the required content, click the **OK** button in the bottom right corner to close the window. Back in the **Calendar**, click the show and select **View** from the pop-up menu to view a list of content now included in the show.
|
||||
|
||||
|
@ -42,7 +42,7 @@ The **Contents of Show** window is a read-only interface featuring an orange bar
|
|||
|
||||
### Removing content from a show
|
||||
|
||||
To remove an individual item from a show, click on the show in the **Calendar**, and select **Schedule Tracks** from the pop-up menu. In the window which opens, click any item you wish to remove from the show, then click **Delete** on the pop-up menu, or check the box in the item's row then click the **Remove** icon at the top of the table. To remove all files and playlists from a show, click on the show in the **Calendar**, and select **Clear Show** from the pop-up menu.
|
||||
To remove an individual item from a show, click on the show in the **Calendar**, and select **Schedule Tracks** from the pop-up menu. In the window which opens, click any item you wish to remove from the show, then click **Delete** on the pop-up menu, or check the box in the item's row then click the **Remove** icon at the top of the table. To remove all files and playlists from a show, click on the show in the **Calendar**, and select **Clear Show** from the pop-up menu.
|
||||
|
||||
### Deleting an upcoming show
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ permalink: /contribute
|
|||
---
|
||||
|
||||
> LibreTime is a fork of AirTime due to stalled development of the open source version. For background on this,
|
||||
see this [open letter to the Airtime community](https://gist.github.com/hairmare/8c03b69c9accc90cfe31fd7e77c3b07d).
|
||||
> see this [open letter to the Airtime community](https://gist.github.com/hairmare/8c03b69c9accc90cfe31fd7e77c3b07d).
|
||||
|
||||
## Bug reporting
|
||||
|
||||
|
@ -28,7 +28,7 @@ supported? Follow [this guide](/docs/interface-localization) to add your languag
|
|||
## Write documentation
|
||||
|
||||
Our site is now built by Jekyll, which has an installation guide [here](https://jekyllrb.com/docs/installation/) to help get you started.
|
||||
After cloning our repo locally, enter the `docs/` directory and run
|
||||
After cloning our repo locally, enter the `docs/` directory and run
|
||||
|
||||
```
|
||||
bundle install
|
||||
|
@ -55,6 +55,7 @@ Odclive has instructions [here](https://github.com/kessibi/libretime-docker) for
|
|||
and a more persistent install.
|
||||
|
||||
## Modifying the Database
|
||||
|
||||
LibreTime is designed to work with a [PostgreSQL](https://www.postgresql.org/) database server running locally.
|
||||
LibreTime uses [PropelORM](http://propelorm.org) to interact with the ZendPHP components and create the database.
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ use the checkboxes on the left side of the library table to select specific
|
|||
items. Then drag one of the items into the show to add all of the selected
|
||||
items, or click the **Add to selected show** button, which has a plus icon. If
|
||||
you wish, you can also use the **Trashcan** button to permanently remove items
|
||||
from LibreTime's library. Only *admin* users have permission to delete all
|
||||
from LibreTime's library. Only _admin_ users have permission to delete all
|
||||
items.
|
||||
|
||||
To insert checkbox selected items at a specific time in the show schedule, click
|
||||
|
|
|
@ -12,7 +12,7 @@ To change the password of the current user:
|
|||
2. Click on the username in the upper right corner (next to Log Out)
|
||||
3. Enter the new password twice and click **Save**
|
||||
|
||||
To change the password for a different user (requires *Administrator* privileges):
|
||||
To change the password for a different user (requires _Administrator_ privileges):
|
||||
|
||||
1. Log in to Libretime
|
||||
2. Go to **Settings** > **Manage Users**
|
||||
|
@ -20,17 +20,17 @@ To change the password for a different user (requires *Administrator* privileges
|
|||
|
||||
### PostgreSQL
|
||||
|
||||
Two of the most important passwords that should be changed *immediately* after installation
|
||||
Two of the most important passwords that should be changed _immediately_ after installation
|
||||
are the passwords used by the PostgreSQL database.
|
||||
It is strongly recommended that you do this before exposing your server to the internet beyond your internal network.
|
||||
|
||||
1. Login to PostgreSQL with `sudo -u postgres psql`. The PostgreSQL shell - `postgres=#` - means that you have logged in successfully.
|
||||
2. Change the admin password with `ALTER USER postgres PASSWORD 'myPassword';`, where `myPassword` is the new password.
|
||||
Make sure to include the semicolon at the end! A response of `ALTER ROLE` means that the command ran successfully.
|
||||
3. Change the password for the *airtime* user with `ALTER USER airtime WITH PASSWORD 'new_password';`
|
||||
A response of `ALTER ROLE` means that the command ran successfully.
|
||||
4. If all is successful, logout of PostgreSQL with `\q`, go back to */etc/airtime/airtime.conf* to edit the password
|
||||
in the config file, and restart all services mentioned in the previous section.
|
||||
Make sure to include the semicolon at the end! A response of `ALTER ROLE` means that the command ran successfully.
|
||||
3. Change the password for the _airtime_ user with `ALTER USER airtime WITH PASSWORD 'new_password';`
|
||||
A response of `ALTER ROLE` means that the command ran successfully.
|
||||
4. If all is successful, logout of PostgreSQL with `\q`, go back to _/etc/airtime/airtime.conf_ to edit the password
|
||||
in the config file, and restart all services mentioned in the previous section.
|
||||
|
||||
### Icecast
|
||||
|
||||
|
@ -38,7 +38,7 @@ Random passwords are generated for Icecast during the installation. To look up a
|
|||
|
||||
`/etc/icecast2/icecast.xml`
|
||||
|
||||
Replace the admin and *changeme* fields below.
|
||||
Replace the admin and _changeme_ fields below.
|
||||
|
||||
```
|
||||
<authentication>
|
||||
|
|
|
@ -5,7 +5,7 @@ git: hd-audio-modules.md
|
|||
category: admin
|
||||
---
|
||||
|
||||
This listing is provided to help ensure that the correct model parameter is passed to the ALSA kernel module for an Intel HDA soundcard, if one is fitted to your LibreTime server. See the chapter *Preparing the server* in this book for more details.
|
||||
This listing is provided to help ensure that the correct model parameter is passed to the ALSA kernel module for an Intel HDA soundcard, if one is fitted to your LibreTime server. See the chapter _Preparing the server_ in this book for more details.
|
||||
|
||||
```
|
||||
Model name Description
|
||||
|
|
|
@ -4,15 +4,15 @@ layout: article
|
|||
category: install
|
||||
---
|
||||
|
||||
The streaming host configuration for LibreTime is shown in the file */etc/airtime/liquidsoap.cfg* which is automatically generated by the **Streams** page, found on the **System** menu of the LibreTime administration interface. For this reason, you would not normally edit the streaming configuration manually, as any changes are likely to be overwritten by the administration interface.
|
||||
The streaming host configuration for LibreTime is shown in the file _/etc/airtime/liquidsoap.cfg_ which is automatically generated by the **Streams** page, found on the **System** menu of the LibreTime administration interface. For this reason, you would not normally edit the streaming configuration manually, as any changes are likely to be overwritten by the administration interface.
|
||||
|
||||
## Database and RabbitMQ hosts {#database}
|
||||
|
||||
Optionally, you may wish to edit the file */etc/airtime/airtime.conf* to set the PostgreSQL database host, and the username and password to connect to the database with:
|
||||
Optionally, you may wish to edit the file _/etc/airtime/airtime.conf_ to set the PostgreSQL database host, and the username and password to connect to the database with:
|
||||
|
||||
sudo nano /etc/airtime/airtime.conf
|
||||
|
||||
You can also set options for RabbitMQ messaging and the LibreTime server in this file, although you should not normally need to adjust the defaults unless you are running a large LibreTime system distributed across multiple servers. To run the LibreTime server in demo mode, which changes the greeting on the login page and prevents user accounts from being created or modified, set the value of *demo* to 1.
|
||||
You can also set options for RabbitMQ messaging and the LibreTime server in this file, although you should not normally need to adjust the defaults unless you are running a large LibreTime system distributed across multiple servers. To run the LibreTime server in demo mode, which changes the greeting on the login page and prevents user accounts from being created or modified, set the value of _demo_ to 1.
|
||||
|
||||
[database]
|
||||
host = localhost
|
||||
|
@ -53,11 +53,11 @@ used by the various components of LibreTime, run the following commands
|
|||
|
||||
## API client configuration {#api}
|
||||
|
||||
The LibreTime API enables many types of information about the broadcast schedule and configuration to be retrieved from the LibreTime server. Other than the live-info and week-info data fetched by website widgets (see the chapter *Exporting the schedule*), all API requests must be authenticated using the secret API key stored in the file */etc/airtime/api\_client.cfg* on the LibreTime server. This key is autogenerated during LibreTime installation and should be unique for each server.
|
||||
The LibreTime API enables many types of information about the broadcast schedule and configuration to be retrieved from the LibreTime server. Other than the live-info and week-info data fetched by website widgets (see the chapter _Exporting the schedule_), all API requests must be authenticated using the secret API key stored in the file _/etc/airtime/api_client.cfg_ on the LibreTime server. This key is autogenerated during LibreTime installation and should be unique for each server.
|
||||
|
||||
If you intend to use the LibreTime API across a public network, for security reasons it is highly recommended that all API requests are sent over encrypted https: and that the web server is configured to accept requests to the api/ directory from specific host names or IP addresses only.
|
||||
|
||||
If you have changed the *base\_url*, *base\_port* or *base\_dir* setting in */etc/airtime/airtime.conf* from the defaults, you will probably also have to update the *Hostname* settings in the file */etc/airtime/api\_client.cfg* accordingly.**
|
||||
If you have changed the _base_url_, _base_port_ or _base_dir_ setting in _/etc/airtime/airtime.conf_ from the defaults, you will probably also have to update the _Hostname_ settings in the file _/etc/airtime/api_client.cfg_ accordingly.\*\*
|
||||
|
||||
bin_dir = /usr/lib/airtime/api_clients
|
||||
api_key = 'XXXXXXXXXXXXXXXXXXXX'
|
||||
|
@ -68,7 +68,7 @@ If you have changed the *base\_url*, *base\_port* or *base\_dir* setting in */et
|
|||
|
||||
## Apache max file size configuration {#apache}
|
||||
|
||||
By default, the maximum upload file size is 40 MB, which may not be large enough for some stations, especially if they are uploading prerecorded shows. The setting for this is located in */etc/apache2/sites-available/airtime.config*. Search for and update the following in megabytes:
|
||||
By default, the maximum upload file size is 40 MB, which may not be large enough for some stations, especially if they are uploading prerecorded shows. The setting for this is located in _/etc/apache2/sites-available/airtime.config_. Search for and update the following in megabytes:
|
||||
|
||||
```
|
||||
; Maximum allowed size for uploaded files.
|
||||
|
@ -86,7 +86,7 @@ sudo systemctl restart apache2
|
|||
|
||||
## Playout settings {#playout}
|
||||
|
||||
Settings for pypo, the playout engine used by LibreTime, are found in the file */etc/airtime/airtime.conf*. After making changes to this file, you will have to issue the command:
|
||||
Settings for pypo, the playout engine used by LibreTime, are found in the file _/etc/airtime/airtime.conf_. After making changes to this file, you will have to issue the command:
|
||||
|
||||
sudo systemctl restart libretime-playout
|
||||
|
||||
|
@ -171,9 +171,10 @@ If the Airtime logs indicate failures to connect to the RabbitMQ server, such as
|
|||
|
||||
2013-10-31 08:21:11,255 ERROR - \[pypomessagehandler.py : main() : line 99\] - Error connecting to RabbitMQ Server. Trying again in few seconds - See more at: http://forum.sourcefabric.org/discussion/16050/\#sthash.W8OJrNFm.dpuf
|
||||
```
|
||||
but the RabbitMQ server is running normally, this error might be due to a change in the server's hostname since Libretime installation. Directory names under */var/lib/rabbitmq/mnesia/* indicate that RabbitMQ's database files are organised according to the hostname of the server (ex. `rabbit@airtime`) where the hostname is *airtime.example.com*. If the hostname has changed, it may be necessary to reconfigure RabbitMQ manually, as follows:
|
||||
|
||||
1. Delete the files in */var/lib/rabbitmq/mnesia/*
|
||||
but the RabbitMQ server is running normally, this error might be due to a change in the server's hostname since Libretime installation. Directory names under _/var/lib/rabbitmq/mnesia/_ indicate that RabbitMQ's database files are organised according to the hostname of the server (ex. `rabbit@airtime`) where the hostname is _airtime.example.com_. If the hostname has changed, it may be necessary to reconfigure RabbitMQ manually, as follows:
|
||||
|
||||
1. Delete the files in _/var/lib/rabbitmq/mnesia/_
|
||||
|
||||
```
|
||||
sudo rm -r /var/lib/rabbitmq/mnesia/*
|
||||
|
@ -185,7 +186,7 @@ sudo rm -r /var/lib/rabbitmq/mnesia/*
|
|||
sudo systemctl restart rabbitmq-server
|
||||
```
|
||||
|
||||
3. Enter the following commands to set up authentication and grant permissions. The *rabbitmqctl add\_user* command requires the RabbitMQ password from the /etc/airtime/airtime.conf file as an argument. The *rabbitmqctl set\_permissions* command should be entered on one line, with the list of Airtime services repeated three times:
|
||||
3. Enter the following commands to set up authentication and grant permissions. The _rabbitmqctl add_user_ command requires the RabbitMQ password from the /etc/airtime/airtime.conf file as an argument. The _rabbitmqctl set_permissions_ command should be entered on one line, with the list of Airtime services repeated three times:
|
||||
|
||||
```
|
||||
rabbitmqctl add_vhost /airtime
|
||||
|
|
|
@ -8,7 +8,7 @@ category: admin
|
|||
|
||||
LibreTime supports direct connection to two popular streaming media servers, the open source **Icecast** (<http://www.icecast.org>) and the proprietary **SHOUTcast** (<http://www.shoutcast.com>). Apart from the software license, the main difference between these two servers is that Icecast supports simultaneous MP3, AAC, Ogg Vorbis or Ogg Opus streaming from LibreTime, whereas SHOUTcast supports MP3 and AAC streams but not Ogg Vorbis or Opus. The royalty-free Ogg Vorbis format has the advantage of better sound quality than MP3 at lower bitrates, which has a direct impact on the amount of bandwidth that your station will require to serve the same number of listeners. Ogg Opus also benefits from good sound quality at low bitrates, with the added advantage of lower latency than other streaming formats. Opus is now an IETF standard (<http://tools.ietf.org/html/rfc6716>) and requires Icecast 2.4 or later to be installed on the streaming server.
|
||||
|
||||
Ogg Vorbis playback is supported in **Mozilla Firefox**, **Google Chrome** and **Opera** browsers, via **jPlayer** (<http://jplayer.org/>), and is also supported in several popular media players, including VideoLAN Client, also known as VLC (<http://www.videolan.org/vlc/>). (See the chapter *Stream player for your website* on how to deliver **jPlayer** to your audience). Ogg Opus is relatively new and is supported natively in the very latest browsers, such as Mozilla Firefox 25.0, and media players including VLC 2.0.4 or later.
|
||||
Ogg Vorbis playback is supported in **Mozilla Firefox**, **Google Chrome** and **Opera** browsers, via **jPlayer** (<http://jplayer.org/>), and is also supported in several popular media players, including VideoLAN Client, also known as VLC (<http://www.videolan.org/vlc/>). (See the chapter _Stream player for your website_ on how to deliver **jPlayer** to your audience). Ogg Opus is relatively new and is supported natively in the very latest browsers, such as Mozilla Firefox 25.0, and media players including VLC 2.0.4 or later.
|
||||
|
||||
Streaming MP3 below a bitrate of 128kbps is not recommended for music, because of a perceptible loss of high audio frequencies in the broadcast playout. A 96kbps or 64kbps MP3 stream may be acceptable for voice broadcasts if there is a requirement for compatibility with legacy hardware playback devices which do not support Ogg Vorbis or Opus streams.
|
||||
|
||||
|
@ -18,18 +18,18 @@ Conversely, you may have a music station which wants to stream at 160kbps or 192
|
|||
|
||||
## UTF-8 metadata in Icecast MP3 streams
|
||||
|
||||
When sending metadata about your stream to an Icecast server in non-Latin alphabets, you may find that Icecast does not display the characters correctly for an MP3 stream, even though they are displayed correctly for an Ogg Vorbis stream. In the following screenshot, Russian characters are being displayed incorrectly in the *Current Song* field for the MP3 stream:
|
||||
When sending metadata about your stream to an Icecast server in non-Latin alphabets, you may find that Icecast does not display the characters correctly for an MP3 stream, even though they are displayed correctly for an Ogg Vorbis stream. In the following screenshot, Russian characters are being displayed incorrectly in the _Current Song_ field for the MP3 stream:
|
||||
|
||||

|
||||
|
||||
The solution is to specify that the metadata for the MP3 mount point you are using should be interpreted using UTF-8 encoding. You can do this by adding the following stanza to the */etc/icecast2/icecast.xml* file, where *libretime.mp3* is the name of your mount point:
|
||||
The solution is to specify that the metadata for the MP3 mount point you are using should be interpreted using UTF-8 encoding. You can do this by adding the following stanza to the _/etc/icecast2/icecast.xml_ file, where _libretime.mp3_ is the name of your mount point:
|
||||
|
||||
<mount>
|
||||
<mount-name>/libretime.mp3</mount-name>
|
||||
<charset>UTF-8</charset>
|
||||
</mount>
|
||||
|
||||
After saving the */etc/icecast2/icecast.xml* file, you should restart the Icecast server:
|
||||
After saving the _/etc/icecast2/icecast.xml_ file, you should restart the Icecast server:
|
||||
|
||||
sudo invoke-rc.d icecast2 restart
|
||||
Restarting icecast2: Starting icecast2
|
||||
|
@ -38,17 +38,17 @@ After saving the */etc/icecast2/icecast.xml* file, you should restart the Icecas
|
|||
|
||||
## Icecast handover configuration
|
||||
|
||||
In a typical radio station configuration, the live output from the broadcast studio and the scheduled output from LibreTime are mixed together before being sent further along the broadcast chain, to a transmitter or streaming media server on the Internet. (This may not be the case if your LibreTime server is remote from the studio, and you are using the **Show Source Mount Point** or **Master Source Mount Point** to mix live and scheduled content. See the *Stream Settings* chapter for details).
|
||||
In a typical radio station configuration, the live output from the broadcast studio and the scheduled output from LibreTime are mixed together before being sent further along the broadcast chain, to a transmitter or streaming media server on the Internet. (This may not be the case if your LibreTime server is remote from the studio, and you are using the **Show Source Mount Point** or **Master Source Mount Point** to mix live and scheduled content. See the _Stream Settings_ chapter for details).
|
||||
|
||||
If your **Icecast** server is hosted in a remote data centre, you may not have the option to handover the streaming media source manually, because you have no physical access to connect a broadcast mixer to the server. Disconnecting the stream and beginning another is less than ideal, because the audience's media players will also be disconnected when that happens.
|
||||
|
||||
The **Icecast** server has a *fallback-mount* feature which can be used to move clients (media players used by listeners or viewers) from one source to another, as new sources become available. This makes it possible to handover from LibreTime output to a show from another source, and handover to LibreTime again once the other show has ended.
|
||||
The **Icecast** server has a _fallback-mount_ feature which can be used to move clients (media players used by listeners or viewers) from one source to another, as new sources become available. This makes it possible to handover from LibreTime output to a show from another source, and handover to LibreTime again once the other show has ended.
|
||||
|
||||
To enable fallback mounts, edit the main Icecast configuration file to define the mount points you will use, and the relationship between them.
|
||||
|
||||
sudo nano /etc/icecast2/icecast.xml
|
||||
|
||||
The example *<mount>* section provided in the *icecast.xml* file is commented out by default. Before or after the commented section, add three mount point definitions. The default mount point used by LibreTime is */airtime\_128* which is shown in the */etc/airtime/liquidsoap.cfg* file. You must also define a mount point for the live source (called */live.ogg* in this example) and a mount point for the public to connect to (called */stream.ogg* in this example).
|
||||
The example _<mount>_ section provided in the _icecast.xml_ file is commented out by default. Before or after the commented section, add three mount point definitions. The default mount point used by LibreTime is _/airtime_128_ which is shown in the _/etc/airtime/liquidsoap.cfg_ file. You must also define a mount point for the live source (called _/live.ogg_ in this example) and a mount point for the public to connect to (called _/stream.ogg_ in this example).
|
||||
|
||||
<mount>
|
||||
<mount-name>/airtime_128</mount-name>
|
||||
|
@ -69,25 +69,25 @@ The example *<mount>* section provided in the *icecast.xml* file is commented ou
|
|||
<hidden>0</hidden>
|
||||
</mount>
|
||||
|
||||
These mount point definitions mean that a client connecting to a URL such as *http://icecast.example.com:8000/stream.ogg* will first fall back to the */live.ogg* mount point if it is available. If not, the client will fall back in turn to the */airtime\_128* mount point for LibreTime playout.
|
||||
These mount point definitions mean that a client connecting to a URL such as *http://icecast.example.com:8000/stream.ogg* will first fall back to the _/live.ogg_ mount point if it is available. If not, the client will fall back in turn to the _/airtime_128_ mount point for LibreTime playout.
|
||||
|
||||
Setting the value of *<fallback-override>* to 1 (enabled) means that when the */live.ogg* mount point becomes available again, the client will be re-connected to it. If you wish to hide the */airtime\_128* and */live.ogg* mount points from the public Icecast web interface, set the value of *<hidden>* in each of these definitions to 1.
|
||||
Setting the value of _<fallback-override>_ to 1 (enabled) means that when the _/live.ogg_ mount point becomes available again, the client will be re-connected to it. If you wish to hide the _/airtime_128_ and _/live.ogg_ mount points from the public Icecast web interface, set the value of _<hidden>_ in each of these definitions to 1.
|
||||
|
||||
## Source configuration
|
||||
|
||||
Connect the other source to the Icecast server with the same parameters defined in the */etc/airtime/liquidsoap.cfg* file, except for the mount point. This should one of the mount points you have defined in the */etc/icecast2/icecast.xml* file, such as */live.ogg* in the example above.
|
||||
Connect the other source to the Icecast server with the same parameters defined in the _/etc/airtime/liquidsoap.cfg_ file, except for the mount point. This should one of the mount points you have defined in the _/etc/icecast2/icecast.xml_ file, such as _/live.ogg_ in the example above.
|
||||
|
||||
To configure **Mixxx** for streaming to Icecast, click *Options*, *Preferences*, then *Live Broadcasting*. For server *Type*, select the default of *Icecast 2* when streaming to Debian or Ubuntu servers, as this is the current version of Icecast supplied with those GNU/Linux distributions.
|
||||
To configure **Mixxx** for streaming to Icecast, click _Options_, _Preferences_, then _Live Broadcasting_. For server _Type_, select the default of _Icecast 2_ when streaming to Debian or Ubuntu servers, as this is the current version of Icecast supplied with those GNU/Linux distributions.
|
||||
|
||||

|
||||

|
||||
|
||||
By default, Icecast streams are buffered to guard against network problems, which causes latency for remote listeners. When monitoring the stream from a remote location, you may have to begin the live stream a few seconds before the previous stream ends to enable a smooth transition.
|
||||
|
||||
## Promoting your station through Icecast
|
||||
|
||||
If you have an Icecast server, you can put a link to the Icecast status page (by default at port 8000) on your station's homepage,
|
||||
to provide an overview of available streams. See the chapter *Interface customization* for tips on theming the
|
||||
Icecast status page. You can also use Now Playing widgets (see the chapter *Exporting the schedule*) or HTML5 stream players (see the chapter *Stream player for your website*) to help grow your audience.
|
||||
to provide an overview of available streams. See the chapter _Interface customization_ for tips on theming the
|
||||
Icecast status page. You can also use Now Playing widgets (see the chapter _Exporting the schedule_) or HTML5 stream players (see the chapter _Stream player for your website_) to help grow your audience.
|
||||
|
||||
On an Icecast server, you can uncomment the `<directory>` section in the _/etc/icecast2/icecast.xml_ file to have
|
||||
your station automatically listed on the Icecast directory website <http://dir.xiph.org> which could help you pick
|
||||
|
@ -100,14 +100,14 @@ up more listeners.
|
|||
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
|
||||
</directory>
|
||||
|
||||
The Indymedia stream directory at <http://radio.indymedia.org/en/yp> links to grassroots independent radio projects around the world. You can add your station to their list with an additional *<directory>* section, as follows:
|
||||
The Indymedia stream directory at <http://radio.indymedia.org/en/yp> links to grassroots independent radio projects around the world. You can add your station to their list with an additional _<directory>_ section, as follows:
|
||||
|
||||
<directory>
|
||||
<yp-url-timeout>15</yp-url-timeout>
|
||||
<yp-url>http://radio.indymedia.org/cgi-bin/yp-cgi</yp-url>
|
||||
</directory>
|
||||
|
||||
Another stream directory service is provided by the Liquidsoap Flows! site <http://flows.liquidsoap.fm/>. The following section can be added to the file */usr/lib/airtime/pypo/bin/liquidsoap\_scripts/ls\_script.liq* after *add\_skip\_command(s)* on line 174, for a stream named '*ourstation*':
|
||||
Another stream directory service is provided by the Liquidsoap Flows! site <http://flows.liquidsoap.fm/>. The following section can be added to the file _/usr/lib/airtime/pypo/bin/liquidsoap_scripts/ls_script.liq_ after _add_skip_command(s)_ on line 174, for a stream named '_ourstation_':
|
||||
|
||||
ourstation = register_flow(
|
||||
radio="Rock 'n Roll Radio",
|
||||
|
|
|
@ -18,7 +18,7 @@ permalink: /install
|
|||
- Wired internet connection and static IP address for on-prem install
|
||||
|
||||
[DigitalOcean](https://www.digitalocean.com/pricing/#Compute) and [Linode](https://www.linode.com/pricing/#row--compute)
|
||||
have similar plans that meet Cloud Install requirements. Both plans cost $10/month.
|
||||
have similar plans that meet Cloud Install requirements. Both plans cost $10/month.
|
||||
|
||||
## Preparing the server
|
||||
|
||||
|
@ -68,7 +68,6 @@ sudo ufw allow 8001,8002/tcp
|
|||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/Djo_55LgjXE" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
|
||||
Installing LibreTime consists of running the following commands in the terminal:
|
||||
|
||||
```
|
||||
|
|
|
@ -5,12 +5,11 @@ git: interface-customization.md
|
|||
category: admin
|
||||
---
|
||||
|
||||
|
||||
The LibreTime administration interface, as a web application, is fully customizable using the same methods that you might use to modify a website. For instance, you may wish to increase certain font sizes or change the colours in the LibreTime interface to better suit staff users with impaired vision. To do so, open one of the CSS files in the */public/css/* directory under the LibreTime *DocumentRoot* directory in an editor such as **nano**:
|
||||
The LibreTime administration interface, as a web application, is fully customizable using the same methods that you might use to modify a website. For instance, you may wish to increase certain font sizes or change the colours in the LibreTime interface to better suit staff users with impaired vision. To do so, open one of the CSS files in the _/public/css/_ directory under the LibreTime _DocumentRoot_ directory in an editor such as **nano**:
|
||||
|
||||
sudo nano /usr/share/airtime/public/css/styles.css
|
||||
|
||||
To change the background colour of the administration interface from dark gray to white, the *background:* property of the body tag could be changed to *\#ffffff* as follows:
|
||||
To change the background colour of the administration interface from dark gray to white, the _background:_ property of the body tag could be changed to _\#ffffff_ as follows:
|
||||
|
||||
body {
|
||||
font-size: 62.5%;
|
||||
|
@ -26,13 +25,13 @@ Any custom changes that you make to the administration interface should be backe
|
|||
|
||||
# Modifying the Icecast interface
|
||||
|
||||
If you have installed Icecast, in the directory */etc/icecast2/web/* you will find several XSLT and other files which are used to generate the Icecast web interface. If you are familiar with HTML you should be able to modify these pages, as they are well commented. You do have to be careful with syntax, because something as simple as a missing bracket can cause the Icecast web interface to break down.
|
||||
If you have installed Icecast, in the directory _/etc/icecast2/web/_ you will find several XSLT and other files which are used to generate the Icecast web interface. If you are familiar with HTML you should be able to modify these pages, as they are well commented. You do have to be careful with syntax, because something as simple as a missing bracket can cause the Icecast web interface to break down.
|
||||
|
||||
For example, you could change the *status.xsl* page:
|
||||
For example, you could change the _status.xsl_ page:
|
||||
|
||||
sudo nano /etc/icecast2/web/status.xsl
|
||||
|
||||
Modifying the *status.xsl* page is a good place to start, because this is the default page that site visitors see when they browse port 8000 on your Icecast server. The most obvious change to make in the XSLT pages is the content of the *<title>* and *<h2>* tags, to announce the name of your station. You can also modify the *style.css* file in this directory to change colour and layout options.
|
||||
Modifying the _status.xsl_ page is a good place to start, because this is the default page that site visitors see when they browse port 8000 on your Icecast server. The most obvious change to make in the XSLT pages is the content of the _<title>_ and _<h2>_ tags, to announce the name of your station. You can also modify the _style.css_ file in this directory to change colour and layout options.
|
||||
|
||||
After saving the file with Ctrl+O, refresh your web browser, and the new look should now be visible.
|
||||
|
||||
|
|
|
@ -18,13 +18,13 @@ GNU **gettext** means using a .po file for each language or dialect, a specially
|
|||
|
||||
The first of these three lines starts with the hash symbol, and references where this string of text is found in the source code by its file name and line number. If this string is found more than once in the source code, you will see other reference lines here. The second line contains the **msgid**, which is the original version of the string. The third line contains the **msgstr**, which is the translation of that string for the localization that this particular .po file relates to.
|
||||
|
||||
If you use the cross-platform program **Poedit** (<http://www.poedit.net/>) to edit the .po file, this formatting of the text is hidden by an easy-to-use GUI. The *poedit* package can be installed on most GNU/Linux distributions using the standard software installer. Versions of Poedit for Mac and Windows are available for free download from the project's homepage.
|
||||
If you use the cross-platform program **Poedit** (<http://www.poedit.net/>) to edit the .po file, this formatting of the text is hidden by an easy-to-use GUI. The _poedit_ package can be installed on most GNU/Linux distributions using the standard software installer. Versions of Poedit for Mac and Windows are available for free download from the project's homepage.
|
||||
|
||||
Before manually translating strings in Poedit from scratch, you should take a look at the online translation services available, such as Lingohub (<https://lingohub.com>) or Google's Translator Toolkit (<http://translate.google.com/toolkit/>), which both support gettext .po files. If using automatic translation, you can then use Poedit to fine-tune the localization and fix any formatting errors.
|
||||
|
||||
If you don't already have a GitHub account, you can sign up at <https://github.com/signup/free>. Once you have a GitHub account, you can fork a copy (<https://help.github.com/articles/fork-a-repo>) of the LibreTime project. Work for the next major version of the software is done in the **master** branch of each project, so that's the branch to **checkout** after you have made the initial **git clone**.
|
||||
|
||||
In the locale code *de\_CH*, for example, *de* represents the German language and the suffix *\_CH* indicates the dialect spoken in Switzerland. Some languages have a wide variety of dialect localizations, which can be differentiated with a suffix in this way. You should update the header information in the .po file, which includes the language code and a country code, using one of the existing .po files as a guide.
|
||||
In the locale code _de_CH_, for example, _de_ represents the German language and the suffix _\_CH_ indicates the dialect spoken in Switzerland. Some languages have a wide variety of dialect localizations, which can be differentiated with a suffix in this way. You should update the header information in the .po file, which includes the language code and a country code, using one of the existing .po files as a guide.
|
||||
|
||||
After forking the LibreTime git repository, make sure you're in the **master** branch:
|
||||
|
||||
|
@ -32,15 +32,15 @@ After forking the LibreTime git repository, make sure you're in the **master** b
|
|||
devel
|
||||
* master
|
||||
|
||||
Create a new locale directory (e.g. *airtime\_mvc/locale/de\_CH/LC\_MESSAGES/* for German as spoken in Switzerland):
|
||||
Create a new locale directory (e.g. _airtime_mvc/locale/de_CH/LC_MESSAGES/_ for German as spoken in Switzerland):
|
||||
|
||||
mkdir -p airtime_mvc/locale/de_CH/LC_MESSAGES/
|
||||
|
||||
Copy the template *airtime.po* file into the directory you just created:
|
||||
Copy the template _airtime.po_ file into the directory you just created:
|
||||
|
||||
cp airtime_mvc_locale/template/airtime.po airtime_mvc/locale/de_CH/LC_MESSAGES
|
||||
|
||||
and update the header information in the new copy of the *airtime.po* file using the **nano** editor:
|
||||
and update the header information in the new copy of the _airtime.po_ file using the **nano** editor:
|
||||
|
||||
nano airtime_mvc/locale/de_CH/LC_MESSAGES/airtime.po
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ The Listener Stats page on the Analytics menu shows graphs of listener connectio
|
|||
|
||||

|
||||
|
||||
If the status indicator is red, check that the **Admin User** and **Admin Password** settings are correct under **Additional Options** for the named mount point, such as *libretime\_128*, on the **Streams** page of the **Settings** menu.
|
||||
If the status indicator is red, check that the **Admin User** and **Admin Password** settings are correct under **Additional Options** for the named mount point, such as _libretime_128_, on the **Streams** page of the **Settings** menu.
|
||||
|
||||
To choose which particular streams should have statistics displayed, click the check boxes for the individual colour-coded mount points, just below the graph.
|
||||
|
||||
|
|
|
@ -39,36 +39,36 @@ for remote input connection details.
|
|||
**Setup**
|
||||
|
||||
1. Download and install [BUTT](https://danielnoethen.de/) for your OS.
|
||||
*Note: be sure you have butt version 0.1.17 or newer installed*
|
||||
_Note: be sure you have butt version 0.1.17 or newer installed_
|
||||
2. Open up BUTT
|
||||
3. Click **settings**
|
||||
4. Under **Main** > **Server** click **ADD**
|
||||
* Type LibreTime (or your station) under Name
|
||||
* Click the radio button next to **IceCast** under Type
|
||||
* Type your stations URL (webpage address) under **Address**:
|
||||
* Type **8002** under **Port**:
|
||||
* Type your DJ login password under **Password**
|
||||
* Type **/show** under IceCast mountpoint:
|
||||
* Type your dj login under **IceCast user:**
|
||||
- Type LibreTime (or your station) under Name
|
||||
- Click the radio button next to **IceCast** under Type
|
||||
- Type your stations URL (webpage address) under **Address**:
|
||||
- Type **8002** under **Port**:
|
||||
- Type your DJ login password under **Password**
|
||||
- Type **/show** under IceCast mountpoint:
|
||||
- Type your dj login under **IceCast user:**
|
||||
5. Click **ADD**
|
||||
6. Still in settings click, **Audio** and select your external sound card under
|
||||
**Audio Device** *Note: if you only have an internal sound card you maybe able
|
||||
to use it but that is OS specific and outside of this tutorial. We are assuming
|
||||
you have a mic and mixer or a USB mixer hooked up to or as an external soundcard*
|
||||
**Audio Device** _Note: if you only have an internal sound card you maybe able
|
||||
to use it but that is OS specific and outside of this tutorial. We are assuming
|
||||
you have a mic and mixer or a USB mixer hooked up to or as an external soundcard_
|
||||
|
||||
**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.
|
||||
in the top right when your show starts go to Butt.
|
||||
2. Click the white Play button (third button in the middle).
|
||||
3. If it says connecting… and then stream time with a counter– congratulations,
|
||||
your are connected!
|
||||
your are connected!
|
||||
4. Go to the LibreTime page and at the top right under Source Streams the
|
||||
tab besides Show Source is to the left and Orange – if it is and Current
|
||||
shows Live Show you are connected.
|
||||
tab besides Show Source is to the left and Orange – if it is and Current
|
||||
shows Live Show you are connected.
|
||||
5. If it is gray, click on the **Show Source** switch to the right of it and it
|
||||
will toggle your show on and you will be broadcasting. *Note: whether auto
|
||||
connect is turned on is a station specific setting so it could work either way*
|
||||
will toggle your show on and you will be broadcasting. _Note: whether auto
|
||||
connect is turned on is a station specific setting so it could work either way_
|
||||
|
||||
### Recording your show
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ podcast tabs, and a live feed of your station with information on the the curren
|
|||
|
||||
## Modifying the LibreTime Radio Page
|
||||
|
||||
The background of the mini-site that appears when you visit the server's domain in your web browser can be changed by modifying the page's CSS file, located at */usr/share/airtime/php/airtime_mvc/public/css/radio-page/radio-page.css*.
|
||||
The background of the mini-site that appears when you visit the server's domain in your web browser can be changed by modifying the page's CSS file, located at _/usr/share/airtime/php/airtime_mvc/public/css/radio-page/radio-page.css_.
|
||||
|
||||
```
|
||||
html {
|
||||
|
|
|
@ -30,6 +30,7 @@ If you want to delete the image and start again, run `multipass delete ltTEST &&
|
|||
### Cloud-init options in cloud-init.yaml
|
||||
|
||||
You may wish to change the below fields as per your location.
|
||||
|
||||
```
|
||||
timezone: America/New York # change as needed
|
||||
ntp:
|
||||
|
|
|
@ -40,7 +40,7 @@ Smart blocks are automatically filled with media files from the LibreTime librar
|
|||
|
||||
To create a smart block, click the **Smartblocks** button on the left sidebar, and select **New** from the toolbar. Like a playlist, smart blocks can have a title and description, which you can edit. This helps you find relevant smart blocks in searches.
|
||||
|
||||
Fill out the smart block's **Name**, **Search Criteria**, and **Limit to** sections. The search criteria can be any one of LibreTime's metadata categories, such as **Title**, **Creator** or **Genre**. The modifier depends on whether the metadata in question contains letters or numbers. For example, **Title** has modifiers including *contains* and *starts with*, whereas the modifiers for **BPM** include *is greater than* and *is in the range*.
|
||||
Fill out the smart block's **Name**, **Search Criteria**, and **Limit to** sections. The search criteria can be any one of LibreTime's metadata categories, such as **Title**, **Creator** or **Genre**. The modifier depends on whether the metadata in question contains letters or numbers. For example, **Title** has modifiers including _contains_ and _starts with_, whereas the modifiers for **BPM** include _is greater than_ and _is in the range_.
|
||||
|
||||
If you have a large number of files which meet the criteria that you specify, you may wish to limit the duration of the smart block using the **Limit to** field, so that it fits within the show you have in mind. Select **hours**, **minutes** or **items** from the drop-down menu, and click the **Generate** button again, if it is a static smart block. Then click the **Save** button.
|
||||
|
||||
|
@ -51,9 +51,9 @@ If you have a large number of files which meet the criteria that you specify, yo
|
|||
|
||||

|
||||
|
||||
You can also set the **smart block type**. A **Static** smart block will save the criteria and generate the block content immediately. This enables you to edit the contents of the block in the **Library** page before adding it to a show. A **Dynamic** smart block will only save the criteria, and the specific content will be generated at the time the block is added to a show. After that, the content of the show can be changed or re-ordered in the **Now Playing** page.
|
||||
You can also set the **smart block type**. A **Static** smart block will save the criteria and generate the block content immediately. This enables you to edit the contents of the block in the **Library** page before adding it to a show. A **Dynamic** smart block will only save the criteria, and the specific content will be generated at the time the block is added to a show. After that, the content of the show can be changed or re-ordered in the **Now Playing** page.
|
||||
|
||||
Click the **plus button** on the left to add OR criteria, such as **Creator** containing *beck* OR *jimi*. To add AND criteria, such as **Creator** containing *jimi* AND BPM in the range *120* to *130*, click the **plus button** on the right. (The criteria are not case sensitive). Click **Preview** to see the results.
|
||||
Click the **plus button** on the left to add OR criteria, such as **Creator** containing _beck_ OR _jimi_. To add AND criteria, such as **Creator** containing _jimi_ AND BPM in the range _120_ to _130_, click the **plus button** on the right. (The criteria are not case sensitive). Click **Preview** to see the results.
|
||||
|
||||
> If you see the message **0 files meet the criteria**, it might mean that the files in the Library have not been tagged with the correct metadata. See the chapter [Preparing media](/docs/preparing-media) for tips on tagging content.
|
||||
|
||||
|
|
|
@ -32,14 +32,13 @@ The **History Templates** page on the History menu enables you to prepare report
|
|||
|
||||

|
||||
|
||||
Either of these actions opens a page in which you can name the new template, and add or remove elements from the list on the left. To add a new element from the list on the right, click the plus icon for the item you require. If the element you require is not listed, you can use the **Add New Field** box at the lower end of the right side column. Select *string*, *boolean*, *integer*, or *float*, depending on the type of data that you wish to log, and then click the **+ Add** button.
|
||||
Either of these actions opens a page in which you can name the new template, and add or remove elements from the list on the left. To add a new element from the list on the right, click the plus icon for the item you require. If the element you require is not listed, you can use the **Add New Field** box at the lower end of the right side column. Select _string_, _boolean_, *integer*, or _float_, depending on the type of data that you wish to log, and then click the **+ Add** button.
|
||||
|
||||
When the template is in the format you require, click the **Save** button, and **Set Default Template** if you wish. The new template will now be listed on the History Templates page. If you have set a new default template, any changes will be visible on the tabs of the Playout History page.
|
||||
|
||||
|
||||
## Exporting the schedule {#exporting}
|
||||
|
||||
LibreTime has a feature which enables your station's show and schedule information to be displayed on remote websites. This feature is included in LibreTime because you would not usually invite the general public to access your LibreTime server directly. If you had very large numbers of people requesting data from the LibreTime server at once, the burst of network traffic might overload the server, potentially disrupting your broadcasts. If carried out maliciously, this network overload is known as a *denial of service attack*.
|
||||
LibreTime has a feature which enables your station's show and schedule information to be displayed on remote websites. This feature is included in LibreTime because you would not usually invite the general public to access your LibreTime server directly. If you had very large numbers of people requesting data from the LibreTime server at once, the burst of network traffic might overload the server, potentially disrupting your broadcasts. If carried out maliciously, this network overload is known as a _denial of service attack_.
|
||||
|
||||
Instead, your public-facing web server can retrieve the schedule information from the LibreTime API. It can be presented using Javascript widgets and styled with CSS, in any format that you require.
|
||||
|
||||
|
@ -167,13 +166,13 @@ In this case, the metadata returned would be in a different format from the abov
|
|||
"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.
|
||||
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.
|
||||
|
||||
### Caching schedule information
|
||||
|
||||
If the LibreTime server is behind a firewall, or you want to protect the LibreTime server from large numbers of schedule requests, you may wish to cache the schedule information on a public-facing or intermediate server. You can then create a firewall rule that only allows the schedule server to connect to the LibreTime server, in addition to any remote users of the LibreTime web interface.
|
||||
|
||||
Your system administrator can set up schedule caching on a standard Apache and PHP enabled web server with the *curl* program installed, using the following steps:
|
||||
Your system administrator can set up schedule caching on a standard Apache and PHP enabled web server with the _curl_ program installed, using the following steps:
|
||||
|
||||
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:
|
||||
|
||||
|
@ -195,19 +194,19 @@ The content of this file should be like the following script, replacing libretim
|
|||
|
||||
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:
|
||||
|
||||
<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/
|
||||
|
||||
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
|
||||
|
||||
|
@ -226,7 +225,7 @@ containing the following code:
|
|||
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
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ category: interface
|
|||
|
||||
The Podcasts page allows you add subscriptions to podcasts which are often used to syndicated audio files using a URL called a RSS feed. This allows your LibreTime instance to automatically download new shows from the web.
|
||||
|
||||
In order to add a podcast you need to get the RSS feed. All podcasts available on iTunes have a RSS feed but it is sometimes hidden. See this issue on our github page [#510](https://github.com/LibreTime/libretime/issues/510) for more information. RSS feeds that do not end in *.xml* may be accepted by LibreTime but might fail to download episodes; in that case, download the episode using a podcast client such as [gpodder](https://gpodder.github.io/) and then manually upload and schedule the episode. Podcast feeds coming from Anchor.fm have been known to have this issue.
|
||||
In order to add a podcast you need to get the RSS feed. All podcasts available on iTunes have a RSS feed but it is sometimes hidden. See this issue on our github page [#510](https://github.com/LibreTime/libretime/issues/510) for more information. RSS feeds that do not end in _.xml_ may be accepted by LibreTime but might fail to download episodes; in that case, download the episode using a podcast client such as [gpodder](https://gpodder.github.io/) and then manually upload and schedule the episode. Podcast feeds coming from Anchor.fm have been known to have this issue.
|
||||
|
||||
The podcast interfaces provides you with the ability to generate [Smartblocks](/docs/playlists) that can be used in conjunction with autoloading playlists to schedule the newest episode of a podcast without human intervention.
|
||||
|
||||
|
@ -21,7 +21,7 @@ The podcast interfaces provides you with the ability to generate [Smartblocks](/
|
|||
The podcasts dashboard is similar to the tracks view, allowing you to add, edit, and remove
|
||||
podcasts by the toolbar, in addition to sorting by columns.
|
||||
|
||||
To add a podcast, click on the **+ Add** button on the toolbar and provide the podcast's RSS feed, which usually ends in *.xml*.
|
||||
To add a podcast, click on the **+ Add** button on the toolbar and provide the podcast's RSS feed, which usually ends in _.xml_.
|
||||
Once the podcast's feed is recognized, the editor pane opens for the podcast.
|
||||
|
||||
### Editor
|
||||
|
@ -33,4 +33,4 @@ A search box is available to search for episodes within the feed.
|
|||
|
||||
- To import an episode directly into LibreTime, double-click on an episode or select it and click **+ Import**. The podcast will appear under tracks with the Podcast Name as the Album.
|
||||
- To delete an episode from LibreTime, select the episode and click on the red trash can on the toolbar.
|
||||
- If you would like LibreTime to automatically download the latest episodes of a podcast, make sure *Download latest episodes* is checked. This can be used in conjunction with Smartblocks and Playlists to automate downloading and scheduling shows that are received via podcast feed.
|
||||
- If you would like LibreTime to automatically download the latest episodes of a podcast, make sure _Download latest episodes_ is checked. This can be used in conjunction with Smartblocks and Playlists to automate downloading and scheduling shows that are received via podcast feed.
|
||||
|
|
|
@ -17,13 +17,13 @@ There are a number of programs available which can be used to correct mistakes o
|
|||
- [MusicBrainz Picard](https://picard.musicbrainz.org/) (Mac, Windows, Linux)
|
||||
- [Ex Falso](http://code.google.com/p/quodlibet/) (Linux)
|
||||
|
||||
The *Tags From Path* feature of Ex Falso is a particularly useful time saver if you have a large archive of untagged files. Sometimes there is useful creator or title information in the file name or directory path structure, which can be converted into an ID3 tag automatically.
|
||||
The _Tags From Path_ feature of Ex Falso is a particularly useful time saver if you have a large archive of untagged files. Sometimes there is useful creator or title information in the file name or directory path structure, which can be converted into an ID3 tag automatically.
|
||||
|
||||

|
||||
|
||||
## Metadata in legacy character sets
|
||||
|
||||
LibreTime expects file tag metadata to be stored in the international *UTF-8* character set. Programs such as **Ex Falso** (described above) encode metadata in UTF-8 by default. If you have an archive of files encoded with metadata in a legacy character set, such as the Cyrillic encoding *Windows-1251*, you should convert these files before import.
|
||||
LibreTime expects file tag metadata to be stored in the international _UTF-8_ character set. Programs such as **Ex Falso** (described above) encode metadata in UTF-8 by default. If you have an archive of files encoded with metadata in a legacy character set, such as the Cyrillic encoding _Windows-1251_, you should convert these files before import.
|
||||
|
||||
The program **mid3iconv** (part of the **python-mutagen** package in Debian and Ubuntu) can be used to batch convert the metadata character set of files on the command line. You can install **python-mutagen** with the command:
|
||||
|
||||
|
@ -57,11 +57,11 @@ The name of the original character set follows the **-e** option. Other legacy c
|
|||
|
||||
## 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 <http://www.replaygain.org/> for more details of ReplayGain.
|
||||
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 <http://www.replaygain.org/> 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 <http://www.soundonsound.com/sos/sep11/articles/loudness.htm> 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 <http://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 <http://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.
|
||||
|
||||
|
@ -85,7 +85,7 @@ And here is an example of a very loud file, with lower crest factor, where the o
|
|||
----------+-------+-------+----------+------
|
||||
-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.
|
||||
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.
|
||||
|
||||
## Silence in media files
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ layout: article
|
|||
category: install
|
||||
---
|
||||
|
||||
|
||||
In some deployments, the LibreTime server is deployed behind a reverse proxy,
|
||||
for example in containerization use-cases such as Docker and LXC. LibreTime
|
||||
makes extensive use of its API for some site functionality, which causes
|
||||
|
|
|
@ -34,7 +34,7 @@ are in the table below. Finially, click on the grey **+ Add this show** button a
|
|||
of the pane to add your show to the calendar.
|
||||
|
||||
| Field | Description |
|
||||
|-------|-------|
|
||||
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| _What_ | |
|
||||
| Name (Required) | The name of your show |
|
||||
| URL | The URL of your show. Not used on the public page. |
|
||||
|
@ -80,4 +80,3 @@ 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.
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Optionally, open the **ntp** configuration file in the **nano** editor to add fu
|
|||
|
||||
sudo nano /etc/ntp.conf
|
||||
|
||||
On Ubuntu GNU/Linux, the default time server is *ntp.ubuntu.com*, but there are many other time servers available on the public Internet, including the group of servers listed at <http://www.pool.ntp.org/> for each country. Using a variety of NTP servers located closely to your LibreTime server should produce the most accurate results. For example, for a server in the United Kingdom you could use the following list:
|
||||
On Ubuntu GNU/Linux, the default time server is _ntp.ubuntu.com_, but there are many other time servers available on the public Internet, including the group of servers listed at <http://www.pool.ntp.org/> for each country. Using a variety of NTP servers located closely to your LibreTime server should produce the most accurate results. For example, for a server in the United Kingdom you could use the following list:
|
||||
|
||||
# You do need to talk to an NTP server or two (or three).
|
||||
server ntp.ubuntu.com
|
||||
|
@ -30,7 +30,7 @@ On Ubuntu GNU/Linux, the default time server is *ntp.ubuntu.com*, but there are
|
|||
server 2.uk.pool.ntp.org
|
||||
server 3.uk.pool.ntp.org
|
||||
|
||||
Enter the server names you require, press **Ctrl+O** to write out the */etc/ntp.conf* file, then **Ctrl+X** to exit **nano**. Restart the **ntp** service with:
|
||||
Enter the server names you require, press **Ctrl+O** to write out the _/etc/ntp.conf_ file, then **Ctrl+X** to exit **nano**. Restart the **ntp** service with:
|
||||
|
||||
sudo invoke-rc.d ntp restart
|
||||
|
||||
|
@ -52,7 +52,7 @@ Then use the **ntpq -p** command to confirm that **ntp** is working. This comman
|
|||
|
||||
### Adjusting the server time zone
|
||||
|
||||
The data centre which hosts your LibreTime server could be located anywhere in the world. Some servers are set to *Coordinated Universal Time* or UTC (similar to *Greenwich Mean Time* or GMT), regardless of their location. LibreTime uses UTC time in its database for scheduling purposes, independent of the server time zone.
|
||||
The data centre which hosts your LibreTime server could be located anywhere in the world. Some servers are set to _Coordinated Universal Time_ or UTC (similar to _Greenwich Mean Time_ or GMT), regardless of their location. LibreTime uses UTC time in its database for scheduling purposes, independent of the server time zone.
|
||||
|
||||
If the server time zone is not appropriate for integration with your station's other systems, on a Debian or Ubuntu server you can reconfigure the **tzdata** (time zone data) package with the command:
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ title: Settings
|
|||
category: admin
|
||||
---
|
||||
|
||||
|
||||
## General Settings
|
||||
|
||||

|
||||
|
@ -19,7 +18,7 @@ Description** and **Station Logo** here.
|
|||
The **Default Interface Language** drop-down menu sets the default localization
|
||||
for your LibreTime instance, and the **Station Timezone** drop-down menu can be
|
||||
used to display local time at your station. LibreTime stores show times
|
||||
internally in UTC format (similar to *Greenwich Mean Time*), but displays local
|
||||
internally in UTC format (similar to _Greenwich Mean Time_), but displays local
|
||||
time for the convenience of your station staff. You can also set the day of the
|
||||
week that you wish to start your station's weekly schedule on, which defaults
|
||||
to Sunday.
|
||||
|
@ -29,7 +28,7 @@ The **Track Type Default** enables you to select a track type default for upload
|
|||
Initially, the **Default Fade In** and **Default Fade Out** times for automated
|
||||
fades are set to half a second, and the **Default Crossfade Duration** is set to
|
||||
zero seconds. Custom fade and crossfade times can be set for adjacent items in a
|
||||
playlist or static smart block. See the chapter *Library* for details.
|
||||
playlist or static smart block. See the chapter _Library_ for details.
|
||||
|
||||
The **Intro Autoloading Playlist** enables you to select a playlist that will be
|
||||
scheduled at the beginning of every show that has enabled an autoloading
|
||||
|
@ -60,8 +59,8 @@ refactors. You can switch back at any time.
|
|||
You can enable live, read-only access to the LibreTime schedule calendar for
|
||||
your station's public website with the **Public LibreTime API** option, if you
|
||||
wish. (There is more about this feature in the
|
||||
[*Exporting the schedule*](/docs/playout-history) chapter, in the
|
||||
*Advanced Configuration* section of this book).
|
||||
[_Exporting the schedule_](/docs/playout-history) chapter, in the
|
||||
_Advanced Configuration_ section of this book).
|
||||
|
||||
The **Allowed CORS URLs** is intended to deal with situations where you want a
|
||||
remote site with a different domain to access the API. This is relevant when
|
||||
|
@ -90,7 +89,7 @@ Individual LibreTime users can choose another interface localization when they
|
|||
log in, or set personal preferences for localization and time zone by clicking
|
||||
their username on the right side of the menu bar.
|
||||
|
||||
----
|
||||
---
|
||||
|
||||
## Track Types {#types}
|
||||
|
||||
|
@ -105,7 +104,7 @@ their username on the right side of the menu bar.
|
|||
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
|
||||
|
||||
|
@ -115,11 +114,11 @@ their username on the right side of the menu bar.
|
|||
|
||||
You can configure direct Icecast and SHOUTcast streams and sound card output by clicking **Streams** on the **System** menu.
|
||||
|
||||
At the top left of the **Stream Settings** page are global settings including **Hardware Audio Output**, which enables playout from the default sound card on the server, if one is fitted. The default **Output Type** of *ALSA* on the drop-down menu will be suitable for most servers with a sound card. If not, you have the option to choose from other Liquidsoap interfaces available, such as *OSS* or *PortAudio*.
|
||||
At the top left of the **Stream Settings** page are global settings including **Hardware Audio Output**, which enables playout from the default sound card on the server, if one is fitted. The default **Output Type** of _ALSA_ on the drop-down menu will be suitable for most servers with a sound card. If not, you have the option to choose from other Liquidsoap interfaces available, such as _OSS_ or _PortAudio_.
|
||||
|
||||
The second checkbox under Global Settings enables the sending of **Icecast Vorbis Metadata** with direct streams. This setting is optional, because some media players have a bug which makes them disconnect from Ogg Vorbis streams when an Icecast server notifies the player that a new track is starting.
|
||||
|
||||
The **Stream Label** radio button allows you to set the metadata that will be sent with direct streams; *Artist* and *Title*, *Show*, *Artist* and *Title*, or *Station name* and *Show name*.
|
||||
The **Stream Label** radio button allows you to set the metadata that will be sent with direct streams; _Artist_ and _Title_, _Show_, _Artist_ and _Title_, or _Station name_ and _Show name_.
|
||||
|
||||
The **Off Air Metadata** field configures the text that will be sent to any configured streaming servers, and from there on to media players, when Airtime is not streaming any output.
|
||||
|
||||
|
@ -137,7 +136,7 @@ Airtime supports two types of live input stream; the **Show Source**, which enab
|
|||
|
||||
The **Auto Switch Off** and **Auto Switch On** checkboxes enable playout to be switched automatically to the highest priority source whenever an authenticated input source disconnects from or connects to Airtime, respectively. The field **Switch Transition Fade** sets the length of the audio fade as scheduled playout is switched to a remote input source, and back.
|
||||
|
||||
Each type of input stream requires a username and password before the remote broadcaster can connect to Airtime. The **Master Username** and **Master Password** can be set in the Input Stream Settings box, while the authentication for individual Show Sources is set up in Airtime's schedule calendar. See the *Calendar* chapter for details.
|
||||
Each type of input stream requires a username and password before the remote broadcaster can connect to Airtime. The **Master Username** and **Master Password** can be set in the Input Stream Settings box, while the authentication for individual Show Sources is set up in Airtime's schedule calendar. See the _Calendar_ chapter for details.
|
||||
|
||||
Input streams must have a **Port** for the remote broadcaster to connect to, which should be a number in the range from 1024 to 49151. If you have the Icecast or SHOUTcast streaming server running on the same machine as Airtime, you should avoid using port 8000 or 8001 for either type of Airtime input stream. This is because both Icecast and SHOUTcast use port 8000, and SHOUTcast also uses port 8001. If the usernames and passwords were similar, remote broadcasters might accidentally connect to the streaming server directly, bypassing Airtime.
|
||||
|
||||
|
@ -167,11 +166,10 @@ On the right side of the page, you can configure up to three independent output
|
|||
|
||||
To configure another stream, click the bar with the stream number to expand its box, and make sure **Enabled** is checked. Enter at least the streaming **Server** IP address or domain name, and **Port** details. The default port for Icecast and SHOUTcast servers is 8000.
|
||||
|
||||
Click **Additional Options** to expand a box in which you can enter the usernames, passwords and metadata to send to the streaming server. The default **Username** for Icecast servers is *source*, and if this the name in use on your streaming server, you can leave this field empty. The **Admin User** and **Admin Password** settings are optional, and are used to query the streaming server for audience numbers by the **Listener Stats** page on the **System** menu.
|
||||
Click **Additional Options** to expand a box in which you can enter the usernames, passwords and metadata to send to the streaming server. The default **Username** for Icecast servers is _source_, and if this the name in use on your streaming server, you can leave this field empty. The **Admin User** and **Admin Password** settings are optional, and are used to query the streaming server for audience numbers by the **Listener Stats** page on the **System** menu.
|
||||
|
||||
You can also set the specific **Mount Point** that listeners will connect to here. Then click one of the **Save** buttons in the upper or lower right corner of the page to update the Airtime server's settings.
|
||||
|
||||
Airtime supports output to Icecast in Ogg Vorbis, Ogg Opus, MP3 and AAC formats. When selecting a SHOUTcast server from the **Service Type** drop-down menu, you are restricted to using MP3 or AAC formats only, so the choice of Ogg Vorbis and Opus formats is greyed out in the **Stream Type** drop-down menu. The SHOUTcast username for stream sources is fixed, so you do not need to enter this value under **Additional Options**, but you will usually have to enter a password.
|
||||
|
||||
Any connection problems between Liquidsoap and Icecast or SHOUTcast are shown on the Stream Settings page. For example, if you enter the wrong password, you will see an *Authentication Required* error message. To fix this, enter the correct password in the **Additional Options** box, and click the **Save** button. If the streaming server is down for any reason, or you have entered an incorrect **Server** name or **Port** number, you will see the message *Can not connect to the streaming server*.
|
||||
|
||||
Any connection problems between Liquidsoap and Icecast or SHOUTcast are shown on the Stream Settings page. For example, if you enter the wrong password, you will see an _Authentication Required_ error message. To fix this, enter the correct password in the **Additional Options** box, and click the **Save** button. If the streaming server is down for any reason, or you have entered an incorrect **Server** name or **Port** number, you will see the message _Can not connect to the streaming server_.
|
||||
|
|
|
@ -10,6 +10,7 @@ To increase the security of your server, you can enable encrypted access to the
|
|||
|
||||
One of the fastest, easiest, and cheapest ways to get an SSL certificate is through [Certbot](https://certbot.eff.org/), as created by the
|
||||
Electronic Frontier Foundation. There are some requirements for this process:
|
||||
|
||||
- you have an HTTP website (already installed and configured by default by the LibreTime installer) and
|
||||
- this website is open to the public internet (likely via. port forwarding if your computer is behind a firewall) and
|
||||
- the server is accessible to the public via. port 80
|
||||
|
@ -45,11 +46,11 @@ Head to your server's IP address to check to see that the installation worked.
|
|||
|
||||
### Deploying a self-signed certificate
|
||||
|
||||
The Debian/Ubuntu package *ssl-cert* creates a *snakeoil* certificate and key based on your server's hostname. This gratis certificate and key pair created under the */etc/ssl/certs*/ and */etc/ssl/private/* directories will not be recognised by users' browsers without manual intervention. You can install the *ssl-cert* package with the command:
|
||||
The Debian/Ubuntu package _ssl-cert_ creates a _snakeoil_ certificate and key based on your server's hostname. This gratis certificate and key pair created under the _/etc/ssl/certs_/ and _/etc/ssl/private/_ directories will not be recognised by users' browsers without manual intervention. You can install the _ssl-cert_ package with the command:
|
||||
|
||||
sudo apt-get install ssl-cert
|
||||
|
||||
If the hostname of your server does not match the domain name you intend to use with the LibreTime virtual host, the user's browser will present an additional security warning. You can set the domain name of the certificate by editing the file */usr/share/ssl-cert/ssleay.cnf* to replace the *@HostName@* variable:
|
||||
If the hostname of your server does not match the domain name you intend to use with the LibreTime virtual host, the user's browser will present an additional security warning. You can set the domain name of the certificate by editing the file _/usr/share/ssl-cert/ssleay.cnf_ to replace the _@HostName@_ variable:
|
||||
|
||||
commonName = @HostName@
|
||||
|
||||
|
@ -69,9 +70,9 @@ Next, edit the virtual host configuration for your LibreTime server to include a
|
|||
|
||||
sudo nano /etc/apache2/sites-available/airtime-vhost.conf
|
||||
|
||||
Using the following configuration for Apache 2.2 as a guide, replace *airtime.example.com* with the name of your server and *admin@example.com* with your email address. The older SSLv2 and SSLv3 protocols and SSL compression should be disabled, as they are generally believed to be insecure. You may wish to create a *ServerAlias* for users to access the administration interface over https:// if required.
|
||||
Using the following configuration for Apache 2.2 as a guide, replace _airtime.example.com_ with the name of your server and *admin@example.com* with your email address. The older SSLv2 and SSLv3 protocols and SSL compression should be disabled, as they are generally believed to be insecure. You may wish to create a _ServerAlias_ for users to access the administration interface over https:// if required.
|
||||
|
||||
On port 80, Apache's *alias* module is used to set a *Redirect permanent* for the login page. Optionally, access could be denied to all sites except *localhost* and any other LibreTime servers on your network, so that unencrypted communication between LibreTime components can continue.
|
||||
On port 80, Apache's _alias_ module is used to set a _Redirect permanent_ for the login page. Optionally, access could be denied to all sites except _localhost_ and any other LibreTime servers on your network, so that unencrypted communication between LibreTime components can continue.
|
||||
|
||||
```
|
||||
<VirtualHost *:443>
|
||||
|
@ -129,7 +130,7 @@ The first time you access an LibreTime server with a self-signed certificate ove
|
|||
|
||||

|
||||
|
||||
On the next page in Firefox, click the **Get Certificate** button to inspect the details of the self-signed certificate. If all is well, click the **Confirm Security Exception** button. You should now be able to proceed to the https:// login page.
|
||||
On the next page in Firefox, click the **Get Certificate** button to inspect the details of the self-signed certificate. If all is well, click the **Confirm Security Exception** button. You should now be able to proceed to the https:// login page.
|
||||
|
||||

|
||||
|
||||
|
|
|
@ -14,5 +14,5 @@ If any of the check mark icons in the **Status** column have changed to a red wa
|
|||
administrator for assistance. (The chapter [Troubleshooting](/docs/troubleshooting) contains some tips). LibreTime will
|
||||
do its best to restart any failing services, but sometimes manual intervention may be required; for example, in the case of hardware failure.
|
||||
|
||||
If you have run out of storage space, a LibreTime user with *admin* privileges could log in and delete media files
|
||||
If you have run out of storage space, a LibreTime user with _admin_ privileges could log in and delete media files
|
||||
that are no longer required from the **Library**. Alternatively, you could ask your system administrator to install additional storage capacity.
|
||||
|
|
|
@ -22,11 +22,10 @@ intended compatibility requirements as per semver.
|
|||
## Upgrading
|
||||
|
||||
> After your LibreTime server has been deployed for a few years, you may need to
|
||||
upgrade the GNU/Linux distribution that it runs in order to maintain security
|
||||
update support. If the upgrade does not go smoothly, it may cause significant
|
||||
downtime, so you should always have a fallback system available during the
|
||||
upgrade to ensure broadcast continuity.
|
||||
|
||||
> upgrade the GNU/Linux distribution that it runs in order to maintain security
|
||||
> update support. If the upgrade does not go smoothly, it may cause significant
|
||||
> downtime, so you should always have a fallback system available during the
|
||||
> upgrade to ensure broadcast continuity.
|
||||
|
||||
Before upgrading a production LibreTime server, you should back up both the PostgreSQL
|
||||
database and the storage server used by LibreTime. This is especially important if you have not already
|
||||
|
@ -42,6 +41,6 @@ There will be tested ways to switch from a LibreTime pre-release to a packaged v
|
|||
|
||||
Airtime 2.5.x versions support upgrading from version 2.3.0 and above. If you are
|
||||
running a production server with a version of Airtime prior to 2.3.0, you should
|
||||
upgrade it to version 2.3.0 before continuing.
|
||||
upgrade it to version 2.3.0 before continuing.
|
||||
|
||||
> **Note:** Airtime's *linked files* and *watched folders* features currently do not work in Libretime.
|
||||
> **Note:** Airtime's _linked files_ and _watched folders_ features currently do not work in Libretime.
|
||||
|
|
|
@ -5,12 +5,12 @@ category: interface
|
|||
---
|
||||
|
||||
> Note: if your Libretime server is accessible from the public Internet (ex. being hosted in a cloud VM)
|
||||
it is strongly recommended to create a second administrator account with a secure password and then
|
||||
delete the `admin` account.
|
||||
> it is strongly recommended to create a second administrator account with a secure password and then
|
||||
> delete the `admin` account.
|
||||
|
||||
## 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*. The difference between these user types is:
|
||||
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_. The difference between these user types is:
|
||||
|
||||
**Guests**
|
||||
|
||||
|
@ -58,4 +58,3 @@ side of its row in the table. You cannot delete your own user account, and usern
|
|||
|
||||
Users can update their own password, and their contact, language and time zone details, by clicking their username on the
|
||||
right side of the main menu bar, next to the **Logout** link.
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ With the above instructions LibreTime is installed on Ubuntu Xenial Xerus. The V
|
|||
offers the option to choose a different operation system according to you needs.
|
||||
|
||||
| OS | Command | Comment |
|
||||
| ------ | ------------------- | ------- |
|
||||
| ------------ | --------------------------- | ----------------------------------------------------------- |
|
||||
| Debian 10 | `vagrant up debian-buster` | Install on Debian Buster. |
|
||||
| Debian 9 | `vagrant up debian-stretch` | Install on current Debian Stretch. |
|
||||
| Ubuntu 18.04 | `vagrant up ubuntu-bionic` | Install on current Ubuntu Bionic Beaver. |
|
||||
|
|
|
@ -4,18 +4,18 @@ layout: article
|
|||
category: interface
|
||||
---
|
||||
|
||||
|
||||
<html>
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Ha3X6aYdY04" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</html>
|
||||
|
||||
### Adding a webstream
|
||||
A web stream URL and metadata can be added to the LibreTime library, so that a remote stream can be searched for and scheduled to be *pulled* into a show. For example, at the top of the hour your station may pull a news report from journalists working in another studio. This is a different concept from **Master Source** and **Show Source** remote streams which are *pushed* into the LibreTime playout schedule.
|
||||
|
||||
A web stream URL and metadata can be added to the LibreTime library, so that a remote stream can be searched for and scheduled to be _pulled_ into a show. For example, at the top of the hour your station may pull a news report from journalists working in another studio. This is a different concept from **Master Source** and **Show Source** remote streams which are _pushed_ into the LibreTime playout schedule.
|
||||
|
||||
To add a web stream, click the **+ New** button on the left side of the Webstreams page. Like a playlist, web streams in the Library can have a title and **Description**, which may help you find them in searches later.
|
||||
|
||||

|
||||
|
||||
The **Stream URL** setting must include the *port number* (such as 8000) and *mount point* (such as remote\_stream) of the remote stream, in addition to the streaming server name. A **Default Length** for the remote stream can also be set. If the stream is added at the end of a show which becomes overbooked as a result, it will be faded out when the show ends.
|
||||
The **Stream URL** setting must include the _port number_ (such as 8000) and _mount point_ (such as remote_stream) of the remote stream, in addition to the streaming server name. A **Default Length** for the remote stream can also be set. If the stream is added at the end of a show which becomes overbooked as a result, it will be faded out when the show ends.
|
||||
|
||||
Note: LibreTime checks the remote webstream's status upon editing stream settings, so an offline stream will result in an error. There are many tools such as [BUTT](https://danielnoethen.de/butt/) and [MIXXX](https://www.mixxx.org) that can be used to send a test stream to LibreTime can save it; read more [here](/docs/live-broadcast).
|
||||
|
|
|
@ -12,7 +12,7 @@ Before using the widgets, make sure Libretime's Public API is enabled in **Setti
|
|||
|
||||

|
||||
|
||||
> **Note:** Your Libretime instance needs to be accessible to the public *without the use of a VPN or SSH tunneling* in order for the widgets to work.
|
||||
> **Note:** Your Libretime instance needs to be accessible to the public _without the use of a VPN or SSH tunneling_ in order for the widgets to work.
|
||||
|
||||
## Streaming Player Widget
|
||||
|
||||
|
|
|
@ -20,9 +20,9 @@ paths:
|
|||
while interval will return shows in the next 48 hours
|
||||
schema:
|
||||
enum:
|
||||
- 'endofday'
|
||||
- 'interval'
|
||||
default: 'interval'
|
||||
- "endofday"
|
||||
- "interval"
|
||||
default: "interval"
|
||||
required: false
|
||||
- name: limit
|
||||
in: path
|
||||
|
@ -32,19 +32,22 @@ paths:
|
|||
default: 5
|
||||
required: false
|
||||
responses:
|
||||
'200':
|
||||
"200":
|
||||
description: 200 response for default request
|
||||
content:
|
||||
application/json:
|
||||
example: {
|
||||
example:
|
||||
{
|
||||
"env": "production",
|
||||
"schedulerTime": "2019-10-21 17:52:45",
|
||||
"previous": {
|
||||
"previous":
|
||||
{
|
||||
"starts": "2019-10-21 17:47:25.000000",
|
||||
"ends": "2019-10-21 17:52:13.000000",
|
||||
"type": "track",
|
||||
"name": "Disclosure - F For You (feat. Mary J. Blige)",
|
||||
"metadata": {
|
||||
"metadata":
|
||||
{
|
||||
"id": 8,
|
||||
"name": "",
|
||||
"mime": "audio/mp3",
|
||||
|
@ -109,16 +112,18 @@ paths:
|
|||
"filesize": 9271626,
|
||||
"description": null,
|
||||
"artwork": "imported/1/artwork/01-F-For-You-feat.-Mary-J.-Blige",
|
||||
"artwork_url": "http://localhost:8080/api/track?id=8&return=artwork"
|
||||
}
|
||||
"artwork_url": "http://localhost:8080/api/track?id=8&return=artwork",
|
||||
},
|
||||
"current": {
|
||||
},
|
||||
"current":
|
||||
{
|
||||
"starts": "2019-10-21 17:52:13",
|
||||
"ends": "2019-10-21 17:56:27",
|
||||
"type": "track",
|
||||
"name": "Armin van Buuren - Ping Pong",
|
||||
"media_item_played": true,
|
||||
"metadata": {
|
||||
"metadata":
|
||||
{
|
||||
"id": 2,
|
||||
"name": "",
|
||||
"mime": "audio/mp3",
|
||||
|
@ -183,16 +188,18 @@ paths:
|
|||
"filesize": 6136238,
|
||||
"description": null,
|
||||
"artwork": "imported/1/artwork/2-18 Armin van Buuren - Ping Pong",
|
||||
"artwork_url": "http://localhost:8080/api/track?id=2&return=artwork"
|
||||
"artwork_url": "http://localhost:8080/api/track?id=2&return=artwork",
|
||||
},
|
||||
"record": "0"
|
||||
"record": "0",
|
||||
},
|
||||
"next": {
|
||||
"next":
|
||||
{
|
||||
"starts": "2019-10-21 17:56:27.000000",
|
||||
"ends": "2019-10-21 18:00:28.000000",
|
||||
"type": "track",
|
||||
"name": "Bastille - No Angels (feat. Ella)",
|
||||
"metadata": {
|
||||
"metadata":
|
||||
{
|
||||
"id": 4,
|
||||
"name": "",
|
||||
"mime": "audio/mp3",
|
||||
|
@ -256,10 +263,11 @@ paths:
|
|||
"hidden": false,
|
||||
"filesize": 3858688,
|
||||
"description": null,
|
||||
"artwork": ""
|
||||
}
|
||||
"artwork": "",
|
||||
},
|
||||
"currentShow": [
|
||||
},
|
||||
"currentShow":
|
||||
[
|
||||
{
|
||||
"start_timestamp": "2019-10-21 17:20:00",
|
||||
"end_timestamp": "2019-10-21 18:31:00",
|
||||
|
@ -271,10 +279,11 @@ paths:
|
|||
"url": "https://example.com",
|
||||
"image_path": "",
|
||||
"starts": "2019-10-21 17:20:00",
|
||||
"ends": "2019-10-21 18:31:00"
|
||||
}
|
||||
"ends": "2019-10-21 18:31:00",
|
||||
},
|
||||
],
|
||||
"nextShow": [
|
||||
"nextShow":
|
||||
[
|
||||
{
|
||||
"id": 2,
|
||||
"instance_id": 2,
|
||||
|
@ -287,13 +296,13 @@ paths:
|
|||
"ends": "2019-10-22 10:45:00",
|
||||
"record": 0,
|
||||
"image_path": "",
|
||||
"type": "show"
|
||||
}
|
||||
"type": "show",
|
||||
},
|
||||
],
|
||||
"source_enabled": "Scheduled",
|
||||
"timezone": "UTC",
|
||||
"timezoneOffset": "0",
|
||||
"AIRTIME_API_VERSION": "1.1"
|
||||
"AIRTIME_API_VERSION": "1.1",
|
||||
}
|
||||
/live-info-v2:
|
||||
get:
|
||||
|
@ -325,25 +334,30 @@ paths:
|
|||
default: "$server_timezone"
|
||||
required: false
|
||||
responses:
|
||||
'200':
|
||||
"200":
|
||||
description: 200 response for default request
|
||||
content:
|
||||
application/json:
|
||||
example: {
|
||||
"station": {
|
||||
example:
|
||||
{
|
||||
"station":
|
||||
{
|
||||
"env": "production",
|
||||
"schedulerTime": "2019-10-21 17:29:40",
|
||||
"source_enabled": "Scheduled",
|
||||
"timezone": "UTC",
|
||||
"AIRTIME_API_VERSION": "1.1"
|
||||
"AIRTIME_API_VERSION": "1.1",
|
||||
},
|
||||
"tracks": {
|
||||
"previous": {
|
||||
"tracks":
|
||||
{
|
||||
"previous":
|
||||
{
|
||||
"starts": "2019-10-21 17:24:45",
|
||||
"ends": "2019-10-21 17:28:46",
|
||||
"type": "track",
|
||||
"name": "Bastille - No Angels (feat. Ella)",
|
||||
"metadata": {
|
||||
"metadata":
|
||||
{
|
||||
"id": 4,
|
||||
"name": "",
|
||||
"mime": "audio/mp3",
|
||||
|
@ -407,16 +421,18 @@ paths:
|
|||
"hidden": false,
|
||||
"filesize": 3858688,
|
||||
"description": null,
|
||||
"artwork": ""
|
||||
}
|
||||
"artwork": "",
|
||||
},
|
||||
},
|
||||
"current": null,
|
||||
"next": {
|
||||
"next":
|
||||
{
|
||||
"starts": "2019-10-21 17:32:49",
|
||||
"ends": "2019-10-21 17:36:44",
|
||||
"type": "track",
|
||||
"name": "Bob Marley - Could You Be Loved",
|
||||
"metadata": {
|
||||
"metadata":
|
||||
{
|
||||
"id": 14,
|
||||
"name": "",
|
||||
"mime": "audio/mp3",
|
||||
|
@ -480,13 +496,15 @@ paths:
|
|||
"hidden": false,
|
||||
"filesize": 3773820,
|
||||
"description": null,
|
||||
"artwork": ""
|
||||
}
|
||||
}
|
||||
"artwork": "",
|
||||
},
|
||||
"shows": {
|
||||
},
|
||||
},
|
||||
"shows":
|
||||
{
|
||||
"previous": [],
|
||||
"current": {
|
||||
"current":
|
||||
{
|
||||
"name": "Show 1",
|
||||
"description": "A show",
|
||||
"genre": "HipHop",
|
||||
|
@ -496,9 +514,10 @@ paths:
|
|||
"url": "https://example.com",
|
||||
"image_path": "",
|
||||
"starts": "2019-10-21 17:20:00",
|
||||
"ends": "2019-10-21 18:31:00"
|
||||
"ends": "2019-10-21 18:31:00",
|
||||
},
|
||||
"next": [
|
||||
"next":
|
||||
[
|
||||
{
|
||||
"name": "Reading",
|
||||
"description": "A reading of After the EMP by Harley Tate",
|
||||
|
@ -509,15 +528,16 @@ paths:
|
|||
"url": "https://example.com",
|
||||
"image_path": "",
|
||||
"starts": "2019-10-21 18:31:00",
|
||||
"ends": "2019-10-22 10:45:00"
|
||||
}
|
||||
]
|
||||
"ends": "2019-10-22 10:45:00",
|
||||
},
|
||||
"sources": {
|
||||
],
|
||||
},
|
||||
"sources":
|
||||
{
|
||||
"livedj": "off",
|
||||
"masterdj": "off",
|
||||
"scheduledplay": "on"
|
||||
}
|
||||
"scheduledplay": "on",
|
||||
},
|
||||
}
|
||||
/week-info:
|
||||
get:
|
||||
|
@ -528,12 +548,14 @@ paths:
|
|||
description: The API key to use for authentication
|
||||
required: false
|
||||
responses:
|
||||
'200':
|
||||
"200":
|
||||
description: 200 response for default request
|
||||
content:
|
||||
application/json:
|
||||
example: {
|
||||
"monday": [
|
||||
example:
|
||||
{
|
||||
"monday":
|
||||
[
|
||||
{
|
||||
"start_timestamp": "2019-10-21 17:20:00",
|
||||
"end_timestamp": "2019-10-21 18:31:00",
|
||||
|
@ -546,7 +568,7 @@ paths:
|
|||
"url": "https://example.com",
|
||||
"image_path": "",
|
||||
"starts": "2019-10-21 17:20:00",
|
||||
"ends": "2019-10-21 18:31:00"
|
||||
"ends": "2019-10-21 18:31:00",
|
||||
},
|
||||
{
|
||||
"start_timestamp": "2019-10-21 18:31:00",
|
||||
|
@ -560,8 +582,8 @@ paths:
|
|||
"url": "https://example.com",
|
||||
"image_path": "",
|
||||
"starts": "2019-10-21 18:31:00",
|
||||
"ends": "2019-10-22 10:45:00"
|
||||
}
|
||||
"ends": "2019-10-22 10:45:00",
|
||||
},
|
||||
],
|
||||
"tuesday": [],
|
||||
"wednesday": [],
|
||||
|
@ -576,7 +598,7 @@ paths:
|
|||
"nextfriday": [],
|
||||
"nextsaturday": [],
|
||||
"nextsunday": [],
|
||||
"AIRTIME_API_VERSION": "1.1"
|
||||
"AIRTIME_API_VERSION": "1.1",
|
||||
}
|
||||
/station-metadata:
|
||||
get:
|
||||
|
@ -639,11 +661,12 @@ paths:
|
|||
description: The show instance ID
|
||||
required: false
|
||||
responses:
|
||||
'200':
|
||||
"200":
|
||||
description: The 200 default response
|
||||
content:
|
||||
application/json:
|
||||
example: [
|
||||
example:
|
||||
[
|
||||
{
|
||||
"starts": "2019-10-21 18:19:07",
|
||||
"ends": "2019-10-21 18:23:55",
|
||||
|
@ -651,7 +674,7 @@ paths:
|
|||
"instance_id": 1,
|
||||
"track_title": "F For You (feat. Mary J. Blige)",
|
||||
"artist_name": "Disclosure",
|
||||
"checkbox": ""
|
||||
"checkbox": "",
|
||||
},
|
||||
{
|
||||
"starts": "2019-10-21 17:20:31",
|
||||
|
@ -660,7 +683,7 @@ paths:
|
|||
"instance_id": 1,
|
||||
"track_title": "Ping Pong",
|
||||
"artist_name": "Armin van Buuren",
|
||||
"checkbox": ""
|
||||
"checkbox": "",
|
||||
},
|
||||
]
|
||||
/shows:
|
||||
|
@ -676,11 +699,12 @@ paths:
|
|||
description: The ID of the show
|
||||
required: false
|
||||
response:
|
||||
'200':
|
||||
"200":
|
||||
description: The response with a show_id of 1
|
||||
content:
|
||||
application/json:
|
||||
example: [
|
||||
example:
|
||||
[
|
||||
{
|
||||
"name": "Show 1",
|
||||
"id": 1,
|
||||
|
@ -692,8 +716,8 @@ paths:
|
|||
"linked": false,
|
||||
"has_autoplaylist": false,
|
||||
"autoplaylist_id": null,
|
||||
"autoplaylist_repeat": false
|
||||
}
|
||||
"autoplaylist_repeat": false,
|
||||
},
|
||||
]
|
||||
/show-tracks:
|
||||
get:
|
||||
|
@ -708,11 +732,12 @@ paths:
|
|||
description: The ID of the show
|
||||
required: true
|
||||
response:
|
||||
'200':
|
||||
"200":
|
||||
description: The response with a instance_id of 1
|
||||
content:
|
||||
application/json:
|
||||
example: [
|
||||
example:
|
||||
[
|
||||
{
|
||||
"title": "Ping Pong",
|
||||
"artist": "Armin van Buuren",
|
||||
|
@ -721,7 +746,7 @@ paths:
|
|||
"mime": "audio/mp3",
|
||||
"starts": "2019-10-21 17:20:31",
|
||||
"length": "4:14.2",
|
||||
"file_id": 2
|
||||
"file_id": 2,
|
||||
},
|
||||
{
|
||||
"title": "No Angels (feat. Ella)",
|
||||
|
@ -731,8 +756,8 @@ paths:
|
|||
"mime": "audio/mp3",
|
||||
"starts": "2019-10-21 17:24:45",
|
||||
"length": "4:00.8",
|
||||
"file_id": 4
|
||||
}
|
||||
"file_id": 4,
|
||||
},
|
||||
]
|
||||
/show-schedules:
|
||||
get:
|
||||
|
@ -759,11 +784,12 @@ paths:
|
|||
description: The timezone that the times are in
|
||||
required: false
|
||||
response:
|
||||
'200':
|
||||
"200":
|
||||
description: The response with a instance_id of 1
|
||||
content:
|
||||
application/json:
|
||||
example: [
|
||||
example:
|
||||
[
|
||||
{
|
||||
"starts": "2019-10-21 17:20:00",
|
||||
"ends": "2019-10-21 18:31:00",
|
||||
|
@ -783,8 +809,8 @@ paths:
|
|||
"instance_description": "",
|
||||
"created": "2019-10-21 17:20:22",
|
||||
"last_scheduled": "2019-10-21 17:20:50",
|
||||
"time_filled": "01:14:39.265872"
|
||||
}
|
||||
"time_filled": "01:14:39.265872",
|
||||
},
|
||||
]
|
||||
/show-logo:
|
||||
get:
|
||||
|
@ -820,11 +846,12 @@ paths:
|
|||
- artwork
|
||||
required: true
|
||||
responses:
|
||||
'200':
|
||||
"200":
|
||||
description: The 200 response
|
||||
content:
|
||||
application/json:
|
||||
example: {
|
||||
example:
|
||||
{
|
||||
"MDATA_KEY_FILEPATH": "imported\/1\/Armin van Buuren\/Another You (feat. Mr. Probz)\/01 Another You (feat. Mr. Probz).mp3",
|
||||
"MDATA_KEY_DIRECTORY": 1,
|
||||
"MDATA_KEY_TITLE": "Another You (feat. Mr. Probz)",
|
||||
|
@ -853,13 +880,13 @@ paths:
|
|||
"MDATA_KEY_OWNER_ID": 1,
|
||||
"MDATA_KEY_CUE_IN": "00:00:00",
|
||||
"MDATA_KEY_CUE_OUT": "00:03:19.183673",
|
||||
"MDATA_KEY_ARTWORK": "imported\/1\/artwork\/01 Another You (feat. Mr. Probz)"
|
||||
"MDATA_KEY_ARTWORK": "imported\/1\/artwork\/01 Another You (feat. Mr. Probz)",
|
||||
}
|
||||
/stream-m3u:
|
||||
get:
|
||||
summary: Returns m3u playlist file for the station's output stream
|
||||
response:
|
||||
'200':
|
||||
"200":
|
||||
description: The M3U file for the stream
|
||||
content: application/x-mpegurl
|
||||
/version:
|
||||
|
@ -871,14 +898,12 @@ paths:
|
|||
description: The API key to use for authentication
|
||||
required: false
|
||||
responses:
|
||||
'200':
|
||||
"200":
|
||||
description: 200 response
|
||||
content:
|
||||
application/json:
|
||||
example: {
|
||||
"airtime_version": "3.0.0~alpha.5",
|
||||
"api_version": "1.1"
|
||||
}
|
||||
example:
|
||||
{ "airtime_version": "3.0.0~alpha.5", "api_version": "1.1" }
|
||||
/recorded-shows:
|
||||
get:
|
||||
summary: BROKEN - Unclear what this did, not implemented in ApiController
|
||||
|
@ -1170,35 +1195,33 @@ paths:
|
|||
description: The API key to use for authentication
|
||||
required: true
|
||||
responses:
|
||||
'200':
|
||||
"200":
|
||||
description: 200 response for default request
|
||||
content:
|
||||
application/json:
|
||||
example: [
|
||||
{
|
||||
"id": 9,
|
||||
"fp": "/srv/airtime/stor/"
|
||||
},
|
||||
example:
|
||||
[
|
||||
{ "id": 9, "fp": "/srv/airtime/stor/" },
|
||||
{
|
||||
"id": 12,
|
||||
"fp": "/srv/airtime/stor/imported/1/Sam Smith Feat John Legend/The Official Uk Top 40 Singles Chart 03-22-2015/01 Sam Smith Feat John Legend - Lay Me Down.mp3"
|
||||
"fp": "/srv/airtime/stor/imported/1/Sam Smith Feat John Legend/The Official Uk Top 40 Singles Chart 03-22-2015/01 Sam Smith Feat John Legend - Lay Me Down.mp3",
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"fp": "/srv/airtime/stor/imported/1/Mumford & Sons/Wilder Mind [ Deluxe Edition ]/01 - Tompkins Square Park.mp3"
|
||||
"fp": "/srv/airtime/stor/imported/1/Mumford & Sons/Wilder Mind [ Deluxe Edition ]/01 - Tompkins Square Park.mp3",
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"fp": "/srv/airtime/stor/imported/1/Bastille/All This Bad Blood/1-02 Things We Lost in the Fire.mp3"
|
||||
"fp": "/srv/airtime/stor/imported/1/Bastille/All This Bad Blood/1-02 Things We Lost in the Fire.mp3",
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"fp": "/srv/airtime/stor/imported/1/Armin van Buuren/Another You (feat. Mr. Probz)/01 Another You (feat. Mr. Probz).mp3"
|
||||
"fp": "/srv/airtime/stor/imported/1/Armin van Buuren/Another You (feat. Mr. Probz)/01 Another You (feat. Mr. Probz).mp3",
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"fp": "/srv/airtime/stor/imported/1/Harley Tate/Harley Tate - After the EMP 01 - After the EMP/Harley Tate - After the EMP 01 - After the EMP.mp3"
|
||||
}
|
||||
"fp": "/srv/airtime/stor/imported/1/Harley Tate/Harley Tate - After the EMP 01 - After the EMP/Harley Tate - After the EMP 01 - After the EMP.mp3",
|
||||
},
|
||||
]
|
||||
/reload-metadata-group:
|
||||
get:
|
||||
|
|
|
@ -6,11 +6,11 @@ linktext: Get Libretime
|
|||
img: /img/radio-unsplash.jpg
|
||||
photocredit: Top photo by <a href="https://unsplash.com/@leowieling?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Leo Wieling</a> on <a href="https://unsplash.com/s/photos/radio?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
|
||||
actions:
|
||||
- title: Stable Release
|
||||
- title: Stable Release
|
||||
text: The best so far. Just extract and run <code>sudo bash install -fiap</code>.
|
||||
linkto: https://github.com/LibreTime/libretime/releases/download/3.0.0-alpha.8/libretime-3.0.0-alpha.8.tar.gz
|
||||
linktext: Download 3.0-alpha-8
|
||||
- title: Rolling Commits
|
||||
- title: Rolling Commits
|
||||
text: Want the latest and greatest? Install from the source code.
|
||||
linkto: /install
|
||||
linktext: Install from Source
|
||||
|
|
Loading…
Reference in New Issue