**------------------------------------------------------------------------------------------------ * @header_start * WebGrab+Plus ini for grabbing EPG data from TvGuide websites * @Site: starhubgo.com * @MinSWversion: V1.57 * @Revision 5 - [17/08/2017] Blackbear199 * - episode info improvements * @Revision 4 - [22/12/2016] Blackbear199 * - showsplit fix - shows with title "No Program" were not being scrubbed * - shows elements ending with partial minutes not being scrubbed * - stop time fix * - other fixes/cleanup * @Revision 3 - [07/12/2016] Blackbear199 * - channels.xml fix * @Revision 2 - [25/11/2016] Blackbear199 * - site changes * @Revision 1 - [09/10/2016] Blackbear199 * - site changes * @Revision 0 - [18/04/2016] Blackbear199 * - creation * @Remarks: * @header_end **------------------------------------------------------------------------------------------------ site {url=starhubgo.com|timezone=UTC|maxdays=7|cultureinfo=en-GB|charset=UTF-8|titlematchfactor=90} site {ratingsystem=GB|episodesystem=xmltv_ns} * url_index{url|https://www.starhubgo.com/live/getLiveChannelPrograms?pCode=V4bmQyOqnbswtz9daXLyKFGCO8Zp&channelIds=[%22|channel|%22]&startTime=##start_date##T04:00:00.000Z&endTime=##end_date##T04:00:00.000Z&pageSize=8000&localDate=##start_date##&requestQuery=multiasset} * urldate.format {datestring|yyyy-MM-dd} * scope.range{(urlindex)|end} index_variable_element.modify {set|1.0} index_variable_element.modify {calculate(format=timespan,days)} index_temp_1.modify {calculate(format=date,yyyy-MM-dd)|'urldate'} index_temp_2.modify {calculate(format=date,yyyy-MM-dd)|'urldate' 'index_variable_element' +} url_index.modify {replace|##start_date##|'index_temp_1'} url_index.modify {replace|##end_date##|'index_temp_2'} end_scope * *{:id":[show info]"64 Mins"} or {:id":[show info]"64.5 Mins"} *regular shows *{"name":[show info]"durationInPixel":325} or {"name":[show info]"durationInPixel":325.5} *shows with title "No Program" index_showsplit.scrub {regex||\{(?:"id"\|"name"):.*?(?:"\d+(?:\.\d+)?\sMins"\}\|"durationInPixel":\d+(?:\.\d+)?\})||} * index_start.scrub {single|"program_start_time":"||.000Z"|.000Z"} index_stop.scrub {single|"program_end_time":"||.000Z"|.000Z"} *disable if having time issues index_stop.modify {replace|T3:|T03:} index_title.scrub {single|"name":"||","|","} index_subtitle.scrub {single|"episode_title":"||","|","} index_description.scrub {multi|"description":"||","|","} index_category.scrub {regex||"(?:sub)?genre":"([^"]*)"||} * scope.range{(indexshowdetails)|end} index_title.modify {remove| [HD]} index_title.modify {remove(type=regex)|\s*\(HD\)} index_title.modify {cleanup(style=jsondecode)} index_productiondate.modify {substring(type=regex)|'index_title' "\d{4}"} index_title.modify {remove('index_productiondate' not "")|'index_productiondate'} index_temp_1.modify {substring(type=regex)|'index_title' "\s(?:\(S(\d+)\)\|\(Series\s(\d+)\)\|(\d+)\|([MDCLXVI]+))$"} index_temp_1.modify {cleanup(style=roman2arabicnumeral)} index_temp_1.modify {addstart(not "")|S} index_episode.scrub {single|"episode_number":||,|,} index_temp_1.modify {clear('index_episode' "")} index_episode.modify {addstart('index_episode' not "")|E} index_episode.modify {addstart(pattern="S'S1'E'E1'""S'S1'""E'E1'" 'index_temp_1' not "")|'index_temp_1'} * index_title.modify {remove('index_temp_1' not "" type=regex)|\s(\(S\d+\)\|\(Series\s\d+\)\|\d+\|[MDCLXVI]+)$} index_title.modify {remove(type=regex)|\sEp\.\d+} index_subtitle.modify {clear("-")} index_subtitle.modify {clear(~ "Episode")} index_subtitle.modify {remove(type=regex)|\([^\)]+\)} index_subtitle.modify {cleanup(style=jsondecode)} index_subtitle.modify {remove(type=regex)|\sEp\.\d+} index_subtitle.modify {remove| [HD]} index_subtitle.modify {remove(type=regex)|\s*\(HD\)} index_subtitle.modify {clear('index_title')} index_description.modify {cleanup(style=jsondecode)} index_description.modify {replace|\\n|.} index_description.modify {clear(".")} index_category.modify {replace|;\\n |\|} index_category.modify {cleanup(removeduplicates)} index_category.modify {cleanup(style=jsondecode)} end_scope * ** _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ** ##### CHANNEL FILE CREATION (only to create the xxx-channel.xml file) * * enable Section 1 and run webgrab,copy the line from the starhuggo.com.channels.xml to your * webgrab++.config.xml(overwrite the existing dummy entry).disable Section1 and enable Section 2. * run webgrab again and a full channels.xml will be generated. * ********************************** * Section 1 * ********************************** ** @auto_xml_channel_start *url_index{url|https://www.starhubgo.com/live/getLiveChannelsByFiltering?pCode=V4bmQyOqnbswtz9daXLyKFGCO8Zp&filterGenreID=Channel_|subpage|&requestQuery=labels} *subpage.format {list|INTERNATIONAL|SPORTS|KIDS1|EDUCATION1|ENTERTAINMENT1|MOVIES1|NEWS1|CHINESE1} *scope.range{(channellist)|end} *index_site_id.scrub {multi(separator=",")|{"channelIds":[||]}|]}} *index_site_id.modify {replace|\||,} *index_site_channel.modify {addstart|All Channels} *end_scope ********************************** * Section 2 * ********************************** *url_index{url|https://www.starhubgo.com/live/getLiveChannelsByIDs?pCode=V4bmQyOqnbswtz9daXLyKFGCO8Zp&channelIds=[|channel|]&fromDetailspage=undefined&requestQuery=channels} *scope.range{(channellist)|end} *index_site_id.scrub {regex||"href":"\\/channels\\/(\d+)","display_name":"[^"]*",||} *index_site_channel.scrub {regex||"name":"([^\"]*","href":"\\/channels\\/\d+","display_name":"[^"]*)",||} *index_site_channel.modify {replace(type=regex)|^[^\"]*(","href":"[^\"]*","display_name":").*$| - } *index_site_channel.modify {cleanup(style=unidecode)} *index_site_id.modify {cleanup(removeduplicates=equal,100 link="index_site_channel")} *end_scope ** @auto_xml_channel_end