/epgdata2vdr.sh

https://github.com/yavdr/vdr-addon-epgdata2vdr · Shell · 140 lines · 117 code · 13 blank · 10 comment · 25 complexity · 1f80f54330498552192145c346e9f12f MD5 · raw file

  1. #!/bin/bash
  2. . /etc/vdr/epgdata2vdr.conf
  3. # only change if you know what you are doing
  4. EPGDATA2VDRBIN=/usr/bin/epgdata2vdr
  5. SVDRPSENDBIN=/usr/bin/svdrpsend
  6. CURLBIN=/usr/bin/curl
  7. UNZIPBIN=/usr/bin/unzip
  8. SENDMAIL=/usr/sbin/sendmail
  9. WC=/bin/wc
  10. # install required files if necessary + create directories
  11. if [ ! -n "$WORKDIR" ]; then
  12. echo "Work directory undefined. Stopping."
  13. exit 1
  14. fi
  15. if [ ! -n "$PIN" ]; then
  16. echo "epgdata.com PIN is not configured. Stopping"
  17. exit 1
  18. fi
  19. if [ ! -e $CONF ]; then
  20. echo "$CONF not found. Stopping."
  21. exit 1
  22. fi
  23. if [ ! -d $WORKDIR/files ]; then
  24. mkdir -p $WORKDIR/files
  25. fi
  26. if [ ! -e $INCLUDEDIR/genre.xml -o ! -e $INCLUDEDIR/category.xml ]; then
  27. mkdir -p $INCLUDEDIR
  28. if [ x$? != x0 ]; then
  29. echo "$INCLUDEDIR exists but is not a directory"
  30. exit 1
  31. else
  32. nice -n 19 $CURLBIN "http://www.epgdata.com/index.php?action=sendInclude&iOEM=&pin=$PIN&dataType=xml" \
  33. -o $INCLUDEDIR/include.zip
  34. $UNZIPBIN -o $INCLUDEDIR/include.zip -d $INCLUDEDIR
  35. fi
  36. fi
  37. # Delete old EPG-Images
  38. if [ -e $WORKDIR/images/ ]; then
  39. find $WORKDIR/images/* -type f -mtime +$MAXDAYS -print0 | xargs -0 rm -f
  40. fi
  41. # Also delete old symlinks (-L only broken symlinks)
  42. if [ -n "$EPGIMAGES" ]; then
  43. find -L $EPGIMAGES/* -type l -print0 | xargs -0 rm -f
  44. IMAGEOPT="-i $EPGIMAGES/"
  45. fi
  46. # process data
  47. for i in `seq 0 $MAXDAYS` ; do
  48. echo "<--- Processing data with offset $i --->"
  49. TMP=`mktemp`
  50. nice -n 19 $CURLBIN -I -D $TMP "http://www.epgdata.com/index.php?action=sendPackage&iOEM=VDR&pin=$PIN&dayOffset=$i&dataType=xml" &> /dev/null
  51. FILE=`grep -e "^Content-disposition.*$" $TMP | sed -e ' s/\r//g' | cut -d"=" -f2`
  52. FILE="`basename $FILE .zip`"
  53. SIZE=`grep -e "^Content-Length.*$" $TMP | sed -e ' s/\r//g' | cut -d":" -f2`
  54. [ -z $TIMEOUT ] && TIMEOUT=`grep -e "^x-epgdata-timeout.*$" $TMP | sed -e ' s/\r//g' | cut -d":" -f2`
  55. if [ -z $LEFT ] && [ -n "$TIMEOUT" ]; then
  56. LEFT=$((( $TIMEOUT - $(date +%s)) / 60 / 60 / 24 ))
  57. fi
  58. if [ ! -z $SIZE ]; then
  59. if [ ! -e $WORKDIR/files/$FILE.zip ]; then
  60. nice -n 19 $CURLBIN "http://www.epgdata.com/index.php?action=sendPackage&iOEM=VDR&pin=$PIN&dayOffset=$i&dataType=xml" -o $WORKDIR/files/$FILE.zip
  61. rm $WORKDIR/$FILE.epg > /dev/null 2>&1
  62. else
  63. if [ `ls -la $WORKDIR/files/$FILE.zip | cut -d" " -f5` != $SIZE ]; then
  64. nice -n 19 $CURLBIN "http://www.epgdata.com/index.php?action=sendPackage&iOEM=VDR&pin=$PIN&dayOffset=$i&dataType=xml" -o $WORKDIR/files/$FILE.zip
  65. rm $WORKDIR/$FILE.epg > /dev/null 2>&1
  66. else
  67. echo "File: $FILE already downloaded"
  68. fi
  69. fi
  70. ### process start ###
  71. if [ -s $WORKDIR/$FILE.epg ]; then
  72. echo "File: $FILE already processed"
  73. else
  74. if [ -e $WORKDIR/files/$FILE.zip ]; then
  75. echo -e " File: $FILE Size: $(( $SIZE / 1024 )) kB"
  76. #epgdata2vdr --help for explanation
  77. $EPGDATA2VDRBIN -c $CONF \
  78. -I $WORKDIR/include/ \
  79. $IMAGEOPT \
  80. -p ${WORKDIR}/ \
  81. -f $IMAGE_FORMAT \
  82. -s $IMAGE_MAXSIZE \
  83. $WORKDIR/files/$FILE.zip
  84. $SVDRPSENDBIN PUTE ${PUTECHAR}$WORKDIR/$FILE.epg
  85. else
  86. echo "File: Failed to load $FILE"
  87. fi
  88. fi
  89. fi
  90. rm $TMP
  91. done
  92. # Delete all but last set
  93. echo -n "Cleanup old files ... "
  94. for i in `find $WORKDIR/files/* -name "*$SUFFIX.zip" | cut -d"_" -f2 | sort -r | uniq | tail -n +2` ; do
  95. echo "Cleanup files of : $i "
  96. rm -f $WORKDIR/*$i$SUFFIX.epg
  97. rm -f $WORKDIR/files/*$i$SUFFIX.zip
  98. done
  99. if [ -n "$EMAIL" ]; then # To enable set $EMAIL in epgdata2vdr.conf
  100. # Check if all files could be loaded (only works if MAXDAYS is less than 14)
  101. NUMFILES=$(($(ls $WORKDIR/files/*.zip | wc -l)))
  102. if [ $NUMFILES -lt $(($MAXDAYS +1)) ] && [ $MAXDAYS -lt 14 ] || [ "$LEFT" -lt "5" ]; then
  103. echo "<--- Sending email about missing files / ending subscription --->"
  104. echo "From: \"EPGData2VDR-Skript\"<$EMAIL>" > /tmp/mail.txt
  105. echo "T0: $EMAIL" >> /tmp/mail.txt
  106. if [ "$LEFT" -lt "5" ]; then # Subscription is ending...
  107. echo "Subject: EPGData.com Abo endet in $LEFT Tag(en)!" >> /tmp/mail.txt
  108. echo "" >> /tmp/mail.txt
  109. echo "Das Abo bei EPGData.com hat noch eine Laufzeit von $LEFT Tag(en)" >> /tmp/mail.txt
  110. echo "und endet danach automatisch! Ein neues Abo kann unter" >> /tmp/mail.txt
  111. echo "http://www.epgdata.com/index.php?action=newSubscription&iLang=de&iOEM=vdr&iCountry=de&popup=0" >> /tmp/mail.txt
  112. echo "abgeschlossen werden. Das neue Abo startet sofort nach Bezahlung!" >> /tmp/mail.txt
  113. else
  114. echo "Subject: Fehler beim laden von EPGData.com!" >> /tmp/mail.txt
  115. echo "" >> /tmp/mail.txt
  116. echo "Beim Download von EPGData.com konnten nicht alle Daten" >> /tmp/mail.txt
  117. echo "geladen werden. Hinweis: Das Abo endet in $LEFT Tag(en)" >> /tmp/mail.txt
  118. echo "" >> /tmp/mail.txt
  119. echo "Es wurde(n) $NUMFILES von $(($MAXDAYS +1)) Datei(en) geladen!" >> /tmp/mail.txt
  120. fi
  121. echo "" >> /tmp/mail.txt
  122. echo "Inhalt von $WORKDIR/files:" >> /tmp/mail.txt
  123. ls -l $WORKDIR/files >> /tmp/mail.txt
  124. $SENDMAIL $EMAIL < /tmp/mail.txt
  125. fi
  126. fi
  127. exit