-------------------------------------------BM---------------------------------------------
module('Imtv_pls', package.seeall)
-----------------------------------------------------------------------------------------
function GetSettings()
    local scrap_settings
	scrap_settings ={
	name	 		='IMTV',  			      -- Имя источника 
	sortname 		='',					  -- имя для сортировки (если не указано, берется name)
	scraper 		='Imtv_pls.lua',		  -- * Путь и название скрапера (будет автоматически присвоено) 
	m3u     		='out_imtv.m3u',	      -- Путь и название m3u
	logo     		='..\\Channel\\logo\\Icons\\Imtv.png', --  путь и файл лого относительно папки work 
	TypeSourse		=1,					  	  -- * Тип источника: 0 - внутренний, 1 - внешний (будет автоматически присвоено 1)  
	TypeCoding		=1,						  -- Кодировка M3U (0 - ANSI, 1 - UTF8, 2 - UNICODE)     
	DeleteM3U		=0,						  -- Удалять m3u по завершению обработки (1 - включено, 0 - выключено) 
	RefreshButton   =0,						  -- Обновлять по кнопке "Обновить плей-лист" (1 - включено, 0 - выключено)  
	AutoBuild		=0,						  -- Автообновление (1 - включено, 0 - выключено)       
	AutoBuildDay	={0,0,0,0,0,0,0},		  -- Дни недели автообновления {вс,пн,вт,ср,чт,пт,сб}   
	LastStart		=0,						  -- Последняя успешная загрузка  
	------------------------------------------------------------------------------
	TVS				={					 	  -- Ветка настроек для загрузки в базу TVSources (1 - включено, 0 - выключено)
		add			=0,						  -- Загружать в базу TVSources (1 - включено, 0 - выключено)       
		FilterCH	=1,						  -- Фильтровать названия каналов (1 - включено, 0 - выключено) 
		FilterGR	=1,						  -- Фильтровать названия групп каналов (1 - включено, 0 - выключено) 
		GetGroup	=1,						  -- Наследовать группу (1 - включено, 0 - выключено)    
		LogoTVG		=1},					  -- Наследовать логотип и программу передач (1 - включено, 0 - выключено)
	------------------------------------------------------------------------------------
	STV				={						  -- Ветка настроек для загрузки в базу SimpleTV  
		add			=1,						  -- Загружать в базу SimpleTV (1 - включено, 0 - выключено)
		ExtFilter	=1,						  -- Создавать внешний фильтр (1 - включено, 0 - выключено) 
		FilterCH	=1,						  -- Фильтровать названия каналов (1 - включено, 0 - выключено)  
		FilterGR	=1,						  -- Фильтровать названия групп (1 - включено, 0 - выключено)  
		GetGroup	=1,						  -- Учитывать группы из M3U  (1 - включено, 0 - выключено)    
		HDGroup		=1,						  -- HD каналы отдельной группой  (1 - включено, 0 - выключено) Зависит от скрапера 
		AutoSearch	=1,						  -- Искать логотип и программу передач (1 - включено, 0 - выключено)     
		AutoNumber	=1,						  -- Автонумерация каналов (1 - включено, 0 - выключено)     
		NumberM3U	=0,						  -- Учитывать номера из M3U (1 - включено, 0 - выключено)   
		GetSettings	=1,						  -- Учитывать настройки из M3U (1 - включено, 0 - выключено) 
		NotDeleteCH =1,						  -- Не удалять отсутствующие каналы при обновлении (1 - включено, 0 - выключено) 
		TypeSkip	=1,						  -- Если канал существует в базе: 0 - пропускать, 1 - обновлять, 2 - загружать как новый
		TypeFind	=1}						  -- ^^^^^^^^^ проверять совпадение по: 0 - названию канала, 1 - адресу канала  
	}                                                                                                                                          
	return scrap_settings
end
--------------------------------------------------------------------------
function GetVersion()
	return 1, 'UTF-8'
end
--------------------------------------------------------------------------

