Last active
June 22, 2022 18:06
-
-
Save nkpro2000/0e64ffea807c3b18c99862204141ff77 to your computer and use it in GitHub Desktop.
Script for KODI IPTV related functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/sh | |
# Kodi script for IPTV related functions | |
install () { | |
sudo pacman -S kodi | |
echo set these env vars in build function at PKGBUILD | |
echo 'CFLAGS="$CFLAGS -Wp,-U_GLIBCXX_ASSERTIONS"' | |
echo 'CXXFLAGS="$CXXFLAGS -Wp,-U_GLIBCXX_ASSERTIONS"' | |
pacaur -Se kodi-addon-pvr-iptvsimple | |
sudo pacman -S kodi-addon-inputstream-adaptive kodi-addon-inputstream-rtmp | |
pacaur -Se kodi-addon-inputstream-ffmpegdirect | |
echo 'Now open kodi,' | |
echo 'enable installed addons (by popup) also turn off m3uCache in pvr-iptvsimple addon configure,' | |
echo 'install inputstream-helper (Settings>Addons>Search) and then install widevine from inputstream-helper addon configure.' | |
} | |
uninstall () { | |
sudo pacman -Rs kodi kodi-addon-pvr-iptvsimple\ | |
$(pacman -Qs kodi-addon-inputstream | grep -Po 'local/\K.*?(?= )') | |
} | |
clean () { | |
rm -rf $(find ~/.kodi -maxdepth 1 -mindepth 1 -type d -not -path '*/.kodi/.*') | |
} | |
m3uUrl=() | |
change_m3u_url () { | |
if [[ -n "$(grep '<setting id="m3uUrl" default="true" />' ~/.kodi/userdata/addon_data/pvr.iptvsimple/settings.xml)" ]]; then | |
sed -i 's/<setting id="m3uUrl" default="true" \/>/<setting id="m3uUrl">'"$(echo "${m3uUrl[$1]}"|sed 's/\//\\\//g')"'<\/setting>/g' \ | |
~/.kodi/userdata/addon_data/pvr.iptvsimple/settings.xml | |
else | |
sed -i 's/<setting id="m3uUrl">.*<\/setting>/<setting id="m3uUrl">'"$(echo "${m3uUrl[$1]}"|sed 's/\//\\\//g')"'<\/setting>/g' \ | |
~/.kodi/userdata/addon_data/pvr.iptvsimple/settings.xml | |
fi | |
# restart pvr.iptvsimple addon | |
enable_addon false | |
sleep 1 | |
enable_addon true | |
} | |
enable_addon () { | |
curl -X POST -H "content-type:application/json" http://localhost:9147/jsonrpc -u kodiRPC\ | |
-d '{"jsonrpc":"2.0","id":1,"method":"Addons.SetAddonEnabled","params":{"addonid":"pvr.iptvsimple","enabled":'"$1"'}}' | |
} | |
show_diff () { | |
echo DIFF: ~/.kodi/userdata/addon_data/pvr.iptvsimple/settings.xml | |
curl -s 'https://gist.githubusercontent.com/nkpro2000/0e64ffea807c3b18c99862204141ff77/raw/udad_pvr_iptvsimple_settings.xml'|\ | |
diff --color -u - ~/.kodi/userdata/addon_data/pvr.iptvsimple/settings.xml | |
echo DIFF: ~/.kodi/userdata/guisettings.xml | |
curl -s 'https://gist.githubusercontent.com/nkpro2000/0e64ffea807c3b18c99862204141ff77/raw/ud_guisettings_WS&ES.xml'|\ | |
diff --color -u - <(cat ~/.kodi/userdata/guisettings.xml|grep -E ' <setting id="services.(web|es)') | |
curl -s 'https://gist.githubusercontent.com/nkpro2000/0e64ffea807c3b18c99862204141ff77/raw/ud_guisettings_PVR.xml'|\ | |
diff --color -u - <(cat ~/.kodi/userdata/guisettings.xml|grep -E ' <setting id="(pvr|epg)') | |
} | |
setup () { | |
sed -i 's/<setting id="services.webserver".*<\/setting>/<setting id="services.webserver">true<\/setting>/g'\ | |
~/.kodi/userdata/guisettings.xml | |
sed -i 's/<setting id="services.webserverport".*<\/setting>/<setting id="services.webserverport">9147<\/setting>/g'\ | |
~/.kodi/userdata/guisettings.xml | |
sed -i 's/<setting id="services.webserverusername".*<\/setting>/<setting id="services.webserverusername">kodiRPC<\/setting>/g'\ | |
~/.kodi/userdata/guisettings.xml | |
echo -n 'Enter password jsonRCP via webserver :' | |
read -s passwd | |
echo | |
sed -i 's/<setting id="services.webserverpassword".*\/.*>/<setting id="services.webserverpassword">'"$passwd"'<\/setting>/g'\ | |
~/.kodi/userdata/guisettings.xml | |
sed -i 's/<setting id="services.esenabled".*<\/setting>/<setting id="services.esenabled">false<\/setting>/g'\ | |
~/.kodi/userdata/guisettings.xml | |
} | |
setup_dir () { | |
mkdir -p ~/.kodi/.s/local_playlists/ | |
wget -qO ~/.kodi/.s/kodi.png 'https://user-images.githubusercontent.com/45198561/174828377-00882fab-e25a-47ef-a2fe-390c229a4c46.png' | |
if [[ ! -f ~/.kodi/.directory ]]; then | |
echo -e '[Desktop Entry]'"\n"'Icon='"$(echo ~/.kodi/.s/kodi.png)""\n\n" > ~/.kodi/.directory | |
fi | |
} | |
arg1="$1" | |
case "$arg1" in | |
-i) install | |
;; | |
-u) uninstall | |
;; | |
-c) clean | |
;; | |
-uc|-cu) | |
uninstall | |
clean | |
;; | |
-d) show_diff || [[ true ]] | |
;; | |
-s) | |
setup | |
setup_dir | |
;; | |
-h) | |
echo '<no_arg> to show all m3u url for IPTV' | |
echo '<\d> to set the url (zero and negative indexing possible)' | |
echo '-i install kodi and iptv addons' | |
echo '-u uninstall kodi and iptv addons' | |
echo '-c clean ~/.kodi dir (only visible directories)' | |
echo '-uc uninstall, then clean' | |
echo '-d show changes in settings (from saved in gist)' | |
echo '-s to set values in setting files for this script' | |
echo ' also setup directories for .kodi/ and .kodi/s (kodis)' | |
echo '-h show this help message' | |
;; | |
'') echo "${m3uUrl[@]}" | tr ' ' "\n" | nl -v0 | |
;; | |
*) change_m3u_url "$arg1" | |
;; | |
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<setting id="pvrmanager.preselectplayingchannel" default="true">false</setting> | |
<setting id="pvrmanager.syncchannelgroups" default="true">true</setting> | |
<setting id="pvrmanager.backendchannelorder" default="true">true</setting> | |
<setting id="pvrmanager.usebackendchannelnumbersalways" default="true">false</setting> | |
<setting id="pvrmanager.usebackendchannelnumbers" default="true">false</setting> | |
<setting id="pvrmanager.startgroupchannelnumbersfromone" default="true">false</setting> | |
<setting id="pvrmenu.displaychannelinfo" default="true">5</setting> | |
<setting id="pvrmenu.closechannelosdonswitch" default="true">true</setting> | |
<setting id="pvrmenu.iconpath" default="true" /> | |
<setting id="epg.pastdaystodisplay" default="true">1</setting> | |
<setting id="epg.futuredaystodisplay" default="true">3</setting> | |
<setting id="epg.selectaction" default="true">2</setting> | |
<setting id="epg.hidenoinfoavailable" default="true">true</setting> | |
<setting id="epg.epgupdate" default="true">120</setting> | |
<setting id="epg.preventupdateswhileplayingtv" default="true">false</setting> | |
<setting id="pvrplayback.switchtofullscreenchanneltypes" default="true">3</setting> | |
<setting id="pvrplayback.signalquality" default="true">true</setting> | |
<setting id="pvrplayback.confirmchannelswitch" default="true">true</setting> | |
<setting id="pvrplayback.channelentrytimeout" default="true">0</setting> | |
<setting id="pvrplayback.delaymarklastwatched" default="true">0</setting> | |
<setting id="pvrplayback.fps" default="true">0</setting> | |
<setting id="pvrplayback.enableradiords" default="true">true</setting> | |
<setting id="pvrplayback.trafficadvisory" default="true">false</setting> | |
<setting id="pvrplayback.trafficadvisoryvolume" default="true">10</setting> | |
<setting id="pvrrecord.instantrecordaction" default="true">0</setting> | |
<setting id="pvrrecord.instantrecordtime" default="true">120</setting> | |
<setting id="pvrrecord.marginstart" default="true">0</setting> | |
<setting id="pvrrecord.marginend" default="true">0</setting> | |
<setting id="pvrrecord.timernotifications" default="true">true</setting> | |
<setting id="pvrrecord.grouprecordings" default="true">true</setting> | |
<setting id="pvrreminders.autoclosedelay" default="true">10</setting> | |
<setting id="pvrreminders.autorecord" default="true">true</setting> | |
<setting id="pvrreminders.autoswitch" default="true">false</setting> | |
<setting id="pvrpowermanagement.enabled" default="true">false</setting> | |
<setting id="pvrpowermanagement.backendidletime" default="true">15</setting> | |
<setting id="pvrpowermanagement.setwakeupcmd" default="true" /> | |
<setting id="pvrpowermanagement.prewakeup" default="true">15</setting> | |
<setting id="pvrpowermanagement.dailywakeup" default="true">false</setting> | |
<setting id="pvrpowermanagement.dailywakeuptime" default="true">00:00:00</setting> | |
<setting id="pvrparental.enabled" default="true">false</setting> | |
<setting id="pvrparental.pin" default="true" /> | |
<setting id="pvrparental.duration" default="true">300</setting> | |
<setting id="pvrtimers.hidedisabledtimers" default="true">false</setting> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<setting id="services.webserver">true</setting> | |
<setting id="services.webserverport">9147</setting> | |
<setting id="services.webserverauthentication" default="true">true</setting> | |
<setting id="services.webserverusername">kodiRPC</setting> | |
<setting id="services.webserverpassword" default="true" /> | |
<setting id="services.webserverssl" default="true">false</setting> | |
<setting id="services.webskin" default="true">webinterface.default</setting> | |
<setting id="services.esenabled">false</setting> | |
<setting id="services.esport" default="true">9777</setting> | |
<setting id="services.esportrange" default="true">10</setting> | |
<setting id="services.esmaxclients" default="true">20</setting> | |
<setting id="services.esallinterfaces" default="true">false</setting> | |
<setting id="services.esinitialdelay" default="true">750</setting> | |
<setting id="services.escontinuousdelay" default="true">25</setting> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<settings version="2"> | |
<setting id="m3uPathType" default="true">1</setting> | |
<setting id="m3uPath" default="true" /> | |
<setting id="m3uUrl" default="true" /> | |
<setting id="m3uCache">false</setting> | |
<setting id="startNum" default="true">1</setting> | |
<setting id="numberByOrder" default="true">false</setting> | |
<setting id="m3uRefreshMode" default="true">0</setting> | |
<setting id="m3uRefreshIntervalMins" default="true">60</setting> | |
<setting id="m3uRefreshHour" default="true">4</setting> | |
<setting id="tvGroupMode" default="true">0</setting> | |
<setting id="numTvGroups" default="true">1</setting> | |
<setting id="oneTvGroup" default="true" /> | |
<setting id="twoTvGroup" default="true" /> | |
<setting id="threeTvGroup" default="true" /> | |
<setting id="fourTvGroup" default="true" /> | |
<setting id="fiveTvGroup" default="true" /> | |
<setting id="customTvGroupsFile" default="true">special://userdata/addon_data/pvr.iptvsimple/channelGroups/customTVGroups-example.xml</setting> | |
<setting id="tvChannelGroupsOnly" default="true">false</setting> | |
<setting id="radioGroupMode" default="true">0</setting> | |
<setting id="numRadioGroups" default="true">1</setting> | |
<setting id="oneRadioGroup" default="true" /> | |
<setting id="twoRadioGroup" default="true" /> | |
<setting id="threeRadioGroup" default="true" /> | |
<setting id="fourRadioGroup" default="true" /> | |
<setting id="fiveRadioGroup" default="true" /> | |
<setting id="customRadioGroupsFile" default="true">special://userdata/addon_data/pvr.iptvsimple/channelGroups/customRadioGroups-example.xml</setting> | |
<setting id="radioChannelGroupsOnly" default="true">false</setting> | |
<setting id="epgPathType" default="true">1</setting> | |
<setting id="epgPath" default="true" /> | |
<setting id="epgUrl" default="true" /> | |
<setting id="epgCache" default="true">true</setting> | |
<setting id="epgTimeShift" default="true">0</setting> | |
<setting id="epgTSOverride" default="true">false</setting> | |
<setting id="useEpgGenreText" default="true">false</setting> | |
<setting id="genresPathType" default="true">0</setting> | |
<setting id="genresPath" default="true">special://userdata/addon_data/pvr.iptvsimple/genres/genreTextMappings/genres.xml</setting> | |
<setting id="genresUrl" default="true" /> | |
<setting id="logoPathType" default="true">1</setting> | |
<setting id="logoPath" default="true" /> | |
<setting id="logoBaseUrl" default="true" /> | |
<setting id="useLogosLocalPathOnly" default="true">false</setting> | |
<setting id="logoFromEpg" default="true">1</setting> | |
<setting id="timeshiftEnabled" default="true">false</setting> | |
<setting id="timeshiftEnabledAll" default="true">true</setting> | |
<setting id="timeshiftEnabledHttp" default="true">true</setting> | |
<setting id="timeshiftEnabledUdp" default="true">true</setting> | |
<setting id="timeshiftEnabledCustom" default="true">false</setting> | |
<setting id="catchupEnabled" default="true">false</setting> | |
<setting id="catchupQueryFormat" default="true" /> | |
<setting id="catchupDays" default="true">5</setting> | |
<setting id="allChannelsCatchupMode" default="true">0</setting> | |
<setting id="catchupOverrideMode" default="true">0</setting> | |
<setting id="catchupCorrection" default="true">0</setting> | |
<setting id="catchupPlayEpgAsLive" default="true">false</setting> | |
<setting id="catchupWatchEpgBeginBufferMins" default="true">5</setting> | |
<setting id="catchupWatchEpgEndBufferMins" default="true">15</setting> | |
<setting id="catchupOnlyOnFinishedProgrammes" default="true">false</setting> | |
<setting id="transformMulticastStreamUrls" default="true">false</setting> | |
<setting id="udpxyHost" default="true">127.0.0.1</setting> | |
<setting id="udpxyPort" default="true">4022</setting> | |
<setting id="useFFmpegReconnect" default="true">true</setting> | |
<setting id="useInputstreamAdaptiveforHls" default="true">false</setting> | |
<setting id="defaultUserAgent" default="true" /> | |
<setting id="defaultInputstream" default="true" /> | |
<setting id="defaultMimeType" default="true" /> | |
</settings> |
Author
nkpro2000
commented
Jun 21, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment