**------------------------------------------------------------------------------------------------ * @header_start * WebGrab+Plus ini for grabbing EPG data from TvGuide websites * @Site: tvtv.de * @MinSWversion: V2.1.5 * @Revision 13 - [18/08/2018] Blackbear199 * - subtitle improvements * @Revision 12 - [29/07/2018] Blackbear199 * - rewrite * @Revision 11 - [31/12/2017] Blackbear199 * - showsplit change * @Revision 10 - [24/08/2017] Blackbear199 * - add role argument,added multi episode info * @Revision 9 - [19/02/2015] Francis De Paemeleere * - add region selectable channels (+ revert to xmltv_ns version) * @Revision 8 - [14/08/2014] Jan van Straaten * - added removeduplicates from showsplit, customheaders, timezone * @Revision 7 - [21/06/2013] Jan van Straaten * - improved episode and subtitle * @Revision 6 - [05/04/2013] Jan van Straaten * - for three weeks of epg * @Revision 5 - [02/03/2013] Jan van Straaten * - creation * @Remarks: * @header_end **------------------------------------------------------------------------------------------------ site {url=tvtv.de|timezone=Europe/Berlin|maxdays=28.1|cultureinfo=de-DE|charset=UTF-8|titlematchfactor=90|allowlastdayoverflow} site {subtitlestype=Gehörlose|ratingsystem=FSK|episodesystem=onscreen} * url_index{url|https://www.tvtv.de/sender/##channel##} url_index.headers {customheader=Accept-Encoding=gzip,deflate} * scope.range{(urlindex)|end} global_temp_1.modify {substring(type=regex)|'config_site_id' "^([^\/]*)\/?"} url_index.modify {replace|##channel##|'global_temp_1'} end_scope * index_urlchannellogo.modify {set|https://www.tvtv.de/images/senderlogos/'global_temp_1'.svg} * index_showsplit.scrub {multi(exclude="past hide")|.+?<\/li>[^<]*<\/ul>[^<]*<\/li>"} *check if its a regional channel,if so keep only its regional shows global_temp_2.modify {substring(type=regex)|'config_site_id' "\/(.*)$"} index_showsplit.modify {remove('global_temp_2' not "" type=regex)|"^.*?(
  • [^<]*'global_temp_2'[^<]*<\/li>).*$"} index_showsplit.modify {remove(type=regex)|"^.*?
  • [^<]*<\/li>.*$"} * index_temp_1.modify {substring(type=regex)|'index_showsplit' "
  • (\d+:\d+)<\/li>"} index_temp_1.modify {cleanup(removeduplicates span=3 link="index_showsplit")} *index_showsplit.modify {(debug)} end_scope * index_urlshow {url|||">||} index_start.scrub {single|
  • ||
  • |} index_title.scrub {single(separator=" – " include=first)|
  • |">||
  • } * title.scrub {single(separator=" – " include=first)|

    ||

    |} titleoriginal.scrub {multi(include=last)||
  • |
  • |} *subtitle.scrub {single(separator="," exclude="Folge""Staffel")||
  • |
  • |} *german subtitle subtitle.modify {substring(type=regex)|'titleoriginal' "[^:]*:\s(.*)$"} *english subtitle description.scrub {multi|

    |

    |

    } category.scrub {single(separator="," exclude=last)|
  • ||
  • |} episode.scrub {single(pattern="Folge 'E1' von 'Et1' Staffel 'S1'""Folge 'E1' von 'Et1'""Folge 'E1'" separator="," include="Folge""Staffel")||
  • |
  • |} director.scrub {regex||\s*Regie[^<]*[^<]*(?:.*?)(?:(?:[^<]*]*>)?([^<]*)(?:)?[^<]*(?:
    \|)(?:.*?))*||} producer.scrub {regex||\s*Produktion[^<]*[^<]*(?:.*?)(?:(?:[^<]*]*>)?([^<]*)(?:)?[^<]*(?:
    \|)(?:.*?))*||} actor.scrub {regex||\s*Darsteller[^<]*[^<]*(?:.*?)(?:(?:[^<]*]*>)?([^<]*(?:)?[^<]*)(?:
    \|)(?:.*?))*||} writer.scrub {regex||\s*Drehbuch[^<]*[^<]*(?:.*?)(?:(?:[^<]*]*>)?([^<]*)(?:)?[^<]*(?:
    \|)(?:.*?))*||} composer.scrub {regex||\s*Musik[^<]*[^<]*(?:.*?)(?:(?:[^<]*]*>)?([^<]*)(?:)?[^<]*(?:
    \|)(?:.*?))*||} presenter.scrub {regex||\s*(?:Mit\|Moderation)[^<]*[^<]*(?:.*?)(?:[^<]*]*>([^<]*)(?:)?[^<]*(?:
    \|)(?:.*?))*||} rating.scrub {multi(include="FSK:")|
    |title="|"|
    } ratingicon.scrub {multi(include="fsk")|
    |src="|"|
    } starrating.scrub {single(separator="/" include=first)|Redaktionsbewertung|||} videoaspect.scrub {multi(include="Breitbild")|
    |title="|"|
    } videoquality.scrub {multi(include="HDTV")|
    |title="|"|
    } subtitles.scrub {multi(include="Gehörlose/-geschädigte")|
    |title="|"|
    } premiere.scrub {multi(include="Neu")|
    |title="|"|
    } country.scrub {single(separator="," include=last)|
  • ||
  • |} showicon.scrub {single|
    |src="|"|
    } * titleoriginal.modify {clear(~ 'subtitle')} titleoriginal.modify {clear(~ "Folge")} titleoriginal.modify {addend(not"")|(lang=en)} actor.modify {replace| (|(role=} producer.modify {replace| / |\|} producer.modify {replace|- und |\|} episode.modify {remove(type=regex)|"\+\d+"} episode.modify {replace|\|| } rating.modify {remove|FSK: } rating.modify {addend(not "")|+} starrating.modify {calculate(not "" format=F1)} videoaspect.modify {replace|Breitbild|16x9} subtitles.modify {set(not "")|true} premiere.modify {set(not "")|true} productiondate.modify {substring('country' not "" type=regex)|'country' "\d{4}$"} country.modify {remove('productiondate' not "")| 'productiondate'} ** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ** ##### CHANNEL FILE CREATION (only to create the xxx-channel.xml file) ** ** @auto_xml_channel_start *url_index {url|https://www.tvtv.de/programm} *index_site_id.scrub {regex||
  • [^<]*
  • ||} *index_site_channel.scrub {regex||
  • ([^<]*)
  • ||} *scope.range{(channellist)|end} *index_site_id.modify {replace|\||#_#} *index_site_channel.modify {replace|\||#_#} *****wdr regionals *index_site_id.modify {replace|#_#wdr#_#|#_#wdr/Deutschland#_#} *index_site_channel.modify {replace|#_#WDR Fernsehen#_#|#_#WDR Deutschland#_#} *****br regionals *index_site_id.modify {replace|#_#ba3#_#|#_#ba3/Franken#_#ba3/Schwaben#_#} *index_site_channel.modify {replace|#_#BR Fernsehen#_#|#_#BR Franken#_#BR Schwaben#_#} *****ndr regionals *index_site_id.modify {replace|#_#no3#_#|#_#no3/Deutschland#_#} *index_site_channel.modify {replace|#_#NDR Fernsehen#_#|#_#NDR Deutschland#_#} *****swr regionals *index_site_id.modify {replace|#_#s3#_#|#_#s3/Baden-Württemberg#_#s3/Rheinland-Pfalz#_#s3/Saarland#_#} *index_site_channel.modify {replace|#_#SWR#_#|#_#SWR Baden-Württemberg#_#SWR Rheinland-Pfalz#_#SWR Saarland#_#} *****mdr regionals *index_site_id.modify {replace|#_#mdr#_#|#_#mdr/Satellit#_#} *index_site_channel.modify {replace|#_#MDR#_#|#_#MDR Satellit#_#} *****rbb regionals *index_site_id.modify {replace|#_#rbb#_#|#_#rbb/Berlin#_#rbb/Brandenburg#_#} *index_site_channel.modify {replace|#_#RBB Fernsehen#_#|#_#RBB Berlin#_#RBB Brandenburg#_#} ***** *index_site_id.modify {replace|#_#|\|} *index_site_channel.modify {replace|#_#|\|} *index_site_id.modify {cleanup(removeduplicates=equal,100 link="index_site_channel")} *end_scope ** @auto_xml_channel_end