**------------------------------------------------------------------------------------------------
* @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