-----------------------------------------------------------------------------------------
module('TorrentTV_pls', package.seeall)
-----------------------------------------------------------------------------------------
function GetSettings()
	local scrap_settings
	scrap_settings ={
	name	 		='TorrentTV', 			  -- Имя источника        
	sortname 		='',					  -- имя для сортировки (если не указано, берется name) 
	scraper 		='TorrentTV_pls.lua',	  -- * Путь и название скрапера (будет автоматически присвоено) 
	m3u     		='out_torrent_tv.m3u',	  -- Путь и название m3u    
	logo     		='..\\Channel\\logo\\Icons\\torrentTV.png', --  путь и файл лого относительно папки work
	TypeSource		=1,					  	  -- * Тип источника: 0 - внутренний, 1 - внешний (будет автоматически присвоено 1)
	TypeCoding		=1,						  -- Кодировка M3U (0 - ANSI, 1 - UTF8, 2 - UNICODE)  
	DeleteM3U		=0,						  -- Удалять m3u по завершению обработки (1 - включено, 0 - выключено) 
	RefreshButton   =1,						  -- Обновлять по кнопке "Обновить плей-лист" (1 - включено, 0 - выключено)
	AutoBuild		=0,						  -- Автообновление (1 - включено, 0 - выключено)      
	AutoBuildDay	={0,0,0,0,0,0,0},		  -- Дни недели автообновления {вс,пн,вт,ср,чт,пт,сб} 
	LastStart		=0,						  -- Последняя успешная загрузка    	-----------------------------------------------------------------------------------------------
	TVS				={					 	  -- Ветка настроек для загрузки в базу TVSources (1 - включено, 0 - выключено) 
		add			=1,						  -- Загружать в базу 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 =0,						  -- Не удалять отсутствующие каналы при обновлении (1 - включено, 0 - выключено)
		TypeSkip	=1,						  -- Если канал существует в базе: 0 - пропускать, 1 - обновлять, 2 - загружать как новый 
		TypeFind	=0}						  -- ^^^^^^^^^ проверять совпадение по: 0 - названию канала, 1 - адресу канала  
	}                                                                                                                                          
	return scrap_settings
end
--------------------------------------------------------------------------
function GetVersion()
	return 4, 'UTF-8'
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 return end
 local Source=TVSources_var.tmp.source[UpdateID]  -- Наследуем настройки источника, чтобы не таскать
 
 m_simpleTV.OSD.ShowMessage_UTF8(Source.name .. '. ' .. tvs_core.tvs_GetLangStr('tvs_scrap_process'),0xFF00,10)
 if ttvcore == nil or  ttvcore.GetPlstAsTable == nil then 
	m_simpleTV.OSD.ShowMessage_UTF8("Требуется основной скрипт TorrentTV" ,0xFF00,10)
	return 
 end 
----------------------------------------------------------------- 
	local WithoutGroup = 0
	if Source.STV.GetGroup == nil or Source.STV.GetGroup == 0 then WithoutGroup = 1	end
  
	local HDGroup = Source.STV.HDGroup
	if HDGroup==nil or HDGroup~=1 then HDGroup = 0 end
    	
    local t, coding = ttvcore.GetPlstAsTable (WithoutGroup,HDGroup)      --  получаем данные из основного скрипта. UTF-8 .		
	if t == nil then return end
------------------проверяем кодировку полученной таблицы -------------------------------	
	local isUTF8 = false
	if t[1] and t[2] then
	   if tvs_core.isUTF8(t[1].group) or tvs_core.isUTF8(t[2].group) then 
	      isUTF8 = true 
	   end
	end   
	if (not isUTF8 or coding == nil or coding == 0) then
		for i=1,#t do
			t[i].group = m_simpleTV.Common.string_toUTF8( t[i].group, 1251)
			t[i].name = m_simpleTV.Common.string_toUTF8( t[i].name, 1251)
		end
	end
-----------------------------------------------------------------
---- ищем дубликаты по адресам среди не HD каналов, чтобы потом пропустить
tvs_core.tvs_debug('TTV: begin skip channels.')
local skip_flg
for i=1,#t do

		 skip_flg = false		 
		 if not t[i].group:find('HD') and t[i].name:find('HD') and HDGroup==1 then 
			 for a=1,#t do 
			     if (a~=i and t[a].address == t[i].address and not t[a].skip) then skip_flg = true 
			     end
			 end
	     end 
	         	
		 if  (t[i].group == 'Избранное') or ( skip_flg ) then	
	     --  избранное пропускаем   -- HD каналы, но не в группе HD, пропускаем 
	        t[i].skip = true
	        tvs_core.tvs_debug('TTV: skip channel='.. t[i].name .. ' group='..t[i].group ..' adr='..t[i].address)	        
		 end
end
tvs_core.tvs_debug('TTV: end skip channels.')

------------------------------------------------------------------	
-- Проходим таблицу фильтрами групп, автогруппировкой и фильтрами каналов	
 --UpdateID='TorrentTV01' 
 m3ustr = tvs_core.ProcessFilterTable(UpdateID,Source,t) -- в таблице может быть установлен флаг пропуска для канала t[i].skip = true

 --debug_in_file(m3ustr .. '\n\n')
 if not string.match(m3ustr,'EXTINF') then return end
  
 local tfile = io.open(m3u_file,'w+')
 if tfile==nil then 
	os.remove(m3u_file)
	return
 end
  
 tfile:write(m3ustr)
 tfile:close()
 return 'ok',1
end
