forked from Ivasoft/docker-tvheadend
first save up, sourced from saarg repo
This commit is contained in:
210
Dockerfile
Normal file
210
Dockerfile
Normal file
@@ -0,0 +1,210 @@
|
||||
FROM lsiobase/alpine
|
||||
MAINTAINER saarg
|
||||
|
||||
# package version
|
||||
ARG ARGTABLE_VER="2.13"
|
||||
ARG TVH_VER="e3e8a797"
|
||||
ARG UNICODE_VER="2.09"
|
||||
ARG XMLTV_VER="0.5.67"
|
||||
|
||||
# Environment settings
|
||||
ENV HOME="/config"
|
||||
|
||||
# copy patches
|
||||
COPY patches/ /tmp/patches/
|
||||
|
||||
# install build packages
|
||||
RUN \
|
||||
apk add --no-cache --virtual=build-dependencies \
|
||||
autoconf \
|
||||
automake \
|
||||
cmake \
|
||||
coreutils \
|
||||
ffmpeg-dev \
|
||||
findutils \
|
||||
g++ \
|
||||
gcc \
|
||||
gettext-dev \
|
||||
git \
|
||||
libhdhomerun-dev \
|
||||
libtool \
|
||||
libxml2-dev \
|
||||
make \
|
||||
mercurial \
|
||||
openssl-dev \
|
||||
patch \
|
||||
perl-dev \
|
||||
pkgconf \
|
||||
sdl-dev \
|
||||
uriparser-dev \
|
||||
wget \
|
||||
zlib-dev && \
|
||||
|
||||
# add runtime dependencies required in build stage
|
||||
apk add --no-cache \
|
||||
bsd-compat-headers \
|
||||
bzip2 \
|
||||
curl \
|
||||
gzip \
|
||||
libcrypto1.0 \
|
||||
libcurl \
|
||||
libssl1.0 \
|
||||
linux-headers \
|
||||
openssl \
|
||||
perl \
|
||||
perl-archive-zip \
|
||||
perl-boolean \
|
||||
perl-capture-tiny \
|
||||
perl-cgi \
|
||||
perl-compress-raw-zlib \
|
||||
perl-date-manip \
|
||||
perl-datetime \
|
||||
perl-file-slurp \
|
||||
perl-html-parser \
|
||||
perl-html-tree \
|
||||
perl-http-cookies \
|
||||
perl-io \
|
||||
perl-io-compress \
|
||||
perl-io-html \
|
||||
perl-io-stringy \
|
||||
perl-json \
|
||||
perl-libwww \
|
||||
perl-module-build \
|
||||
perl-module-pluggable \
|
||||
perl-net-ssleay \
|
||||
perl-parse-recdescent \
|
||||
perl-path-class \
|
||||
perl-term-readkey \
|
||||
perl-test-exception \
|
||||
perl-test-requires \
|
||||
perl-xml-parser \
|
||||
perl-xml-sax \
|
||||
python \
|
||||
tar \
|
||||
uriparser \
|
||||
wget \
|
||||
zlib && \
|
||||
|
||||
# install perl modules
|
||||
curl -L http://cpanmin.us | perl - App::cpanminus && \
|
||||
cpanm HTML::TableExtract && \
|
||||
cpanm HTTP::Cache::Transparent && \
|
||||
cpanm inc && \
|
||||
cpanm IO::Scalar && \
|
||||
cpanm IO::Socket::SSL && \
|
||||
cpanm Lingua::EN::Numbers::Ordinate && \
|
||||
cpanm Lingua::Preferred && \
|
||||
cpanm PerlIO::gzip && \
|
||||
cpanm SOAP::Lite && \
|
||||
cpanm Term::ProgressBar && \
|
||||
cpanm Term::ProgressBar && \
|
||||
cpanm Unicode::UTF8simple && \
|
||||
cpanm version && \
|
||||
cpanm WWW::Mechanize && \
|
||||
cpanm XML::LibXML && \
|
||||
cpanm XML::TreePP && \
|
||||
cpanm XML::Twig && \
|
||||
cpanm XML::Writer && \
|
||||
|
||||
# patch and build perl-unicode-string
|
||||
mkdir -p \
|
||||
/tmp/unicode && \
|
||||
curl -o \
|
||||
/tmp/unicode-src.tar.gz -L \
|
||||
"http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Unicode-String-${UNICODE_VER}.tar.gz" && \
|
||||
tar xzf /tmp/unicode-src.tar.gz -C \
|
||||
/tmp/unicode --strip-components=1 && \
|
||||
cd /tmp/unicode/lib/Unicode && \
|
||||
patch -i /tmp/patches/perl-unicode.patch && \
|
||||
cd /tmp/unicode && \
|
||||
perl Makefile.PL && \
|
||||
make && \
|
||||
make test && \
|
||||
make install && \
|
||||
|
||||
# build dvb-apps
|
||||
hg clone http://linuxtv.org/hg/dvb-apps /tmp/dvb-apps && \
|
||||
cd /tmp/dvb-apps && \
|
||||
make && \
|
||||
make install && \
|
||||
|
||||
# build tvheadend
|
||||
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
|
||||
cd /tmp/tvheadend && \
|
||||
git checkout "${TVH_VER}" && \
|
||||
./configure \
|
||||
--disable-ffmpeg_static \
|
||||
--disable-hdhomerun_static \
|
||||
--disable-libfdkaac_static \
|
||||
--disable-libmfx_static \
|
||||
--disable-libtheora_static \
|
||||
--disable-libvorbis_static \
|
||||
--disable-libvpx_static \
|
||||
--disable-libx264_static \
|
||||
--disable-libx265_static \
|
||||
--enable-hdhomerun_client \
|
||||
--enable-libav \
|
||||
--infodir=/usr/share/info \
|
||||
--localstatedir=/var \
|
||||
--mandir=/usr/share/man \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/config && \
|
||||
make && \
|
||||
make install && \
|
||||
|
||||
# build XMLTV
|
||||
curl -o /tmp/xmtltv-src.tar.bz2 -L \
|
||||
"http://kent.dl.sourceforge.net/project/xmltv/xmltv/${XMLTV_VER}/xmltv-${XMLTV_VER}.tar.bz2" && \
|
||||
tar xf /tmp/xmtltv-src.tar.bz2 -C \
|
||||
/tmp --strip-components=1 && \
|
||||
cd "/tmp/xmltv-${XMLTV_VER}" && \
|
||||
/bin/echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \
|
||||
make && \
|
||||
make test && \
|
||||
make install && \
|
||||
|
||||
# build argtable2
|
||||
ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \
|
||||
mkdir -p \
|
||||
/tmp/argtable && \
|
||||
curl -o \
|
||||
/tmp/argtable-src.tar.gz -L \
|
||||
"https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \
|
||||
tar xf /tmp/argtable-src.tar.gz -C \
|
||||
/tmp/argtable --strip-components=1 && \
|
||||
cd /tmp/argtable && \
|
||||
./configure \
|
||||
--prefix=/usr && \
|
||||
make && \
|
||||
make check && \
|
||||
make install && \
|
||||
|
||||
# build comskip
|
||||
git clone git://github.com/erikkaashoek/Comskip /tmp/comskip && \
|
||||
cd /tmp/comskip && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--bindir=/usr/bin \
|
||||
--sysconfdir=/config && \
|
||||
make && \
|
||||
make install && \
|
||||
|
||||
# install runtime packages
|
||||
apk add --no-cache \
|
||||
ffmpeg \
|
||||
ffmpeg-libs \
|
||||
libhdhomerun-libs && \
|
||||
|
||||
# cleanup
|
||||
apk del --purge \
|
||||
build-dependencies && \
|
||||
rm -rf \
|
||||
/config/.cpanm \
|
||||
/tmp/*
|
||||
|
||||
# copy local files
|
||||
COPY root/ /
|
||||
|
||||
# ports and volumes
|
||||
EXPOSE 9981 9982
|
||||
VOLUME /config /recordings
|
||||
10
README.md
Normal file
10
README.md
Normal file
@@ -0,0 +1,10 @@
|
||||

|
||||
|
||||
## This is a Container in active development by the [LinuxServer.io](https://linuxserver.io) team and is not recommended for use by the general public.
|
||||
|
||||
If you want to comment\contribute on this container , are looking for support on any of our other work , or are curious about us in general, check out the following.
|
||||
|
||||
* [forum.linuxserver.io](https://forum.linuxserver.io)
|
||||
* [IRC](https://www.linuxserver.io/index.php/irc/) on freenode at `#linuxserver.io`
|
||||
* [Podcast](https://www.linuxserver.io/index.php/category/podcast/) covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation!
|
||||
|
||||
98
READMETEMPLATE.md
Normal file
98
READMETEMPLATE.md
Normal file
@@ -0,0 +1,98 @@
|
||||

|
||||
|
||||
The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring auto-update on startup, easy user mapping and community support. Find us for support at:
|
||||
* [forum.linuxserver.io](https://forum.linuxserver.io)
|
||||
* [IRC](https://www.linuxserver.io/index.php/irc/) on freenode at `#linuxserver.io`
|
||||
* [Podcast](https://www.linuxserver.io/index.php/category/podcast/) covers everything to do with getting the most from your Linux Server plus a focus on all things Docker and containerisation!
|
||||
|
||||
# linuxserver/tvheadend-unstable
|
||||
|
||||
[Tvheadend] (https://www.tvheadend.org/) is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.
|
||||
Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming.
|
||||
Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
docker create \
|
||||
--name=tvheadend-unstable \
|
||||
-v <path to data>:/config \
|
||||
-e PGID=<gid> -e PUID=<uid> \
|
||||
-p 9981:9981 \
|
||||
-p 9982:9982 \
|
||||
--device=/dev/dvb
|
||||
linuxserver/tvheadend-unstable
|
||||
```
|
||||
The --device=/dev/dvb is only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out.
|
||||
|
||||
**Parameters**
|
||||
|
||||
* `-p 1234` - the port(s)
|
||||
* `-v /config` - explain what lives here
|
||||
* `-e PGID` for GroupID - see below for explanation
|
||||
* `-e PUID` for UserID - see below for explanation
|
||||
|
||||
It is based on alpine linux with s6 overlay, for shell access whilst the container is running do `docker exec -it tvheadend-unstable /bin/bash`.
|
||||
|
||||
### User / Group Identifiers
|
||||
|
||||
Sometimes when using data volumes (`-v` flags) permissions issues can arise between the host OS and the container. We avoid this issue by allowing you to specify the user `PUID` and group `PGID`. Ensure the data volume directory on the host is owned by the same user you specify and it will "just work" ™.
|
||||
|
||||
In this instance `PUID=1001` and `PGID=1001`. To find yours use `id user` as below:
|
||||
|
||||
```
|
||||
$ id <dockeruser>
|
||||
uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)
|
||||
```
|
||||
|
||||
## Setting up the application
|
||||
|
||||
The first thing to do is to create your admin user as by default everyone is allowed to access tvheadend. Go to Configuration --> Users --> Access Entries and click Add and fill in all the required fields.
|
||||
Then go to the password tab and click Add and fill in the user name you created in the previous step and enter your password.
|
||||
Click the (login) button in the top of the webgui and check that your user is configured properly. After you have logged in, deleteor disable the * user.
|
||||
Then you can start configuring tvheadend with the wizard foun in Configuration --> General --> Base and click Start Wizard.
|
||||
|
||||
**Configuring XMLTV grabber**
|
||||
|
||||
To configure the XMLTV grabber, first check if your grabber is listed in Configuration --> Channel/EPG --> EPG Grabber Modules. If it's listed, you will have to configure the grabber before enabling.
|
||||
Find the path in the path field of your grabber. We will use the last part. It starts with tv_grab_. Add it after /usr/bin/ in the below command. There should be no space between Usr/bin/ and the part you added.
|
||||
|
||||
```
|
||||
docker exec -it -u abc tvheadend-unstable /usr/bin/ --configure
|
||||
```
|
||||
|
||||
Now follow the onscreen progress. If you get asked about cache, just accept the default. After you have configured your grabber, you can go back and enable your grabber.
|
||||
|
||||
If you allready have a configuration file, you can add it in the .xmltv folder where you mapped the /config volume. If it's not created, create it.
|
||||
|
||||
**Comskip**
|
||||
This container comes with Comskip for commercial flagging of recordings. This you have to add in the recording config of tvheadend.
|
||||
Go to Configuration --> Recording and add the below in the Post-processor command field.
|
||||
|
||||
```
|
||||
comskip "%f"
|
||||
```
|
||||
|
||||
Now comskip will run after each recording is finished. You will find comskip.ini in the comskip folder of your /config volume mapping. See the [Comskip] (http://www.kaashoek.com/comskip/) homepage for tuning of the ini file.
|
||||
|
||||
|
||||
**FFmpeg**
|
||||
|
||||
FFmpeg is installed in /usr/bin/ in case you need to use it with pipe.
|
||||
|
||||
**EPG XML file**
|
||||
|
||||
If you have EPG data in XML format from a supplier, you can drop it in the data folder of your your /config volume mapping. Then choose the XML file grabber in Configuration --> Channel/EPG --> EPG Grabber Modules.
|
||||
If you use WebGrab+Plus, choose the WebGrab+Plus XML file grabber. The XML file goes in the same path as above.
|
||||
|
||||
For advanced setup of tvheadend, go to [tvheadend.org] (https://www.tvheadend.org)
|
||||
|
||||
## Info
|
||||
|
||||
* Shell access whilst the container is running: `docker exec -it tvheadend-unstable /bin/bash`
|
||||
* To monitor the logs of the container in realtime: `docker logs -f tvheadend-unstable`
|
||||
|
||||
## Versions
|
||||
|
||||
+ **14.08.2016:** Initial release.
|
||||
11
patches/perl-unicode.patch
Normal file
11
patches/perl-unicode.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- CharName.pm 2005-10-25 20:11:00.000000000 +0200
|
||||
+++ CharName.pm.mod 2016-08-12 23:25:51.752348000 +0200
|
||||
@@ -77,7 +77,7 @@
|
||||
return join("", "HANGUL SYLLABLE ", @s)
|
||||
}
|
||||
}
|
||||
- _init_names() unless defined %NAMES;
|
||||
+ _init_names() unless %NAMES;
|
||||
$NAMES{sprintf("%04X",$code)}
|
||||
}
|
||||
|
||||
38
root/defaults/7a5edfbe189851e5b1d1df19c93962f0
Executable file
38
root/defaults/7a5edfbe189851e5b1d1df19c93962f0
Executable file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"name": "",
|
||||
"profile": "22f637a89b4dec0d67e3107ee88ee4c5",
|
||||
"cache": 2,
|
||||
"retention-days": 2147483646,
|
||||
"removal-days": 2147483647,
|
||||
"clone": true,
|
||||
"rerecord-errors": 10,
|
||||
"warm-time": 30,
|
||||
"pre-extra-time": 0,
|
||||
"post-extra-time": 0,
|
||||
"epg-update-window": 86400,
|
||||
"epg-running": true,
|
||||
"autorec-maxcount": 0,
|
||||
"autorec-maxsched": 0,
|
||||
"storage": "/recordings/",
|
||||
"storage-mfree": 1000,
|
||||
"storage-mused": 0,
|
||||
"file-permissions": "0755",
|
||||
"charset": "UTF-8",
|
||||
"tag-files": true,
|
||||
"skip-commercials": true,
|
||||
"pathname": "$t/$t -$ e -$ s$n.$x",
|
||||
"directory-permissions": "0775",
|
||||
"day-dir": false,
|
||||
"channel-dir": false,
|
||||
"title-dir": true,
|
||||
"channel-in-title": false,
|
||||
"date-in-title": false,
|
||||
"time-in-title": false,
|
||||
"episode-in-title": false,
|
||||
"subtitle-in-title": false,
|
||||
"omit-title": false,
|
||||
"clean-title": false,
|
||||
"whitespace-in-title": false,
|
||||
"windows-compatible-filenames": false
|
||||
}
|
||||
81
root/defaults/comskip.ini.org
Executable file
81
root/defaults/comskip.ini.org
Executable file
@@ -0,0 +1,81 @@
|
||||
; See comskip.txt in the distribution zip file for many settable parameters, read manual.html, tuning.html and debugwindow.html for how to tune and debug comskip
|
||||
edl_mode=3 ; the mode specified in the generated edl file, 0=cut, 3=commercial break
|
||||
mkv_time_offset=30.0 ; offset in seconds, to work around what appears to be an xbmc or ffmpeg bug
|
||||
always_keep_first_seconds=2 ; xbmc/vdpau has a bug that causes a segfault if we don't keep the start of the stream, I'll fix that when I get a chance
|
||||
detect_method=255 ;1=black frame, 2=logo, 4=scene change, 8=fuzzy logic, 16=closed captions, 32=aspect ration, 64=silence, 128=cutscenes, 255=all
|
||||
validate_silence=1 ; Default, set to 0 to force using this clues if selected above.
|
||||
validate_uniform=1 ; Default, set to 0 to force using this clues (like pure white frames) if blackframe is selected above.
|
||||
validate_scenechange=1 ; Default, set to 0 to force using this clues if selected above.
|
||||
verbose=10 ;show a lot of extra info, level 5 is also OK, set to 0 to disable
|
||||
max_brightness=60 ;frame not black if any pixels checked are greater than this (scale 0 to 255)
|
||||
test_brightness=40 ;frame not pure black if any pixels checked are greater than this, will check average brightness (scale 0 to 255)
|
||||
max_avg_brightness=25 ;maximum average brightness for a dim frame to be considered black (scale 0 to 255) 0 means autosetting
|
||||
max_commercialbreak=600 ;maximum length in seconds to consider a segment a commercial break
|
||||
min_commercialbreak=25 ;minimum length in seconds to consider a segment a commercial break
|
||||
max_commercial_size=125 ;maximum time in seconds for a single commercial or multiple commercials if no breaks in between
|
||||
min_commercial_size=4 ;mimimum time in seconds for a single commercial
|
||||
min_show_segment_length=250 ; any segment longer than this will be scored towards show.
|
||||
non_uniformity=500 ; Set to 0 to disable cutpoints based on uniform frames
|
||||
max_volume=500 ; any frame with sound volume larger than this will not be regarded as black frame
|
||||
min_silence=12 ; Any deep silence longer than this amount of frames is a possible cutpoint
|
||||
ticker_tape=0 ; Amount of pixels from bottom to ignore in all processing
|
||||
logo_at_bottom=0 ; Set to 1 to search only for logo at the lower half of the video, do not combine with subtitle setting
|
||||
punish=0 ; Compare to average for sum of 1=brightness, 2=uniform 4=volume, 8=silence, 16=schange, set to 0 to disable
|
||||
punish_threshold=1.3 ; Multiply when amount is above average * punish_threshold
|
||||
punish_modifier=2 ; When above average * threshold multiply score by this value
|
||||
intelligent_brightness=0 ; Set to 1 to use a USA specific algorithm to tune some of the settings, not adviced outside the USA
|
||||
logo_percentile=0.92 ; if more then this amount of logo is found then logo detection will be disabled
|
||||
logo_threshold=0.775
|
||||
punish_no_logo=1 ; Default, set to 0 to avoid show segments without logo to be scored towards commercial
|
||||
aggressive_logo_rejection=0
|
||||
connect_blocks_with_logo=0 ; set to 1 if you want successive blocks with logo on the transition to be regarded as connected, set to 0 to disable
|
||||
logo_filter=0 ; set the size of the filter to apply to bad logo detection, 4 seems to be a good value.
|
||||
logo_max_percentage_of_screen=0.9
|
||||
subtitles=1
|
||||
cut_on_ar_change=1 ; set to 1 if you want to cut also on aspect ratio changes when logo is present, set to 2 to force cuts on aspect ratio changes. set to 0 to disable
|
||||
delete_show_after_last_commercial=0 ; set to 1 if you want to delete the last block if its a show and after a commercial
|
||||
delete_show_before_or_after_current=0 ; set to 1 if you want to delete the previous and the next show in the recording, this can lead to the deletion of trailers of next show
|
||||
delete_block_after_commercial=0 ;set to max size of block in seconds to be discarded, set to 0 to disable
|
||||
remove_before=0 ; amount of seconds of show to be removed before ALL commercials
|
||||
remove_after=0 ; amount of seconds of show to be removed after ALL commercials
|
||||
shrink_logo=0 ; Reduce the duration of the logo with this amount of seconds
|
||||
after_logo=0 ; set to number of seconds after logo disappears comskip should start to search for silence to insert an additional cutpoint
|
||||
padding=0
|
||||
ms_audio_delay=5
|
||||
volume_slip=40
|
||||
skip_b_frames=0 ; Set to 1 to force Comskip to skip frames for higher processing speed.
|
||||
max_repair_size=200 ; Will repair maximum 200 missing MPEG frames in the timeline, set to 0 to disable repairing for players that don't use PTS.
|
||||
disable_heuristics=4 bit pattern for disabling heuristics, adding 1 disables heristics 1, adding 2 disables heristics 2, adding 4 disables heristics 3, 255 disables all heuristics
|
||||
delete_logo_file=0 ; set to 1 if you want comskip to tidy up after finishing
|
||||
output_framearray=0 ; create a big excel file for detailed analysis, set to 0 to disable
|
||||
output_data=0 ; create a dump of the user data channel, used for CC and XDS (such as V-Chip info). Can be use together with output_framearray to remote debug CC decoding
|
||||
output_videoredo=0
|
||||
output_womble=0
|
||||
output_mls=0 ; set to 1 if you want MPeg Video Wizard bookmark file output
|
||||
output_cuttermaran=0
|
||||
output_mpeg2schnitt=0
|
||||
output_mpgtx=0
|
||||
output_dvrcut=0
|
||||
output_zoomplayer_chapter=0
|
||||
output_zoomplayer_cutlist=0
|
||||
output_edl=0
|
||||
output_dvrmstb=0 ; Set to 1 if you're running DVRMS-Toolbox
|
||||
output_edlx=0
|
||||
output_vcf=0
|
||||
output_bsplayer=0
|
||||
output_btv=0 ; set to 1 if you want Beyond TV chapter cutlist output
|
||||
output_projectx=0 ; set to 1 if you want ProjectX cutlist output (Xcl)
|
||||
output_avisynth=0
|
||||
output_vdr=1 ; set to 1 if you want XBMC to skipping commercials
|
||||
output_demux=0 ; set to 1 if you want comskip to demux the mpeg file while scanning
|
||||
sage_framenumber_bug=0
|
||||
sage_minute_bug=0
|
||||
live_tv=0 ; set to 1 if you use parallelprocessing and need the output while recording
|
||||
live_tv_retries=4 ; change to 16 when using live_tv in BTV, used for mpeg PS and TS
|
||||
dvrms_live_tv_retries=300 ; only used for dvr_ms
|
||||
standoff=0 ; change to 8000000 when using live_tv in BTV
|
||||
cuttermaran_options="cut=\"true\" unattended=\"true\" muxResult=\"false\" snapToCutPoints=\"true\" closeApp=\"true\""
|
||||
mpeg2schnitt_options="mpeg2schnitt.exe /S /E /R25 /Z %2 %1"
|
||||
avisynth_options="LoadPlugin(\"MPEG2Dec3.dll\") \nMPEG2Source(\"%s\")\n"
|
||||
dvrcut_options="dvrcut \"%s.dvr-ms\" \"%s_clean.dvr-ms\" "
|
||||
windowtitle="Comskip - %s"
|
||||
17
root/etc/cont-init.d/30-config
Normal file
17
root/etc/cont-init.d/30-config
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
|
||||
# make folders
|
||||
mkdir -p \
|
||||
/config/.hts/tvheadend/dvr/config \
|
||||
/config/comskip
|
||||
|
||||
# copy config
|
||||
[[ ! -e /config/.hts/tvheadend/dvr/config/7a5edfbe189851e5b1d1df19c93962f0 ]] && \
|
||||
cp /defaults/7a5edfbe189851e5b1d1df19c93962f0 /config/.hts/tvheadend/dvr/config/7a5edfbe189851e5b1d1df19c93962f0
|
||||
[[ ! -e /config/comskip/comskip.ini ]]
|
||||
cp /defaults/comskip.ini.org /config/comskip/comskip.ini
|
||||
|
||||
# permissions
|
||||
chown -R abc:abc \
|
||||
/config \
|
||||
/config/.hts
|
||||
3
root/etc/services.d/tvheadend/run
Executable file
3
root/etc/services.d/tvheadend/run
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
exec \
|
||||
s6-setuidgid abc /usr/bin/tvheadend -C
|
||||
55
root/usr/bin/tv_grab_file
Executable file
55
root/usr/bin/tv_grab_file
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
dflag=
|
||||
vflag=
|
||||
cflag=
|
||||
if (( $# < 1 ))
|
||||
then
|
||||
cat /config/data/*.xml
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for arg
|
||||
do
|
||||
delim=""
|
||||
case "$arg" in
|
||||
#translate --gnu-long-options to -g (short options)
|
||||
--description) args="${args}-d ";;
|
||||
--version) args="${args}-v ";;
|
||||
--capabilities) args="${args}-c ";;
|
||||
#pass through anything else
|
||||
*) [[ "${arg:0:1}" == "-" ]] || delim="\""
|
||||
args="${args}${delim}${arg}${delim} ";;
|
||||
esac
|
||||
done
|
||||
|
||||
#Reset the positional parameters to the short options
|
||||
eval set -- $args
|
||||
|
||||
while getopts "dvc" option
|
||||
do
|
||||
case $option in
|
||||
d) dflag=1;;
|
||||
v) vflag=1;;
|
||||
c) cflag=1;;
|
||||
\?) printf "unknown option: -%s\n" $OPTARG
|
||||
printf "Usage: %s: [--description] [--version] [--capabilities] \n" $(basename $0)
|
||||
exit 2
|
||||
;;
|
||||
esac >&2
|
||||
done
|
||||
|
||||
if [ "$dflag" ]
|
||||
then
|
||||
printf "XML file grabber\n"
|
||||
fi
|
||||
if [ "$vflag" ]
|
||||
then
|
||||
printf "0.1\n"
|
||||
fi
|
||||
if [ "$cflag" ]
|
||||
then
|
||||
printf "baseline\n"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
63
root/usr/bin/tv_grab_wg
Executable file
63
root/usr/bin/tv_grab_wg
Executable file
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
xmltv_file_location=/config/data/*.xml
|
||||
dflag=
|
||||
vflag=
|
||||
cflag=
|
||||
qflag=
|
||||
if (( $# < 1 ))
|
||||
then
|
||||
cat "$xmltv_file_location"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for arg
|
||||
do
|
||||
delim=""
|
||||
case "$arg" in
|
||||
#translate --gnu-long-options to -g (short options)
|
||||
--description) args="${args}-d ";;
|
||||
--version) args="${args}-v ";;
|
||||
--capabilities) args="${args}-c ";;
|
||||
--quiet) args="${args}-q ";;
|
||||
|
||||
#pass through anything else
|
||||
*) [[ "${arg:0:1}" == "-" ]] || delim="\""
|
||||
args="${args}${delim}${arg}${delim} ";;
|
||||
esac
|
||||
done
|
||||
|
||||
#Reset the positional parameters to the short options
|
||||
eval set -- $args
|
||||
|
||||
while getopts "dvcq" option
|
||||
do
|
||||
case $option in
|
||||
d) dflag=1;;
|
||||
v) vflag=1;;
|
||||
c) cflag=1;;
|
||||
q) qflag=1;;
|
||||
\?) printf "unknown option: -%s\n" $OPTARG
|
||||
printf "Usage: %s: [--description] [--version] [--capabilities] \n" $(basename $0)
|
||||
exit 2
|
||||
;;
|
||||
esac >&2
|
||||
done
|
||||
|
||||
if [ "$dflag" ]
|
||||
then
|
||||
printf "WebGrab+Plus XML file grabber\n"
|
||||
fi
|
||||
if [ "$vflag" ]
|
||||
then
|
||||
printf "0.2\n"
|
||||
fi
|
||||
if [ "$cflag" ]
|
||||
then
|
||||
printf "baseline\n"
|
||||
fi
|
||||
if [ "$qflag" ]
|
||||
then
|
||||
printf ""
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user