--script for http://www.kinoman.az/ (09/09/2015)
--load TV channels only

   local UpdateID='Kinoman_TV01'
   local UseLocalLogo = nil

if UseLocalLogo == nil then
   local fhandle = io.open (m_simpleTV.MainScriptDir ..  "user/tvplaylists/tvmenu.ini")   
   if fhandle == nil then 
      UseLocalLogo = '1'
      return
   end
   local str = fhandle:read('*a')
   fhandle:close()

   UseLocalLogo = string.match(str,'UseLocalLogo=(%d);')
   if UseLocalLogo == nil then UseLocalLogo = 0 end
end

if UseLocalLogo == '1' then
   local sqlstr = 'Select main.id,main.pict from main where main.updateid like "%Kinoman_%";'
   local dTable = m_simpleTV.Database.GetTable(sqlstr)
   if dTable ~= nil and dTable[1] ~= nil then
     for k, v in ipairs(dTable) do 
        --debug_in_file(v.id .. '  ' .. v.pict .. '\n')
        m_simpleTV.Database.ExecuteSql('DELETE FROM Main WHERE (Main.Id=' .. v.id .. ');',true) 
     end
   end
end
----------------------------------------------------------------
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,3000,0)
 --INTERNET_OPTION_RECEIVE_TIMEOUT
 m_simpleTV.WinInet.SetOptionInt(session,6,5000,0)
---------------------------------------------------------------
 m_simpleTV.OSD.ShowMessage("Kinoman - start updating" ,0xFF00,10)

local  tmpName = m_simpleTV.Common.GetTmpName()
if tmpName == nil then return end 

 local tfile = io.open(tmpName,'w+')
 if tfile == nil then 
     os.remove(tmpName)
     return
 end
 
 tfile:write('#EXTM3U\n')
 tfile:close() 

local url = 'http://www.kinoman.az/ru/tv/watch/1/ans' --.. math.random()

local rc,answer=m_simpleTV.WinInet.Get(session,url)
m_simpleTV.WinInet.Close(session)

if rc~=200 then
       m_simpleTV.WinInet.Close(session)
	   return
end
--answer = m_simpleTV.Common.string_fromUTF8(answer)
answer = findpattern( answer,'<div class="panel%-heading">(.-)<ul class="nav nav%-tabs mytabs">',1,0,0)
if answer == nil then
    m_simpleTV.OSD.ShowMessage("Kinoman - error updating",255,10)
	return
end

--debug_in_file(answer .. '\n\n\n')
--do return end
local i=1
local m3ustr, name, adr, grp, img
for w in string.gmatch(answer,'<div class="panel%-heading">(.-)</ul') do
	grp = findpattern( w,'title">(.-)<',1,7,1)
	if grp == nil then break end

   for ww in string.gmatch(w,'<a(.-)/a>') do

	adr = findpattern( ww,'href="(.-)"',1,6,1)
	name = findpattern( ww,'alt="(.-)"',1,5,1)
	img = findpattern( ww,'src="(.-)"',1,5,1)

	if adr == nil or name == nil or img  == nil then break end

--debug_in_file('#EXTINF:-1,'..grp..':'.. name..'\n'..adr..'\n')

          if UseLocalLogo == '1' then   

             m3ustr = '#EXTINF:-1 update-code="' .. UpdateID .. grp .. name .. '" group-title="' .. grp .. '",' .. name .. '\n' .. adr .. '\n'


	           elseif UseLocalLogo ~= '1' then

             m3ustr = '#EXTINF:-1 update-code="' .. UpdateID .. grp .. name .. '" group-title="' .. grp .. '" tvg-logo="' .. img .. '",' .. name .. '\n' .. adr .. '\n'


           end
-- m3ustr = '#EXTINF:%-1,'..grp..':'.. name..'\n'..adr..'\n'
 tfile = io.open(tmpName,'a+')
 tfile:write(m3ustr)
 tfile:close()
   end
 i=i+1
end

--	do return end

  --опции  для загрузки плейлиста 
local p={}
p.TypeSourse = 1
p.DeleteBeforeLoad = 0
p.TypeSkip   = 1
p.TypeFind =   0
p.AutoSearch = 1
p.NumberM3U =  0
p.Find_Group = 1
p.TypeCoding = 1  --  -1-auto  0 - plane text  1- UTF8  2- unicode
p.BorpasFileFormat=1
p.AutoNumber = 0
p.ExtFilter = 'Kinoman'
p.ExtFilterLogo =  '..\\Channel\\logo\\extFiltersLogo\\kinoman2.png'   -- the logo of extended filter (from ver. 0.4.8 b9)
p.ExtFilterLogoForce = 0
p.UpdateID=UpdateID

local err,add,ref,names = m_simpleTV.Common.LoadPlayList (tmpName,p,0,true,false)
os.remove(tmpName)

if err==true then
     local mess = "Kinoman: channels updated (" .. add .. ")"
	 if add > 0 and add < 25 then 
	    names = string.gsub(names,'%$end','\n')
		mess = mess .. '\n' .. names
	 end
	 
	 m_simpleTV.OSD.ShowMessage(mess,0xFF00,5)
	 
end