------------------------------------------------------
------------------------------------------------------
-- Локальный фильтр для IMTV . 
-- Я решил его тут применить, чтобы не забивать много латинских названий русских каналов в общий фильтр.
-- Можно убрать лишние дубли и перепроверить.
------------------------------------------------------
------------------------------------------------------
local filter={
{"1 Channel Europe","1 Channel Europe"},
{"1 channel","1 channel"},
{"1HD","1 HD"},
{"1kanal","Первый канал"},
{"24 Dock","24 Док"},
{"24 techno","24 Техно"},
{"24 Док","24 Док"},
{"24Док","24 Док"},
{"24ДОК","24 Док"},
{"2x2 (2)","2x2 (2)"},
{"2x2","2x2"},
{"2x2tv","2x2tv"},
{"2х2","2х2"},
{"5 Kanal","5 канал"},
{"5 Канал","5 канал"},
{"5","5"},
{"5Kanal","5 канал"},
{"Aljazera","Aljazera"},
{"Amazing Life","Amazing Life"},
{"Animal Planet HD","Animal Planet HD"},
{"Animal Planet","Animal Planet"},
{"Animals home","Animals home"},
{"Avto 24","Авто 24"},
{"balance","balance"},
{"boetz","Боец"},
{"Bridge TV","Bridge TV"},
{"BRIDGE TV","BRIDGE TV"},
{"Cartoon Network","Cartoon Network"},
{"CBS Reality","CBS Reality"},
{"CCTV","CCTV"},
{"CNL","CNL"},
{"Comedy TV","Comedy TV"},
{"CTC Love","CTC Love"},
{"Da Vinci Learning","Da Vinci Learning"},
{"DANGE TV","DANGE TV"},
{"Discovery channel","Discovery channel"},
{"Discovery ID","Discovery ID"},
{"Discovery Science","Discovery Science"},
{"Discovery","Discovery"},
{"Discowery World","Discowery World"},
{"Disney","Disney"},
{"Erevan","Erevan"},
{"Euro Sport","Eurosport"},
{"EuroNews","Euronews"},
{"Europe Plus TV","Europe Plus TV"},
{"Extreme Sports","Extreme Sports"},
{"Fashion TV Russia","Fashion TV Russia"},
{"Fifth","Fifth"},
{"firstmuz","firstmuz"},
{"FOX Life","Fox life"},
{"Fox Life","Fox life"},
{"Friday","Пятница"},
{"GlobalStar TV","GlobalStar TV"},
{"GlobalStar TV","GlobalStar TV"},
{"Gulli","Gulli"},
{"history","История"},
{"illusion plus","Иллюзион+"},
{"interesnoe tv","Интересное ТВ"},
{"Investigation Discovery","Investigation Discovery"},
{"Jim Jam","Jim Jam"},
{"jn1","jn1"},
{"JuCeTV","JuCeTV"},
{"Kino Soyuz","Киносоюз"},
{"Kinohit","Кинохит"},
{"Kinoluks","Кинолюкс"},
{"Kinoreis 2","Кинорейс 2"},
{"Kinoreis 3","Кинорейс 3"},
{"Kinoreis 4","Кинорейс 4"},
{"Kinoreis 5","Кинорейс 5"},
{"Kinoreys 1","Кинорейс 1"},
{"Kinoreys 3","Кинорейс 3"},
{"Kinoreys 4","Кинорейс 4"},
{"komediya","komediya"},
{"KomPravda","Комсомольская правда"},
{"kprf","kprf"},
{"ldpr","ЛДПР"},
{"Life NEWS","Life NEWS"},
{"MCM TOP","MCM TOP"},
{"Mezzo","Mezzo"},
{"MIR 24"," 24"},
{"mir","mir"},
{"MTV Hits","MTV Hits"},
{"MTV rocks","MTV rocks"},
{"musboxru","musboxru"},
{"musboxtv","musboxtv"},
{"MUSIC BOX RU","MUSIC BOX RU"},
{"Music Box Ru","Music Box Ru"},
{"Muz TV","Muz TV"},
{"nash football","Наш футбол"},
{"Nashe Kino","Наше кино"},
{"Nat Geo Wild","Nat Geo Wild"},
{"National Geographic","National Geographic"},
{"Nauka 2.0","Наука 2.0"},
{"Nickelodeon","Nickelodeon"},
{"novoe kino","Новое кино"},
{"NTV Futbol 2","НТВ Футбол 2"},
{"NTV Futbol","НТВ Футбол"},
{"NTV Mir","НТВ Мир"},
{"NTV Sport","НТВ Спорт"},
{"NTV","НТВ"},
{"NTV","НТВ"},
{"OTC","OTC"},
{"OTP","OTP"},
{"ots","ОТС"},
{"Outdoor Channel","Outdoor Channel"},
{"Outdoor HD","Outdoor HD"},
{"Outdoor","Outdoor"},
{"Paramount comedy","Paramount comedy"},
{"perec","Перец"},
{"Perec","Перец"},
{"Peretz","Перец"},
{"Perviy","Первый"},
{"Planeta RTR","Планета РТР"},
{"Primiera","Премьера"},
{"Pyatnitsa!","Пятница!"},
{"pyatnitsa","Пятница!"},
{"pyatyi kanal","Пятый канал"},
{"Ren TV","Рен ТВ"},
{"REN","Рен ТВ"},
{"Rossiya 1","Россия 1"},
{"Rossiya 24","Россия 24"},
{"Rossiya 24","Россия 24"},
{"Rossiya K","Россия K"},
{"Rossiya rtr","Россия"},
{"RT Doc HD","RT Doc HD"},
{"RTG","RTG"},
{"RTVi","RTVi"},
{"Ru TV","Ru TV"},
{"RUSONG TV","RUSONG TV"},
{"Rusong","Rusong"},
{"Russia 1","Россия 1"},
{"Russia 2","Россия 2"},
{"Russia 24","Россия 24"},
{"Russia Today HD","Russia Today HD"},
{"Russia Today","Russia Today"},
{"RUSSIA TODAY","Russia Today"},
{"Russkiy Extrim","Russkiy Extrim"},
{"S TV","S TV"},
{"sbc reality","sbc reality"},
{"smile","smile"},
{"Soccer","Soccer"},
{"sporthit","sporthit"},
{"STS","СТС"},
{"sts","СТС"},
{"TeenTV","TeenTV"},
{"THT","THT"},
{"TNT","TNT"},
{"TNT","ТНТ"},
{"TPO","TPO"},
{"Travel Channel HD","Travel Channel HD"},
{"TRAVELCHANNEL HD","Travel Channel HD"},
{"TV 1000","TV 1000"},
{"tv center","tv center"},
{"TV XXI","TV XXI"},
{"TV-3","TV-3"},
{"TV-XXI","TV-XXI"},
{"TV1000 Action East","TV1000 Action East"},
{"TV1000 Action","TV1000 Action"},
{"TV1000 Megahit HD","TV1000 Megahit HD"},
{"TV1000 Русское кино","TV1000 Русское кино"},
{"TV1000","TV1000"},
{"TV3","ТВ3"},
{"tvc","ТВЦ"},
{"tvmchannel","tvmchannel"},
{"TБН","TБН"},
{"VH1","VH1"},
{"VH1Classic","VH1Classic"},
{"Viasat History","Viasat History"},
{"Viasat History","Viasat History"},
{"Viasat Nature","Viasat Nature"},
{"Viasat Sport","Viasat Sport"},
{"World 24","World 24"},
{"XXI","XXI"},
{"yumor_tv","Юмор ТВ"},
{"zagorod_zh","zagorod_zh"},
{"zvezda","Звезда"},
{"Авто 24","Авто 24"},
{"АВТО ПЛЮС","АВТО ПЛЮС"},
{"Агро ТВ","Агро ТВ"},
{"Боец ТВ","Боец ТВ"},
{"Боец","Боец"},
{"Время","Время"},
{"Детский мир","Детский мир"},
{"Детский","Детский"},
{"Дом кино","Дом кино"},
{"Домашние животные","Домашние животные"},
{"Домашние животные","Домашние животные"},
{"Домашние Животные","Домашние Животные"},
{"Домашний","Домашний"},
{"Еврокино","Еврокино"},
{"Еврокино","Еврокино"},
{"Живи","Живи"},
{"ЖИВИ","ЖИВИ"},
{"Звезда","Звезда"},
{"Звезда","Звезда"},
{"Иллюзион+","Иллюзион+"},
{"Иллюзион+","Иллюзион+"},
{"Иллюзион+","Иллюзион+"},
{"Иллюзион+","Иллюзион+"},
{"Индия ТВ","Индия ТВ"},
{"Индия ТВ","Индия ТВ"},
{"Карусель","Карусель"},
{"Киносоюз","Киносоюз"},
{"Комедия ТВ","Комедия ТВ"},
{"Комсомольская правд","Комсомольская правд"},
{"Кухня ТВ","Кухня ТВ"},
{"Кухня ТВ","Кухня ТВ"},
{"КХЛ HD","КХЛ HD"},
{"КХЛ HD","КХЛ HD"},
{"Луганск 24","Луганск 24"},
{"Ля Минор","Ля Минор"},
{"Ля-минор ТВ","Ля-минор ТВ"},
{"Мир","Мир"},
{"МИР","Мир"},
{"МИР","МИР"},
{"Москва 24","Москва 24"},
{"Москва доверие","Москва доверие"},
{"Моя планета","Моя планета"},
{"Музыка первого","Музыка первого"},
{"НАШ","НАШ"},
{"Ностальгия","Ностальгия"},
{"НСТ","НСТ"},
{"НСТ","НСТ"},
{"НТВ + Футбол","НТВ + Футбол"},
{"НТВ + Футбол","НТВ Футбол"},
{"НТВ Баскетбол","НТВ Баскетбол"},
{"НТВ Наш Футбол","НТВ Наш Футбол"},
{"НТВ","НТВ"},
{"НТВ+ Баскетбол","НТВ+ Баскетбол"},
{"НТВ+ Наш футбол","НТВ+ Наш футбол"},
{"НТВ+ Наше новое кино","НТВ+ Наше новое кино"},
{"НТВ+ Футбол 2","НТВ+ Футбол 2"},
{"Охота и Рыбалка","Охота и Рыбалка"},
{"Охота и рыбалка","Охота и рыбалка"},
{"Первый канал","Первый канал"},
{"Первый канал","Первый канал"},
{"Первый образовательный","Первый образовательный"},
{"Перец","Перец"},
{"Перец","Перец"},
{"Психология21","Психология21"},
{"Пятница","Пятница"},
{"Радость моя","Радость моя"},
{"Раз ТВ","Раз ТВ"},
{"РЕН-ТВ","Рен ТВ"},
{"РЖД","РЖД"},
{"Россия 1","Россия 1"},
{"Россия 2","Россия 2"},
{"Россия 2","Россия 2"},
{"Россия 24","Россия 24"},
{"Россия HD","Россия HD"},
{"Россия HD","Россия HD"},
{"Россия K","Россия K"},
{"РОССИЯ К","РОССИЯ К"},
{"Россия К","Россия К"},
{"С1","С1"},
{"Сетанта Спорт","Сетанта Спорт"},
{"СОЮЗ","Союз"},
{"Спас","Спас"},
{"Спорт 1","Спорт 1"},
{"Спорт 2","Спорт 2"},
{"Спорт 2","Спорт 2"},
{"ТБН РОССИЯ","ТБН РОССИЯ"},
{"ТВ3","ТВ3"},
{"ТВ3+3","ТВ3+3"},
{"ТВЦ","ТВЦ"},
{"Театр","Театр"},
{"Телепутешествия","Телепутешествия"},
{"ТНТ Comedy","ТНТ Comedy"},
{"Успех","Успех"},
{"Шансон TV","Шансон TV"},
{"Экстрим спорт","Экстрим спорт"},
{"Ю","Ю"},
{"Юмор Box","Юмор Box"},
{"Юмор тв","Юмор тв"},
{"ЮМОР ТВ","ЮМОР ТВ"},
}

