Format code using prettier

This commit is contained in:
jo 2021-05-27 16:20:34 +02:00
parent 65f7b41487
commit efe4fa027e
47 changed files with 1023 additions and 992 deletions

View File

@ -1,10 +1,9 @@
--- ---
name: Bug report name: Bug report
about: Create a report to help us improve about: Create a report to help us improve
title: '' title: ""
labels: bug labels: bug
assignees: '' assignees: ""
--- ---
**Describe the bug** **Describe the bug**
@ -12,6 +11,7 @@ A clear and concise description of what the bug is.
**To Reproduce** **To Reproduce**
Steps to reproduce the behavior: Steps to reproduce the behavior:
1. Go to '...' 1. Go to '...'
2. Click on '....' 2. Click on '....'
3. Scroll down to '....' 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. Version from the upgrade popup if you can reach it.
**Installation method:** **Installation method:**
- OS: [e.g. Ubuntu]
- OS Version [e.g. 16.04.5 LTS (Xenial Xerus)] - OS: [e.g. Ubuntu]
- Method: [e.g. `./install` script or packages] - OS Version [e.g. 16.04.5 LTS (Xenial Xerus)]
- Details: [how did you call the install script, where did you get packages from] - Method: [e.g. `./install` script or packages]
- Details: [how did you call the install script, where did you get packages from]
**Screenshots** **Screenshots**
If applicable, add screenshots to help explain your problem. If applicable, add screenshots to help explain your problem.
**Client (please complete the following information if applicable):** **Client (please complete the following information if applicable):**
- OS: [e.g. Fedora]
- Browser [e.g. chrome, safari] - OS: [e.g. Fedora]
- Version [e.g. 22] - Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Additional context** **Additional context**
Add any other context about the problem here. Add any other context about the problem here.

View File

@ -1,10 +1,9 @@
--- ---
name: Feature request name: Feature request
about: Suggest an idea for this project about: Suggest an idea for this project
title: '' title: ""
labels: feature-request labels: feature-request
assignees: '' assignees: ""
--- ---
**Is your feature request related to a problem? Please describe.** **Is your feature request related to a problem? Please describe.**

6
.github/RELEASE.md vendored
View File

@ -86,8 +86,8 @@ storage_backend=file
You can then remove the files and the symlink. You can then remove the files and the symlink.
rm /etc/airtime/cloud_storage.conf \ rm /etc/airtime/cloud_storage.conf \
/etc/airtime/rabbitmq-analyzer.ini \ /etc/airtime/rabbitmq-analyzer.ini \
/etc/airtime/production /etc/airtime/production
While you're at you may also want to remove the amazon_s3 section if it was in any of the files. While you're at you may also want to remove the amazon_s3 section if it was in any of the files.
@ -174,4 +174,4 @@ sudo update-locale LANGUAGE="en_US.UTF-8"
### Lack of i18n toolchain is disturbing ### Lack of i18n toolchain is disturbing
Some translations might miss the tarball. They didn't get lost, but the build chain needs fixing. Work is in #301 and additional work is needed as it has become clear that we probably want to support bidirectional translation syncing with zanata. Some translations might miss the tarball. They didn't get lost, but the build chain needs fixing. Work is in #301 and additional work is needed as it has become clear that we probably want to support bidirectional translation syncing with zanata.

1
.github/lock.yml vendored
View File

@ -25,6 +25,5 @@ lockComment: >
# Assign `resolved` as the reason for locking. Set to `false` to disable # Assign `resolved` as the reason for locking. Set to `false` to disable
setLockReason: true setLockReason: true
# Limit to only `issues` or `pulls` # Limit to only `issues` or `pulls`
# only: issues # only: issues

View File

@ -2,11 +2,19 @@ name: Python and PHP Tests
on: on:
push: push:
paths-ignore: paths-ignore:
- 'docs/**' - "docs/**"
pull_request: pull_request:
types: [opened, ready_for_review, review_requested, edited, reopened, synchronize] types:
[
opened,
ready_for_review,
review_requested,
edited,
reopened,
synchronize,
]
paths-ignore: paths-ignore:
- 'docs/**' - "docs/**"
workflow_dispatch: workflow_dispatch:
jobs: jobs:
@ -19,7 +27,7 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions/setup-python@v2 - uses: actions/setup-python@v2
with: with:
python-version: '3.6' python-version: "3.6"
- name: Setup PostgreSQL - name: Setup PostgreSQL
run: | run: |
sudo systemctl start postgresql.service sudo systemctl start postgresql.service
@ -31,10 +39,9 @@ jobs:
- name: Setup PHP with specific version - name: Setup PHP with specific version
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: '7.2' php-version: "7.2"
- name: Install prerequisites - name: Install prerequisites
run: run: sudo -E ./.github/scripts/install-bionic.sh
sudo -E ./.github/scripts/install-bionic.sh
- name: Run Python tests - name: Run Python tests
run: | run: |
sudo ./.github/scripts/python-pkg-install.sh sudo ./.github/scripts/python-pkg-install.sh
@ -62,7 +69,7 @@ jobs:
- name: Setup PHP with specific version - name: Setup PHP with specific version
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: '7.0' php-version: "7.0"
- name: Install prerequisites - name: Install prerequisites
run: sudo -E ./.github/scripts/install-xenial.sh run: sudo -E ./.github/scripts/install-xenial.sh
- name: Run PHP tests - name: Run PHP tests

View File

