init
This commit is contained in:
59
Dockerfile
Normal file
59
Dockerfile
Normal file
@@ -0,0 +1,59 @@
|
||||
FROM alpine:latest
|
||||
RUN apk update
|
||||
RUN apk upgrade
|
||||
RUN apk add --no-cache ca-certificates
|
||||
|
||||
MAINTAINER taylorbourne taylorbourne@me.com.com
|
||||
|
||||
# Extras
|
||||
RUN apk add --no-cache curl
|
||||
RUN apk add openssl
|
||||
|
||||
# Timezone (TZ)
|
||||
RUN apk update && apk add --no-cache tzdata
|
||||
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 SSL certs for lazystream
|
||||
# RUN openssl s_client -showcerts -connect freegamez.ga:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > /etc/ssl/certs/mf.svc.nhl.com.pem
|
||||
# RUN openssl s_client -showcerts -connect freegamez.ga:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > /etc/ssl/certs/playback.svcs.mlb.com.pem
|
||||
# RUN openssl s_client -showcerts -connect freegamez.ga:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > /etc/ssl/certs/mlb-ws-mf.media.mlb.com.pem
|
||||
|
||||
# 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
|
||||
ADD lazystream /usr/bin/lazystream
|
||||
ADD cronjob.sh /
|
||||
ADD entrypoint.sh /
|
||||
ADD sample_cron.txt /
|
||||
ADD sample_xteve.txt /
|
||||
|
||||
# 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
|
||||
|
||||
# Entrypoint
|
||||
ENTRYPOINT ["./entrypoint.sh"]
|
||||
130
cronjob.sh
Normal file
130
cronjob.sh
Normal file
@@ -0,0 +1,130 @@
|
||||
#!/bin/bash
|
||||
|
||||
##### Config
|
||||
use_xTeveAPI="yes"
|
||||
use_embyAPI="no"
|
||||
use_plexAPI="no"
|
||||
use_TVH_Play="no"
|
||||
use_TVH_move="no"
|
||||
|
||||
### List of created lineup json files in /guide2go
|
||||
# sample with 3 jsons lineups, adjust to yours
|
||||
JsonList="CBLguide.json SATguide.json SATSport.json"
|
||||
|
||||
### to create your lineups do as follows and follow the instructions
|
||||
# docker exec -it <yourdockername> guide2go -configure /guide2go/<lineupnamehere>.json
|
||||
|
||||
### xTeve ip, Port in case API is used to update XEPG
|
||||
xTeveIP="192.168.1.2"
|
||||
xTevePORT="34400"
|
||||
|
||||
### Generate playlist and xml data from lazystream
|
||||
lazystream generate xmltv /playlist/lazystream
|
||||
|
||||
### Emby ip, Port, apiKey, update ID in case API is used to update EPG directly after guide2go
|
||||
# ONLY when xteve API is in use, otherwise obsolete
|
||||
# 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 ip, Port, Token, TV Section ID in case API is used to update EPG directly after guide2go
|
||||
# ONLY when xteve API is in use, otherwise obsolete
|
||||
# Plex Token, https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/
|
||||
# plexID, http://YOUR_IP_HERE:32400/?X-Plex-Token=YOUR_TOKEN_HERE , look for "tv.plex.providers.epg.xmltv: ", sample here 11
|
||||
plexIP="192.168.1.2"
|
||||
plexPORT="32400"
|
||||
plexToken=""
|
||||
plexID="11"
|
||||
|
||||
### TVHeadend ip, Port in case m3u Playlist is wanted
|
||||
TVHIP="192.168.1.2"
|
||||
TVHPORT="9981"
|
||||
TVHUSER="username"
|
||||
TVHPASS="password"
|
||||
TVHOUT="/root/.xteve/data/channels.m3u"
|
||||
|
||||
### Copy a final xml (sample xteve) to tvheadend Data ### u have to mount TVHPATH data dir
|
||||
TVHSOURCE="/root/.xteve/data/xteve.xml"
|
||||
TVHPATH="/TVH"
|
||||
|
||||
# cronjob, check sample_cron.txt with an editor to adjust time
|
||||
|
||||
### END Config
|
||||
##
|
||||
#
|
||||
|
||||
# run guide2go in loop
|
||||
if [ "$use_guide2go" = "yes" ]; then
|
||||
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
|
||||
|
||||
# get TVH playlist
|
||||
if [ "$use_TVH_Play" = "yes" ]; then
|
||||
if [ -z "$TVHIP" ]; then
|
||||
echo "no TVHeadend credentials"
|
||||
else
|
||||
if [ -z "$TVHUSER" ]; then
|
||||
wget -O $TVHOUT http://$TVHIP:$TVHPORT/playlist
|
||||
else
|
||||
wget -O $TVHOUT http://$TVHUSER:$TVHPASS@$TVHIP:$TVHPORT/playlist
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
|
||||
# update xteve via API
|
||||
if [ "$use_xTeveAPI" = "yes" ]; then
|
||||
if [ -z "$xTeveIP" ]; then
|
||||
echo "no xTeve credentials"
|
||||
else
|
||||
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
|
||||
|
||||
# copy file to TVHeadend
|
||||
if [ "$use_TVH_move" = "yes" ]; then
|
||||
if [ -z "$TVHPATH" ]; then
|
||||
echo "no Path credential"
|
||||
else
|
||||
cp $TVHSOURCE $TVHPATH/guide.xml
|
||||
fi
|
||||
fi
|
||||
|
||||
# update Emby via API
|
||||
if [ "$use_embyAPI" = "yes" ]; then
|
||||
if [ -z "$embyIP" ]; then
|
||||
echo "no Emby credentials"
|
||||
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
|
||||
if [ -z "$plexIP" ]; then
|
||||
echo "no Plex credentials"
|
||||
else
|
||||
curl -s "http://$plexIP:$plexPORT/livetv/dvrs/$plexID/reloadGuide?X-Plex-Product=Plex%20Web&X-Plex-Version=4.8.4&X-Plex-Client-Identifier=$plexToken&X-Plex-Platform=Firefox&X-Plex-Platform-Version=69.0&X-Plex-Sync-Version=2&X-Plex-Features=external-media&X-Plex-Model=bundled&X-Plex-Device=Linux&X-Plex-Device-Name=Firefox&X-Plex-Device-Screen-Resolution=1128x657%2C1128x752&X-Plex-Language=de" -H "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0" -H "Accept: text/plain, */*; q=0.01" -H "Accept-Language: de" --compressed -H "X-Requested-With: XMLHttpRequest" -H "Connection: keep-alive" -H "Referer: http://$plexIP:$plexPORT/web/index.html" --data ""
|
||||
sleep 1
|
||||
fi
|
||||
fi
|
||||
|
||||
exit
|
||||
36
entrypoint.sh
Normal file
36
entrypoint.sh
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
|
||||
crond -l 2
|
||||
|
||||
CRONJOB_FILE=/config/cronjob.sh
|
||||
|
||||
if [ -f "$CRONJOB_FILE" ]; then
|
||||
echo "$CRONJOB_FILE exist"
|
||||
chmod +x $CRONJOB_FILE
|
||||
chmod 777 $CRONJOB_FILE
|
||||
else
|
||||
echo "$CRONJOB_FILE does not exist"
|
||||
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
|
||||
printf '0 0 * * * /config/cronjob.sh' > /etc/crontabs/root
|
||||
cp /sample_cron.txt /config/sample_cron.txt
|
||||
fi
|
||||
|
||||
XTEVE_FILE=/config/xteve.txt
|
||||
|
||||
if [ -f "$XTEVE_FILE" ]; then
|
||||
. $XTEVE_FILE
|
||||
else
|
||||
cp /sample_xteve.txt /config/sample_xteve.txt
|
||||
xteve -port=34400 -config=/root/.xteve/
|
||||
fi
|
||||
|
||||
exit
|
||||
BIN
lazystream
Executable file
BIN
lazystream
Executable file
Binary file not shown.
6
sample_cron.txt
Normal file
6
sample_cron.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
printf '45 04 * * * /config/cronjob.sh' > /etc/crontabs/root
|
||||
### remove from here including this line ###
|
||||
### edit your cron time
|
||||
### rename to cron.txt
|
||||
### restart docker, new cron time from then
|
||||
### no cron.txt it ll update daily at 00:00
|
||||
6
sample_xteve.txt
Normal file
6
sample_xteve.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
xteve -port=34400 -config=/root/.xteve/test/
|
||||
### remove from here including this line ###
|
||||
### edit your xteve command
|
||||
### rename to xteve.txt
|
||||
### restart docker, xteve will run with given parameter
|
||||
### no xteve.txt it ll start default values -port=34400 -config=/root/.xteve/
|
||||
Reference in New Issue
Block a user