-----------------------------------------------------------------------------------------
module('1TorrentTV_pls', package.seeall)
-----------------------------------------------------------------------------------------
function GetSettings()
	local scrap_settings
	scrap_settings ={
	name	 		='1TorrentTV', 		  -- Имя ичтоника
	sortname 		='',					  -- имя для сортировки (если не указано, берется name)
	scraper 		='1TorrentTV_pls.lua',		  			  -- * Путь и название скрапера (будет автоматически присвоено)
	m3u     		='1TorrentTV.m3u',		  -- Путь и название m3u
	logo     		='..\\Channel\\logo\\Icons\\1TorrentTV.png', --  путь и файл лого относительно папки work
	TypeSource		=1,					  	  -- * Тип источника: 0 - внутренний, 1 - внешний (будет автоматически присвоено 1)
	TypeCoding		=1,						  -- Кодировка M3U (0 - ANSI, 1 - UTF8, 2 - UNICODE)
	DeleteM3U		=0,						  -- * Удалять m3u по завершению обработки (1 - включено, 0 - выключено) (будет автоматически присвоено 0)
	RefreshButton   =1,						  -- * Обновлять по кнопке "Обновить плей-лист" (1 - включено, 0 - выключено) (будет автоматически присвоено 0)
	AutoBuild		=0,						  -- * Автообноление (1 - включено, 0 - выключено) (будет автоматически присвоено 0)
	AutoBuildDay	={0,0,0,0,0,0,0},		  -- Дни недели автообновления {вс,пн,вт,ср,чт,пт,сб}
	LastStart		=0,						  -- * Последняя успешная загрузка (будет автоматически присвоено 0)
	--------------------------------------------------------------------------------------------------------------------------------------------
	TVS				={					 	  -- Ветка настроек для загрузки в базу TVSources (1 - включено, 0 - выключено)
		add			=1,						  -- * Загружать в базу TVSources (1 - включено, 0 - выключено) (буде автоматически присвоено 1)
		FilterCH	=1,						  -- Фильтровать названия каналов (1 - включено, 0 - выключено)
		FilterGR	=1,						  -- Фильтровать названия групп каналов (1 - включено, 0 - выключено)
		GetGroup	=1,						  -- Наследовать группу (1 - включено, 0 - выключено)
		LogoTVG		=1},					  -- Наследовать логотип и программу передач (1 - включено, 0 - выключено)
	--------------------------------------------------------------------------------------------------------------------------------------------
	STV				={						  -- Ветка настроек для загрузки в базу SimpleTV
		add			=1,						  -- * Загружать в базу SimpleTV (1 - включено, 0 - выключено) (будет автоматически присвоено 1)
		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 - выключено) (будет автоматически присвоено 1)
		TypeSkip	=1,						  -- Если канал существует в базе: 0 - пропускать, 1 - обновлять, 2 - загружать как новый
		TypeFind	=0}						  -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ проверять совпадение по: 0 - названию канала, 1 - адресу канала
	}
	return scrap_settings
end
--------------------------------------------------------------------------
function GetVersion()
	return 5, 'UTF-8'
end
-----------------------------------------------------------------------------------------
function TorrentTVLogin (session)
  	local error_text,pm = pcall(require,'pm')

	if not package.loaded.pm then 
		m_simpleTV.OSD.ShowMessage_UTF8("Установите PasswordManager из репозитория SimpleTV.", 255, 10)
		return false
	end
	
	local login,password,head,error_type,error_text = pm.GetPassword('1torrenttv')
	
	if error_type and error_type == 4 then
		pcall(pm.AddID,'1torrenttv','1Torrent.TV')
		m_simpleTV.OSD.ShowMessage_UTF8("Введите пароль для 1Torrent.TV в PasswordManager.", 255, 10)		
		package.loaded['pm'] = nil
		return false
	end
	
	if error_type and (error_type == 2 or error_type == 3) then
		m_simpleTV.OSD.ShowMessage_UTF8("Переустановите PasswordManager.", 255, 10)		
		package.loaded['pm'] = nil
		return false
	end	
	
	package.loaded['pm'] = nil
 
	if login==nil or login=='' or password==nil or password=='' then 
		m_simpleTV.OSD.ShowMessage_UTF8("Сохраните логин и пароль для 1Torrent.TV в PasswordManager.", 255, 10)
		return false
	end

	login = string.gsub(login,'%@','%%40')
	local header = m_simpleTV.Common.string_toUTF8('Content-Type: application/x-www-form-urlencoded\r\n')
	local body = m_simpleTV.Common.string_toUTF8('email='.. login .. '&password=' .. password .. '&enter=%D0%92%D0%BE%D0%B9%D1%82%D0%B8')

	local rc,answer=m_simpleTV.WinInet.Post(session,'http://1torrent.tv/ru/auth.php',nil,header,body)

	if rc~=200 then 
		m_simpleTV.OSD.ShowMessage_UTF8("1Torrent.TV: Can't login",255,5)
		tvs_core.tvs_debug('1Torrent.TV Scraper: Can\'t login...')
		return false
	end 

	local rc,answer=m_simpleTV.WinInet.Get(session,'http://1torrent.tv/ru/uc.php') 
	if rc~=200 then 
		m_simpleTV.OSD.ShowMessage_UTF8("1Torrent.TV Scraper: Net error - " .. rc,255,5)
		tvs_core.tvs_debug('1Torrent.TV Scraper: Error Connecting... URL: http://1torrent.tv/ru/uc.php; Net error - ' .. rc)
		return
	end 
	
	if string.match (answer,m_simpleTV.Common.string_toUTF8('Кабинет пользователя')) then
		m_simpleTV.OSD.ShowMessage_UTF8("1Torrent.TV: Авторизация пройдена успешно.",0xFF00, 10)
	end
	
	--debug_in_file(body)
	--debug_in_file(answer,'1torrenttv.html')

	return true