@ -1,33 +1,33 @@
# Contributing to LibreTime # Contributing to LibreTime
First and foremost, thank you! We appreciate that you want to First and foremost, thank you! We appreciate that you want to
contribute to LibreTime, your time is valuable, and your contribute to LibreTime, your time is valuable, and your
contributions mean a lot to us. contributions mean a lot to us.
**What does "contributing" mean?** **What does "contributing" mean?**
Creating an issue is the simplest form of contributing to a Creating an issue is the simplest form of contributing to a
project. But there are many ways to contribute, including project. But there are many ways to contribute, including
the following: the following:
* Updating or correcting documentation - Updating or correcting documentation
* Feature requests - Feature requests
* Bug reports - Bug reports
Before opening an issue, please: 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) - 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/) - 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) - [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 - 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 - 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: For bug reports, please provide the following details:
* **version**: what version of LibreTime you were using when you experienced the bug? - **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) - **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 - **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 - **error messages**: please paste any error reports into the issue or a gist
Please wrap all code and error messages in [markdown code Please wrap all code and error messages in [markdown code
fences](https://help.github.com/articles/creating-and-highlighting-code-blocks/). fences](https://help.github.com/articles/creating-and-highlighting-code-blocks/).

View File

@ -15,7 +15,7 @@ We are currently ramping up development on this repository.
Check out the [documentation](http://libretime.org) for more information and Check out the [documentation](http://libretime.org) for more information and
start broadcasting! start broadcasting!
Please note that LibreTime is released with a [Contributor Code Please note that LibreTime is released with a [Contributor Code
of Conduct](https://github.com/LibreTime/code-of-conduct/blob/master/CODE_OF_CONDUCT.md). of Conduct](https://github.com/LibreTime/code-of-conduct/blob/master/CODE_OF_CONDUCT.md).
By participating in this project you agree to abide by its terms. By participating in this project you agree to abide by its terms.
@ -23,12 +23,12 @@ Please submit enhancements, bugfixes or comments via GitHub.
## Development Process ## Development Process
The LibreTime follows the standardized [Collective Code Construction The LibreTime follows the standardized [Collective Code Construction
Contract (C4)](https://rfc.zeromq.org/spec:42/C4/). Its abstract is Contract (C4)](https://rfc.zeromq.org/spec:42/C4/). Its abstract is
provided here. provided here.
> C4 provides a standard process for contributing, evaluating and > C4 provides a standard process for contributing, evaluating and
> discussing improvements on software projects. It defines specific > discussing improvements on software projects. It defines specific
> technical requirements for projects like a style guide, unit tests, > technical requirements for projects like a style guide, unit tests,
> git and similar platforms. It also establishes different personas > git and similar platforms. It also establishes different personas
> for projects, with clear and distinct duties. C4 specifies a process > for projects, with clear and distinct duties. C4 specifies a process
@ -100,7 +100,7 @@ your organization. Your logo will show up here with a link to your website.
LibreTime is free software: you can redistribute it and/or LibreTime is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public modify it under the terms of the GNU Affero General Public
License as published by the Free Software Foundation, License as published by the Free Software Foundation,
version 3 of the License. version 3 of the License.
## Copyright ## Copyright
@ -109,6 +109,6 @@ Copyright (c) 2011-2017 Sourcefabric z.ú.
Copyright (c) 2017 LibreTime Community Copyright (c) 2017 LibreTime Community
Please refer to the original [README](README), Please refer to the original [README](README),
[CREDITS](CREDITS) and [LICENSE_3RD_PARTY](LICENSE_3RD_PARTY) [CREDITS](CREDITS) and [LICENSE_3RD_PARTY](LICENSE_3RD_PARTY)
for more information. for more information.

View File

@ -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). API supersedes the [PHP API](../airtime_mvc/application/controllers/ApiController.php).
## Deploying ## Deploying
Deploying in a production environment is done in the [`install`](../install) 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 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 development images too. This method does not automatically reflect changes to
@ -18,6 +19,7 @@ Endpoint exploration and documentation is available from
instance. instance.
### Development ### Development
For a live reloading version within Vagrant: 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 ## 3rd Party Licences
`libretimeapi/tests/resources/song.mp3`: Steps - Tears On The Dancefloor (Album `libretimeapi/tests/resources/song.mp3`: Steps - Tears On The Dancefloor (Album
Teaser) by mceyedol. Downloaded from Teaser) by mceyedol. Downloaded from
https://soundcloud.com/mceyedol/steps-tears-on-the-dancefloor-album-teaser https://soundcloud.com/mceyedol/steps-tears-on-the-dancefloor-album-teaser

View File

@ -1,10 +1,10 @@
# Maintainer: Zachary Klosko (kloskoz@vcu.edu) # Maintainer: Zachary Klosko (kloskoz@vcu.edu)
hostname: libretimeTest hostname: libretimeTest
timezone: America/New York # change as needed timezone: America/New York # change as needed
ntp: ntp:
pools: ['north-america.pool.ntp.org'] pools: ["north-america.pool.ntp.org"]
servers: ['0.north-america.pool.ntp.org', '0.pool.ntp.org'] servers: ["0.north-america.pool.ntp.org", "0.pool.ntp.org"]
password: hackme password: hackme
chpasswd: { expire: False } chpasswd: { expire: False }
@ -17,4 +17,4 @@ apt_upgrade: true
# Clone repo on init (Change repo url if needed) # Clone repo on init (Change repo url if needed)
# If you need to clone a branch, use git clone --branch branchname repourl # If you need to clone a branch, use git clone --branch branchname repourl
runcmd: runcmd:
- git clone https://github.com/LibreTime/libretime.git - git clone https://github.com/LibreTime/libretime.git

View File

@ -1,45 +1,50 @@
{ {
"autoload": { "autoload": {
"classmap": ["airtime_mvc/application/"] "classmap": [
}, "airtime_mvc/application/"
"autoload-dev": { ]
"classmap": ["airtime_mvc/tests/application/", "vendor/phpunit/dbunit/src/"] },
}, "autoload-dev": {
"require": { "classmap": [
"james-heinrich/getid3": "dev-master", "airtime_mvc/tests/application/",
"propel/propel1": "1.7.0-stable", "vendor/phpunit/dbunit/src/"
"aws/aws-sdk-php": "2.7.9", ]
"raven/raven": "0.12.0", },
"massivescale/celery-php": "2.0.*@dev", "require": {
"simplepie/simplepie": "dev-master", "james-heinrich/getid3": "dev-master",
"zf1s/zend-application": "^1.12", "propel/propel1": "1.7.0-stable",
"composer/semver": "^1.4", "aws/aws-sdk-php": "2.7.9",
"php-amqplib/php-amqplib": "^2.6", "raven/raven": "0.12.0",
"zf1s/zend-acl": "^1.12", "massivescale/celery-php": "2.0.*@dev",
"zf1s/zend-session": "^1.12", "simplepie/simplepie": "dev-master",
"zf1s/zend-navigation": "^1.12", "zf1s/zend-application": "^1.12",
"zf1s/zend-controller": "^1.12", "composer/semver": "^1.4",
"zf1s/zend-log": "^1.12", "php-amqplib/php-amqplib": "^2.6",
"zf1s/zend-version": "^1.12", "zf1s/zend-acl": "^1.12",
"zf1s/zend-rest": "dev-master@dev", "zf1s/zend-session": "^1.12",
"zf1s/zend-layout": "^1.12", "zf1s/zend-navigation": "^1.12",
"zf1s/zend-loader": "dev-master@dev", "zf1s/zend-controller": "^1.12",
"zf1s/zend-auth": "^1.12", "zf1s/zend-log": "^1.12",
"zf1s/zend-filter": "^1.12", "zf1s/zend-version": "^1.12",
"zf1s/zend-json": "^1.12", "zf1s/zend-rest": "dev-master@dev",
"zf1s/zend-form": "^1.12", "zf1s/zend-layout": "^1.12",
"zf1s/zend-db": "^1.12", "zf1s/zend-loader": "dev-master@dev",
"zf1s/zend-file": "^1.12", "zf1s/zend-auth": "^1.12",
"zf1s/zend-file-transfer": "^1.12", "zf1s/zend-filter": "^1.12",
"zf1s/zend-http": "^1.12", "zf1s/zend-json": "^1.12",
"zf1s/zend-date": "^1.12", "zf1s/zend-form": "^1.12",
"zf1s/zend-view": "dev-master@dev", "zf1s/zend-db": "^1.12",
"zf1s/zend-validate": "dev-master@dev", "zf1s/zend-file": "^1.12",
"zf1s/zend-cache": "dev-master@dev" "zf1s/zend-file-transfer": "^1.12",
}, "zf1s/zend-http": "^1.12",
"require-dev": { "zf1s/zend-date": "^1.12",
"phpunit/phpunit": "^4.3", "zf1s/zend-view": "dev-master@dev",
"phpunit/dbunit": "^2.0", "zf1s/zend-validate": "dev-master@dev",
"zf1s/zend-test": "^1.12" "zf1s/zend-cache": "dev-master@dev"
} },
"require-dev": {
"phpunit/phpunit": "^4.3",
"phpunit/dbunit": "^2.0",
"zf1s/zend-test": "^1.12"
}
} }

View File

@ -8,4 +8,4 @@ photocredit: Top photo by <a href="https://unsplash.com/@shotaspot?utm_source=un
# DEAD AIR # DEAD AIR
Sorry... there's nothing there. Sorry... there's nothing there.

View File

@ -1,4 +1,4 @@
title: LibreTime title: LibreTime
description: An open source radio automation server made for (and by) low-power FM stations and the rest of us. description: An open source radio automation server made for (and by) low-power FM stations and the rest of us.
logo: 144px.png logo: 144px.png
baseurl: "" # The subpath of your site, e.g. /blog baseurl: "" # The subpath of your site, e.g. /blog
@ -9,7 +9,7 @@ includes_dir: _includes
favicon: favicon.ico favicon: favicon.ico
exclude: ['README'] exclude: ["README"]
# Collections Settings # Collections Settings
collections: collections:
@ -20,4 +20,3 @@ collections:
# Build settings # Build settings
plugins: plugins:
- kramdown - kramdown

View File

@ -4,7 +4,7 @@ title: LibreTime API Usage
category: dev 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. 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.
@ -14,14 +14,14 @@ The format of API requests is:
where api-action is the type of request and XXXXXX is the secret API key. Available actions include: where api-action is the type of request and XXXXXX is the secret API key. Available actions include:
- on-air-light - return true if the station is on air - on-air-light - return true if the station is on air
- status - get the status of LibreTime components and resource usage - status - get the status of LibreTime components and resource usage
- version - returns the version of LibreTime installed - version - returns the version of LibreTime installed
- get-files-without-silan-value - list files for which silence detection has not yet been performed - get-files-without-silan-value - list files for which silence detection has not yet been performed
- get-stream-setting - gets the settings of LibreTime output streams - get-stream-setting - gets the settings of LibreTime output streams
- get-stream-parameters - gets the parameters 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"}, {"keyname":"s1_type","value":"ogg","type":"string"},
@ -38,12 +38,12 @@ For example, using the action *get-stream-setting* returns the following output
{"keyname":"s1_genre","value":"Screamo","type":"string"}, {"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 - 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 - get-files-without-replay-gain - list files in the specified directory for which ReplayGain has not been calculated yet
For example, using a request such as: For example, using a request such as:

View File

@ -5,11 +5,11 @@ category: admin
--- ---
> At the moment, there is not a way to automatically restore a Libretime backup. > 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 > 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). > 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: Run it using:
``` ```
@ -27,7 +27,7 @@ crontab with `sudo crontab -e`:
> For more information on how Cron works, check out [this Redhat guide](https://www.redhat.com/sysadmin/automate-linux-tasks-cron). > For more information on how Cron works, check out [this Redhat guide](https://www.redhat.com/sysadmin/automate-linux-tasks-cron).
If you wish to deploy your own backup solution, the following files and folders need to If you wish to deploy your own backup solution, the following files and folders need to
be backed up. be backed up.
``` ```
@ -43,11 +43,11 @@ be backed up.
liquidsoap.cfg - The main configuration file for Liquidsoap liquidsoap.cfg - The main configuration file for Liquidsoap
``` ```
In addition, you should keep a copy of the database current to the backup. The below code In addition, you should keep a copy of the database current to the backup. The below code
can be used to export the Libretime database to a file. can be used to export the Libretime database to a file.
``` ```
sudo -u postgres pg_dumpall filename sudo -u postgres pg_dumpall filename
# or to a zipped archive # or to a zipped archive
sudo -u postgres pg_dumpall | gzip -c > archivename.gz sudo -u postgres pg_dumpall | gzip -c > archivename.gz
``` ```
@ -58,9 +58,8 @@ the backup server also contains an LibreTime installation, it should be possible
to switch playout to this second machine relatively quickly, in case of a to switch playout to this second machine relatively quickly, in case of a
hardware failure or other emergency on the production server.) hardware failure or other emergency on the production server.)
Two notible backup tools are [rsync](http://rsync.samba.org/) (without version control) and 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. 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

View File

@ -30,7 +30,7 @@ To add content to a show, click the show in any view on the Calendar, and select
![](/img/Screenshot488-Add_remove_content.png) ![](/img/Screenshot488-Add_remove_content.png)
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. 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 ### 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 ### Deleting an upcoming show
@ -54,4 +54,4 @@ You cannot delete or remove content from shows that have already played out. The
### Cancelling playout ### Cancelling playout
If you wish to cancel playout of a show while it is running, click on the show in the **Calendar** and select **Cancel Show** from the pop-up menu. This action cannot be undone. If you wish to cancel playout of a show while it is running, click on the show in the **Calendar** and select **Cancel Show** from the pop-up menu. This action cannot be undone.

View File

@ -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, > 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 ## Bug reporting
@ -28,7 +28,7 @@ supported? Follow [this guide](/docs/interface-localization) to add your languag
## Write documentation ## 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. 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 bundle install
@ -55,6 +55,7 @@ Odclive has instructions [here](https://github.com/kessibi/libretime-docker) for
and a more persistent install. and a more persistent install.
## Modifying the Database ## Modifying the Database
LibreTime is designed to work with a [PostgreSQL](https://www.postgresql.org/) database server running locally. 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. LibreTime uses [PropelORM](http://propelorm.org) to interact with the ZendPHP components and create the database.
@ -63,4 +64,4 @@ If you are a developer seeking to add new columns to the database here are the s
1. Modify `airtime_mvc/build/schema.xml` with any changes. 1. Modify `airtime_mvc/build/schema.xml` with any changes.
2. Run `dev_tools/propel_generate.sh` 2. Run `dev_tools/propel_generate.sh`
3. Update the upgrade.sql under `airtime_mvc/application/controllers/upgrade_sql/VERSION` for example 3. Update the upgrade.sql under `airtime_mvc/application/controllers/upgrade_sql/VERSION` for example
`ALTER TABLE imported_podcast ADD COLUMN album_override boolean default 'f' NOT NULL;` `ALTER TABLE imported_podcast ADD COLUMN album_override boolean default 'f' NOT NULL;`

View File

@ -103,11 +103,11 @@ 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. 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 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 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. items.
To insert checkbox selected items at a specific time in the show schedule, click To insert checkbox selected items at a specific time in the show schedule, click
one of the songs in the schedule table. Then click the **Add to selected show** one of the songs in the schedule table. Then click the **Add to selected show**
button in the library table. This will insert the library songs after the button in the library table. This will insert the library songs after the
selected scheduled song. selected scheduled song.

View File

@ -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) 2. Click on the username in the upper right corner (next to Log Out)
3. Enter the new password twice and click **Save** 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 1. Log in to Libretime
2. Go to **Settings** > **Manage Users** 2. Go to **Settings** > **Manage Users**
@ -20,17 +20,17 @@ To change the password for a different user (requires *Administrator* privileges
### PostgreSQL ### 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. 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. 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. 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. 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. 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';` 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. 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 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. in the config file, and restart all services mentioned in the previous section.
### Icecast ### Icecast
@ -38,7 +38,7 @@ Random passwords are generated for Icecast during the installation. To look up a
`/etc/icecast2/icecast.xml` `/etc/icecast2/icecast.xml`
Replace the admin and *changeme* fields below. Replace the admin and _changeme_ fields below.
``` ```
<authentication> <authentication>
@ -68,4 +68,4 @@ To change the default password for Rabbitmq, run the following command
sudo rabbitmqctl change_password airtime newpassword sudo rabbitmqctl change_password airtime newpassword
``` ```
and then update the `/etc/airtime/airtime.conf` file with the new password. and then update the `/etc/airtime/airtime.conf` file with the new password.

View File

@ -56,11 +56,11 @@ LibreTime needs direct access to LDAP so it can fetch additional information. It
a [system account](https://www.freeipa.org/page/HowTo/LDAP#System_Accounts) that you need to a [system account](https://www.freeipa.org/page/HowTo/LDAP#System_Accounts) that you need to
set up beforehand. set up beforehand.
You can configure everything pertaining to how LibreTime accesses LDAP in You can configure everything pertaining to how LibreTime accesses LDAP in
`/etc/airtime/airtime.conf`. The default file has the following values you need to change. `/etc/airtime/airtime.conf`. The default file has the following values you need to change.
```ini ```ini
# #
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# L D A P # L D A P
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------

View File

@ -5,7 +5,7 @@ git: hd-audio-modules.md
category: admin 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 Model name Description
@ -155,7 +155,7 @@ Conexant 5045
Conexant 5047 Conexant 5047
============= =============
laptop Basic Laptop config laptop Basic Laptop config
laptop-hp Laptop config for some HP models (subdevice 30A5) laptop-hp Laptop config for some HP models (subdevice 30A5)
laptop-eapd Laptop config with EAPD support laptop-eapd Laptop config with EAPD support
test for testing/debugging purpose, almost all controls test for testing/debugging purpose, almost all controls
@ -316,4 +316,4 @@ Cirrus Logic CS4208
VIA VT17xx/VT18xx/VT20xx VIA VT17xx/VT18xx/VT20xx
======================== ========================
auto BIOS setup (default) auto BIOS setup (default)
``` ```

View File

@ -4,15 +4,15 @@ layout: article
category: install 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} ## 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 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] [database]
host = localhost host = localhost
@ -43,7 +43,7 @@ You can also set options for RabbitMQ messaging and the LibreTime server in this
[demo] [demo]
demo = 0 demo = 0
Save and close the file with **Ctrl+O** and **Ctrl+X**. In order to update the configuration Save and close the file with **Ctrl+O** and **Ctrl+X**. In order to update the configuration
used by the various components of LibreTime, run the following commands used by the various components of LibreTime, run the following commands
sudo systemctl restart libretime-liquidsoap sudo systemctl restart libretime-liquidsoap
@ -53,11 +53,11 @@ used by the various components of LibreTime, run the following commands
## API client configuration {#api} ## 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 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 bin_dir = /usr/lib/airtime/api_clients
api_key = 'XXXXXXXXXXXXXXXXXXXX' 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} ## 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. ; Maximum allowed size for uploaded files.
@ -78,7 +78,7 @@ upload_max_filesize = 40M
post_max_size = 40M post_max_size = 40M
``` ```
For quick reference, 1024 MB = 1 GB and 2048 MB = 2 GB, but most will be okay with rounding to the nearest thousand. After updating the config file, restart Apache. For quick reference, 1024 MB = 1 GB and 2048 MB = 2 GB, but most will be okay with rounding to the nearest thousand. After updating the config file, restart Apache.
``` ```
sudo systemctl restart apache2 sudo systemctl restart apache2
@ -86,7 +86,7 @@ sudo systemctl restart apache2
## Playout settings {#playout} ## 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 sudo systemctl restart libretime-playout
@ -160,7 +160,7 @@ for the changes to take effect.
# while 'otf' (on the fly) cues while loading into ls # while 'otf' (on the fly) cues while loading into ls
# (needs the post_processor patch) # (needs the post_processor patch)
cue_style = pre cue_style = pre
## RabbitMQ hostname changes ## RabbitMQ hostname changes
If the Airtime logs indicate failures to connect to the RabbitMQ server, such as: If the Airtime logs indicate failures to connect to the RabbitMQ server, such as:
@ -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 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/* sudo rm -r /var/lib/rabbitmq/mnesia/*
@ -185,7 +186,7 @@ sudo rm -r /var/lib/rabbitmq/mnesia/*
sudo systemctl restart rabbitmq-server 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 rabbitmqctl add_vhost /airtime
@ -194,4 +195,4 @@ rabbitmqctl set_permissions -p /airtime airtime
"airtime-pypo|pypo-fetch|airtime-analyzer|media-monitor" "airtime-pypo|pypo-fetch|airtime-analyzer|media-monitor"
  "airtime-pypo|pypo-fetch|airtime-analyzer|media-monitor"   "airtime-pypo|pypo-fetch|airtime-analyzer|media-monitor"
 "airtime-pypo|pypo-fetch|airtime-analyzer|media-monitor"  "airtime-pypo|pypo-fetch|airtime-analyzer|media-monitor"
``` ```

View File

@ -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. 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. 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 ## 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:
![](/img/Screenshot223-Icecast_UTF-8_metadata.png) ![](/img/Screenshot223-Icecast_UTF-8_metadata.png)
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>
       <mount-name>/libretime.mp3</mount-name>        <mount-name>/libretime.mp3</mount-name>
       <charset>UTF-8</charset>        <charset>UTF-8</charset>
  </mount>   </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 sudo invoke-rc.d icecast2 restart
Restarting icecast2: Starting icecast2 Restarting icecast2: Starting icecast2
@ -38,17 +38,17 @@ After saving the */etc/icecast2/icecast.xml* file, you should restart the Icecas
## Icecast handover configuration ## 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. 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. 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 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>
<mount-name>/airtime_128</mount-name> <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> <hidden>0</hidden>
</mount> </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 ## 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.
![](/img/Screenshot123-Mixxx_Preferences.png)  ![](/img/Screenshot123-Mixxx_Preferences.png)
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. 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 ## 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, 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 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. 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 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 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> <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory> </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> <directory>
<yp-url-timeout>15</yp-url-timeout> <yp-url-timeout>15</yp-url-timeout>
<yp-url>http://radio.indymedia.org/cgi-bin/yp-cgi</yp-url> <yp-url>http://radio.indymedia.org/cgi-bin/yp-cgi</yp-url>
</directory> </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( ourstation = register_flow(
radio="Rock 'n Roll Radio", radio="Rock 'n Roll Radio",
@ -119,4 +119,4 @@ Another stream directory service is provided by the Liquidsoap Flows! site <http
streams=[("ogg/128k","http://streaming.example.com/libretime_128")], streams=[("ogg/128k","http://streaming.example.com/libretime_128")],
ourstation) ourstation)
> **Note:** For the time being, a stream can be registered on the Liquidsoap Flows! site with any username and password. Authenticated services may be offered in future. > **Note:** For the time being, a stream can be registered on the Liquidsoap Flows! site with any username and password. Authenticated services may be offered in future.

View File

@ -18,7 +18,7 @@ permalink: /install
- Wired internet connection and static IP address for on-prem 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) [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 ## 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> <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: Installing LibreTime consists of running the following commands in the terminal:
``` ```

View File

@ -5,12 +5,11 @@ git: interface-customization.md
category: admin 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 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 { body {
font-size: 62.5%; 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 # 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 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 *&lt;title&gt;* and *&lt;h2&gt;* 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 _&lt;title&gt;_ and _&lt;h2&gt;_ 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. After saving the file with Ctrl+O, refresh your web browser, and the new look should now be visible.

View File

@ -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. 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. 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**. 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: 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 devel
* master * 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/ 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 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 nano airtime_mvc/locale/de_CH/LC_MESSAGES/airtime.po

View File

@ -8,8 +8,8 @@ The Listener Stats page on the Analytics menu shows graphs of listener connectio
![](/img/portfolio/stream-stats.jpg) ![](/img/portfolio/stream-stats.jpg)
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. To choose which particular streams should have statistics displayed, click the check boxes for the individual colour-coded mount points, just below the graph.
By default, statistics for the last 24 hours of streaming are shown. To change this date and time range, click the calendar and clock icons in the lower left corner of the page, then click the magnifying glass icon. By default, statistics for the last 24 hours of streaming are shown. To change this date and time range, click the calendar and clock icons in the lower left corner of the page, then click the magnifying glass icon.

View File

@ -39,36 +39,36 @@ for remote input connection details.
**Setup** **Setup**
1. Download and install [BUTT](https://danielnoethen.de/) for your OS. 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 2. Open up BUTT
3. Click **settings** 3. Click **settings**
4. Under **Main** > **Server** click **ADD** 4. Under **Main** > **Server** click **ADD**
* Type LibreTime (or your station) under Name - Type LibreTime (or your station) under Name
* Click the radio button next to **IceCast** under Type - Click the radio button next to **IceCast** under Type
* Type your stations URL (webpage address) under **Address**: - Type your stations URL (webpage address) under **Address**:
* Type **8002** under **Port**: - Type **8002** under **Port**:
* Type your DJ login password under **Password** - Type your DJ login password under **Password**
* Type **/show** under IceCast mountpoint: - Type **/show** under IceCast mountpoint:
* Type your dj login under **IceCast user:** - Type your dj login under **IceCast user:**
5. Click **ADD** 5. Click **ADD**
6. Still in settings click, **Audio** and select your external sound card under 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 **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 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* you have a mic and mixer or a USB mixer hooked up to or as an external soundcard_
**Show Time** **Show Time**
1. When its almost your show time go to your LibreTime page and look at the 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). 2. Click the white Play button (third button in the middle).
3. If it says connecting… and then stream time with a counter congratulations, 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 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 tab besides Show Source is to the left and Orange if it is and Current
shows Live Show you are connected. shows Live Show you are connected.
5. If it is gray, click on the **Show Source** switch to the right of it and it 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 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* connect is turned on is a station specific setting so it could work either way_
### Recording your show ### Recording your show

View File

@ -12,7 +12,7 @@ podcast tabs, and a live feed of your station with information on the the curren
## Modifying the LibreTime Radio Page ## 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 { html {

View File

@ -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 ### Cloud-init options in cloud-init.yaml
You may wish to change the below fields as per your location. You may wish to change the below fields as per your location.
``` ```
timezone: America/New York # change as needed timezone: America/New York # change as needed
ntp: ntp:
@ -42,4 +43,4 @@ modify the URL on this line:
``` ```
- cd / && git clone https://github.com/LibreTime/libretime.git - cd / && git clone https://github.com/LibreTime/libretime.git
``` ```

View File

@ -6,7 +6,7 @@ category: interface
> **About Autoloading Playlists** > **About Autoloading Playlists**
> >
> Libretime will schedule tracks from a selected playlist an hour before a show is > Libretime will schedule tracks from a selected playlist an hour before a show is
> scheduled to air. This is a great way to automatically schedule weekly shows which are received > scheduled to air. This is a great way to automatically schedule weekly shows which are received
> via. podcasts. > via. podcasts.
@ -40,20 +40,20 @@ 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. 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. 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.
> **Note:** Smart Blocks by default will not overflow the length of a scheduled show. > **Note:** Smart Blocks by default will not overflow the length of a scheduled show.
> This is to prevent tracks from being cut-off because they exceed the time limit of a show. > This is to prevent tracks from being cut-off because they exceed the time limit of a show.
> If you want a smartblock to schedule tracks until it is longer than the Time Limit you can check **"Allow last track to exceed time limit"** > If you want a smartblock to schedule tracks until it is longer than the Time Limit you can check **"Allow last track to exceed time limit"**
> (helpful for avoiding dead air on autoscheduled shows). > (helpful for avoiding dead air on autoscheduled shows).
![](/img/Smartblock-advanced.png) ![](/img/Smartblock-advanced.png)
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. > 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.

View File

@ -32,14 +32,13 @@ The **History Templates** page on the History menu enables you to prepare report
![](/img/new-hist-temp.png) ![](/img/new-hist-temp.png)
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. 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} ## 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. 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,17 +166,17 @@ In this case, the metadata returned would be in a different format from the abov
"sunday":[], "sunday":[],
"AIRTIME_API_VERSION":"1.1"}) "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 ### 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. 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: 1. Create a shell script on the schedule server (schedule.example.com) that polls the remote LibreTime server (libretime.example.com), and writes the metadata returned into a pair of local temporary files:
sudo nano /usr/local/bin/libretime-schedule.sh sudo nano /usr/local/bin/libretime-schedule.sh
The content of this file should be like the following script, replacing libretime.example.com with the name of your LibreTime server: The content of this file should be like the following script, replacing libretime.example.com with the name of your LibreTime server:
@ -189,27 +188,27 @@ The content of this file should be like the following script, replacing libretim
2. Make the script executable: 2. Make the script executable:
sudo chmod +x /usr/local/bin/libretime-schedule.sh sudo chmod +x /usr/local/bin/libretime-schedule.sh
3. Create an Apache VirtualHost configuration for the schedule server: 3. Create an Apache VirtualHost configuration for the schedule server:
sudo nano /etc/apache2/sites-available/schedule sudo nano /etc/apache2/sites-available/schedule
containing a definition like the following, replacing *schedule.example.com* with the name of your schedule server: containing a definition like the following, replacing _schedule.example.com_ with the name of your schedule server:
<VirtualHost *:80> <VirtualHost *:80>
ServerName schedule.example.com ServerName schedule.example.com
DocumentRoot /var/www/schedule/ DocumentRoot /var/www/schedule/
</VirtualHost> </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/live-info/
sudo mkdir -p /var/www/schedule/api/week-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 sudo nano /var/www/schedule/api/live-info/index.php
containing the following code: containing the following code:
@ -226,9 +225,9 @@ containing the following code:
echo $content; echo $content;
?> ?>
6. Create an index.php file in the *api/week-info/* folder: 6. Create an index.php file in the _api/week-info/_ folder:
sudo nano /var/www/schedule/api/week-info/index.php sudo nano /var/www/schedule/api/week-info/index.php
containing the following code: containing the following code:
@ -247,12 +246,12 @@ containing the following code:
7. Enable the new configuration and reload the Apache web server: 7. Enable the new configuration and reload the Apache web server:
sudo a2ensite schedule sudo a2ensite schedule
sudo /etc/init.d/apache2 reload sudo /etc/init.d/apache2 reload
8. Create a cron job to run the shell script each minute: 8. Create a cron job to run the shell script each minute:
sudo nano /etc/cron.d/libretime-schedule sudo nano /etc/cron.d/libretime-schedule
containing the line: containing the line:

View File

@ -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. 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. 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 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. 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. Once the podcast's feed is recognized, the editor pane opens for the podcast.
### Editor ### 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 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. - 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.

View File

@ -10,20 +10,20 @@ Before uploading media to an LibreTime server, there are a number of factors whi
LibreTime automatically imports any metadata that is in the files' ID3 tags. If these tags are incorrect or are missing information, you will have to either edit the metadata manually, or suffer the consequences. For example, if the files have creator or genre metadata missing, it will be impossible to search for, create playlists or generate smart blocks according to these criteria until you add it. LibreTime automatically imports any metadata that is in the files' ID3 tags. If these tags are incorrect or are missing information, you will have to either edit the metadata manually, or suffer the consequences. For example, if the files have creator or genre metadata missing, it will be impossible to search for, create playlists or generate smart blocks according to these criteria until you add it.
There are a number of programs available which can be used to correct mistakes or incomplete information in ID3 tags. You can use a music library manager (like Apple Music, Rhythmbox, or Windows Media Player) to edit ID3 tags as well, but you may be required to import the files into your library, which may not always be convenient. There are a number of programs available which can be used to correct mistakes or incomplete information in ID3 tags. You can use a music library manager (like Apple Music, Rhythmbox, or Windows Media Player) to edit ID3 tags as well, but you may be required to import the files into your library, which may not always be convenient.
- [TagScanner](https://www.xdlab.ru/en/) (Windows) - [TagScanner](https://www.xdlab.ru/en/) (Windows)
- [Mp3tag](https://www.mp3tag.de/en/index.html) (Windows) - [Mp3tag](https://www.mp3tag.de/en/index.html) (Windows)
- [MusicBrainz Picard](https://picard.musicbrainz.org/) (Mac, Windows, Linux) - [MusicBrainz Picard](https://picard.musicbrainz.org/) (Mac, Windows, Linux)
- [Ex Falso](http://code.google.com/p/quodlibet/) (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.
![](/img/Screenshot175-Ex_Falso.png) ![](/img/Screenshot175-Ex_Falso.png)
## Metadata in legacy character sets ## 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: 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:
@ -41,27 +41,27 @@ To actually convert all of the tags and strip any legacy ID3v1 tag present from
The name of the original character set follows the **-e** option. Other legacy character sets that mid3iconv can convert to UTF-8 include: The name of the original character set follows the **-e** option. Other legacy character sets that mid3iconv can convert to UTF-8 include:
KOI8-R: Russian KOI8-R: Russian
KOI8-U: Ukrainian KOI8-U: Ukrainian
GBK: Traditional Chinese GBK: Traditional Chinese
GB2312: Simplified Chinese GB2312: Simplified Chinese
EUC-KR: Korean EUC-KR: Korean
EUC-JP: Japanese EUC-JP: Japanese
CP1253: Greek CP1253: Greek
CP1254: Turkish CP1254: Turkish
CP1255: Hebrew CP1255: Hebrew
CP1256: Arabic CP1256: Arabic
## Audio loudness ## 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). 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. 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  -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 ## Silence in media files

View File

@ -4,7 +4,6 @@ layout: article
category: install category: install
--- ---
In some deployments, the LibreTime server is deployed behind a reverse proxy, In some deployments, the LibreTime server is deployed behind a reverse proxy,
for example in containerization use-cases such as Docker and LXC. LibreTime for example in containerization use-cases such as Docker and LXC. LibreTime
makes extensive use of its API for some site functionality, which causes makes extensive use of its API for some site functionality, which causes

View File

@ -33,29 +33,29 @@ check the **Repeats?** box and fill out the repeat information. A description of
are in the table below. Finially, click on the grey **+ Add this show** button at the top are in the table below. Finially, click on the grey **+ Add this show** button at the top
of the pane to add your show to the calendar. of the pane to add your show to the calendar.
| Field | Description | | Field | Description |
|-------|-------| | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| _What_ | | | _What_ | |
| Name (Required) | The name of your show | | Name (Required) | The name of your show |
| URL | The URL of your show. Not used on the public page. | | URL | The URL of your show. Not used on the public page. |
| Genre | The genre of your show. Not used on the public page. | | Genre | The genre of your show. Not used on the public page. |
| Description | Description of your show. Not used on the public page. | | Description | Description of your show. Not used on the public page. |
| _When_ | | | _When_ | |
| Start Time (Required) | The time and date the show starts. Note that the time element is in 24 hour time. If the **Now** option is selected, the show will be created to immediately start. | | Start Time (Required) | The time and date the show starts. Note that the time element is in 24 hour time. If the **Now** option is selected, the show will be created to immediately start. |
| End Time (Required) | The time and date the show ends. Defaults to a time one hour after the start time, which can be seen in the **Duration** field, which is uneditable. | | End Time (Required) | The time and date the show ends. Defaults to a time one hour after the start time, which can be seen in the **Duration** field, which is uneditable. |
| Repeats? | If checked, allows for options to schedule a repeated show. Shows can repeat weekly up to monthly in increments of one week and can be scheduled on multiple days of the same week. An end date can be set, otherwise the show can be deleted by clicking on its entry in the calendar and clicking Delete > Future Occurrences. If **Linked ?** is checked, the playlist scheduled for the next show will also play for all future shows. | | Repeats? | If checked, allows for options to schedule a repeated show. Shows can repeat weekly up to monthly in increments of one week and can be scheduled on multiple days of the same week. An end date can be set, otherwise the show can be deleted by clicking on its entry in the calendar and clicking Delete > Future Occurrences. If **Linked ?** is checked, the playlist scheduled for the next show will also play for all future shows. |
| _Autoloading Playlist_ | | | _Autoloading Playlist_ | |
| Add Autoloading Playlist? | If checked, allows for the following options | | Add Autoloading Playlist? | If checked, allows for the following options |
| Select Playlist | Select the playlist the show will autofill from (shows autofill exactly one hour before air). If you wish to use a smartblock you must add it to a playlist and then select that playlist. This can be used to auto-schedule new podcast episodes to air. | | Select Playlist | Select the playlist the show will autofill from (shows autofill exactly one hour before air). If you wish to use a smartblock you must add it to a playlist and then select that playlist. This can be used to auto-schedule new podcast episodes to air. |
| Repeat Playlist Until Show Is Full | If checked, the playlist will be added to the show multiple times until the slot is full. Useful for applying a one-hour music playlist made up of smartblocks to a two-hour show. | | Repeat Playlist Until Show Is Full | If checked, the playlist will be added to the show multiple times until the slot is full. Useful for applying a one-hour music playlist made up of smartblocks to a two-hour show. |
| _Live Stream Input_ | | | _Live Stream Input_ | |
| Use LibreTime/Custom Authentication | | | Use LibreTime/Custom Authentication | |
| Show Source | | | Show Source | |
| _Who_ | | | _Who_ | |
| Search Users, DJs | Program Managers and Admins may assign DJs to a show, giving DJs access to schedule tracks for said show. DJs cannot create shows on their own. | | Search Users, DJs | Program Managers and Admins may assign DJs to a show, giving DJs access to schedule tracks for said show. DJs cannot create shows on their own. |
| _Style_ | | | _Style_ | |
| Background/Text Color | Set the color of the background and text of entries on the calendar. If not set, LibreTime will select contrasting colors for easy readability. | | Background/Text Color | Set the color of the background and text of entries on the calendar. If not set, LibreTime will select contrasting colors for easy readability. |
| Show Logo | If desired, you can upload a show logo here. The logo does not appear on the public page. | | Show Logo | If desired, you can upload a show logo here. The logo does not appear on the public page. |
Once your show is created, click on it to open its context menu. Select **Schedule Tracks** to open the track scheduler. Once your show is created, click on it to open its context menu. Select **Schedule Tracks** to open the track scheduler.
@ -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 You can listen to your stream by going to `yourserverIP:8000` or by clicking the **Listen** button under the On Air
indicator. indicator.

View File

@ -7,7 +7,7 @@ category: install
Accurate time keeping on your server is vital for LibreTime performance. You can confirm that the date and time of your server are set correctly with the `date` command. Accurate time keeping on your server is vital for LibreTime performance. You can confirm that the date and time of your server are set correctly with the `date` command.
The server should respond with the date, time, time zone and year in a format similar to the following example: The server should respond with the date, time, time zone and year in a format similar to the following example:
Tue Jul 2 15:08:57 BST 2013 Tue Jul 2 15:08:57 BST 2013
If the time on your server is wrong, it is strongly recommended that you take LibreTime off-air until the problem is fixed. If the time on your server is wrong, it is strongly recommended that you take LibreTime off-air until the problem is fixed.
@ -21,7 +21,7 @@ Optionally, open the **ntp** configuration file in the **nano** editor to add fu
sudo nano /etc/ntp.conf 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). # You do need to talk to an NTP server or two (or three).
server ntp.ubuntu.com 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 2.uk.pool.ntp.org
server 3.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 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 ### 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: 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:

View File

@ -4,7 +4,6 @@ title: Settings
category: admin category: admin
--- ---
## General Settings ## General Settings
![](/img/station-info-settings.png) ![](/img/station-info-settings.png)
@ -19,7 +18,7 @@ Description** and **Station Logo** here.
The **Default Interface Language** drop-down menu sets the default localization The **Default Interface Language** drop-down menu sets the default localization
for your LibreTime instance, and the **Station Timezone** drop-down menu can be 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 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 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 week that you wish to start your station's weekly schedule on, which defaults
to Sunday. 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 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 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 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 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 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 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 your station's public website with the **Public LibreTime API** option, if you
wish. (There is more about this feature in the wish. (There is more about this feature in the
[*Exporting the schedule*](/docs/playout-history) chapter, in the [_Exporting the schedule_](/docs/playout-history) chapter, in the
*Advanced Configuration* section of this book). _Advanced Configuration_ section of this book).
The **Allowed CORS URLs** is intended to deal with situations where you want a 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 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 log in, or set personal preferences for localization and time zone by clicking
their username on the right side of the menu bar. their username on the right side of the menu bar.
---- ---
## Track Types {#types} ## 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. 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**. 1. Click **Save**.
---- ---
## Stream Settings ## 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. 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 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. 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. 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. 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.
@ -155,7 +154,7 @@ If you have checked the **Auto Switch On** box in the Stream Settings page, the
![](/img/libretime-show-source-stream.png) ![](/img/libretime-show-source-stream.png)
If you have the **Auto Switch Off** box checked LibreTime will resume scheduled playback whenever a stream disconnects. Otherwise you will need to slide to disable a source after a DJ stops streaming. If you have the **Auto Switch Off** box checked LibreTime will resume scheduled playback whenever a stream disconnects. Otherwise you will need to slide to disable a source after a DJ stops streaming.
You can also force disconnection of a live remote source, for example when the remote input source has crashed and is no longer sending audio data, click the **X** icon to the left of the source name. You can also force disconnection of a live remote source, for example when the remote input source has crashed and is no longer sending audio data, click the **X** icon to the left of the source name.
@ -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. 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. 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. 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_.

View File

@ -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 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: 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 - 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 - 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 - 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 ### 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 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@ 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 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> <VirtualHost *:443>
@ -114,7 +115,7 @@ On port 80, Apache's *alias* module is used to set a *Redirect permanent* for th
Order allow,deny Order allow,deny
Allow from all Allow from all
</Directory> </Directory>
</VirtualHost> </VirtualHost>
``` ```
Save the file with **Ctrl+O** and exit the **nano** editor with **Ctrl+X**. Then restart Apache with the command: Save the file with **Ctrl+O** and exit the **nano** editor with **Ctrl+X**. Then restart Apache with the command:
@ -129,7 +130,7 @@ The first time you access an LibreTime server with a self-signed certificate ove
![](/img/Screenshot547-connection_untrusted.png) ![](/img/Screenshot547-connection_untrusted.png)
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.
![](/img/Screenshot548-confirm_exception.png) ![](/img/Screenshot548-confirm_exception.png)

View File

@ -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 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. 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. that are no longer required from the **Library**. Alternatively, you could ask your system administrator to install additional storage capacity.

View File

@ -4,16 +4,16 @@ title: Troubleshooting
category: admin category: admin
--- ---
Is something not working for your Libretime installation? Here's a quick guide to help you Is something not working for your Libretime installation? Here's a quick guide to help you
troubleshoot most issues you'll run into. troubleshoot most issues you'll run into.
## 1. Let's check the basics ## 1. Let's check the basics
Is your server on? (We hate to ask.) Is it connected to the internet? Is it connected to your Is your server on? (We hate to ask.) Is it connected to the internet? Is it connected to your
broadcast console or mixer if being used for soundcard output? If you're using a cloud host, broadcast console or mixer if being used for soundcard output? If you're using a cloud host,
does your cloud provider's status page indicate any system outages? does your cloud provider's status page indicate any system outages?
Once you know your physical (or virtual) system is functional, was a show scheduled for the Once you know your physical (or virtual) system is functional, was a show scheduled for the
current time with tracks or an autoplaylist scheduled? current time with tracks or an autoplaylist scheduled?
## 2. Are all services working? ## 2. Are all services working?
@ -23,8 +23,8 @@ A fully working server should have green checkmarks next to all services.
![](/img/Screenshot521-System_status_240.png) ![](/img/Screenshot521-System_status_240.png)
If one of the services isn't working, text will display with a terminal command to restart the service If one of the services isn't working, text will display with a terminal command to restart the service
or get status information for a particular service. For example (for Ubuntu 18.04), the following or get status information for a particular service. For example (for Ubuntu 18.04), the following
commands would restart or check the status of Libretime's Liquidsoap instance, respectively. commands would restart or check the status of Libretime's Liquidsoap instance, respectively.
``` ```
@ -38,7 +38,7 @@ If the service isn't wanting to restart, look at its status for clues as to why
## 3. Known problems ## 3. Known problems
If you have one of these issues, please try to resolve it with the instructions below before moving on in the If you have one of these issues, please try to resolve it with the instructions below before moving on in the
troubleshooting checklist. troubleshooting checklist.
- **Streaming player on Microsite and Listen player on Dashboard not working?** The problem could be caused by a bug in writing to the database during the setup wizard. This can be fixed by going to **Settings** -> **Stream Settings** and toggling the **Default Streaming** and **Custom/ 3rd Party Streaming** option, accepting the popup dialogues, and clicking **Save** at the top of the settings page. - **Streaming player on Microsite and Listen player on Dashboard not working?** The problem could be caused by a bug in writing to the database during the setup wizard. This can be fixed by going to **Settings** -> **Stream Settings** and toggling the **Default Streaming** and **Custom/ 3rd Party Streaming** option, accepting the popup dialogues, and clicking **Save** at the top of the settings page.
@ -53,7 +53,7 @@ Our main documentation listing is [here](/docs) and can be searched [here](/sear
## 5. Reach out to the developers ## 5. Reach out to the developers
Libretime is still in active development, meaning bugs and issues are expected to pop up every so often. Libretime is still in active development, meaning bugs and issues are expected to pop up every so often.
See if an issue is still open by looking at our [Issues page](https://github.com/LibreTime/libretime/issues). See if an issue is still open by looking at our [Issues page](https://github.com/LibreTime/libretime/issues).
If you don't get the help you need, please [open an issue](https://github.com/LibreTime/libretime/issues/new/choose) If you don't get the help you need, please [open an issue](https://github.com/LibreTime/libretime/issues/new/choose)
so we can take a look at it. so we can take a look at it.

View File

@ -19,14 +19,13 @@ of dot separated identifiers immediately following the patch version. This pre-r
that the version is unstable in a sense that it might contain incomplete features or not satisfy the that the version is unstable in a sense that it might contain incomplete features or not satisfy the
intended compatibility requirements as per semver. intended compatibility requirements as per semver.
## Upgrading ## Upgrading
> After your LibreTime server has been deployed for a few years, you may need to > 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 > 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 > 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 > downtime, so you should always have a fallback system available during the
upgrade to ensure broadcast continuity. > upgrade to ensure broadcast continuity.
Before upgrading a production LibreTime server, you should back up both the PostgreSQL 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 database and the storage server used by LibreTime. This is especially important if you have not already
@ -34,14 +33,14 @@ set up a regular back up routine. This extra back up is a safety measure in case
during the upgrade, for example due to the wrong command being entered when moving files. See during the upgrade, for example due to the wrong command being entered when moving files. See
[Backing up the server](/docs/backing-up-the-server) in this manual for details of how to perform these back ups. [Backing up the server](/docs/backing-up-the-server) in this manual for details of how to perform these back ups.
The LibreTime [installation script](/install) will detect an existing LibreTime or Airtime deployment and back up any configuration files that it finds. We recommend taking your own manual backups of the configuration yourself nevertheless. The install script also tries to restart the needed services during an upgrade. In any case you should monitor if this happened and also take a quick look at the logs files to be sure everything is still fine. Now might be the time to reboot the system or virtual machine LibreTime is running on since regular reboots are part of a healthy system anyway. The LibreTime [installation script](/install) will detect an existing LibreTime or Airtime deployment and back up any configuration files that it finds. We recommend taking your own manual backups of the configuration yourself nevertheless. The install script also tries to restart the needed services during an upgrade. In any case you should monitor if this happened and also take a quick look at the logs files to be sure everything is still fine. Now might be the time to reboot the system or virtual machine LibreTime is running on since regular reboots are part of a healthy system anyway.
After the upgrade has completed, you may need to clear your web browser's cache before logging into the new version of the LibreTime administration interface. If the playout engine starts up and detects that a show should be playing at the current time, it will skip to the correct point in the current item and start playing. After the upgrade has completed, you may need to clear your web browser's cache before logging into the new version of the LibreTime administration interface. If the playout engine starts up and detects that a show should be playing at the current time, it will skip to the correct point in the current item and start playing.
There will be tested ways to switch from a LibreTime pre-release to a packaged version of LibreTime. There will be tested ways to switch from a LibreTime pre-release to a packaged version of LibreTime.
Airtime 2.5.x versions support upgrading from version 2.3.0 and above. If you are 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 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.

View File

@ -5,12 +5,12 @@ category: interface
--- ---
> Note: if your Libretime server is accessible from the public Internet (ex. being hosted in a cloud VM) > 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 > it is strongly recommended to create a second administrator account with a secure password and then
delete the `admin` account. > delete the `admin` account.
## User Account Types ## User Account Types
To add further user accounts to the system, one for each of your station staff that need access to Airtime, click the **New User** button with the plus icon. Enter a user name, password and contact details, and then select the **User Type** from the drop down menu, which can be *Admin*, *Program Manager*, *DJ*, or *Guest*. 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** **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 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. right side of the main menu bar, next to the **Logout** link.

View File

@ -91,13 +91,13 @@ directory.
With the above instructions LibreTime is installed on Ubuntu Xenial Xerus. The Vagrant setup With the above instructions LibreTime is installed on Ubuntu Xenial Xerus. The Vagrant setup
offers the option to choose a different operation system according to you needs. offers the option to choose a different operation system according to you needs.
| OS | Command | Comment | | OS | Command | Comment |
| ------ | ------------------- | ------- | | ------------ | --------------------------- | ----------------------------------------------------------- |
| Debian 10 | `vagrant up debian-buster` | Install on Debian Buster. | | Debian 10 | `vagrant up debian-buster` | Install on Debian Buster. |
| Debian 9 | `vagrant up debian-stretch` | Install on current Debian Stretch. | | Debian 9 | `vagrant up debian-stretch` | Install on current Debian Stretch. |
| Ubuntu 18.04 | `vagrant up ubuntu-bionic` | Install on current Ubuntu Bionic Beaver. | | Ubuntu 18.04 | `vagrant up ubuntu-bionic` | Install on current Ubuntu Bionic Beaver. |
| Ubuntu 16.04 | `vagrant up ubuntu-xenial` | Install on Ubuntu Xenial Xerus. | | Ubuntu 16.04 | `vagrant up ubuntu-xenial` | Install on Ubuntu Xenial Xerus. |
| CentOS | `vagrant up centos` | CentOS 8 with native systemd support and activated SELinux. | | CentOS | `vagrant up centos` | CentOS 8 with native systemd support and activated SELinux. |
## Troubleshooting ## Troubleshooting

View File

@ -4,18 +4,18 @@ layout: article
category: interface category: interface
--- ---
<html> <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> <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> </html>
### Adding a webstream ### 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. 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.
![](/img/webstream.jpg) ![](/img/webstream.jpg)
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). 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).

View File

@ -12,7 +12,7 @@ Before using the widgets, make sure Libretime's Public API is enabled in **Setti
![](/img/widgets_settings.png) ![](/img/widgets_settings.png)
> **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 ## Streaming Player Widget
@ -28,4 +28,4 @@ From **Widgets** > **Player**, enter a title for your streaming widget and selec
![](/img/widgets_schedule.png) ![](/img/widgets_schedule.png)
The show schedule widget displays the upcoming shows for the next seven days. There are no customizable settings for this widget. The show schedule widget displays the upcoming shows for the next seven days. There are no customizable settings for this widget.

File diff suppressed because it is too large Load Diff

View File

@ -6,14 +6,14 @@ linktext: Get Libretime
img: /img/radio-unsplash.jpg img: /img/radio-unsplash.jpg
photocredit: Top photo by <a href="https://unsplash.com/@leowieling?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Leo Wieling</a> on <a href="https://unsplash.com/s/photos/radio?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a> photocredit: Top photo by <a href="https://unsplash.com/@leowieling?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Leo Wieling</a> on <a href="https://unsplash.com/s/photos/radio?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>
actions: actions:
- title: Stable Release - title: Stable Release
text: The best so far. Just extract and run <code>sudo bash install -fiap</code>. 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 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 linktext: Download 3.0-alpha-8
- title: Rolling Commits - title: Rolling Commits
text: Want the latest and greatest? Install from the source code. text: Want the latest and greatest? Install from the source code.
linkto: /install linkto: /install
linktext: Install from Source linktext: Install from Source
--- ---
# BROADCAST WITHOUT LIMITS # BROADCAST WITHOUT LIMITS
@ -22,4 +22,4 @@ Libretime is an open source radio automation and broadcasting solution helping c
The platform can be easily deployed on dedicated hardware and VMs, on-prem or in the cloud, "free as in freedom" free. The platform can be easily deployed on dedicated hardware and VMs, on-prem or in the cloud, "free as in freedom" free.
Let your station underwrite its own destiny. Let your station underwrite its own destiny.