move to s6 overlay structure (#13)

* move to s6 overlay structure

* Use alpine:latest and latest s6

* cleanup Dockerfile

* use .env file on docker run

* change mappings so all under one folder

* Update README

* change cron default to hourly to keep things updated

* add section about editing xteve settings

* add nice 'logging' to stdout
This commit is contained in:
taylorbourne
2020-03-05 11:13:14 -08:00
committed by GitHub
parent 7a7cfd1a56
commit 3a11a46f09
23 changed files with 1676 additions and 262 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
appdata/
customrun.sh
.env

View File

@@ -1,40 +1,35 @@
FROM alpine:latest
RUN apk update
RUN apk upgrade
RUN apk add --no-cache ca-certificates
LABEL maintainer="taylorbourne taylorbourne@me.com.com"
MAINTAINER taylorbourne taylorbourne@me.com.com
# Install S6 overlay
ARG S6_OVERLAY_RELEASE=https://github.com/just-containers/s6-overlay/releases/latest/download/s6-overlay-amd64.tar.gz
ENV S6_OVERLAY_RELEASE=${S6_OVERLAY_RELEASE}
# Extras
RUN apk add --no-cache curl
ADD ${S6_OVERLAY_RELEASE} /tmp/s6overlay.tar.gz
# Timezone (TZ)
RUN apk update && apk add --no-cache tzdata
RUN tar xzf /tmp/s6overlay.tar.gz -C / \
&& rm /tmp/s6overlay.tar.gz
# Add packages
RUN apk upgrade --update --no-cache \
&& apk add --no-cache \
ca-certificates \
curl \
tzdata \
bash \
coreutils \
shadow \
ffmpeg \
vlc \
gnutls-utils
# Update Timezone
ENV TZ=America/Los_Angeles
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Add Bash shell & dependancies
RUN apk add --no-cache bash busybox-suid su-exec
# Volumes
VOLUME /config
VOLUME /playlists
VOLUME /guide2go
VOLUME /root/.xteve
VOLUME /tmp/xteve
# Add ffmpeg and vlc
RUN apk add ffmpeg
RUN apk add vlc
RUN sed -i 's/geteuid/getppid/' /usr/bin/vlc
# Add GNUtls so we can update certs
RUN apk add --no-cache gnutls-utils
# Add xTeve and guide2go
RUN wget https://github.com/xteve-project/xTeVe-Downloads/raw/master/xteve_linux_amd64.zip -O temp.zip; unzip temp.zip -d /usr/bin/; rm temp.zip
ADD guide2go /usr/bin/guide2go
# Add lazystream
RUN wget https://github.com/tarkah/lazystream/releases/download/v1.9.7/lazystream-v1.9.7-x86_64-unknown-linux-musl.tar.gz -O lazystream.tar.gz; \
@@ -43,20 +38,51 @@ RUN wget https://github.com/tarkah/lazystream/releases/download/v1.9.7/lazystrea
rm lazystream.tar.gz; \
rm -rf lazystream/
ADD cronjob.sh /
ADD entrypoint.sh /
ADD sample_cron.txt /
ADD sample_xteve.txt /
# Add abc user
RUN groupmod -g 1000 users && \
useradd -u 911 -U -d /home/abc -s /bin/bash abc && \
usermod -G users abc
# Copy root folder
COPY root/ /
# Volumes
VOLUME /config
VOLUME /playlists
VOLUME /guide2go
VOLUME /xteve
VOLUME /tmp/xteve
# Set executable permissions
RUN chmod +x /entrypoint.sh
RUN chmod +x /cronjob.sh
RUN chmod +x /usr/bin/lazystream
RUN chmod +x /usr/bin/xteve
RUN chmod +x /usr/bin/guide2go
# Expose Port
EXPOSE 34400
# Build arg
ARG XTEVE_PORT=34400
# Entrypoint
ENTRYPOINT ["./entrypoint.sh"]
# Env
ENV PUID=1000 \
PGID=1000 \
XTEVE_PORT=${XTEVE_PORT} \
use_xTeveAPI=yes \
use_lazystream=yes \
include_nhl=yes\
include_mlb=yes \
use_guide2go=no \
JsonList="CBLguide.json SATguide.json SATSport.json" \
use_embyAPI=no \
embyIP= \
embyPORT=8096 \
embyApiKey= \
embyID= \
use_plexAPI=no \
plexIP= \
plexPORT=32400 \
plexToken= \
plexID=
# Expose Port
EXPOSE ${XTEVE_PORT}
ENTRYPOINT [ "/init" ]

View File

@@ -1,23 +1,78 @@
# Lazystream Plex/Emby Bundle
This Docker provides a simple solution to get live NHL and MLB games into your Emby or Plex live TV setup. When combined with a comprehensive IPTV package this setup can you rolling with live TV and high quality sports. If you would only like to use this for the available sports, simply disable guide2go (or any other function you would like) from the cronjob.
This Docker provides a simple solution to get live NHL and MLB games into your Emby or Plex live TV setup. When combined with a comprehensive IPTV package this setup can get you rolling with live TV and high quality sports. If you would only like to use this for the available sports, simply disable guide2go (or any other function you would like).
## Run Command
- [Run](#run)
- [Setup](#setup)
- [Env file](#env-file)
- [Cron schedule](#cron-schedule)
- [Sample volume mapping](#sample-volume-mapping)
- [xTeVe](#xteve)
- [guide2go](#guide2go)
- [Testing cronjob function](#testing-cronjob-function)
- [Credits](#credits)
- [guide2go](#guide2go-1)
- [Lazystream](#lazystream)
- [xTeVe](#xteve-1)
# Run
```
docker run -d \
--name=xteve_lazystream \
-p 34400:34400 \
-e TZ="America/Los_Angeles" \
--env-file=.env \
--log-opt max-size=10m \
--log-opt max-file=3 \
-e TZ="America/Los_Angeles" \
-v /mnt/user/appdata/xteve/:/root/.xteve:rw \
-v /mnt/user/appdata/xteve/_config/:/config:rw \
-v /mnt/user/appdata/xteve/_guide2go/:/guide2go:rw \
-v /mnt/user/appdata/xteve/.xteve:/xteve:rw \
-v /mnt/user/appdata/xteve/config/:/config:rw \
-v /mnt/user/appdata/xteve/guide2go/:/guide2go:rw \
-v /mnt/user/appdata/xteve/playlists/:/playlists:rw \
-v /tmp/xteve/:/tmp/xteve:rw \
taylorbourne/xteve_lazystream
```
# Setup
## Env file
Defaults & behavior can be changed through environment variables. `sample.env` should be renamed to `.env` and supplied through the `--env-file` docker run option. The `.env` file can also be picked up if using this in a `docker compose` setup.
## Cron schedule
By default, the cron job is scheduled to run every hour. A custom cron schedule can be specified by renaming the `sample_cron.txt` file in the `/config` volume to `cron.txt` and editing the schedule. Make sure to restart your container to take effect.
## Sample volume mapping
| Container Path | Host Path |
| -------------- | --------------------------------- |
| /xteve | /mnt/user/appdata/xteve/.xteve |
| /config | /mnt/user/appdata/xteve/config |
| /guide2go | /mnt/user/appdata/xteve/guide2go |
| /playlists | /mnt/user/appdata/xteve/playlists |
| /tmp/xteve | /tmp/xteve |
## xTeVe
By default, xTeVe is setup with all 200 channels mapped for NHL and MLB games. This can be setup directly with Plex / Emby to work out of the box without any changes. If needed, changes can be made to xTeVe by going to `127.0.0.1:34400/web/`.
## guide2go
If you have an existing guide2go setup you may copy the `.json` files into the path mounted at `/guide2go`. Otherwise run the following command and follow the on-screen steps
`docker exec -it dockername guide2go -configure /guide2go/your_epg_name.json`
## Testing cronjob function
Simply run the cronjob file inside the Docker container
`docker exec -it dockername ./cronjob.sh`
# Credits
[Lazystream](https://github.com/tarkah/lazystream) [@tarkah](https://github.com/tarkah/)
[xTeVe](https://github.com/xteve-project/xTeVe) and [guide2go](https://github.com/mar-mei/guide2go) [@marmei](https://github.com/mar-mei)
Original author of the [xTeVe/guide2go Docker](https://github.com/alturismo/xteve_guide2goe) [@alturismo](https://github.com/alturismo)
## guide2go
XMLTV EPG grabber for Schedules Direct, thanks to @marmei
@@ -32,34 +87,4 @@ GitHub: https://github.com/tarkah/lazystream
IPTV and EPG proxy server for Plex, Emby, etc thanks to @marmei
Website: http://xteve.de
Discord: https://discordapp.com/channels/465222357754314767/465222357754314773
# Setup
Please note that this Docker is configured to run in host mode. Once the Docker has started, check the configuration folder to complete the setup process. You'll want to edit `config/cronjob.sh` to suit your needs. Read this complete document before starting up the container.
## Sample volume mapping
| Container Path | Host Path |
| -------------- | ----------------------------------- |
| /root/.xteve | /mnt/user/appdata/xteve/ |
| /config | /mnt/user/appdata/xteve/\_config/ |
| /guide2go | /mnt/user/appdata/xteve/\_guide2go/ |
| /playlists | /mnt/user/appdata/xteve/playlists/ |
| /tmp/xteve | /tmp/xteve/ |
## guide2go
If you have an existing guide2go setup you may copy the `.json` files into the path mounted at `/guide2go`. Otherwise run the following command and follow the on-screen steps
`docker exec -it dockername guide2go -configure /guide2go/your_epg_name.json`
## Testing cronjob function
Simply run the cronjob file inside the Docker container
`docker exec -it dockername ./config/cronjob.sh`
# Credits
[Lazystream](https://github.com/tarkah/lazystream) [@tarkah](https://github.com/tarkah/)
[xTeVe](https://github.com/xteve-project/xTeVe) and [guide2go](https://github.com/mar-mei/guide2go) [@marmei](https://github.com/mar-mei)
Original author of the [xTeVe/guide2go Docker](https://github.com/alturismo/xteve_guide2goe) [@alturismo](https://github.com/alturismo)
Discord: https://discordapp.com/channels/465222357754314767/465222357754314773

View File

@@ -1,124 +0,0 @@
#!/bin/bash
echo "Running scripts..."
##### Config
use_embyAPI="no"
use_guide2go="no"
use_lazystream="no"
use_plexAPI="no"
use_xTeveAPI="yes"
##### Lazystream Config
include_nhl="no"
include_mlb="no"
### List of created lineup json files in /guide2go
# Exmaple with 3 lineups
JsonList="CBLguide.json SATguide.json SATSport.json"
### to create your lineups run the below command and follow the on-screen instructions
# docker exec -it <yourdockername> guide2go -configure /guide2go/<lineupnamehere>.json
### xTeVe
xTeveIP="192.168.1.2"
xTevePORT="34400"
### Emby
# Only necessary if xTeVe API is active
# API Key, https://github.com/MediaBrowser/Emby/wiki/Api-Key-Authentication
# embyID, settings, scroll down click API, Scheduled Task Service, GET /ScheduledTasks, Try, Execute, look for "Refresh Guide" ID, sample here 9492d30c70f7f1bec3757c9d0a4feb45
embyIP="192.168.1.2"
embyPORT="8096"
embyApiKey=""
embyID="9492d30c70f7f1bec3757c9d0a4feb45"
### Plex
# Only necessary if xTeVe API is active
# Finding your Plex token: https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/
# Finding Plex ID: http://YOUR_IP_HERE:32400/?X-Plex-Token=YOUR_TOKEN_HERE , look for "tv.plex.providers.epg.xmltv: " and enter the value blow.
plexIP="192.168.1.2"
plexPORT="32400"
plexToken=""
plexID=""
# cronjob, check sample_cron.txt with an editor to adjust time
### END Config
##
#
### Generate playlist and XML data from Lazystream
if [ "$use_lazystream" = "yes" ]; then
if [ "$include_nhl" = "yes" ]; then
echo "Running Lazystream (NHL)..."
mkdir -p /playlists/lazystream
lazystream generate xmltv \
--channel-prefix Lazystream:\ NHL \
--start-channel 1000 \
/playlists/lazystream/lazystream-nhl
fi
if [ "$include_mlb" = "yes" ]; then
echo "Running Lazystream (MLB)..."
mkdir -p /playlists/lazystream
lazystream --sport mlb generate xmltv \
--channel-prefix Lazystream:\ MLB \
--start-channel 2000 \
/playlists/lazystream/lazystream-mlb
fi
fi
# run guide2go in a loop
if [ "$use_guide2go" = "yes" ]; then
echo "Running guide2Go..."
for jsons in $JsonList
do
jsonefile="${jsons%.*}"
filecache=' "file.cache": "/guide2go/cache_'$jsons'",'
fileoutput=' "file.output": "/guide2go/'$jsonefile'.xml",'
sed -i "/file.cache/c $filecache" /guide2go/$jsons
sed -i "/file.output/c $fileoutput" /guide2go/$jsons
guide2go -config /guide2go/$jsons
done
fi
sleep 1
# update xteve via API
if [ "$use_xTeveAPI" = "yes" ]; then
echo "Updating xTeVe..."
if [ -z "$xTeveIP" ]; then
echo "no xTeve credentials provided"
else
curl -X POST -d '{"cmd":"update.m3u"}' http://$xTeveIP:$xTevePORT/api/
sleep 1
curl -X POST -d '{"cmd":"update.xmltv"}' http://$xTeveIP:$xTevePORT/api/
sleep 1
curl -X POST -d '{"cmd":"update.xepg"}' http://$xTeveIP:$xTevePORT/api/
sleep 1
fi
fi
# update Emby via API
if [ "$use_embyAPI" = "yes" ]; then
echo "Updating Emby..."
if [ -z "$embyIP" ]; then
echo "no Emby credentials provided"
else
curl -X POST "http://$embyIP:$embyPORT/emby/ScheduledTasks/Running/$embyID?api_key=$embyApiKey" -H "accept: */*" -d ""
sleep 1
fi
fi
# update Plex via API
if [ "$use_plexAPI" = "yes" ]; then
echo "Updating Plex..."
if [ -z "$plexIP" ]; then
echo "no Plex credentials provided"
else
curl -X POST "http://$plexIP:$plexPORT/livetv/dvrs/$plexID/reloadGuide?X-Plex-Token=$plexToken"
sleep 1
fi
fi
exit

View File

@@ -1,54 +0,0 @@
#!/bin/bash
crond -l 2
# Update hosts file
export IP=$(getent ahostsv4 freegamez.ga | awk '{ print $1 }' | head -1)
echo $IP playback.svcs.mlb.com >> /etc/hosts
echo $IP mf.svc.nhl.com >> /etc/hosts
echo $IP mlb-ws-mf.media.mlb.com >> /etc/hosts
cat /etc/hosts
# Update certs
rm /root/.gnutls/known_hosts
printf 'y\n' | gnutls-cli --tofu playback.svcs.mlb.com:443
printf 'y\n' | gnutls-cli --tofu mf.svc.nhl.com:443
printf 'y\n' | gnutls-cli --tofu mlb-ws-mf.media.mlb.com:443
cat /root/.gnutls/known_hosts
CRONJOB_FILE=/config/cronjob.sh
if [ -f "$CRONJOB_FILE" ]; then
echo "$CRONJOB_FILE already exists if changes are necessary please edit this file."
chmod +x $CRONJOB_FILE
chmod 777 $CRONJOB_FILE
else
echo "$CRONJOB_FILE does not exist, auto-generating cronjob file. Please edit to complete setup."
cp /cronjob.sh $CRONJOB_FILE
chmod +x $CRONJOB_FILE
chmod 777 $CRONJOB_FILE
fi
CRON_FILE=/config/cron.txt
if [ -f "$CRON_FILE" ]; then
. $CRON_FILE
else
echo "No cron definition found..."
echo "By default, cronjob will run every night at midnight unless cron file is configured."
printf '0 0 * * * /config/cronjob.sh' > /etc/crontabs/root
cp /sample_cron.txt /config/sample_cron.txt
fi
XTEVE_FILE=/config/xteve.txt
echo "Starting xTeVe..."
if [ -f "$XTEVE_FILE" ]; then
. $XTEVE_FILE
else
echo "Starting xTeVe with default config..."
cp /sample_xteve.txt /config/sample_xteve.txt
xteve -port=34400 -config=/root/.xteve/
fi
exit

84
root/cronjob.sh Executable file
View File

@@ -0,0 +1,84 @@
#!/usr/bin/with-contenv bash
function prepend() {
time=`date +"%Y/%m/%d %H:%M:%S"`
while read line;
do echo "${time} ${1}${line}";
done;
}
exec 1> >(prepend "[cronjob.sh] ")
echo "Running scripts..."
### Generate playlist and XML data from Lazystream
if [ "$use_lazystream" = "yes" ]; then
if [ "$include_nhl" = "yes" ]; then
echo "Running Lazystream (NHL)..."
mkdir -p /playlists/lazystream
lazystream generate xmltv \
--channel-prefix Lazystream:\ NHL \
--start-channel 1000 \
/playlists/lazystream/lazystream-nhl
fi
if [ "$include_mlb" = "yes" ]; then
echo "Running Lazystream (MLB)..."
mkdir -p /playlists/lazystream
lazystream --sport mlb generate xmltv \
--channel-prefix Lazystream:\ MLB \
--start-channel 2000 \
/playlists/lazystream/lazystream-mlb
fi
fi
# run guide2go in a loop
if [ "$use_guide2go" = "yes" ]; then
echo "Running guide2Go..."
for jsons in $JsonList
do
jsonefile="${jsons%.*}"
filecache=' "file.cache": "/guide2go/cache_'$jsons'",'
fileoutput=' "file.output": "/guide2go/'$jsonefile'.xml",'
sed -i "/file.cache/c $filecache" /guide2go/$jsons
sed -i "/file.output/c $fileoutput" /guide2go/$jsons
guide2go -config /guide2go/$jsons
done
fi
sleep 1
# update xteve via API
if [ "$use_xTeveAPI" = "yes" ]; then
echo "Updating xTeVe..."
curl -s -X POST -d '{"cmd":"update.m3u"}' http://127.0.0.1:$XTEVE_PORT/api/
sleep 1
curl -s -X POST -d '{"cmd":"update.xmltv"}' http://127.0.0.1:$XTEVE_PORT/api/
sleep 1
curl -s -X POST -d '{"cmd":"update.xepg"}' http://127.0.0.1:$XTEVE_PORT/api/
sleep 1
fi
# update Emby via API
if [ "$use_embyAPI" = "yes" ]; then
echo "Updating Emby..."
if [ -z "$embyIP" ]; then
echo "no Emby credentials provided"
else
curl -s -X POST "http://$embyIP:$embyPORT/emby/ScheduledTasks/Running/$embyID?api_key=$embyApiKey" -H "accept: */*" -d ""
sleep 1
fi
fi
# update Plex via API
if [ "$use_plexAPI" = "yes" ]; then
echo "Updating Plex..."
if [ -z "$plexIP" ]; then
echo "no Plex credentials provided"
else
curl -s -X POST "http://$plexIP:$plexPORT/livetv/dvrs/$plexID/reloadGuide?X-Plex-Token=$plexToken"
sleep 1
fi
fi
exit

View File

@@ -0,0 +1,201 @@
#EXTM3U
#EXTINF:-1 CUID="2000" tvg-id="2000" tvg-name="Lazystream: MLB 1",Lazystream: MLB 1
.
#EXTINF:-1 CUID="2001" tvg-id="2001" tvg-name="Lazystream: MLB 2",Lazystream: MLB 2
.
#EXTINF:-1 CUID="2002" tvg-id="2002" tvg-name="Lazystream: MLB 3",Lazystream: MLB 3
.
#EXTINF:-1 CUID="2003" tvg-id="2003" tvg-name="Lazystream: MLB 4",Lazystream: MLB 4
.
#EXTINF:-1 CUID="2004" tvg-id="2004" tvg-name="Lazystream: MLB 5",Lazystream: MLB 5
.
#EXTINF:-1 CUID="2005" tvg-id="2005" tvg-name="Lazystream: MLB 6",Lazystream: MLB 6
.
#EXTINF:-1 CUID="2006" tvg-id="2006" tvg-name="Lazystream: MLB 7",Lazystream: MLB 7
.
#EXTINF:-1 CUID="2007" tvg-id="2007" tvg-name="Lazystream: MLB 8",Lazystream: MLB 8
.
#EXTINF:-1 CUID="2008" tvg-id="2008" tvg-name="Lazystream: MLB 9",Lazystream: MLB 9
.
#EXTINF:-1 CUID="2009" tvg-id="2009" tvg-name="Lazystream: MLB 10",Lazystream: MLB 10
.
#EXTINF:-1 CUID="2010" tvg-id="2010" tvg-name="Lazystream: MLB 11",Lazystream: MLB 11
.
#EXTINF:-1 CUID="2011" tvg-id="2011" tvg-name="Lazystream: MLB 12",Lazystream: MLB 12
.
#EXTINF:-1 CUID="2012" tvg-id="2012" tvg-name="Lazystream: MLB 13",Lazystream: MLB 13
.
#EXTINF:-1 CUID="2013" tvg-id="2013" tvg-name="Lazystream: MLB 14",Lazystream: MLB 14
.
#EXTINF:-1 CUID="2014" tvg-id="2014" tvg-name="Lazystream: MLB 15",Lazystream: MLB 15
.
#EXTINF:-1 CUID="2015" tvg-id="2015" tvg-name="Lazystream: MLB 16",Lazystream: MLB 16
.
#EXTINF:-1 CUID="2016" tvg-id="2016" tvg-name="Lazystream: MLB 17",Lazystream: MLB 17
.
#EXTINF:-1 CUID="2017" tvg-id="2017" tvg-name="Lazystream: MLB 18",Lazystream: MLB 18
.
#EXTINF:-1 CUID="2018" tvg-id="2018" tvg-name="Lazystream: MLB 19",Lazystream: MLB 19
.
#EXTINF:-1 CUID="2019" tvg-id="2019" tvg-name="Lazystream: MLB 20",Lazystream: MLB 20
.
#EXTINF:-1 CUID="2020" tvg-id="2020" tvg-name="Lazystream: MLB 21",Lazystream: MLB 21
.
#EXTINF:-1 CUID="2021" tvg-id="2021" tvg-name="Lazystream: MLB 22",Lazystream: MLB 22
.
#EXTINF:-1 CUID="2022" tvg-id="2022" tvg-name="Lazystream: MLB 23",Lazystream: MLB 23
.
#EXTINF:-1 CUID="2023" tvg-id="2023" tvg-name="Lazystream: MLB 24",Lazystream: MLB 24
.
#EXTINF:-1 CUID="2024" tvg-id="2024" tvg-name="Lazystream: MLB 25",Lazystream: MLB 25
.
#EXTINF:-1 CUID="2025" tvg-id="2025" tvg-name="Lazystream: MLB 26",Lazystream: MLB 26
.
#EXTINF:-1 CUID="2026" tvg-id="2026" tvg-name="Lazystream: MLB 27",Lazystream: MLB 27
.
#EXTINF:-1 CUID="2027" tvg-id="2027" tvg-name="Lazystream: MLB 28",Lazystream: MLB 28
.
#EXTINF:-1 CUID="2028" tvg-id="2028" tvg-name="Lazystream: MLB 29",Lazystream: MLB 29
.
#EXTINF:-1 CUID="2029" tvg-id="2029" tvg-name="Lazystream: MLB 30",Lazystream: MLB 30
.
#EXTINF:-1 CUID="2030" tvg-id="2030" tvg-name="Lazystream: MLB 31",Lazystream: MLB 31
.
#EXTINF:-1 CUID="2031" tvg-id="2031" tvg-name="Lazystream: MLB 32",Lazystream: MLB 32
.
#EXTINF:-1 CUID="2032" tvg-id="2032" tvg-name="Lazystream: MLB 33",Lazystream: MLB 33
.
#EXTINF:-1 CUID="2033" tvg-id="2033" tvg-name="Lazystream: MLB 34",Lazystream: MLB 34
.
#EXTINF:-1 CUID="2034" tvg-id="2034" tvg-name="Lazystream: MLB 35",Lazystream: MLB 35
.
#EXTINF:-1 CUID="2035" tvg-id="2035" tvg-name="Lazystream: MLB 36",Lazystream: MLB 36
.
#EXTINF:-1 CUID="2036" tvg-id="2036" tvg-name="Lazystream: MLB 37",Lazystream: MLB 37
.
#EXTINF:-1 CUID="2037" tvg-id="2037" tvg-name="Lazystream: MLB 38",Lazystream: MLB 38
.
#EXTINF:-1 CUID="2038" tvg-id="2038" tvg-name="Lazystream: MLB 39",Lazystream: MLB 39
.
#EXTINF:-1 CUID="2039" tvg-id="2039" tvg-name="Lazystream: MLB 40",Lazystream: MLB 40
.
#EXTINF:-1 CUID="2040" tvg-id="2040" tvg-name="Lazystream: MLB 41",Lazystream: MLB 41
.
#EXTINF:-1 CUID="2041" tvg-id="2041" tvg-name="Lazystream: MLB 42",Lazystream: MLB 42
.
#EXTINF:-1 CUID="2042" tvg-id="2042" tvg-name="Lazystream: MLB 43",Lazystream: MLB 43
.
#EXTINF:-1 CUID="2043" tvg-id="2043" tvg-name="Lazystream: MLB 44",Lazystream: MLB 44
.
#EXTINF:-1 CUID="2044" tvg-id="2044" tvg-name="Lazystream: MLB 45",Lazystream: MLB 45
.
#EXTINF:-1 CUID="2045" tvg-id="2045" tvg-name="Lazystream: MLB 46",Lazystream: MLB 46
.
#EXTINF:-1 CUID="2046" tvg-id="2046" tvg-name="Lazystream: MLB 47",Lazystream: MLB 47
.
#EXTINF:-1 CUID="2047" tvg-id="2047" tvg-name="Lazystream: MLB 48",Lazystream: MLB 48
.
#EXTINF:-1 CUID="2048" tvg-id="2048" tvg-name="Lazystream: MLB 49",Lazystream: MLB 49
.
#EXTINF:-1 CUID="2049" tvg-id="2049" tvg-name="Lazystream: MLB 50",Lazystream: MLB 50
.
#EXTINF:-1 CUID="2050" tvg-id="2050" tvg-name="Lazystream: MLB 51",Lazystream: MLB 51
.
#EXTINF:-1 CUID="2051" tvg-id="2051" tvg-name="Lazystream: MLB 52",Lazystream: MLB 52
.
#EXTINF:-1 CUID="2052" tvg-id="2052" tvg-name="Lazystream: MLB 53",Lazystream: MLB 53
.
#EXTINF:-1 CUID="2053" tvg-id="2053" tvg-name="Lazystream: MLB 54",Lazystream: MLB 54
.
#EXTINF:-1 CUID="2054" tvg-id="2054" tvg-name="Lazystream: MLB 55",Lazystream: MLB 55
.
#EXTINF:-1 CUID="2055" tvg-id="2055" tvg-name="Lazystream: MLB 56",Lazystream: MLB 56
.
#EXTINF:-1 CUID="2056" tvg-id="2056" tvg-name="Lazystream: MLB 57",Lazystream: MLB 57
.
#EXTINF:-1 CUID="2057" tvg-id="2057" tvg-name="Lazystream: MLB 58",Lazystream: MLB 58
.
#EXTINF:-1 CUID="2058" tvg-id="2058" tvg-name="Lazystream: MLB 59",Lazystream: MLB 59
.
#EXTINF:-1 CUID="2059" tvg-id="2059" tvg-name="Lazystream: MLB 60",Lazystream: MLB 60
.
#EXTINF:-1 CUID="2060" tvg-id="2060" tvg-name="Lazystream: MLB 61",Lazystream: MLB 61
.
#EXTINF:-1 CUID="2061" tvg-id="2061" tvg-name="Lazystream: MLB 62",Lazystream: MLB 62
.
#EXTINF:-1 CUID="2062" tvg-id="2062" tvg-name="Lazystream: MLB 63",Lazystream: MLB 63
.
#EXTINF:-1 CUID="2063" tvg-id="2063" tvg-name="Lazystream: MLB 64",Lazystream: MLB 64
.
#EXTINF:-1 CUID="2064" tvg-id="2064" tvg-name="Lazystream: MLB 65",Lazystream: MLB 65
.
#EXTINF:-1 CUID="2065" tvg-id="2065" tvg-name="Lazystream: MLB 66",Lazystream: MLB 66
.
#EXTINF:-1 CUID="2066" tvg-id="2066" tvg-name="Lazystream: MLB 67",Lazystream: MLB 67
.
#EXTINF:-1 CUID="2067" tvg-id="2067" tvg-name="Lazystream: MLB 68",Lazystream: MLB 68
.
#EXTINF:-1 CUID="2068" tvg-id="2068" tvg-name="Lazystream: MLB 69",Lazystream: MLB 69
.
#EXTINF:-1 CUID="2069" tvg-id="2069" tvg-name="Lazystream: MLB 70",Lazystream: MLB 70
.
#EXTINF:-1 CUID="2070" tvg-id="2070" tvg-name="Lazystream: MLB 71",Lazystream: MLB 71
.
#EXTINF:-1 CUID="2071" tvg-id="2071" tvg-name="Lazystream: MLB 72",Lazystream: MLB 72
.
#EXTINF:-1 CUID="2072" tvg-id="2072" tvg-name="Lazystream: MLB 73",Lazystream: MLB 73
.
#EXTINF:-1 CUID="2073" tvg-id="2073" tvg-name="Lazystream: MLB 74",Lazystream: MLB 74
.
#EXTINF:-1 CUID="2074" tvg-id="2074" tvg-name="Lazystream: MLB 75",Lazystream: MLB 75
.
#EXTINF:-1 CUID="2075" tvg-id="2075" tvg-name="Lazystream: MLB 76",Lazystream: MLB 76
.
#EXTINF:-1 CUID="2076" tvg-id="2076" tvg-name="Lazystream: MLB 77",Lazystream: MLB 77
.
#EXTINF:-1 CUID="2077" tvg-id="2077" tvg-name="Lazystream: MLB 78",Lazystream: MLB 78
.
#EXTINF:-1 CUID="2078" tvg-id="2078" tvg-name="Lazystream: MLB 79",Lazystream: MLB 79
.
#EXTINF:-1 CUID="2079" tvg-id="2079" tvg-name="Lazystream: MLB 80",Lazystream: MLB 80
.
#EXTINF:-1 CUID="2080" tvg-id="2080" tvg-name="Lazystream: MLB 81",Lazystream: MLB 81
.
#EXTINF:-1 CUID="2081" tvg-id="2081" tvg-name="Lazystream: MLB 82",Lazystream: MLB 82
.
#EXTINF:-1 CUID="2082" tvg-id="2082" tvg-name="Lazystream: MLB 83",Lazystream: MLB 83
.
#EXTINF:-1 CUID="2083" tvg-id="2083" tvg-name="Lazystream: MLB 84",Lazystream: MLB 84
.
#EXTINF:-1 CUID="2084" tvg-id="2084" tvg-name="Lazystream: MLB 85",Lazystream: MLB 85
.
#EXTINF:-1 CUID="2085" tvg-id="2085" tvg-name="Lazystream: MLB 86",Lazystream: MLB 86
.
#EXTINF:-1 CUID="2086" tvg-id="2086" tvg-name="Lazystream: MLB 87",Lazystream: MLB 87
.
#EXTINF:-1 CUID="2087" tvg-id="2087" tvg-name="Lazystream: MLB 88",Lazystream: MLB 88
.
#EXTINF:-1 CUID="2088" tvg-id="2088" tvg-name="Lazystream: MLB 89",Lazystream: MLB 89
.
#EXTINF:-1 CUID="2089" tvg-id="2089" tvg-name="Lazystream: MLB 90",Lazystream: MLB 90
.
#EXTINF:-1 CUID="2090" tvg-id="2090" tvg-name="Lazystream: MLB 91",Lazystream: MLB 91
.
#EXTINF:-1 CUID="2091" tvg-id="2091" tvg-name="Lazystream: MLB 92",Lazystream: MLB 92
.
#EXTINF:-1 CUID="2092" tvg-id="2092" tvg-name="Lazystream: MLB 93",Lazystream: MLB 93
.
#EXTINF:-1 CUID="2093" tvg-id="2093" tvg-name="Lazystream: MLB 94",Lazystream: MLB 94
.
#EXTINF:-1 CUID="2094" tvg-id="2094" tvg-name="Lazystream: MLB 95",Lazystream: MLB 95
.
#EXTINF:-1 CUID="2095" tvg-id="2095" tvg-name="Lazystream: MLB 96",Lazystream: MLB 96
.
#EXTINF:-1 CUID="2096" tvg-id="2096" tvg-name="Lazystream: MLB 97",Lazystream: MLB 97
.
#EXTINF:-1 CUID="2097" tvg-id="2097" tvg-name="Lazystream: MLB 98",Lazystream: MLB 98
.
#EXTINF:-1 CUID="2098" tvg-id="2098" tvg-name="Lazystream: MLB 99",Lazystream: MLB 99
.
#EXTINF:-1 CUID="2099" tvg-id="2099" tvg-name="Lazystream: MLB 100",Lazystream: MLB 100
.

View File

@@ -0,0 +1,405 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dd">
<tv generator-info-name="lazystream" source-info-name="lazystream - 1.9.7">
<channel id="2000">
<display-name>Lazystream: MLB 1</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2001">
<display-name>Lazystream: MLB 2</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2002">
<display-name>Lazystream: MLB 3</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2003">
<display-name>Lazystream: MLB 4</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2004">
<display-name>Lazystream: MLB 5</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2005">
<display-name>Lazystream: MLB 6</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2006">
<display-name>Lazystream: MLB 7</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2007">
<display-name>Lazystream: MLB 8</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2008">
<display-name>Lazystream: MLB 9</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2009">
<display-name>Lazystream: MLB 10</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2010">
<display-name>Lazystream: MLB 11</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2011">
<display-name>Lazystream: MLB 12</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2012">
<display-name>Lazystream: MLB 13</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2013">
<display-name>Lazystream: MLB 14</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2014">
<display-name>Lazystream: MLB 15</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2015">
<display-name>Lazystream: MLB 16</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2016">
<display-name>Lazystream: MLB 17</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2017">
<display-name>Lazystream: MLB 18</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2018">
<display-name>Lazystream: MLB 19</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2019">
<display-name>Lazystream: MLB 20</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2020">
<display-name>Lazystream: MLB 21</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2021">
<display-name>Lazystream: MLB 22</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2022">
<display-name>Lazystream: MLB 23</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2023">
<display-name>Lazystream: MLB 24</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2024">
<display-name>Lazystream: MLB 25</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2025">
<display-name>Lazystream: MLB 26</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2026">
<display-name>Lazystream: MLB 27</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2027">
<display-name>Lazystream: MLB 28</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2028">
<display-name>Lazystream: MLB 29</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2029">
<display-name>Lazystream: MLB 30</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2030">
<display-name>Lazystream: MLB 31</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2031">
<display-name>Lazystream: MLB 32</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2032">
<display-name>Lazystream: MLB 33</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2033">
<display-name>Lazystream: MLB 34</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2034">
<display-name>Lazystream: MLB 35</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2035">
<display-name>Lazystream: MLB 36</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2036">
<display-name>Lazystream: MLB 37</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2037">
<display-name>Lazystream: MLB 38</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2038">
<display-name>Lazystream: MLB 39</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2039">
<display-name>Lazystream: MLB 40</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2040">
<display-name>Lazystream: MLB 41</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2041">
<display-name>Lazystream: MLB 42</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2042">
<display-name>Lazystream: MLB 43</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2043">
<display-name>Lazystream: MLB 44</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2044">
<display-name>Lazystream: MLB 45</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2045">
<display-name>Lazystream: MLB 46</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2046">
<display-name>Lazystream: MLB 47</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2047">
<display-name>Lazystream: MLB 48</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2048">
<display-name>Lazystream: MLB 49</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2049">
<display-name>Lazystream: MLB 50</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2050">
<display-name>Lazystream: MLB 51</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2051">
<display-name>Lazystream: MLB 52</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2052">
<display-name>Lazystream: MLB 53</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2053">
<display-name>Lazystream: MLB 54</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2054">
<display-name>Lazystream: MLB 55</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2055">
<display-name>Lazystream: MLB 56</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2056">
<display-name>Lazystream: MLB 57</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2057">
<display-name>Lazystream: MLB 58</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2058">
<display-name>Lazystream: MLB 59</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2059">
<display-name>Lazystream: MLB 60</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2060">
<display-name>Lazystream: MLB 61</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2061">
<display-name>Lazystream: MLB 62</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2062">
<display-name>Lazystream: MLB 63</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2063">
<display-name>Lazystream: MLB 64</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2064">
<display-name>Lazystream: MLB 65</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2065">
<display-name>Lazystream: MLB 66</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2066">
<display-name>Lazystream: MLB 67</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2067">
<display-name>Lazystream: MLB 68</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2068">
<display-name>Lazystream: MLB 69</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2069">
<display-name>Lazystream: MLB 70</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2070">
<display-name>Lazystream: MLB 71</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2071">
<display-name>Lazystream: MLB 72</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2072">
<display-name>Lazystream: MLB 73</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2073">
<display-name>Lazystream: MLB 74</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2074">
<display-name>Lazystream: MLB 75</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2075">
<display-name>Lazystream: MLB 76</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2076">
<display-name>Lazystream: MLB 77</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2077">
<display-name>Lazystream: MLB 78</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2078">
<display-name>Lazystream: MLB 79</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2079">
<display-name>Lazystream: MLB 80</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2080">
<display-name>Lazystream: MLB 81</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2081">
<display-name>Lazystream: MLB 82</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2082">
<display-name>Lazystream: MLB 83</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2083">
<display-name>Lazystream: MLB 84</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2084">
<display-name>Lazystream: MLB 85</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2085">
<display-name>Lazystream: MLB 86</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2086">
<display-name>Lazystream: MLB 87</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2087">
<display-name>Lazystream: MLB 88</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2088">
<display-name>Lazystream: MLB 89</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2089">
<display-name>Lazystream: MLB 90</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2090">
<display-name>Lazystream: MLB 91</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2091">
<display-name>Lazystream: MLB 92</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2092">
<display-name>Lazystream: MLB 93</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2093">
<display-name>Lazystream: MLB 94</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2094">
<display-name>Lazystream: MLB 95</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2095">
<display-name>Lazystream: MLB 96</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2096">
<display-name>Lazystream: MLB 97</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2097">
<display-name>Lazystream: MLB 98</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2098">
<display-name>Lazystream: MLB 99</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
<channel id="2099">
<display-name>Lazystream: MLB 100</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/mlb/mlb_logo1.jpg"></icon>
</channel>
</tv>

View File

@@ -0,0 +1,201 @@
#EXTM3U
#EXTINF:-1 CUID="1000" tvg-id="1000" tvg-name="Lazystream: NHL 1",Lazystream: NHL 1
.
#EXTINF:-1 CUID="1001" tvg-id="1001" tvg-name="Lazystream: NHL 2",Lazystream: NHL 2
.
#EXTINF:-1 CUID="1002" tvg-id="1002" tvg-name="Lazystream: NHL 3",Lazystream: NHL 3
.
#EXTINF:-1 CUID="1003" tvg-id="1003" tvg-name="Lazystream: NHL 4",Lazystream: NHL 4
.
#EXTINF:-1 CUID="1004" tvg-id="1004" tvg-name="Lazystream: NHL 5",Lazystream: NHL 5
.
#EXTINF:-1 CUID="1005" tvg-id="1005" tvg-name="Lazystream: NHL 6",Lazystream: NHL 6
.
#EXTINF:-1 CUID="1006" tvg-id="1006" tvg-name="Lazystream: NHL 7",Lazystream: NHL 7
.
#EXTINF:-1 CUID="1007" tvg-id="1007" tvg-name="Lazystream: NHL 8",Lazystream: NHL 8
.
#EXTINF:-1 CUID="1008" tvg-id="1008" tvg-name="Lazystream: NHL 9",Lazystream: NHL 9
.
#EXTINF:-1 CUID="1009" tvg-id="1009" tvg-name="Lazystream: NHL 10",Lazystream: NHL 10
.
#EXTINF:-1 CUID="1010" tvg-id="1010" tvg-name="Lazystream: NHL 11",Lazystream: NHL 11
.
#EXTINF:-1 CUID="1011" tvg-id="1011" tvg-name="Lazystream: NHL 12",Lazystream: NHL 12
.
#EXTINF:-1 CUID="1012" tvg-id="1012" tvg-name="Lazystream: NHL 13",Lazystream: NHL 13
.
#EXTINF:-1 CUID="1013" tvg-id="1013" tvg-name="Lazystream: NHL 14",Lazystream: NHL 14
.
#EXTINF:-1 CUID="1014" tvg-id="1014" tvg-name="Lazystream: NHL 15",Lazystream: NHL 15
.
#EXTINF:-1 CUID="1015" tvg-id="1015" tvg-name="Lazystream: NHL 16",Lazystream: NHL 16
.
#EXTINF:-1 CUID="1016" tvg-id="1016" tvg-name="Lazystream: NHL 17",Lazystream: NHL 17
.
#EXTINF:-1 CUID="1017" tvg-id="1017" tvg-name="Lazystream: NHL 18",Lazystream: NHL 18
.
#EXTINF:-1 CUID="1018" tvg-id="1018" tvg-name="Lazystream: NHL 19",Lazystream: NHL 19
.
#EXTINF:-1 CUID="1019" tvg-id="1019" tvg-name="Lazystream: NHL 20",Lazystream: NHL 20
.
#EXTINF:-1 CUID="1020" tvg-id="1020" tvg-name="Lazystream: NHL 21",Lazystream: NHL 21
.
#EXTINF:-1 CUID="1021" tvg-id="1021" tvg-name="Lazystream: NHL 22",Lazystream: NHL 22
.
#EXTINF:-1 CUID="1022" tvg-id="1022" tvg-name="Lazystream: NHL 23",Lazystream: NHL 23
.
#EXTINF:-1 CUID="1023" tvg-id="1023" tvg-name="Lazystream: NHL 24",Lazystream: NHL 24
.
#EXTINF:-1 CUID="1024" tvg-id="1024" tvg-name="Lazystream: NHL 25",Lazystream: NHL 25
.
#EXTINF:-1 CUID="1025" tvg-id="1025" tvg-name="Lazystream: NHL 26",Lazystream: NHL 26
.
#EXTINF:-1 CUID="1026" tvg-id="1026" tvg-name="Lazystream: NHL 27",Lazystream: NHL 27
.
#EXTINF:-1 CUID="1027" tvg-id="1027" tvg-name="Lazystream: NHL 28",Lazystream: NHL 28
.
#EXTINF:-1 CUID="1028" tvg-id="1028" tvg-name="Lazystream: NHL 29",Lazystream: NHL 29
.
#EXTINF:-1 CUID="1029" tvg-id="1029" tvg-name="Lazystream: NHL 30",Lazystream: NHL 30
.
#EXTINF:-1 CUID="1030" tvg-id="1030" tvg-name="Lazystream: NHL 31",Lazystream: NHL 31
.
#EXTINF:-1 CUID="1031" tvg-id="1031" tvg-name="Lazystream: NHL 32",Lazystream: NHL 32
.
#EXTINF:-1 CUID="1032" tvg-id="1032" tvg-name="Lazystream: NHL 33",Lazystream: NHL 33
.
#EXTINF:-1 CUID="1033" tvg-id="1033" tvg-name="Lazystream: NHL 34",Lazystream: NHL 34
.
#EXTINF:-1 CUID="1034" tvg-id="1034" tvg-name="Lazystream: NHL 35",Lazystream: NHL 35
.
#EXTINF:-1 CUID="1035" tvg-id="1035" tvg-name="Lazystream: NHL 36",Lazystream: NHL 36
.
#EXTINF:-1 CUID="1036" tvg-id="1036" tvg-name="Lazystream: NHL 37",Lazystream: NHL 37
.
#EXTINF:-1 CUID="1037" tvg-id="1037" tvg-name="Lazystream: NHL 38",Lazystream: NHL 38
.
#EXTINF:-1 CUID="1038" tvg-id="1038" tvg-name="Lazystream: NHL 39",Lazystream: NHL 39
.
#EXTINF:-1 CUID="1039" tvg-id="1039" tvg-name="Lazystream: NHL 40",Lazystream: NHL 40
.
#EXTINF:-1 CUID="1040" tvg-id="1040" tvg-name="Lazystream: NHL 41",Lazystream: NHL 41
.
#EXTINF:-1 CUID="1041" tvg-id="1041" tvg-name="Lazystream: NHL 42",Lazystream: NHL 42
.
#EXTINF:-1 CUID="1042" tvg-id="1042" tvg-name="Lazystream: NHL 43",Lazystream: NHL 43
.
#EXTINF:-1 CUID="1043" tvg-id="1043" tvg-name="Lazystream: NHL 44",Lazystream: NHL 44
.
#EXTINF:-1 CUID="1044" tvg-id="1044" tvg-name="Lazystream: NHL 45",Lazystream: NHL 45
.
#EXTINF:-1 CUID="1045" tvg-id="1045" tvg-name="Lazystream: NHL 46",Lazystream: NHL 46
.
#EXTINF:-1 CUID="1046" tvg-id="1046" tvg-name="Lazystream: NHL 47",Lazystream: NHL 47
.
#EXTINF:-1 CUID="1047" tvg-id="1047" tvg-name="Lazystream: NHL 48",Lazystream: NHL 48
.
#EXTINF:-1 CUID="1048" tvg-id="1048" tvg-name="Lazystream: NHL 49",Lazystream: NHL 49
.
#EXTINF:-1 CUID="1049" tvg-id="1049" tvg-name="Lazystream: NHL 50",Lazystream: NHL 50
.
#EXTINF:-1 CUID="1050" tvg-id="1050" tvg-name="Lazystream: NHL 51",Lazystream: NHL 51
.
#EXTINF:-1 CUID="1051" tvg-id="1051" tvg-name="Lazystream: NHL 52",Lazystream: NHL 52
.
#EXTINF:-1 CUID="1052" tvg-id="1052" tvg-name="Lazystream: NHL 53",Lazystream: NHL 53
.
#EXTINF:-1 CUID="1053" tvg-id="1053" tvg-name="Lazystream: NHL 54",Lazystream: NHL 54
.
#EXTINF:-1 CUID="1054" tvg-id="1054" tvg-name="Lazystream: NHL 55",Lazystream: NHL 55
.
#EXTINF:-1 CUID="1055" tvg-id="1055" tvg-name="Lazystream: NHL 56",Lazystream: NHL 56
.
#EXTINF:-1 CUID="1056" tvg-id="1056" tvg-name="Lazystream: NHL 57",Lazystream: NHL 57
.
#EXTINF:-1 CUID="1057" tvg-id="1057" tvg-name="Lazystream: NHL 58",Lazystream: NHL 58
.
#EXTINF:-1 CUID="1058" tvg-id="1058" tvg-name="Lazystream: NHL 59",Lazystream: NHL 59
.
#EXTINF:-1 CUID="1059" tvg-id="1059" tvg-name="Lazystream: NHL 60",Lazystream: NHL 60
.
#EXTINF:-1 CUID="1060" tvg-id="1060" tvg-name="Lazystream: NHL 61",Lazystream: NHL 61
.
#EXTINF:-1 CUID="1061" tvg-id="1061" tvg-name="Lazystream: NHL 62",Lazystream: NHL 62
.
#EXTINF:-1 CUID="1062" tvg-id="1062" tvg-name="Lazystream: NHL 63",Lazystream: NHL 63
.
#EXTINF:-1 CUID="1063" tvg-id="1063" tvg-name="Lazystream: NHL 64",Lazystream: NHL 64
.
#EXTINF:-1 CUID="1064" tvg-id="1064" tvg-name="Lazystream: NHL 65",Lazystream: NHL 65
.
#EXTINF:-1 CUID="1065" tvg-id="1065" tvg-name="Lazystream: NHL 66",Lazystream: NHL 66
.
#EXTINF:-1 CUID="1066" tvg-id="1066" tvg-name="Lazystream: NHL 67",Lazystream: NHL 67
.
#EXTINF:-1 CUID="1067" tvg-id="1067" tvg-name="Lazystream: NHL 68",Lazystream: NHL 68
.
#EXTINF:-1 CUID="1068" tvg-id="1068" tvg-name="Lazystream: NHL 69",Lazystream: NHL 69
.
#EXTINF:-1 CUID="1069" tvg-id="1069" tvg-name="Lazystream: NHL 70",Lazystream: NHL 70
.
#EXTINF:-1 CUID="1070" tvg-id="1070" tvg-name="Lazystream: NHL 71",Lazystream: NHL 71
.
#EXTINF:-1 CUID="1071" tvg-id="1071" tvg-name="Lazystream: NHL 72",Lazystream: NHL 72
.
#EXTINF:-1 CUID="1072" tvg-id="1072" tvg-name="Lazystream: NHL 73",Lazystream: NHL 73
.
#EXTINF:-1 CUID="1073" tvg-id="1073" tvg-name="Lazystream: NHL 74",Lazystream: NHL 74
.
#EXTINF:-1 CUID="1074" tvg-id="1074" tvg-name="Lazystream: NHL 75",Lazystream: NHL 75
.
#EXTINF:-1 CUID="1075" tvg-id="1075" tvg-name="Lazystream: NHL 76",Lazystream: NHL 76
.
#EXTINF:-1 CUID="1076" tvg-id="1076" tvg-name="Lazystream: NHL 77",Lazystream: NHL 77
.
#EXTINF:-1 CUID="1077" tvg-id="1077" tvg-name="Lazystream: NHL 78",Lazystream: NHL 78
.
#EXTINF:-1 CUID="1078" tvg-id="1078" tvg-name="Lazystream: NHL 79",Lazystream: NHL 79
.
#EXTINF:-1 CUID="1079" tvg-id="1079" tvg-name="Lazystream: NHL 80",Lazystream: NHL 80
.
#EXTINF:-1 CUID="1080" tvg-id="1080" tvg-name="Lazystream: NHL 81",Lazystream: NHL 81
.
#EXTINF:-1 CUID="1081" tvg-id="1081" tvg-name="Lazystream: NHL 82",Lazystream: NHL 82
.
#EXTINF:-1 CUID="1082" tvg-id="1082" tvg-name="Lazystream: NHL 83",Lazystream: NHL 83
.
#EXTINF:-1 CUID="1083" tvg-id="1083" tvg-name="Lazystream: NHL 84",Lazystream: NHL 84
.
#EXTINF:-1 CUID="1084" tvg-id="1084" tvg-name="Lazystream: NHL 85",Lazystream: NHL 85
.
#EXTINF:-1 CUID="1085" tvg-id="1085" tvg-name="Lazystream: NHL 86",Lazystream: NHL 86
.
#EXTINF:-1 CUID="1086" tvg-id="1086" tvg-name="Lazystream: NHL 87",Lazystream: NHL 87
.
#EXTINF:-1 CUID="1087" tvg-id="1087" tvg-name="Lazystream: NHL 88",Lazystream: NHL 88
.
#EXTINF:-1 CUID="1088" tvg-id="1088" tvg-name="Lazystream: NHL 89",Lazystream: NHL 89
.
#EXTINF:-1 CUID="1089" tvg-id="1089" tvg-name="Lazystream: NHL 90",Lazystream: NHL 90
.
#EXTINF:-1 CUID="1090" tvg-id="1090" tvg-name="Lazystream: NHL 91",Lazystream: NHL 91
.
#EXTINF:-1 CUID="1091" tvg-id="1091" tvg-name="Lazystream: NHL 92",Lazystream: NHL 92
.
#EXTINF:-1 CUID="1092" tvg-id="1092" tvg-name="Lazystream: NHL 93",Lazystream: NHL 93
.
#EXTINF:-1 CUID="1093" tvg-id="1093" tvg-name="Lazystream: NHL 94",Lazystream: NHL 94
.
#EXTINF:-1 CUID="1094" tvg-id="1094" tvg-name="Lazystream: NHL 95",Lazystream: NHL 95
.
#EXTINF:-1 CUID="1095" tvg-id="1095" tvg-name="Lazystream: NHL 96",Lazystream: NHL 96
.
#EXTINF:-1 CUID="1096" tvg-id="1096" tvg-name="Lazystream: NHL 97",Lazystream: NHL 97
.
#EXTINF:-1 CUID="1097" tvg-id="1097" tvg-name="Lazystream: NHL 98",Lazystream: NHL 98
.
#EXTINF:-1 CUID="1098" tvg-id="1098" tvg-name="Lazystream: NHL 99",Lazystream: NHL 99
.
#EXTINF:-1 CUID="1099" tvg-id="1099" tvg-name="Lazystream: NHL 100",Lazystream: NHL 100
.

View File

@@ -0,0 +1,405 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dd">
<tv generator-info-name="lazystream" source-info-name="lazystream - 1.9.7">
<channel id="1000">
<display-name>Lazystream: NHL 1</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1001">
<display-name>Lazystream: NHL 2</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1002">
<display-name>Lazystream: NHL 3</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1003">
<display-name>Lazystream: NHL 4</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1004">
<display-name>Lazystream: NHL 5</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1005">
<display-name>Lazystream: NHL 6</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1006">
<display-name>Lazystream: NHL 7</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1007">
<display-name>Lazystream: NHL 8</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1008">
<display-name>Lazystream: NHL 9</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1009">
<display-name>Lazystream: NHL 10</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1010">
<display-name>Lazystream: NHL 11</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1011">
<display-name>Lazystream: NHL 12</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1012">
<display-name>Lazystream: NHL 13</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1013">
<display-name>Lazystream: NHL 14</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1014">
<display-name>Lazystream: NHL 15</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1015">
<display-name>Lazystream: NHL 16</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1016">
<display-name>Lazystream: NHL 17</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1017">
<display-name>Lazystream: NHL 18</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1018">
<display-name>Lazystream: NHL 19</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1019">
<display-name>Lazystream: NHL 20</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1020">
<display-name>Lazystream: NHL 21</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1021">
<display-name>Lazystream: NHL 22</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1022">
<display-name>Lazystream: NHL 23</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1023">
<display-name>Lazystream: NHL 24</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1024">
<display-name>Lazystream: NHL 25</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1025">
<display-name>Lazystream: NHL 26</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1026">
<display-name>Lazystream: NHL 27</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1027">
<display-name>Lazystream: NHL 28</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1028">
<display-name>Lazystream: NHL 29</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1029">
<display-name>Lazystream: NHL 30</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1030">
<display-name>Lazystream: NHL 31</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1031">
<display-name>Lazystream: NHL 32</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1032">
<display-name>Lazystream: NHL 33</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1033">
<display-name>Lazystream: NHL 34</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1034">
<display-name>Lazystream: NHL 35</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1035">
<display-name>Lazystream: NHL 36</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1036">
<display-name>Lazystream: NHL 37</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1037">
<display-name>Lazystream: NHL 38</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1038">
<display-name>Lazystream: NHL 39</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1039">
<display-name>Lazystream: NHL 40</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1040">
<display-name>Lazystream: NHL 41</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1041">
<display-name>Lazystream: NHL 42</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1042">
<display-name>Lazystream: NHL 43</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1043">
<display-name>Lazystream: NHL 44</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1044">
<display-name>Lazystream: NHL 45</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1045">
<display-name>Lazystream: NHL 46</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1046">
<display-name>Lazystream: NHL 47</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1047">
<display-name>Lazystream: NHL 48</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1048">
<display-name>Lazystream: NHL 49</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1049">
<display-name>Lazystream: NHL 50</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1050">
<display-name>Lazystream: NHL 51</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1051">
<display-name>Lazystream: NHL 52</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1052">
<display-name>Lazystream: NHL 53</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1053">
<display-name>Lazystream: NHL 54</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1054">
<display-name>Lazystream: NHL 55</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1055">
<display-name>Lazystream: NHL 56</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1056">
<display-name>Lazystream: NHL 57</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1057">
<display-name>Lazystream: NHL 58</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1058">
<display-name>Lazystream: NHL 59</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1059">
<display-name>Lazystream: NHL 60</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1060">
<display-name>Lazystream: NHL 61</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1061">
<display-name>Lazystream: NHL 62</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1062">
<display-name>Lazystream: NHL 63</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1063">
<display-name>Lazystream: NHL 64</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1064">
<display-name>Lazystream: NHL 65</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1065">
<display-name>Lazystream: NHL 66</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1066">
<display-name>Lazystream: NHL 67</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1067">
<display-name>Lazystream: NHL 68</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1068">
<display-name>Lazystream: NHL 69</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1069">
<display-name>Lazystream: NHL 70</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1070">
<display-name>Lazystream: NHL 71</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1071">
<display-name>Lazystream: NHL 72</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1072">
<display-name>Lazystream: NHL 73</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1073">
<display-name>Lazystream: NHL 74</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1074">
<display-name>Lazystream: NHL 75</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1075">
<display-name>Lazystream: NHL 76</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1076">
<display-name>Lazystream: NHL 77</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1077">
<display-name>Lazystream: NHL 78</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1078">
<display-name>Lazystream: NHL 79</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1079">
<display-name>Lazystream: NHL 80</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1080">
<display-name>Lazystream: NHL 81</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1081">
<display-name>Lazystream: NHL 82</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1082">
<display-name>Lazystream: NHL 83</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1083">
<display-name>Lazystream: NHL 84</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1084">
<display-name>Lazystream: NHL 85</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1085">
<display-name>Lazystream: NHL 86</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1086">
<display-name>Lazystream: NHL 87</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1087">
<display-name>Lazystream: NHL 88</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1088">
<display-name>Lazystream: NHL 89</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1089">
<display-name>Lazystream: NHL 90</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1090">
<display-name>Lazystream: NHL 91</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1091">
<display-name>Lazystream: NHL 92</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1092">
<display-name>Lazystream: NHL 93</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1093">
<display-name>Lazystream: NHL 94</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1094">
<display-name>Lazystream: NHL 95</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1095">
<display-name>Lazystream: NHL 96</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1096">
<display-name>Lazystream: NHL 97</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1097">
<display-name>Lazystream: NHL 98</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1098">
<display-name>Lazystream: NHL 99</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
<channel id="1099">
<display-name>Lazystream: NHL 100</display-name>
<icon src="http://home.windstream.net/dgrodecki/images/nhl/nhl_logo2.jpg"></icon>
</channel>
</tv>

View File

@@ -1,4 +1,4 @@
printf '45 04 * * * /config/cronjob.sh' > /etc/crontabs/root
printf '0 * * * * /cronjob.sh' > /etc/crontabs/root
### Remove this line and everything beneath it ###
### Edit the above cron expression, rename this file to cron.txt, and restart the container.
### If no cron.txt is found the cronjob will run daily at 00:00
### If no cron.txt is found the cronjob will run every hour

View File

@@ -0,0 +1,115 @@
{
"api": true,
"authentication.api": false,
"authentication.m3u": false,
"authentication.pms": false,
"authentication.web": false,
"authentication.xml": false,
"backup.keep": 10,
"backup.path": "/xteve/backup/",
"git.branch": "master",
"buffer": "ffmpeg",
"buffer.size.kb": 5120,
"buffer.timeout": 500,
"cache.images": false,
"epgSource": "XEPG",
"ffmpeg.options": "-hide_banner -loglevel error -i [URL] -c copy -f mpegts pipe:1",
"ffmpeg.path": "/usr/bin/ffmpeg",
"vlc.options": "-I dummy [URL] --sout #std{mux=ts,access=file,dst=-}",
"vlc.path": "/usr/bin/cvlc",
"files": {
"hdhr": {},
"m3u": {
"MLXAQ0TBXCTR3TV9D0K8": {
"compatibility": {
"group.title": 0,
"stream.id": 100,
"streams": 100,
"tvg.id": 100
},
"counter.download": 98,
"counter.error": 4,
"description": "",
"file.source": "/playlists/lazystream/lazystream-nhl.m3u",
"file.xteve": "MLXAQ0TBXCTR3TV9D0K8.m3u",
"id.provider": "MLXAQ0TBXCTR3TV9D0K8",
"last.update": "2020-03-04 15:29:04",
"name": "nhl",
"provider.availability": 95,
"tuner": 4,
"type": "m3u"
},
"MT0Y8RELU1MT4Q86IAHO": {
"compatibility": {
"group.title": 0,
"stream.id": 100,
"streams": 100,
"tvg.id": 100
},
"counter.download": 94,
"counter.error": 4,
"description": "",
"file.source": "/playlists/lazystream/lazystream-mlb.m3u",
"file.xteve": "MT0Y8RELU1MT4Q86IAHO.m3u",
"id.provider": "MT0Y8RELU1MT4Q86IAHO",
"last.update": "2020-03-04 15:29:04",
"name": "mlb",
"provider.availability": 95,
"tuner": 4,
"type": "m3u"
}
},
"xmltv": {
"X0M9AR41W0FL06FNRT81": {
"compatibility": {
"xmltv.channels": 100,
"xmltv.programs": 0
},
"counter.download": 151,
"counter.error": 4,
"description": "",
"file.source": "/playlists/lazystream/lazystream-nhl.xml",
"file.xteve": "X0M9AR41W0FL06FNRT81.xml",
"id.provider": "X0M9AR41W0FL06FNRT81",
"last.update": "2020-03-04 15:29:05",
"name": "nhl",
"provider.availability": 97,
"type": "xmltv"
},
"XXDC0UWZB20AXXKCO4G9": {
"compatibility": {
"xmltv.channels": 100,
"xmltv.programs": 11
},
"counter.download": 149,
"counter.error": 4,
"description": "",
"file.source": "/playlists/lazystream/lazystream-mlb.xml",
"file.xteve": "XXDC0UWZB20AXXKCO4G9.xml",
"id.provider": "XXDC0UWZB20AXXKCO4G9",
"last.update": "2020-03-04 15:29:05",
"name": "mlb",
"provider.availability": 97,
"type": "xmltv"
}
}
},
"files.update": true,
"filter": {},
"language": "en",
"log.entries.ram": 500,
"m3u8.adaptive.bandwidth.mbps": 10,
"mapping.first.channel": 1000,
"port": "34400",
"ssdp": true,
"temp.path": "/tmp/xteve/",
"tuner": 4,
"update": [
"0000"
],
"user.agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0",
"uuid": "2020-02-4R8O-BG0O65",
"version": "2.1.0",
"xepg.replace.missing.images": true,
"xteveAutoUpdate": true
}

View File

@@ -0,0 +1,14 @@
#!/usr/bin/with-contenv bash
groupmod -o -g "$PGID" abc
usermod -o -u "$PUID" abc
echo '
-------------------------------------
GID/UID
-------------------------------------'
echo "
User uid: $(id -u abc)
User gid: $(id -g abc)
-------------------------------------
"

View File

@@ -0,0 +1,11 @@
#!/usr/bin/with-contenv bash
cp /defaults/sample_cron.txt /config/sample_cron.txt
cp -n /defaults/xteve-settings.json /xteve/settings.json
mkdir -p /playlists/lazystream/
cp -n /defaults/lazystream-mlb.m3u /playlists/lazystream/lazystream-mlb.m3u
cp -n /defaults/lazystream-mlb.xml /playlists/lazystream/lazystream-mlb.xml
cp -n /defaults/lazystream-nhl.m3u /playlists/lazystream/lazystream-nhl.m3u
cp -n /defaults/lazystream-nhl.xml /playlists/lazystream/lazystream-nhl.xml

View File

@@ -0,0 +1,33 @@
#!/usr/bin/with-contenv bash
function prepend() {
while read line;
do echo "${1}${line}";
done;
}
exec 1> >(prepend "[update-hosts] ")
# Update hosts file
export IP=$(getent ahostsv4 freegamez.ga | awk '{ print $1 }' | head -1)
echo $IP playback.svcs.mlb.com >> /etc/hosts
echo $IP mf.svc.nhl.com >> /etc/hosts
echo $IP mlb-ws-mf.media.mlb.com >> /etc/hosts
cat /etc/hosts
# Update certs
rm -f /home/abc/.gnutls/known_hosts
rm -f /root/.gnutls/known_hosts
printf 'y\n' | gnutls-cli --tofu playback.svcs.mlb.com:443
printf 'y\n' | gnutls-cli --tofu mf.svc.nhl.com:443
printf 'y\n' | gnutls-cli --tofu mlb-ws-mf.media.mlb.com:443
install -D /root/.gnutls/known_hosts /home/abc/.gnutls/known_hosts
rm -rf /root/.gnutls
cat /home/abc/.gnutls/known_hosts

View File

@@ -0,0 +1,9 @@
#!/usr/bin/with-contenv bash
chown -R abc:abc /config
chown -R abc:abc /playlists
chown -R abc:abc /guide2go
chown -R abc:abc /xteve
chown -R abc:abc /tmp/xteve
chown -R abc:abc /home/abc

1
root/etc/crontabs/root Normal file
View File

@@ -0,0 +1 @@
0 * * * * /cronjob.sh

View File

@@ -0,0 +1,12 @@
#!/usr/bin/with-contenv bash
CRON_FILE=/config/cron.txt
if [ -f "$CRON_FILE" ]; then
. $CRON_FILE
else
echo "[crond-setup] No cron definition found..."
echo "[crond-setup] By default, cronjob will run every night at midnight unless cron file is configured."
fi
crond -f

View File

@@ -0,0 +1,5 @@
#!/usr/bin/with-contenv bash
exec \
s6-setuidgid abc /bin/bash -c \
'xteve -port=$XTEVE_PORT -config=/xteve/'

10
run.sh
View File

@@ -2,12 +2,14 @@
docker run -d \
--name=xteve_lazystream \
-p 34400:34400 \
-e TZ="America/Los_Angeles" \
--env-file=.env \
--log-opt max-size=10m \
--log-opt max-file=3 \
-e TZ="America/Los_Angeles" \
-v /mnt/user/appdata/xteve/:/root/.xteve:rw \
-v /mnt/user/appdata/xteve/_config/:/config:rw \
-v /mnt/user/appdata/xteve/_guide2go/:/guide2go:rw \
-v /mnt/user/appdata/xteve/.xteve:/xteve:rw \
-v /mnt/user/appdata/xteve/config/:/config:rw \
-v /mnt/user/appdata/xteve/guide2go/:/guide2go:rw \
-v /mnt/user/appdata/xteve/playlists/:/playlists:rw \
-v /tmp/xteve/:/tmp/xteve:rw \
taylorbourne/xteve_lazystream

44
sample.env Normal file
View File

@@ -0,0 +1,44 @@
##### Config
### Set as same user on your machine, run id -u & id -g to get your user / group id
PUID=1000
PGID=1000
### Xteve Config
XTEVE_PORT=34400
use_xTeveAPI=yes
### Lazystream Config
use_lazystream=yes
include_nhl=yes
include_mlb=yes
### Guide2go Config
use_guide2go=no
## List of created lineup json files in /guide2go
# Exmaple with 3 lineups
JsonList="CBLguide.json SATguide.json SATSport.json"
## to create your lineups run the below command and follow the on-screen instructions
# docker exec -it <yourdockername> guide2go -configure /guide2go/<lineupnamehere>.json
### Emby
# Only necessary if xTeVe API is active
# API Key, https://github.com/MediaBrowser/Emby/wiki/Api-Key-Authentication
# embyID, settings, scroll down click API, Scheduled Task Service, GET /ScheduledTasks, Try, Execute, look for "Refresh Guide" ID, sample here 9492d30c70f7f1bec3757c9d0a4feb45
use_embyAPI=no
embyIP=
embyPORT=8096
embyApiKey=
embyID=
### Plex
# Only necessary if xTeVe API is active
# Finding your Plex token: https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/
# Finding Plex ID: http://YOUR_IP_HERE:32400/?X-Plex-Token=YOUR_TOKEN_HERE , look for "tv.plex.providers.epg.xmltv: " and enter the value blow.
use_plexAPI=no
plexIP=
plexPORT=32400
plexToken=
plexID=

View File

@@ -1,4 +0,0 @@
xteve -port=34400 -config=/root/.xteve/test/
### Remove this line and everything beneath it ###
### Edit the above xteve run command, rename this file to xteve.txt, and restart the container
### If no xteve.txt is found xTeVe will start with default values "-port=34400 -config=/root/.xteve/"