303 lines
16 KiB
INI
Executable File
303 lines
16 KiB
INI
Executable File
**------------------------------------------------------------------------------------------------
|
|
* @header_start
|
|
* WebGrab+Plus ini for grabbing EPG data from TvGuide websites
|
|
* @Site: yo.tv
|
|
* @MinSWversion: V2.0
|
|
* @Revision 9 - [04/10/2017] Netuddki
|
|
* - Fixed an issue with Episode scrubbing (Season 7 Episode 7 of 0)
|
|
* @Revision 8 - [25/03/2017] Netuddki
|
|
* - Merged two different inis by Blackbear and Netuddki
|
|
* @Revision 7 - [28/03/2017] Netuddki
|
|
* - Added option for onscreen OR xmltv_ns episode system
|
|
* - Changed "Rating" to "Starrating"
|
|
* @Revision 6 - [23/05/2017] Blackbear199
|
|
* - improved details for some shows that details page returns a error(uses a subdetail page)
|
|
* @Revision 5 - [18/12/2016] Blackbear199
|
|
* - update season/episode to webgrab 56.25+ version
|
|
* - added channels.xml creation for country's that do not use zip/postal code(use region name).example uk.
|
|
* @Revision 4 - [22/04/2016] 1NSdbZVbpZDX
|
|
* - fix title to match generic siteini, fix credits details
|
|
* added subtitles and production date
|
|
* @Revision 3 - [31/01/2016] 1NSdbZVbpZDX
|
|
* - fix subtitle, episode and gabs
|
|
* @Revision 2 - [28/01/2016] Francis De Paemeleere
|
|
* - create a country only channels.xml generation
|
|
* @Revision 1 - [27/01/2016] 1NSdbZVbpZDX
|
|
* - make a generic siteini
|
|
* @Revision 0 - [08/09/2014] Willy De Wilde/Francis De Paemeleere
|
|
* - creation
|
|
* @Remarks:
|
|
* @header_end
|
|
**------------------------------------------------------------------------------------------------
|
|
*
|
|
site {url=yo.tv|timezone=UTC|maxdays=14.14|cultureinfo=en-GB|charset=UTF-8|titlematchfactor=50|nopageoverlaps}
|
|
site {ratingsystem=US}
|
|
*
|
|
*site {episodesystem=onscreen} *Enable for Onscreen Episode System
|
|
site {episodesystem=xmltv_ns} *Enable for xmltv_ns Episode System
|
|
*
|
|
url_index{url |http://##COUNTRY##.yo.tv/api/GS?cid=##CHANNEL_ID##,&offset=,&day=|urldate|}
|
|
url_index.headers {customheader=Accept-Encoding=gzip,deflate}
|
|
|
|
urldate.format {daycounter|0}
|
|
|
|
scope.range {(urlindex)|end}
|
|
index_temp_1.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"}
|
|
url_index.modify {replace|##COUNTRY##|'index_temp_1'}
|
|
index_temp_1.modify {substring(type=regex)|'config_site_id' "PROVIDER_ID:([^,]*)"}
|
|
url_index.modify {replace|##PROVIDER_ID##|'index_temp_1'}
|
|
index_temp_1.modify {substring(type=regex)|'config_site_id' "CHANNEL_ID:([^,]*)"}
|
|
url_index.modify {replace |##CHANNEL_ID##|'index_temp_1'}
|
|
end_scope
|
|
|
|
index_showsplit.scrub {multi|["|<a|</a>|"]}
|
|
*index_showsplit.modify {(debug)} for debug
|
|
index_start.scrub {single |data-time=|'|'|data-flags}
|
|
index_title.scrub {single (separator=": " include=first)|<h2||</h2>|</h2>}
|
|
index_title.modify {remove(type=regex)|^[^>]*>}
|
|
index_title.modify {cleanup (tags="<span""</span>")}
|
|
index_title.modify {cleanup (tags="<"">")}
|
|
index_subtitle.scrub {single (separator=": " exclude=first)|<h2||</h2>|</h2>}
|
|
index_subtitle.modify {remove(type=regex)|^[^>]*>}
|
|
index_subtitle.modify {cleanup (tags="<"">")} *NEW
|
|
index_temp_3.scrub {regex ||\((\d{4})\).<\/h2>\s<h3>||} *for productiondate
|
|
index_title.modify {remove(type=regex)|(.\(\d{4}\)$)}
|
|
index_subtitle.modify {remove(type=regex)|(.\(\d{4}\)$)}
|
|
*
|
|
index_temp_1.scrub {single|href='||'>|'>}
|
|
index_temp_2.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"} *for urlshow
|
|
index_urlshow.modify {set|http://'index_temp_2'.yo.tv'index_temp_1'}
|
|
*
|
|
title.scrub {single (separator=": " include=first)|bg-title" >||</div>|</div>}
|
|
title.modify {remove (type=regex)|(.\(\d{4}\)$)}
|
|
*title.modify {addstart("")|'index_title'}
|
|
subtitle.scrub {single (separator=": " exclude=first)|<h2|>||</h2>}
|
|
subtitle.modify {remove (type=regex)|(\s\(\d{4}\))}
|
|
subtitle.modify {remove | </h2}
|
|
*
|
|
temp_1.scrub {regex||<span class="episode" >Season\s([1-9]+)||}
|
|
|
|
temp_1.modify {addstart(not "")|S}
|
|
|
|
temp_2.scrub {regex||<span class="episode" >Season\s[1-9]+\sEpisode\s([1-9]+)||}
|
|
|
|
temp_2.modify {addstart(not "")|E}
|
|
temp_2.modify {addstart('temp_1' not "")|'temp_1'}
|
|
temp_3.scrub {regex||<span class="episode" >Season\s[1-9]+\sEpisode\s[1-9]+\sof\s([1-9]+)||}
|
|
|
|
temp_3.modify {addstart(not "")|Et}
|
|
|
|
temp_3.modify {addstart('temp_2' not "")|'temp_2'}
|
|
|
|
episode.modify {set(pattern="S'S1'E'E1'Et'Et1'""S'S1'E'E1'""S'S1'""E'E1'")|'temp_3'}
|
|
|
|
*
|
|
subtitle.scrub {single |prog box">|<span >| </span></span>|<h3>}
|
|
subtitle.modify {cleanup (tags="<"">")}
|
|
subtitle.modify {remove (type=regex)|(.Episode.*)}
|
|
subtitle.modify {remove (type=regex)|(Rating.*)}
|
|
productiondate.modify {addstart |'index_temp_3'}
|
|
*starrating.scrub {single |Rating:</span> ||</span>|</div></a></div></li><li}
|
|
*description.scrub {single |prog box"|<h3>||</h3>}
|
|
*description.modify {remove |</h3>}
|
|
category.scrub {multi |Genre</h2>|<div >|</div>|<div class="}
|
|
category.scrub {single |prog box">|><h2 class='|'>|<span}
|
|
category.modify {cleanup(style=name)}
|
|
*********general credits*********
|
|
*actor.scrub {regex ||<ul class="cast">(?:.*?)(?:<li><div>(.*?)</div></li>(?:.*?))*</ul>||}
|
|
*actor.modify {replace |</div><div class="partname">|[}
|
|
*actor.modify {addend (notnull)|]}
|
|
*actor.modify {remove | [Actor]}
|
|
***************
|
|
*specific credits
|
|
actor.scrub {multi |id="cast-box" >|<div>| </div><div class|castoverlay" >}
|
|
temp_4.scrub {multi |Crew</h2>|<li><div>|</div></li>|</ul>} *debug for more credits
|
|
temp_4.modify {replace |</div><div class="partname">|[}
|
|
temp_4.modify {addend (notnull)|]}
|
|
director.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Director\])"} *spa, eng
|
|
director.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Réalisateur\])"} *french
|
|
composer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Compositor\])"} *spa, port
|
|
producer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Produtora\])"} *port
|
|
producer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Produtor\])"} *port
|
|
producer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Productor\])"} *spa
|
|
producer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Productor ejecutivo\])"} *spa
|
|
producer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Compañías productores\])"} *spa
|
|
producer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Executive Producer\])"} *eng
|
|
producer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Production Company\])"} *eng
|
|
producer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Société de production\])"} *french
|
|
commentator.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Reporter\])"} *eng
|
|
commentator.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Jornalista\])"} *port
|
|
commentator.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Journaliste\])"} *french
|
|
writer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Writer\])"} *eng
|
|
writer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Autor\])"} *port
|
|
writer.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Escritor\])"} *spa
|
|
presenter.modify {substring (type=regex)|'temp_4' "(.*?)\s(?:\[Apresentador\])"} *port
|
|
|
|
showicon.scrub {single |og:image"|content="https:|"| />}
|
|
showicon.modify {addstart (notnull)|https:}
|
|
*
|
|
index_urlsubdetail {url|http://canada.yo.tv/api/program/|href='/engage/||/|/}
|
|
index_ursubdetail.headers {contenttype=application/x-www-form-urlencoded; charset=utf-8}
|
|
index_urlsubdetail.headers {customheader=Accept-Encoding=gzip,deflate}
|
|
|
|
subdetail_title.scrub {single|</i>||<span|<span}
|
|
subdetail_subtitle.scrub {single|<span class="episode" >|<span >|</span>|</span>}
|
|
subdetail_description.scrub {single|<h3>||</h3>|</h3>}
|
|
temp_5.scrub {regex||<span class="episode" >(.*?)<span >||}
|
|
subdetail_episode.modify {addstart('episode' "")|'temp_5'}
|
|
subdetail_starrating.scrub {single|Rating:</span>||</span>|</span>}
|
|
subdetail_showicon.scrub {single|<img src='||'|'}
|
|
** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
** ##### COUNTRY FILE CREATION (only to create the xxx_country.xml file)
|
|
**
|
|
** @auto_xml_country_start
|
|
*url_index{url|http://www.yo.tv}
|
|
*index_site_channel.scrub {multi|<ul data-filter="true" data-role="listview">|<li>|</li>|</ul>}
|
|
*index_site_id.scrub {multi|<ul data-filter="true" data-role="listview">|href="|"|</ul>}
|
|
*scope.range {(channellist)|end}
|
|
*index_site_id.modify {substring(type=regex)|http://(.*).yo.tv}
|
|
*index_site_id.modify {addstart|COUNTRY:}
|
|
*index_site_id.modify {addend|,ZIPCODE:}
|
|
*index_site_channel.modify {cleanup(tags="<"">")}
|
|
*index_site_id.modify {cleanup(removeduplicates=equal,100 link="index_site_channel")}
|
|
*end_scope
|
|
** @auto_xml_country_start
|
|
|
|
** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
** ##### PROVIDER FILE CREATION - ZIP CODE (only to create the xxx_provider.xml file)
|
|
**
|
|
** @auto_xml_provider_start
|
|
*scope.range {(urlindex)|end}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"}
|
|
*url_index.modify {replace|##COUNTRY##|'index_temp_1'}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "ZIPCODE:([^,]*)"}
|
|
*index_temp_1.modify {replace| |%20}
|
|
*url_index.modify {replace|##ZIPCODE##|'index_temp_1'}
|
|
*end_scope
|
|
*url_index{url|http://##COUNTRY##.yo.tv/settings/postcodeheadends/##ZIPCODE##}
|
|
*index_site_id.scrub {multi|<a data-ajax="false" href="/settings/Headend/||">|">}
|
|
*index_site_channel.scrub {multi|<a data-ajax="false" href="/settings/Headend/|">|</a>|</ul>}
|
|
*scope.range {(channellist)|end}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"}
|
|
*index_site_id.modify {addstart|COUNTRY:'index_temp_1',PROVIDER_ID:}
|
|
*index_site_id.modify {cleanup(removeduplicates=equal,100 link="index_site_channel")}
|
|
*end_scope
|
|
** @auto_xml_provider_end
|
|
|
|
** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
** ##### CHANNELPROVIDER FILE CREATION - PROVIDER ID(only to create the xxx-channel.xml file)
|
|
**
|
|
** @auto_xml_channelprovider_start
|
|
*scope.range {(urlindex)|end}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"}
|
|
*url_index.modify {replace|##COUNTRY##|'index_temp_1'}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "PROVIDER_ID:([^,]*)"}
|
|
*url_index.modify {replace |##PROVIDER_ID##|'index_temp_1'}
|
|
*end_scope
|
|
*url_index{url|http://##COUNTRY##.yo.tv/settings/headend/##PROVIDER_ID##}
|
|
*index_site_channel.scrub {multi(separator=" " include="alt=""<h2>")|<div id="channelbar" >|<li>|</li>|</ul>}
|
|
*index_site_channel.modify {remove |alt=}
|
|
*index_site_channel.modify {remove |"}
|
|
*index_site_channel.modify {remove |<h2>}
|
|
*index_site_channel.modify {remove |</h2>}
|
|
*index_site_id.scrub{multi|<div id="content" >|<li id="|"|<div id="tooltip"}
|
|
*scope.range {(channellist)|end}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"}
|
|
*index_temp_2.modify {substring(type=regex)|'config_site_id' "PROVIDER_ID:([^,]*)"}
|
|
*index_site_id.modify {addstart|COUNTRY:'index_temp_1',PROVIDER_ID:'index_temp_2',CHANNEL_ID:}
|
|
*index_site_id.modify {cleanup(removeduplicates=equal,100 link="index_site_channel")}
|
|
end_scope
|
|
** @auto_xml_channelprovider_end
|
|
|
|
** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
** ##### CHANNEL FILE CREATION (only to create the xxx-channel.xml file)
|
|
**
|
|
** @auto_xml_channel_start
|
|
*scope.range {(urlindex)|end}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"}
|
|
*url_index.modify {replace|##COUNTRY##|'index_temp_1'}
|
|
*end_scope
|
|
*url_index{url|http://##COUNTRY##.yo.tv/settings/headend/}
|
|
*index_site_channel.scrub {multi(separator=" " include="alt=""<h2>")|<div id="channelbar" >|<li>|</li>|</ul>}
|
|
*index_site_channel.modify {remove|alt=}
|
|
*index_site_channel.modify {remove|"}
|
|
*index_site_channel.modify {remove|<h2>}
|
|
*index_site_channel.modify {remove|</h2>}
|
|
*index_site_id.scrub{multi|<div id="content" >|<li id="|"}
|
|
*scope.range {(channellist)|end}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"}
|
|
*index_site_id.modify {addstart|COUNTRY:'index_temp_1',CHANNEL_ID:}
|
|
*index_site_id.modify {cleanup(removeduplicates=equal,100 link="index_site_channel")}
|
|
*end_scope
|
|
** @auto_xml_channel_end
|
|
|
|
*------------------------------------------------------------------------------------------------------------------
|
|
*
|
|
* use these sections in rare cases when no zip/postal code can be used,example country:uk
|
|
* it gives a region name,then provider for that region,then the channel list is displayed.
|
|
*
|
|
*------------------------------------------------------------------------------------------------------------------
|
|
|
|
** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
** ##### PROVIDER FILE CREATION - REGION NAME (only to create the xxx_provider.xml file)
|
|
**
|
|
*
|
|
* use when site give's no option to enter zip code(only city) - example uk
|
|
* <channel update="i" site="yo.tv" site_id="COUNTRY:uk,ZIPCODE:" xmltv_id="United Kingdom">United Kingdom</channel>
|
|
*
|
|
** @auto_xml_provider_start
|
|
*scope.range {(urlindex)|end}
|
|
*index_variable_element.modify {substring(type=regex)|'config_site_id' "COUNTRY:([^,]*)"}
|
|
*url_index.modify {replace|##COUNTRY##|'index_variable_element'}
|
|
*end_scope
|
|
*url_index{url|http://##COUNTRY##.yo.tv/Settings/systems}
|
|
*index_site_id.scrub {regex||<li><a data-ajax="false" href="/settings/Headend(?:City)?/-*(\d+)">||}
|
|
*index_site_id.modify {addstart|'index_variable_element'##}
|
|
*index_site_channel.scrub {regex||<li><a data-ajax="false" href="/settings/Headend(?:City)/-*\d+">([^<]*)</a>||}
|
|
** @auto_xml_provider_end
|
|
|
|
* _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
** ##### PROVIDER FILE CREATION - CITY NAME (only to create the xxx_provider.xml file)
|
|
**
|
|
*
|
|
* use with PROVIDER FILE CREATION - REGION NAME Thats created in above step. example uk created above
|
|
* <channel update="i" site="yo.tv" site_id="uk##193244663" xmltv_id="East-ITV Anglia">East-ITV Anglia</channel>
|
|
*
|
|
** @auto_xml_provider_start
|
|
*scope.range {(urlindex)|end}
|
|
*index_variable_element.modify {substring(type=regex)|'config_site_id' "^(.*)##"}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "##(.*)$"}
|
|
*url_index.modify {replace|#_#COUNTRY#_#|'index_variable_element'}
|
|
*url_index.modify {replace|##REGION##|'index_temp_1'}
|
|
*end_scope
|
|
*url_index{url|http://#_#COUNTRY#_#.yo.tv/settings/HeadendCity/##REGION##}
|
|
*index_site_id.scrub {regex||<li><a data-ajax="false" href="/settings/Headend/(\d+)">||}
|
|
*index_site_id.modify {addstart|'index_variable_element'##}
|
|
*index_site_channel.scrub {regex||<li><a data-ajax="false" href="/settings/Headend/\d+">([^<]*)</a>||}
|
|
** @auto_xml_provider_end
|
|
|
|
* _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
** ##### CHANNELS XML CREATION - CITY NAME (only to create the xxx_provider.xml file)
|
|
** <channel update="i" site="yo.tv" site_id="COUNTRY:us,ZIPCODE:" xmltv_id="United States">United States</channel>
|
|
|
|
*
|
|
* use with CITY NAME CREATED ABOVE - example uk East=ITV Angila provider SKY
|
|
* <channel update="i" site="yo.tv" site_id="uk##31" xmltv_id="Sky">Sky</channel>
|
|
*
|
|
*scope.range {(urlindex)|end}
|
|
*index_variable_element.modify {substring(type=regex)|'config_site_id' "^(.*)##"}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "##(.*)$"}
|
|
*url_index.modify {replace|#_#COUNTRY#_#|'index_variable_element'}
|
|
*url_index.modify {replace|##CITY##|'index_temp_1'}
|
|
*end_scope
|
|
*url_index{url|http://#_#COUNTRY#_#.yo.tv/settings/Headend/##CITY##}
|
|
*index_variable_element.modify {set|COUNTRY:'index_variable_element',
|
|
*index_site_id.scrub {multi|<div id="content" >|<li id="|">|</div>}
|
|
*index_site_channel.scrub {multi|<div id="channelbar" >|alt="|"|</div>}
|
|
*scope.range {(channellist)|end}
|
|
*index_temp_1.modify {substring(type=regex)|'config_site_id' "^(.*)##"}
|
|
*index_site_id.modify {addstart|COUNTRY:'index_temp_1',CHANNEL_ID:}
|
|
*index_site_id.modify {cleanup(removeduplicates=equal,100 link="index_site_channel")}
|
|
*end_scope
|
|
** @auto_xml_provider_end
|