Browse Source

fix some spelling mistakes (#251)

pull/257/head ci/4105
dkanada 3 years ago
committed by GitHub
parent
commit
1e914d6c73
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      .editorconfig
  2. 6
      general/contributing/branding.md
  3. 2
      general/contributing/development.md
  4. 8
      general/contributing/index.md
  5. 8
      general/contributing/issues.md
  6. 28
      general/contributing/release-procedure.md
  7. 4
      general/networking/caddy.md
  8. 2
      general/networking/dlna.md
  9. 10
      general/networking/index.md
  10. 26
      general/networking/letsencrypt.md
  11. 4
      general/networking/nginx.md
  12. 14
      general/networking/traefik.md
  13. 10
      general/server/live-tv/index.md
  14. 12
      general/server/live-tv/setup-guide.md

2
.editorconfig

@ -4,6 +4,6 @@ root = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

6
general/contributing/branding.md

@ -11,12 +11,12 @@ The general rule is: Capitalize it, but language, file, or system conventions tr
Specific examples include:
* Writing referring to the project in the abstract should use capitalized `Jellyfin` at all times. `the Jellyfin Project seeks to`, `I contribute to Jellyfin and you should too!`
* C# class and project names, including their files and directories, should use capitalized `Jellyfin` as require by the C# case standards (camelCase or PascalCase). `Jellyfin.LiveTV`, `Jellyfin.sln`,
* Writing referring to the project in the abstract should use capitalized `Jellyfin` at all times. `I contribute to Jellyfin and you should too!`
* C# class and project names, including their files and directories, should use capitalized `Jellyfin` as required by the C# case standards (camelCase or PascalCase). `Jellyfin.LiveTv`, `Jellyfin.sln`
* Other code elements, where the code formatting or style requires lowercase, should use lowercase `jellyfin`. `jellyfinWebComponentsBowerPath`
* The Git repository and non-C# files inside of it should use lowercase `jellyfin` for convenience on case-sensitive filesystems. `build-jellyfin.ps1`
* The final output binary, initscrips, and package names should use lowercase `jellyfin` for similar reasons as above. `jellyfin.dll`, `jellyfin_3.5.2-1_all.deb`, `jellyfin.zip`
* Configuration directories can use either, depending on operating system conventions. `/var/lib/jellyfin`, `AppData/Jellyfin`
* Configuration directories can use either depending on operating system conventions. `/var/lib/jellyfin`, `AppData/Jellyfin`
* The logo has no strict rules for capitalization, the style is dependent on aesthetics and font choice.
## Icons and Other Assets

2
general/contributing/development.md

@ -13,7 +13,7 @@ The best way to get going is to look through the [Issues list](https://github.co
### Major Issue Types
A list of issue types can be found on the [Issue guidelines](xref:contrib-issues#issue-labels) page.
A list of issue types can be found on the [issue guidelines](xref:contrib-issues#issue-labels) section.
### What if there isn't an issue?

8
general/contributing/index.md

@ -5,15 +5,15 @@ title: Contributing
# Contributing to Jellyfin
Thank you for your interest in contributing to the Jellyfin project! This page and its children desribe the ways you can contribute, as well as some of our policies. This should help guide you through your first Issue or PR.
Thank you for your interest in contributing to the Jellyfin project! This page and its children describe the ways you can contribute, as well as some of our policies. This should help guide you through your first Issue or PR.
Even if you can't contribute code, you can still help Jellyfin! The two main things you can help with are testing and creating Issues, and contributing to documentation, translations, and other non-code components.
Even if you can't contribute code, you can still help Jellyfin! The two main things you can help with are testing and creating issues, and contributing to documentation, translations, and other non-code components.
## Issues
We use GitHub Issues extensively to track open problems, new enhancements or features, and other aspects of the development of Jellyfin.
We use GitHub extensively to track open issues, new enhancements or features, and other aspects of development.
Please see the [getting help](xref:getting-help) page for help with troubleshooting and finding bugs, and the [documentation on Issues](xref:contrib-issues) for more information on how to submit good Issues.
Please see the [getting help](xref:getting-help) page for help with troubleshooting and finding bugs, and the [documentation on issues](xref:contrib-issues) for more information on how to submit good issues.
## Code

8
general/contributing/issues.md

@ -1,11 +1,11 @@
---
uid: contrib-issues
title: GitHub Issues
title: Issues
---
# Requesting Features
Feature and enhancement requests should be directed towards [our Fider intance](https://features.jellyfin.org) for tracking, voting, and reporting. Please keep all feature requests to this page and not the GitHub issues.
Feature and enhancement requests should be directed towards [our Fider instance](https://features.jellyfin.org) for tracking, voting, and reporting. Please keep all feature requests to this page and not GitHub issues.
# Issue Guidelines
@ -57,9 +57,9 @@ These labels are broad categories for which part of the codebase is affected.
* `backend`: An issue that mainly relates to the server backend code.
* `build`: An issue that mainly relates to the build process.
### Criticality
These labels help determine how critical an issue is.
* `regression`: An issue in need of immediate attention due to a regression from the last build.

28
general/contributing/release-procedure.md

@ -1,6 +1,6 @@
---
uid: contrib-release-procedure
title: Release Procedure
title: Releases
---
# Release Procedure
@ -13,16 +13,16 @@ Jellyfin uses [semantic versioning](https://semver.org). All releases will have
#### `X` - Major Versions
* Breaks compatibility with the HTTP and/or plugin APIs.
* Breaks compatibility with the HTTP or plugin APIs
#### `Y` - Minor Versions
* Introduces new features.
* Makes minor backwards-compatible API changes.
* Introduces new features
* Makes minor backwards-compatible API changes
#### `Z` - Hotfix Versions
* Introduces critical bugfixes or otherwise changes `master` branch code since the last release.
* Critical bug fixes or minor changes
## General Release Philosophy
@ -34,7 +34,7 @@ Releases will generally be performed on Sundays "when ready". For Major/Minor re
1. Testing is ongoing via `master` nightly builds, so `master` should be generally unbroken before proceeding. The version of `master` should already reflect the upcoming major release version (i.e. `X.Y.0`).
1. Once `master` is in a generally stable state after extensive work, announce a "golden nightly" is incoming via the [jellyfin-dev](https://matrix.to/#/#jellyfin-dev:matrix.org) Matrix/Riot channel and/or Reddit.
1. Once `master` is in a generally stable state after extensive work, announce a "golden nightly" is incoming via the [jellyfin-dev](https://matrix.to/#/#jellyfin-dev:matrix.org) Matrix/Riot channel and Reddit.
1. Collect testing information and repeat as needed.
@ -48,19 +48,19 @@ Releases will generally be performed on Sundays "when ready". For Major/Minor re
1. Create a release branch on the [jellyfin-web](https://github.com/jellyfin/jellyfin-web) repository via CLI from `master`, named `release-X.Y.z`, where `X` and `Y` are the new version number, and `z` is a literal `z`. Push the new branch to GitHub.
1. Create a GitHub release for the new version, based on the newly-created `release-X.Y.z` branch. The tag should be named `vX.Y.Z` (i.e. `vX.Y.0`) and the release named "Release X.Y.Z". The release body should contain the following link only, replacing the version as required:
2. Create a GitHub release for the new version, based on the newly-created `release-X.Y.z` branch. The tag should be named `vX.Y.Z` (i.e. `vX.Y.0`) and the release named "Release X.Y.Z". The release body should contain the following link only, replacing the version as required:
```
[Please see the release announcement on the main repository.](https://github.com/jellyfin/jellyfin/releases/tag/vX.Y.Z)
```
1. Publish the release.
3. Publish the release.
#### Server
1. Create a release branch on the [jellyfin](https://github.com/jellyfin/jellyfin) repository via CLI from `master`, named `release-X.Y.z`, where `X` and `Y` are the new version number, and `z` is a literal `z`. Push the new branch to GitHub.
1. Create a GitHub release for the new version, based on the newly-created `release-X.Y.z` branch. The tag should be named `vX.Y.Z` (i.e. `vX.Y.0`) and the release named "Release X.Y.Z". The release body should contain the following components:
2. Create a GitHub release for the new version, based on the newly-created `release-X.Y.z` branch. The tag should be named `vX.Y.Z` (i.e. `vX.Y.0`) and the release named "Release X.Y.Z". The release body should contain the following components:
a. A quick top blurb under a `# Jellyfin X.Y.Z` header.
@ -72,11 +72,11 @@ Releases will generally be performed on Sundays "when ready". For Major/Minor re
a. A full changelog, split by repository with `### [repo](https://github.com/jellyfin/repo)` subheaders, under a `## Changelog` header. Each element should be a PR number and the PR title.
1. Publish the release.
3. Publish the release.
1. Wait for builds to complete.
4. Wait for builds to complete.
1. Announce the new release in the [jellyfin-announce](https://matrix.to/#/#jellyfin-announce:matrix.org) Matrix/Riot channel and anywhere else required (e.g. Reddit, etc.).
5. Announce the new release in the [jellyfin-announce](https://matrix.to/#/#jellyfin-announce:matrix.org) Matrix/Riot channel and anywhere else required (e.g. Reddit, etc.).
### Hotfix Release Procedure
@ -99,7 +99,7 @@ Releases will generally be performed on Sundays "when ready". For Major/Minor re
1. For the main [jellyfin](https://github.com/jellyfin/jellyfin) repository, bump the version of the repository to the new hotfix version with the `bump_version` script and commit the result with the message "Bump version for X.Y.Z".
1. Push the updated release branch to GitHub.
#### Web Client
1. Create a GitHub release for the new version, based on the relevant `release-X.Y.z` branch. The tag should be named `vX.Y.Z` and the release named "Release X.Y.Z". The release body should contain the following link only, replacing the version as required:
@ -108,7 +108,7 @@ Releases will generally be performed on Sundays "when ready". For Major/Minor re
[Please see the release announcement on the main repository.](https://github.com/jellyfin/jellyfin/releases/tag/vX.Y.Z)
```
1. Publish the release.
2. Publish the release on GitHub and the archive repository.
#### Server

4
general/networking/caddy.md

@ -7,7 +7,7 @@ title: Caddy Reverse Proxy
"[Caddy](https://caddyserver.com/), sometimes clarified as the Caddy web server, is an open source, HTTP/2-enabled web server written in Go. It uses the Go standard library for its HTTP functionality." - [Wikipedia](https://en.wikipedia.org/wiki/Caddy_(web_server))
Add this to your `Caddyfile`:
### Caddyfile
```
DOMAIN_NAME/jellyfin/ {
@ -20,7 +20,7 @@ DOMAIN_NAME/jellyfin/ {
Using DOMAIN_NAME or sub.DOMAIN_NAME would also work, as would using multiple at once.
Caddy will automatically attempt to obtain a free HTTPS certificate and handle renewals, making the section below unecessary.
Caddy will automatically attempt to obtain a free HTTPS certificate and handle renewals, making the section below unnecessary.
If using a subpath, note that `DOMAIN_NAME/jellyfin` will not resolve, the ending slash is needed. To get around this, you can add the following to your `Caddyfile`. This is only helpful for the web client, just one less character to type in the browser.

2
general/networking/dlna.md

@ -5,7 +5,7 @@ title: DLNA
## DLNA
DLNA is based on uPnP. DLNA will send a broadcast signal from Jellyfin. This broadcast is limited to Jellyfin's current subnet. If using Docker, the network should use Host Mode, otherwise the broadcast signal will only be sent in the bridged network inside of docker.
DLNA is based on uPnP. DLNA will send a broadcast signal from Jellyfin. This broadcast is limited to Jellyfin's current subnet. If you are using docker, the network should use Host Mode, otherwise the broadcast signal will only be sent in the bridged network inside of docker.
If DLNA fails to bind properly, the message `[ERR] Failed to bind to port 1900: "Address already in use". DLNA will be unavailable` should appear in the logs.

10
general/networking/index.md

@ -31,7 +31,7 @@ Since client auto-discover would break if this option were configurable, you can
**Client Discovery:** 7359 UDP
Allows clients to discover the Jellyfin Server on the local network. A broadcast message to this port with `Who is JellyfinServer?` will get a json response that includes the server Address, ID and Name.
Allows clients to discover Jellyfin on the local network. A broadcast message to this port with `Who is JellyfinServer?` will get a JSON response that includes the server address, ID, and name.
### Dynamic Ports
@ -53,15 +53,15 @@ Some popular options for reverse proxy systems are [Apache](https://httpd.apache
* [Traefik](xref:network-reverse-proxy-traefik)
While not a reverse proxy, Let's Encrypt can be used independently or with a Reverse Proxy to provide SSL certificates.
* [Let's Encrypt](xref:network-letsencrypt )
* [Let's Encrypt](xref:network-letsencrypt)
When following this guide, be sure to replace the following variables with your information:
When following this guide, be sure to replace the following variables with your information.
* `DOMAIN_NAME`: Your public domain name to access Jellyfin on (e.g. jellyfin.example.com)
* `example.com`: The domain name Jellyfin services will run under (e.g. example.com)
* `SERVER_IP_ADDRESS`: The IP address of your Jellyfin server (if the reverse proxy is on the same server use 127.0.0.1)
In addition, the examples are configured for use with LetsEncrypt certificates. If you have a certificate from another source, change the SSL configuration from `/etc/letsencrypt/DOMAIN_NAME/` to the location of your certificate and key.
In addition, the examples are configured for use with Let's Encrypt certificates. If you have a certificate from another source, change the SSL configuration from `/etc/letsencrypt/DOMAIN_NAME/` to the location of your certificate and key.
Ports 80 and 443 (pointing to the proxy server) need to be opened on your router and firewall.
@ -88,4 +88,4 @@ There are three main caveats to this setting.
## Final Steps
It's strongly recommend that you check your SSL strength and server security at [SSLLabs](https://www.ssllabs.com/ssltest/analyze.html) if you are exposing these service to the internet.
It's strongly recommend that you check your SSL strength and server security at [SSLLabs](https://www.ssllabs.com/ssltest/analyze.html) if you are exposing these services to the internet.

26
general/networking/letsencrypt.md

@ -5,7 +5,7 @@ title: Let's Encrypt
## LetsEncrypt with Certbot
LetsEncrypt is a service that provides free SSL/TLS certificates to users. Certbot is a client that makes this easy to accomplish and automate. In addition, it has plugins for Apache and Nginx that make automating certificate generation even easier.
LetsEncrypt is a service that provides free SSL/TLS certificates to users. Certbot is a client that makes this easy to accomplish and automate. In addition, it has plugins for Apache and Nginx that make automating certificate generation even easier.
Installation instructions for most Linux distributions can be found on the [Certbot](https://certbot.eff.org/docs/install.html#operating-system-packages) website.
@ -13,27 +13,27 @@ Once the packages are installed, you're ready to generate a new certificate.
### Apache
After installing Certbot and the Apache plugin, certificate generation is accomplished by:
After installing Certbot and the Apache plugin, certificate generation is accomplished by with the following command.
``certbot certonly --apache --noninteractive --agree-tos --email YOUR_EMAIL -d DOMAIN_NAME``
Update the 'SSLCertificateFile' and 'SSLCertificateKeyFile' sections, then restart the service.
Add a job to cron so the certificate will be renwed automatically:
Add a job to cron so the certificate will be renewed automatically.
``echo "0 0 * * * root certbot renew --quiet --no-self-upgrade --post-hook 'systemctl reload apache2'" | sudo tee -a /etc/cron.d/renew_certbot``
### HAProxy
HAProxy doesn't currently have a certbot plugin. To get around this, run certbot in standalone mode and proxy traffic back to it.
HAProxy doesn't currently have a Certbot plugin. To get around this, run Certbot in standalone mode and proxy traffic back to it.
Enable the frontend and backend in the config above, and then run:
Enable the frontend and backend in the config above, and then run Certbot.
``certbot certonly --standalone --preferred-challenges http-01 --http-01-port 8888 --noninteractive --agree-tos --email YOUR_EMAIL -d DOMAIN_NAME``
The port can be changed to anything you like, but be sure that the HAProxy config and your certbot command match.
The port can be changed to anything you like, but be sure that the HAProxy config and your Certbot command match.
Haproxy needs to have the certificate and key files concatenated into the same file to read it correctly. This can be accomplished with the following command.
HAProxy needs to have the certificate and key files concatenated into the same file to read it correctly. This can be accomplished with the following command.
``cat /etc/letsencrypt/live/DOMAIN_NAME/fullchain.pem /etc/letsencrypt/live/DOMAIN_NAME/privkey.pem > /etc/ssl/DOMAIN_NAME.pem``
@ -41,7 +41,7 @@ Uncomment `bind *:443` and the redirect section in the configuration, then reloa
#### Automatic Certificate Renewal
Place the following script in `/usr/local/bin/` to automatically update your SSL certificate:
Place the following script in `/usr/local/bin/` to automatically update your SSL certificate.
```
SITE=DOMAIN_NAME
@ -56,24 +56,24 @@ cat fullchain.pem privkey.pem > /etc/ssl/$SITE.pem
service haproxy reload
```
Make sure the script is executable
Make sure the script is executable.
``chmod u+x /usr/local/bin/letsencrypt-renew.sh``
Add a job to cron so the certificate will be renewed automatically:
Add a job to cron so the certificate will be renewed automatically.
``@monthly /usr/bin/certbot renew --renew-hook "/usr/local/bin/letsencrypt-renew.sh" >> /var/log/letsencrypt-renewal.log``
### Nginx
After installing certbot and the Nginx plugin with `sudo apt install certbot python3-certbot-nginx`, certificate generation is accomplished by:
After installing Certbot and the Nginx plugin with `sudo apt install certbot python3-certbot-nginx`, generate the certificate.
`sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email YOUR_EMAIL -d YOUR_DOMAIN`
(Add the ``--rsa-key-size 4096`` parameter if you want a 4096 bit key instead)
Add the `--rsa-key-size 4096` parameter if you want a 4096 bit key instead.
Copy and paste the whole Nginx sample configuration file from above, changing the parameters according to your setup and uncommenting the lines.
Add a job to cron so the certificate will be renewed automatically:
Add a job to cron so the certificate will be renewed automatically.
`echo "0 0 * * * root certbot renew --quiet --no-self-upgrade --post-hook 'systemctl reload nginx'" | sudo tee -a /etc/cron.d/renew_certbot`

4
general/networking/nginx.md

@ -7,7 +7,7 @@ title: Nginx Reverse Proxy
"[Nginx](https://www.nginx.com/) (pronounced "engine X") is a web server which can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Igor Sysoev and first publicly released in 2004.[9] A company of the same name was founded in 2011 to provide support and Nginx plus paid software." - [Wikipedia](https://en.wikipedia.org/wiki/Nginx)
Create the file `/etc/nginx/conf.d/jellyfin.conf`.
Create the file `/etc/nginx/conf.d/jellyfin.conf` which will forward requests to Jellyfin.
```
server {
@ -75,7 +75,7 @@ server {
When connecting to server from a client application, enter `http(s)://DOMAIN_NAME/jellyfin` in the address field.
Set the base URL field in the Jellyfin server. This can be done by navigating to the Admin Dashboard -> Networking -> Base URL in the Jellyfin Web UI. Fill in this box with `/jellyfin` and click Save. The server will need to be restarted before this change takes effect.
Set the base URL field in the Jellyfin server. This can be done by navigating to the Admin Dashboard -> Networking -> Base URL in the web client. Fill in this box with `/jellyfin` and click Save. The server will need to be restarted before this change takes effect.
```
# Jellyfin hosted on http(s)://DOMAIN_NAME/jellyfin

14
general/networking/traefik.md

@ -3,11 +3,11 @@ uid: network-reverse-proxy-traefik
title: Traefik Reverse Proxy
---
## Traefik (with docker-compose)
## Traefik
[Traefik](https://traefik.io/) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, ...) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the only configuration step you need. This configuration is A+. Test your setup here at [SSLlabs](https://www.ssllabs.com/ssltest/).
Create these three files in the **same** directory or change their paths in the volume section: docker-compose.yml, traefik.toml and acme.json.
Create docker-compose.yml, traefik.toml and acme.json in the **same** directory or change their paths in the volume section.
> [!NOTE]
> Ensure you enable Basic Auth protection for Traefik or disable its Dashboard. Otherwise your Dashboard will be accessible from the internet.
@ -19,7 +19,7 @@ $ echo $(htpasswd -nb username mystrongpassword) | sed -e s/\\$/\\$\\$/g
This command automatically escapes all $ inside the password for the YML file. If using an environment file, it does not need the $ escaped since it will not be interpreted by the shell.
docker-compose.yml:
### docker-compose.yml
```
version: '3.5'
@ -79,7 +79,7 @@ This TOML file can't support environment variables, so don't attempt to use vari
> [!WARNING]
> Due to a [bug](https://github.com/containous/traefik/issues/5559) in Traefik, you cannot dynamically route to containers when network_mode=host, so we have created a static route to the docker host (172.17.0.1:8096) in `traefik.toml`. Using host networking (or macvlan) is required to use DLNA or an HdHomeRun as it supports multicast networking.
traefik.toml:
### traefik.toml
```toml
logLevel = "WARN"
@ -154,7 +154,7 @@ exposedbydefault = false
customFrameOptionsValue = "allow-from https://example.com"
```
Finally, create an empty acme.json.
Finally, create an empty acme.json file to handle the certificate.
```bash
$ touch acme.json
@ -162,9 +162,9 @@ $ chmod 600 acme.json
```
> [!WARNING]
> Change example.com to your domain name and change the mail of the acme (user@example.com in traefik.toml). Let's Encrypt does not require a valid email address however example.com will be flagged as not being a proper email address.
> Change example.com to your domain name and update the acme.json file with your email address. Let's Encrypt does not require a valid email but example.com will be flagged as fake.
Launch your Traefik/Jellyfin services.
Launch the Traefik and Jellyfin services.
```bash
$ docker-compose up -d

10
general/server/live-tv/index.md

@ -13,8 +13,8 @@ Jellyfin allows you to watch and record live television using supported hardware
Jellyfin has support for the following tuners:
* HDHomeRun
* M3U
* HDHomeRun
* M3U
HDHomeRun is a special case because they will usually get detected automatically by the server. Otherwise you can manually add tuners by navigating to **Live TV** in the settings and adding one there.
@ -29,8 +29,8 @@ Additional tuner types are available via plugins.
Guide data will need to be mapped to their corresponding channels after a guide data provider is configured. The guide data formats below are included with the server:
* Schedules Direct
* XMLTV
* Schedules Direct
* XMLTV
[Schedules Direct](http://www.schedulesdirect.org) is a paid service providing electronic program guide data to the United States and Canada.
@ -40,4 +40,4 @@ Guide data will need to be mapped to their corresponding channels after a guide
You can view the status of each tuner connected to the server in the settings. There are also buttons to manually refresh the tuners if they experience problems.
The guide data can be refreshed manually if you run into problems. This isn't normally required since the data is refreshed periodically.
The guide data can be refreshed manually if you run into problems. This isn't normally required since the data is refreshed periodically.

12
general/server/live-tv/setup-guide.md

@ -5,7 +5,7 @@ title: Setup Guide
# Setup Guide
## Add a TV tuner to Jellyfin (Automatic Discovery)
## Add a TV Tuner to Jellyfin (Automatic Discovery)
Click on the Admin Panel Icon in the top right corner (1)
Click 'Live TV' (2) under the 'Live TV' section
@ -22,7 +22,7 @@ Click on the device you'd like to set up then set any options then click 'Save'
![](~/images/live-tv-setup-tuner3.png)
## Add a TV tuner to Jellyfin (Manual Setup)
## Add a TV Tuner to Jellyfin (Manual Setup)
You can set up your tuners manually if they were not automatically discovered. Click the 'Tuner Type' pull down. Choose between 'HD Homerun', 'M3U Tuner', and 'Other'
@ -57,14 +57,14 @@ This tuner allows you to add IPTV channel to Jellyfin by using the appropriate M
>
> https://raw.githubusercontent.com/notanewbie/LegalStream/master/packages/news/live.m3u8
## Adding Guide Data:
## Adding Guide Data
Guide data is necessary for scheduling tv recordings and for browsing what's currently playing and what will air later. Follow these steps once you have a tuner device set up. Click on the Admin Panel Icon in the top right corner, Click 'Live TV' (2) under the 'Live TV' section, Click the '+' button next to 'TV Guide Data Providers' :
![](~/images/live-tv-setup-guide1.png)
Choose between 'Schedules Direct' and 'Xml TV'. You currently cannot use both at the same time.
Choose between 'Schedules Direct' and 'XMLTV'. You currently cannot use both at the same time.
**Schedules Direct:**
Schedules Direct is a paid service that provides U.S. and Canadian guide data for use in OSS projects. The price is $25 a year and has not increased since it began in 2007. The guide data is highly reliable. You will have to create an account at their [website](http://www.schedulesdirect.org).
@ -73,7 +73,7 @@ Schedules Direct is a paid service that provides U.S. and Canadian guide data fo
This option allows for downloading of guide data in the [XMLTV](http://wiki.xmltv.org/index.php/XMLTVFormat) format.
# Mapping Channels:
## Mapping Channels
Guide data from the 'TV Guide Data Providers' will need to be mapped to the physical channel from the tuner. Click the '...' next to the guide provider you set up and select 'Map Channels'

Loading…
Cancel
Save