local channels=
{
{ name="Антимайдан", address="http://hls.goodgame.ru/hls/6147_480.m3u8"},
{ name="Антимайдан HD", address="http://hls.goodgame.ru/hls/6147_720.m3u8"},
-- { name="Новороссия ТВ", address="http://hls.goodgame.ru/hls/23154.m3u8"},
-- { name="Life News", address="http://tv.life.ru/lifetv/480p/index.m3u8"},
-- { name="Life News HD", address="http://tv.life.ru/lifetv/720p/index.m3u8"},
-- { name="Russia Today Документальный", address="http://62.213.85.137/rtdru/rtdru360.m3u8"},
}

local function GetPlsAsTable(answer)
	local pattern='[^<!--]<option value="(.-)">(.-)</option>'
	local i=0
	answer=answer:gsub('\n',' ')
	local t={}
	for address, name in answer:gmatch(pattern) do
	    i=i+1 
	    t[i] = {}
	    t[i].name = name or ''
	    t[i].address = address or ''
	    for _,ff in ipairs(filter) do   -- применяем локальный фильтр
	      if type(ff)=='table' and t[i].name == ff[1] then 
	        t[i].name=ff[2]
	      end
	    end
	end 
	for _,channel in pairs(channels) do
	    i=i+1 
	    t[i] = channel
	end
    return t
