Adding Youtube videos, embeds, cleaning site
This commit is contained in:
parent
b5789ace77
commit
94b4081594
|
@ -3,6 +3,8 @@ topnav:
|
|||
url: index
|
||||
- page: Docs
|
||||
url: contribute
|
||||
- page: <svg class="bi bi-camera-video-fill" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M2.667 3h6.666C10.253 3 11 3.746 11 4.667v6.666c0 .92-.746 1.667-1.667 1.667H2.667C1.747 13 1 12.254 1 11.333V4.667C1 3.747 1.746 3 2.667 3z"/><path d="M7.404 8.697l6.363 3.692c.54.313 1.233-.066 1.233-.697V4.308c0-.63-.693-1.01-1.233-.696L7.404 7.304a.802.802 0 0 0 0 1.393z"/></svg> YouTube
|
||||
url: https://www.youtube.com/channel/UC-MA9GzkTb8th1YlDmF0NfA/featured
|
||||
- page: <svg class="bi bi-people-fill" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7 14s-1 0-1-1 1-4 5-4 5 3 5 4-1 1-1 1H7zm4-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-5.784 6A2.238 2.238 0 0 1 5 13c0-1.355.68-2.75 1.936-3.72A6.325 6.325 0 0 0 5 9c-4 0-5 3-5 4s1 1 1 1h4.216zM4.5 8a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"/></svg> Github
|
||||
url: https://github.com/LibreTime/libretime
|
||||
- page: <svg class="bi bi-heart-fill" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"/></svg> Sponsor
|
||||
|
@ -48,6 +50,8 @@ docsnav:
|
|||
url: listener-stats
|
||||
- section: Advanced Configuration
|
||||
contents:
|
||||
- page: API Usage
|
||||
url: api
|
||||
- page: Backing up LibreTime
|
||||
url: backing-up-the-server
|
||||
- page: Configuring Streaming Services
|
||||
|
@ -56,12 +60,12 @@ docsnav:
|
|||
url: freeipa
|
||||
- page: Interface Customization
|
||||
url: interface-customization
|
||||
- page: Promoting through Icecast
|
||||
url: promoting-your-station
|
||||
- page: Troubleshooting/Uninstall
|
||||
url: troubleshooting
|
||||
- page: Upgrading LibreTime
|
||||
url: upgrading
|
||||
- section: Troubleshooting
|
||||
contents:
|
||||
- page: Basic Troubleshooting
|
||||
url: troubleshooting
|
||||
- section: Appendix
|
||||
contents:
|
||||
- page: HD Audio Modules
|
||||
|
@ -69,6 +73,4 @@ docsnav:
|
|||
- page: Contribute to LibreTime
|
||||
url: contribute
|
||||
- page: Rights and Royalties
|
||||
url: rights-royalties
|
||||
- page: Uninstalling LibreTime
|
||||
url: uninstall
|
||||
url: rights-royalties
|
|
@ -1,51 +0,0 @@
|
|||
---
|
||||
layout: docs
|
||||
---
|
||||
|
||||
|
||||
This page contains links to number of tutorials.
|
||||
Please provide any feedback on this [discourse forum post](https://discourse.libretime.org/t/new-tutorials-available-on-libretime-wiki/270/2).
|
||||
There are also a number of tutorials in Spanish on [Vimeo](https://vimeo.com/user90812787)
|
||||
|
||||
## Understanding the Main Menus
|
||||
* [Upload](upload)
|
||||
* [Dashboard](dashboard)
|
||||
* [Tracks](tracks)
|
||||
* [Playlists](playlists)
|
||||
* [Smart Blocks](smartblocks)
|
||||
* [Webstreams](webstreams)
|
||||
* [Podcasts](podcasts)
|
||||
* [Radio Page](radio-page)
|
||||
* [Calendar](calendar)
|
||||
* Settings
|
||||
* [General](general-settings)
|
||||
* [Users](users)
|
||||
* [Streams](stream-settings)
|
||||
* [Status](status)
|
||||
* Analytics
|
||||
* [Playout History](history)
|
||||
* [History Templates](history-templates)
|
||||
* [Listener Stats](listener-stats)
|
||||
* [Help](help)
|
||||
* [Listen](listen)
|
||||
|
||||
## For Program Managers
|
||||
* [Building a schedule](build-schedule)
|
||||
* [How to set up an automatic top of the hour ID with intro playlist feature](intro-playlist)
|
||||
* [How to setup a Auto DJ to play music from certain genres for unscheduled shows](autodj)
|
||||
* [Preventing dead air between shows without cutting off tracks](outro-playlist)
|
||||
* [How to schedule automatic underwriting/advertising announcements (YouTube)](https://www.youtube.com/watch?v=F7rMut7Trb4)
|
||||
* [How to schedule a repeating webstream with a linked show (YouTube)](https://www.youtube.com/watch?v=Ha3X6aYdY04)
|
||||
* [How to export a schedule of played tracks](exporting-the-schedule)
|
||||
|
||||
## For Server Administrators
|
||||
|
||||
* [How to configure API Authentication](api)
|
||||
* [Information on reverse proxy connections](reverse-proxy)
|
||||
* [Configuring FreeIPA authentication](freeipa)
|
||||
* [Using and configuring Icecast and Shoutcast](icecast-shoutcast)
|
||||
* [Interface Customization](interface-customization)
|
||||
* [Promoting your station through your Icecast stream](promoting-your-station)
|
||||
* [How to back up the LibreTime media folder and database](backing-up-the-server)
|
||||
* [Upgrading LibreTime](upgrading)
|
||||
* [Uninstalling LibreTime](uninstall)
|
|
@ -0,0 +1,56 @@
|
|||
---
|
||||
layout: docs
|
||||
title: LibreTime API Usage
|
||||
---
|
||||
|
||||
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.
|
||||
|
||||
The format of API requests is:
|
||||
|
||||
https://libretime.example.com/api/api-action/format/json/api_key/XXXXXX
|
||||
|
||||
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
|
||||
- status - get the status of LibreTime components and resource usage
|
||||
- version - returns the version of LibreTime installed
|
||||
- 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-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:
|
||||
|
||||
{"keyname":"s1_type","value":"ogg","type":"string"},
|
||||
|
||||
{"keyname":"s1_host","value":"streaming.example.com","type":"string"},
|
||||
|
||||
{"keyname":"s1_port","value":"8000","type":"integer"},
|
||||
|
||||
{"keyname":"s1_mount","value":"airtime_128","type":"string"},
|
||||
|
||||
{"keyname":"s1_url","value":"http:\/\/airtime.sourcefabric.org","type":"string"},
|
||||
|
||||
{"keyname":"s1_description","value":"Airtime Radio! Stream
|
||||
#1","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.
|
||||
|
||||
Some API requests require the directory ID number to be specified as *dir\_id* including:
|
||||
|
||||
- list-all-files - list files in the specified directory
|
||||
- get-files-without-replay-gain - list files in the specified directory for which ReplayGain has not been calculated yet
|
||||
|
||||
For example, using a request such as:
|
||||
|
||||
http://libretime.example.com/api/list-all-files/format/json/api_key/XXXXXX/dir_id/1/
|
||||
|
||||
returns the full path to each media file in the LibreTime storage directory:
|
||||
|
||||
{"files":[
|
||||
"imported\/1\/Mark Ronson feat. Saigon\/Here Comes the Fuzz\/7-Diduntdidunt-unknown.flac",
|
||||
"imported\/1\/Jimi Tenor & Tony Allen\/Inspiration Information\/3-Selfish Gene-128kbps.mp3",
|
||||
"]}
|
|
@ -1,40 +0,0 @@
|
|||
# How to automatically schedule an Intro Playlist
|
||||
|
||||
**Audience**: Adminstrators
|
||||
|
||||
## Creating the Top of the hour smartblock
|
||||
|
||||
1. Login to LibreTime
|
||||
1. Click **Smart Blocks**
|
||||
1. Click the blue **+New** button
|
||||
1. On the right (or below if screen width is limited), type in the Smart Block
|
||||
Name: **Top of the Hour Station ID**
|
||||
1. Under **Search Criteria** select **Genre** for the criteria
|
||||
1. Select **is** for modifier
|
||||
1. Type TOTHID in the third box. *Note: all Top of The Hour Station ID tracks
|
||||
will need to have TOTHID as their **Genre** to match*
|
||||
1. Under Limit To – click the second box and select **items** instead of hours
|
||||
1. Click **Save**
|
||||
|
||||
## Adding Smartblock to Intro Playlist
|
||||
|
||||
1. Click **Playlist**
|
||||
1. Click **+ New**
|
||||
1. Type **Intro Playlist** in the Name.
|
||||
1. Click **Smart Blocks**
|
||||
1. Click the box to the left of **Top of the Hour Station ID**
|
||||
1. Click **+ Add to current playlist** or drag the smart block to the right
|
||||
bottom of the playlist window.
|
||||
1. Click **Save**.
|
||||
|
||||
## How to Set Default Intro Playlist
|
||||
|
||||
1. Click **Settings**.
|
||||
1, Click **General** and then scroll to **Intro Autoloading Playlist** and
|
||||
click the drop down to select the **Intro Playlist**
|
||||
1. Click **Save**.
|
||||
|
||||
Now everytime an autoloading playlist is scheduled the system will select a
|
||||
random top of the hour ID and insert it before any other content. You can other
|
||||
content to the Intro Playlist to also have it scheduled before any shows with
|
||||
Autoloading Playlists enabled.
|
|
@ -7,12 +7,6 @@ title: Broadcasting live with MIXXX or B.U.T.T.
|
|||
- [MIXXX](#mixxx)
|
||||
- [BUTT](#butt)
|
||||
|
||||
# Video Tutorial
|
||||
|
||||
<html>
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/4GLsU9hPTtM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</html>
|
||||
|
||||
This how to is intended for DJs using BUTT or MIXXX to stream to their LibreTime
|
||||
server with an external USB audio card setup to route a mixer and sound.
|
||||
|
||||
|
@ -43,6 +37,10 @@ for remote input connection details.
|
|||
|
||||
# Live shows with B.U.T.T. (Broadcast Using This Tool) {#butt}
|
||||
|
||||
<html>
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/4GLsU9hPTtM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</html>
|
||||
|
||||
## Set Up
|
||||
|
||||
1. Download and install butt from <https://danielnoethen.de/> for your OS.
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
layout: docs
|
||||
title: AM/FM Broadcasting Guide
|
||||
---
|
||||
|
||||
# Radio Broadcasting 101 - UNESCO Public Radio Guide
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
# How to setup an Outro Playlist
|
||||
|
||||
This how to describes the steps involved in setting up an outro playlist
|
||||
that will schedule promos without interrupting any tracks followed by a
|
||||
ambient musical bridge for all autoloading playlists to avoid dead air.
|
||||
|
||||
**Audience**: Program Manager (and Admin to set Outro Playlist)
|
||||
|
||||
## Adding the Promo Fill smart block
|
||||
|
||||
1. Click **Smart Blocks**
|
||||
1. Click the blue **+ New** button
|
||||
1. Type in a name for the Smart Block (for instance *Promo Fill*)
|
||||
1. Select **Genre** and the modifer of **is** and then type in **promo** in
|
||||
the 3^rd^ box.
|
||||
1. Under **Limit to**: we select **time remaining in show**
|
||||
1. To match on additional types of tracks based upon Genre, click **+ New
|
||||
Modifier** under Genre and select **is** and type the “*name of genre*” to
|
||||
match on.
|
||||
1. Click **preview** to review and confirm tracks match your criteria below.
|
||||
1. Click **Save**
|
||||
|
||||
## Adding interuptible Ambient Fill smart block
|
||||
|
||||
1. Click **Smart Blocks**
|
||||
1. Click the blue **+New** button
|
||||
1. Type in a name for the Smart Block (for instance *Ambient Fill*)
|
||||
1. Now we select **Genre **and the modifer of **is** and then type in **ambient
|
||||
fill** in the 3^rd^ box.
|
||||
1. Under **Limit to**: we select **time remaining in show**
|
||||
1. Click **Advanced options** drop down
|
||||
1. Check box next to **Allow last track to exceed time limit**
|
||||
1. Click **preview** to review and confirm tracks match your criteria below.
|
||||
1. Click **Save**
|
||||
|
||||
## Create the Outro Playlist to hold the smart blocks
|
||||
|
||||
1. Click **Playlists**
|
||||
1. Click **+ New**
|
||||
1. Type in the name “*Outro Playlist*”
|
||||
1. Click on **Smart Blocks**
|
||||
1. Click box next to **Promo Fill** smart block and click **+ Add to current
|
||||
playlist** or drag it to the bottom of the Outro playlist
|
||||
1. Click box next to **Ambient Fill** smart block and click **+ Add to current
|
||||
playlist** or drag it to the bottom of the Outro playlist
|
||||
1. Make sure the **Promo Fill** is above the **Ambient Fill** smart block in
|
||||
the playlist
|
||||
1. Click **Save**
|
||||
|
||||
# Setting the station-wide Outro playlist
|
||||
|
||||
1. Click **Settings**
|
||||
1. Click **General**
|
||||
1. Scroll down to Outro Playlist and with the drop down select the newly
|
||||
created **Outro Playlist**
|
||||
1. Scroll down or up on the form and click **Save**.
|
||||
|
||||
Now every autoloading playlist show will have tracks scheduled to
|
||||
fill any potential dead air.
|
||||
|
||||
Watch the tutorial on YouTube
|
||||
|
||||
* [](https://www.youtube-nocookie.com/embed/kNT9R80Q42I "How to Upload use Smartblocks to Fill Time Between Shows ")
|
|
@ -6,6 +6,10 @@ title: Podcasts and Webstreams
|
|||
- [Podcasts](#podcasts)
|
||||
- [Webstreams](#webstreams)
|
||||
|
||||
<html>
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/g-4UcD8qvR8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</html>
|
||||
|
||||
# Podcasts {#podcasts}
|
||||
|
||||
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.
|
||||
|
@ -40,6 +44,10 @@ A search box is available to search for episodes within the feed.
|
|||
|
||||
# Webstreams {#webstreams}
|
||||
|
||||
<html>
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Ha3X6aYdY04" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</html>
|
||||
|
||||
## Adding a webstream
|
||||
A web stream URL and metadata can be added to the LibreTime library, so that a remote stream can be searched for and scheduled to be *pulled* into a show. For example, at the top of the hour your station may pull a news report from journalists working in another studio. This is a different concept from **Master Source** and **Show Source** remote streams which are *pushed* into the LibreTime playout schedule.
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ makes extensive use of its API for some site functionality, which causes
|
|||
[Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)
|
||||
to occur. By default, CORS requests are blocked by your browser and the origins
|
||||
need to be added to the **Allowed CORS URLs** block in
|
||||
[**General Settings**](general-settings). These origins should include any
|
||||
[**General Settings**](settings). These origins should include any
|
||||
domains that will be used externally to connect to your reverse proxy that you
|
||||
want handled by LibreTime. These URLS can also be set during the first run configuration
|
||||
that is displayed when you first install LibreTime
|
||||
|
@ -42,7 +42,7 @@ Nginx set up on `proxy` and LibreTime will be installed on `libretime`. You will
|
|||
access on both. `libretime` also needs to be able to be accessed from `proxy`
|
||||
(`ping libretime` on `proxy`).
|
||||
|
||||
On `libretime`, install LibreTime as described in the [install guide](install). In short
|
||||
On `libretime`, install LibreTime as described in the [install guide](quickstart). In short
|
||||
this means run the following commands:
|
||||
|
||||
```
|
||||
|
|
|
@ -3,6 +3,10 @@ layout: docs
|
|||
title: Scheduling Shows
|
||||
---
|
||||
|
||||
<html>
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/TJtWUzAlP08" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</html>
|
||||
|
||||
Log in using your username and password using the link in the upper right corner. (If you just installed
|
||||
LibreTime, your username/password is admin/admin.)
|
||||
|
||||
|
|
|
@ -111,6 +111,10 @@ their username on the right side of the menu bar.
|
|||
|
||||
# Stream Settings {#stream}
|
||||
|
||||
<html>
|
||||
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/QPNo52Fc0ck" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</html>
|
||||
|
||||
Global settings
|
||||
------------------------
|
||||
|
||||
|
|
|
@ -4,6 +4,12 @@ title: Troubleshooting
|
|||
blurb: Having trouble with your LibreTime installation? We've got you covered!
|
||||
---
|
||||
|
||||
> Quick Links:
|
||||
- [Log Files](#logs)
|
||||
- [Test Tones](#tones)
|
||||
- [RabbitMQ](#rabbitmq)
|
||||
- [Uninstall LibreTime](#uninstall)
|
||||
|
||||
LibreTime is effectively a web site running on a LAPP stack, so individual components of the system can be started, stopped, restarted or checked in the server console using the **systemctl** command:
|
||||
|
||||
sudo systemctl start|stop|restart|status libretime-liquidsoap
|
||||
|
@ -17,40 +23,43 @@ For example, to restart the Airtime playout engine, you could enter the command:
|
|||
|
||||
sudo systemctl restart libretime-playout
|
||||
|
||||
Log files
|
||||
Log files {#logs}
|
||||
---------
|
||||
|
||||
Airtime stores log files under the directory path */var/log/airtime/* which can be useful for diagnosing the cause of any problems. Copies of these log files may be requested by LibreTime developers while they are providing technical support for your Airtime deployment.
|
||||
|
||||
Test tones
|
||||
Test tones {#tones}
|
||||
----------
|
||||
|
||||
If you need to test your computer's soundcard, you can use `speaker-test`, a tone generator for ALSA.
|
||||
This does not come installed with LibreTime but can be installed with `sudo apt install speaker-test`.
|
||||
|
||||
speaker-test [-D] [-f]
|
||||
|
||||
Where:
|
||||
-D device name
|
||||
-f frequency of test tone
|
||||
```
|
||||
speaker-test [-D] [-f]
|
||||
|
||||
Where:
|
||||
-D device name
|
||||
-f frequency of test tone
|
||||
```
|
||||
|
||||
The **airtime-test-stream** command enables you to send a test tone to a local or remote streaming media server. Press **Ctrl+C** on your keyboard to stop the tone being streamed.
|
||||
```
|
||||
airtime-test-stream [-v]
|
||||
[-o icecast | shoutcast ] [-H hostname] [-P port]
|
||||
[-u username] [-p password] [-m mount]
|
||||
[-h]
|
||||
Where:
|
||||
-v verbose mode
|
||||
-o stream server type (default: icecast)
|
||||
-H hostname (default: localhost)
|
||||
-P port (default: 8000)
|
||||
-u user (default: source)
|
||||
-p password (default: hackme)
|
||||
-m mount (default: test)
|
||||
-h show help menu
|
||||
```
|
||||
|
||||
airtime-test-stream [-v]
|
||||
[-o icecast | shoutcast ] [-H hostname] [-P port]
|
||||
[-u username] [-p password] [-m mount]
|
||||
[-h]
|
||||
Where:
|
||||
-v verbose mode
|
||||
-o stream server type (default: icecast)
|
||||
-H hostname (default: localhost)
|
||||
-P port (default: 8000)
|
||||
-u user (default: source)
|
||||
-p password (default: hackme)
|
||||
-m mount (default: test)
|
||||
-h show help menu
|
||||
|
||||
RabbitMQ hostname changes
|
||||
RabbitMQ hostname changes {#rabbitmq}
|
||||
-------------------------
|
||||
|
||||
If the Airtime logs indicate failures to connect to the RabbitMQ server, such as:
|
||||
|
@ -83,4 +92,22 @@ 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"
|
||||
```
|
||||
```
|
||||
|
||||
# Uninstall LibreTime {#uninstall}
|
||||
|
||||
Hopefully it wasn't something that we did, but if you need to uninstall LibreTime for
|
||||
any reason, cd to the directory of the installer and run
|
||||
```
|
||||
sudo ./uninstall
|
||||
```
|
||||
|
||||
If allowed, the installer will **permanently** delete all databases and media uploaded to
|
||||
LibreTime.
|
||||
|
||||
If it was something we did, please open an issue request on our Github page, located
|
||||
[here](https://github.com/LibreTime/libretime/issues).
|
||||
|
||||
Until we meet again, best of luck.
|
||||
|
||||
<3 The LibreTime team
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
layout: docs
|
||||
title: Uninstall LibreTime
|
||||
---
|
||||
|
||||
Hopefully it wasn't something that we did, but if you need to uninstall LibreTime for
|
||||
any reason, cd to the directory of the installer and run `sudo ./uninstall` and follow the prompts.
|
||||
If allowed, the installer will **permanently** delete all databases and media uploaded to
|
||||
LibreTime.
|
||||
|
||||
If it was something we did, please open an issue request on our Github page, located
|
||||
[here](https://github.com/LibreTime/libretime/issues).
|
||||
|
||||
Until we meet again, best of luck.
|
||||
|
||||
<3 The LibreTime team
|
Loading…
Reference in New Issue