**------------------------------------------------------------------------------------------------ * @header_start * WebGrab+Plus ini for grabbing EPG data from TvGuide websites * @Site: plus.es * @MinSWversion: V2.1.5 * @Revision 13 - [21/07/2018] Trujulu * - Remove unhandled \ on code * - Replace " : " to ": " if needed on wrong titles. * @Revision 12 - [15/04/2018] MrSpock * - Added new fields: writer, composer, producer, presenter, country... * - Fixed titleoriginal and director and other minor improvements (anyway, it is not 100% accurate due to how they put the information) * - Reviewed title, subtitle to better handle season and episode info. * @Revision 11 - [04/10/2017] Blackbear199 * - Reviewed option to get the age of the programs * - Added options to get the star-rating * @Revision 10 - [27/05/2017] Netuddki * - Better episode system * - index url changed * @Revision 9 - [26/09/2016] Blackbear199 * - showsplit fix * @Revision 8 - [27/07/2016] Jan van Straaten * - enabled stop time (fix in 56.29) andded end_scope for showdetails * @Revision 7 - [24/07/2016] Blackbear199 * - showsplit fix * @Revision 6 - [11/07/2016] Blackbear199 * - showsplit fix,disabled stop & duration(only 3 days epg when enabled) * @Revision 5 - [12/06/2016] Blackbear199 * - fix subtitle,add option to add season/episode to title * @Revision 4 - [17/02/2016] Blackbear199 * - fixed index_showsplit,actor,director,productiondate scrub. * @Revision 3 - [04/09/2015] Francis De Paemeleere * convert to classical credits * @Revision 2 - [23/07/2015] Willy De Wilde * New website, rewrite * Thanks to aleceuta for finding the json webpage * @Revision 1 - [23/07/2014] Jan van Straaten * - fixed start time errors and added episode, rating and productiondate * @Revision 0 - [16/07/2014] Francis De Paemeleere/ Jan van Straaten * - creation * @Remarks: * @header_end **------------------------------------------------------------------------------------------------ * site {url=plus.es|timezone=Europe/Madrid|maxdays=7|cultureinfo=es-ES|charset=UTF-8|titlematchfactor=70|ratingsystem=ES} site {keepindexpage|allowlastpageoverflow} * site {episodesystem=onscreen} *Enable for Onscreen Episode System *site {episodesystem=xmltv_ns} *Enable for xmltv_ns Episode System * url_index{url|http://www.movistarplus.es/programacion-tv/|urldate|/?v=json} url_index.headers {customheader=Accept-Encoding=gzip,deflate} urldate.format {datestring|yyyy-MM-dd} * index_variable_element.modify {set|"'config_site_id'-CODE"} index_showsplit.scrub {multi|'index_variable_element'|{"ESTRENO"|}|}]}} scope.range{(splitindex)|end} index_temp_1.modify {substring(type=regex)|'index_showsplit' "\"HORA_INICIO\":\"(\d{2}:\d{2})\""} index_temp_1.modify {cleanup(removeduplicates span=1 link="index_showsplit")} end_scope * scope.range{(indexshowdetails)|end} index_start.scrub {single|HORA_INICIO":"||"|"} *index_stop.scrub {single|HORA_FIN":"||"|"} *index_title.scrub {single(separator=":""(" include=first)|"TITULO":"||"|"} *index_title.scrub {single(separator=":" exclude=last)|"TITULO":"||"|"} *For some shows with ':' it does not work properly: * "NCIS: Los Angeles (T5): Ep.17 Entre las líneas enemigas" index_temp_2.scrub {single|"TEMPORADA":"||"|"} index_title.scrub {single|"TITULO":"||"|"} index_title.modify {remove('index_temp_2' not "")| 'index_temp_2'} index_title.modify {remove(type=regex)|"\s*\(T\d+\)"} index_title.modify {remove(type=regex)|":\s*Episodio\s*\d+"} index_title.modify {remove(type=regex)|"\s*Ep\.\s*\d+"} index_title.modify {replace|\/|/} index_title.modify {replace|//|/} index_title.modify {cleanup(style=unidecode)} * Clean title to remove spaces, but it also removes '!' and '?' and ']'... so used this workaround to clean it: index_title.modify {addend|XxyyzZ} index_title.modify {cleanup} index_title.modify {remove|XxyyzZ} index_title.modify {remove|\} * workaround to remove \ from title * *index_category.scrub {single|GENERO|":"|"} *index_category.modify {cleanup} *index_category.modify {remove|\} * show page has more detailed categories index_urlshow {url||"URL":"||"} index_urlshow.modify {remove|\} index_urlshow.headers {customheader=Accept-Encoding=gzip,deflate} end_scope * scope.range{(showdetails)|end} title.modify {addstart|'index_title'} subtitle.scrub {single(separator=":" include=last)|
|

|

|
} subtitle.modify {clear(~ "Episodio")} *subtitle.modify {remove(type=regex)|\(.+?\)} subtitle.modify {cleanup(style=unidecode)} subtitle.modify {clear('index_title')} subtitle.modify {cleanup} title.modify {remove('subtitle' not "")|: 'subtitle'} *title.modify {addend|XxyyzZ} *title.modify {cleanup} *title.modify {remove|XxyyzZ} * *titleoriginal.scrub {single|

|(|)|

} *they have changed it * new titleoriginal: titleoriginal.scrub {single|

||

|} titleoriginal.modify {remove(type=regex)|"\.*\s*TEMPORADA \d+/\d+"} titleoriginal.modify {remove(type=regex)|"\.*\s*TEMPORADA \d+"} titleoriginal.modify {remove('title')|'titleoriginal'} * erase if title=titleoriginal * episode.scrub {regex set(pattern="Temporada 'S1' Episodio 'E1'")||.*?(Temporada \d+\. Episodio \d+)||} episode.modify {replace|.| } * description.scrub {multi|<div itemprop="description"|<p>|</p>|</div>} description.modify {replace|\'\'|"} * Sometimes, they use 2 ' instead of " description.modify {cleanup} * multiple categories: category.scrub {multi(separator=" / ")|<p itemprop="genre">||</p>|</p>} category.modify {remove|Programa} * It does not mean anything useful director.scrub {single|Director</h3>|<span itemprop="name" >|</span>|<h3} director.modify {remove|Varios} * It does not provide useful information * new writer, composer, producer, presenter: writer.scrub {multi|Guionista</h3>|<span >|</span>|</p>} composer.scrub {multi|Compositor</h3>|itemprop="name" >|</span>|</p>} producer.scrub {multi|Productor</h3>|<span >|</span>|</p>} presenter.scrub {multi|Presentador</h3>|<span >|</span>|</p>} * actor.scrub {multi|<h3 class="heading">Reparto</h3>|<span itemprop="name" >|</span>|</div>} productiondate.scrub {single|<p itemprop="datePublished"|content="|"| >} showicon.scrub {single|<div class="cover">|<img src="|"| alt} ratingicon.scrub {url|http://www.plus.es|Calificación</h3><img src="||"|"} rating.scrub {single|Calificación</h3>|src="/assets/images/movistar-plus/calf-|.svg"|<div>} rating.modify {cleanup(style=upper)} starrating.scrub {single|<div class="rating-value">|<span itemprop="ratingValue" class="rating">|</span>|</div>} *starrating.modify {calculate(format=F0)|2 *} starrating.modify {clear("0")} starrating.modify {addend(not "")|/5} * Changed to be from 1 to 5 instead from 1 to 10 * Country: scrub country and year, then remove year: country.scrub {single|itemprop="datePublished"|>|</p>|<p>} country.modify {remove(type=regex)|"\s*\(\d+\)"} * Stated real show duration: temp_1.scrub {single|class="time">||'</span>|} * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *For use with Rex for MediaPortal: *to have show duration, original title and country used by Rex, remove the * from the beginning of the lines below: *starrating.modify {addstart('temp_1' not "")|'temp_1'. } *starrating.modify {addstart('titleoriginal' not "")|('titleoriginal') } *starrating.modify {addstart('country' not "")|'country'. } * in Rex, the following should be used: * <desc>{'subtitle'. }{'productiondate'. }{'starrating' }{['rating']. }{'category(, )'. }{'episode'. }{\nInt.: 'actor(, )'. }{\nDir.: 'director(, )'. }{\n'description' }{\nPresenta: 'presenter(, )'. }{\nGuión: 'writer(, )'. }{\nMúsica: 'composer(, )'. }{\nProducción: 'producer(, )'.}</desc> * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * to add SxEx: [subtitle] back to title or subtitle remove the * from the beginning of the lines below * this will give a warning that the index_title is different from showdetails title in * webgrab++.log,they can be ignored. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *temp_3.modify {addstart('episode' not "")|'episode'} *temp_3.modify {replace(not "")|Temporada |S} *replace S with T for TxEx format *temp_3.modify {replace(not "")| Episodio |E} *temp_3.modify {addend('subtitle' not "")|: 'subtitle'} *title.modify {addend('temp_3' not "")| 'temp_3'} *adds to title *subtitle.modify {clear} *enable if you use season/episode in subtitle *subtitle.modify {addstart('temp_3' not "")| 'temp_3' } *adds to subtitle *episode.modify {clear} * enable to remove season/episode element from epg data *title.modify {replace| : |: } * workaround to remove double spacing " : " when using episode and season * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * end section * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - end_scope ** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ** ##### CHANNEL FILE CREATION (only to create the xxx-channel.xml file) ** ** @auto_xml_channel_start *index_site_channel.scrub {multi|"NOMBRE":"||"} *index_site_id.scrub {multi|"CODIGO":"||"} *index_site_channel.modify {cleanup} *index_site_id.modify {cleanup} ** @auto_xml_channel_end