**------------------------------------------------------------------------------------------------ * @header_start * WebGrab+Plus ini for grabbing EPG data from TvGuide websites * @Site: tvspielfilm.de * @MinSWversion: V5.3.0.2 * @Revision 6 - [30/12/2024] Blackbear199 * - starrating fix * @Revision 5 - [28/11/2024] Blackbear199 * - subpage stop string fix,required V5.3.0.2+ * @Revision 4 - [28/11/2024] Blackbear199 * - site changes * @Revision 3 - [27/03/2022] Blackbear199 * - channel xml,showsplit fix * @Revision 2 - [19/07/2018] Blackbear199 * - small updates * @Revision 1 - [11/11/2016] ppip * - change index start time * - improved scraping of title * - channel file creation added * - set timezone to UTC * @Revision 0 - [11/10/2016] ppip * - creation * @Remarks: * @header_end **------------------------------------------------------------------------------------------------ site {url=tvspielfilm.de|timezone=Europe/Berlin|maxdays=14|cultureinfo=de-DE|charset=UTF-8|titlematchfactor=90|allowlastdayoverflow|nopageoverlaps} site {ratingsystem=FSK|episodesystem=onscreen} * url_index {url|https://www.tvspielfilm.de/tv-programm/sendungen/?page=|subpage|&order=time&date=|urldate|&cat%5B%5D=SP&cat%5B%5D=SE&cat%5B%5D=RE&cat%5B%5D=U&cat%5B%5D=KIN&cat%5B%5D=SPO&time=day&channel=|channel|} url_index.headers {customheader=Accept_Encoding=gzip,deflate,br} * urldate.format {datestring|yyyy-MM-dd} subpage.format {number||1|404 (Not Found)} * index_urlchannellogo {url|||} * scope.range {(splitindex)|end} index_showsplit.scrub {multi||||} index_showsplit.modify {replace(type=regex)|"\!\?\?\!"|-} index_showsplit.modify {cleanup(style=jsondecode)} *index_showsplit.modify {(debug)} end_scope * index_urlshow.scrub {regex||[^<]*|||} *index_stop.scrub {single(separator=" - " include=last)||||} index_title.scrub {regex||[^<]*]*>[^<]*([^<]*)||} index_category.scrub {regex||(?:.*?)(?:(.*?)(?:.*?))||} index_rating.scrub {single||||} * index_category.modify {cleanup(tags="""")} index_category.modify {cleanup(tags="<"">")} * title.scrub {single|

|

|} titleoriginal.scrub {single|Originaltitel:|
|
|} subtitle.scrub {single|

||

|}} description.scrub {multi(separator="
" exclude="Moderation:""Kommentator:""Gäste:")|class="broadcast-detail__description">|

|

|} director.scrub {single(separator=", ")|Regie:|
|
|} producer.scrub {single(separator=", "" / ")|Produzent:|
|
|} composer.scrub {single(separator=", ")|Musik:|
|
|} writer.scrub {single(separator=", ")|Drehbuch:|
|
|} actor.scrub {regex||
.*?||} presenter.scrub {multi(separator="
" include="Moderation:""Kommentator:""Gäste:")|class="broadcast-detail__description">|

|

|} episode.scrub {single(pattern="Staffel 'S1', Folge 'E1'/'Et1' P'P1'""Staffel 'S1', Folge 'E1' P'P1'""Staffel 'S1', Folge 'E1'/'Et1'""Staffel 'S1', Folge 'E1'""Staffel 'S1'""Folge 'E1'""P'P1'" include="Staffel""Folge" exclude="Specials")|
|||
} rating.scrub {multi|class="broadcast-detail__rating">|class="rating-dots__label">|">|} starrating.scrub {regex||
([1-9](?:,\d)?)
||} productiondate.scrub {single|Jahr:
|
|
|} country.scrub {single|Land:|
|
|} showicon.scrub {single|
} * scope.range {(showdetails)|end} titleoriginal.modify {clear('title')} titleoriginal.modify {addend(not "")|(lang=en)} temp_1.modify {substring(type=regex)|'subtitle' "\s\((\d+)\)\s*$"} subtitle.modify {remove(type=regex)|"\s\(\d+\)$"} description.modify {cleanup(tags="<"">")} description.modify {remove(type=regex)|"^\d+\. Staffel, Episode \d+: "} director.modify {cleanup(tags="<"">")} producer.modify {cleanup(tags="<"">")} composer.modify {cleanup(tags="<"">")} writer.modify {cleanup(tags="<"">")} presenter.modify {remove(type=regex)|"(?:Moderation\|Kommentator\|Gäste):"} presenter.modify {cleanup(tags="<"">")} presenter.modify {replace|, |\|} episode.modify {replace|\|| } episode.modify {remove(type=regex)|"\s*Folge\s*\(\)"} episode.modify {remove(type=regex)|"(\s*\(\d+\))\|(\s*\(\d+\+\d+\))\|\s*\d+(\+\d+)/\d+"} episode.modify {addend('temp_1' not "")| P'temp_1'} * loop {(each "temp_9" in 'actor')|end} temp_8.modify {substring(type=regex)|'temp_9' "
(.*?)<\/dt>"} temp_7.modify {substring(type=regex)|'temp_9' "
(.*?)<\/dd>"} temp_7.modify {cleanup(tags="<"">")} temp_7.modify {addend('temp_8' not "")|(role='temp_8')} temp_6.modify {addend('temp_7' not "")|'temp_7'####} end_loop actor.modify {substring(type=regex)|'temp_6' "(.*?)####"} * rating.modify {replace(type=regex)|"<\/span>.*?data-rating=\""|:} rating.modify {addend(not "")|/3} loop {('starrating' not "")|end} starrating.modify {replace|,|.} starrating.modify {calculate(not "" format=F0)|2 /} starrating.modify {set("1")|⭐} starrating.modify {set("2")|⭐⭐} starrating.modify {set("3")|⭐⭐⭐} starrating.modify {set("4")|⭐⭐⭐⭐} starrating.modify {set("5")|⭐⭐⭐⭐⭐} temp_1.modify {calculate(format=F0 type=char)|'starrating' #} starrating.modify {addend('temp_1' "4")|☆} starrating.modify {addend('temp_1' "3")|☆☆} starrating.modify {addend('temp_1' "2")|☆☆☆} starrating.modify {addend('temp_1' "1")|☆☆☆☆} starrating.modify {addend(not "")|(system=Imdb)} end_if country.modify {replace|, |/} end_scope *** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ** ##### CHANNEL FILE CREATION (only to create the xxx-channel.xml file) ** ** @auto_xml_channel_start *url_index {url|https://www.tvspielfilm.de/tv-programm/tv-sender/} *subpage.format {list|} *index_site_id.scrub {multi|} *index_site_channel.scrub {multi|