end

--------------------------
local function GetPlstAsTable(WithoutGroup,HDGroup)
  
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]  -- Наследуем настройки источника, чтобы не таскать
 
 local session=m_simpleTV.WinInet.New("Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.52")
 if session == nil then return end

 --INTERNET_OPTION_CONNECT_TIMEOUT
 m_simpleTV.WinInet.SetOptionInt(session,2,10000,0)
 --INTERNET_OPTION_RECEIVE_TIMEOUT
 m_simpleTV.WinInet.SetOptionInt(session,6,10000,0)
 
 m_simpleTV.OSD.ShowMessage_UTF8(Source.name .. '. ' .. tvs_core.tvs_GetLangStr('tvs_scrap_process'),0xFF00,10)
 
 local rc,answer=m_simpleTV.WinInet.Get(session,'http://1torrent.tv') 
 if rc~=200 then 
   m_simpleTV.OSD.ShowMessage_UTF8("Net error - " .. rc,255,5)
   tvs_core.tvs_debug('1Torrent.TV Scraper: Net error - ' .. rc)
   return
 end 
 
 local connection = TorrentTVLogin(session)
 
 local rc,answer=m_simpleTV.WinInet.Get(session,'http://1torrent.tv/ru/channelonline.php') 
 if rc~=200 then 
   m_simpleTV.OSD.ShowMessage_UTF8("1Torrent.TV Scraper: Net error - " .. rc,255,5)
   tvs_core.tvs_debug('1Torrent.TV Scraper: Error Connecting... URL: http://1torrent.tv/ru/channelonline.php; Net error - ' .. rc)
   return
 end 
	m_simpleTV.WinInet.Close(session) 

------------------------------------------------------------------------------------------------------------------
	
----------------------------------------------------------------------------------------------------------------------
 
	local group
	local group_lib={}
	local adr
	local name,temp,new_group
	local url_filter = {}

	local tvs_group = ''
	local tvs_group_flg = false
	
	if Source.TVS.add == 1 and Source.TVS.GetGroup == 1 then tvs_group_flg = true 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
	
	
	for w in string.gmatch(answer,'<div class="category"(.-)</div>') do 
		temp	= findpattern(w,'id="cat(.-)"',0,7,1) or ''
		name    = findpattern(w,'<span>(.-)</span>',0,6,7) or ''

		if name~='' and temp~='' then
			group_lib[temp] = name
		end	
	end	
	local i = 0
	local t={}
	for w in string.gmatch(answer,'<div class="item"(.-)<span class="epg"') do 
		
		adr	= findpattern(w,'change_channel%b\(\)',0,15,1) or ''
		name   = findpattern(w,'"caption">(.-)</span>',0,10,7) or ''
		
		if name~='' and adr~='' and not url_filter[adr] then
			i = i + 1
		    t[i] = {}
		    t[i].address = 'http://1torrent.tv/ru/channelonline.php?channel=' .. adr
		    t[i].name = name
		    if i%5 == 0 then
			   m_simpleTV.OSD.ShowMessage_UTF8("1Torrent.TV. Найдено каналов: " .. i,0xFF00, 10) 
			end
			url_filter[adr] = 1
			
			group	= findpattern(w,'category=%b""',0,10,1) or ''
			t[i].group   = group_lib[group] or ''
			
		end 		
	end

 if t == nil then return end

 local m3ustr = tvs_core.ProcessFilterTable(UpdateID,Source,t) 

 
 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 param1,param2 -- param 1 == 'ok' if make channel list ok, param2 - change param STV.GetGroup - 1 get group, 0 - ignore group
 return 'ok',1
end 