end
------------------------------------------------------------------------
function GetList(UpdateID,m3u_file)

	 if UpdateID == nil then return end
	 if m3u_file == nil then return end
	 if TVSources_var.tmp.source[UpdateID] == nil then m_simpleTV.OSD.ShowMessage_UTF8('id not found.',0x0000FF,7) return  end
	 
	 local Source = TVSources_var.tmp.source[UpdateID]  -- Наследуем настройки источника, чтобы не таскать

	 tvs_core.tvs_debug("Scraper for "..Source.name )
	 
 	 m_simpleTV.OSD.ShowMessage_UTF8(Source.name .. '. ' .. tvs_core.tvs_GetLangStr('tvs_scrap_process'),0xFF00,10)
	 
	 local answer, rc =  tvs_func.WinInet_load('http://imtv.at.ua/new/lPTV.html')
	 		 	
	 if rc~=200 then 
	     local err = 'Scraper for ' ..Source.name..' :  Error - ' .. rc    
	     m_simpleTV.OSD.ShowMessage_UTF8(err,0xFFFF00,5) 
 	     tvs_core.tvs_debug(err)
	     m_simpleTV.Common.Wait(3000)
    	 return nil
	 end	  

---------------- получаем таблицу из ответа --------------------------------------------
    local t_pls = GetPlsAsTable(answer)    	

---------------- обрабатываем таблицу общими фильтрами  ---------

    UpdateID = nil  -- позволить привязывать по адресу , в общем без формирования update-code в базе
    local m3ustr = tvs_core.ProcessFilterTable(UpdateID,Source,t_pls)      
	
	tvs_core.tvs_debug("Scraper for "..Source.name..": filtered 'm3u' info push into file "..m3u_file)

	local handle = io.open (m3u_file, "w+")   -- m3u_file - не меняем название, из него грузится потом вся инфа
	if handle == nil then return nil end
	handle:write (m3ustr)
	handle:close ()
	
	tvs_core.tvs_debug("Scraper for "..Source.name.." end: return 'ok'.")

	return 'ok'
--  return param1,param2 
--         param1 == 'ok' if make channel list ok, 
--         param2 - change param STV.GetGroup - 1 get group, 0 - ignore group
 

end 


