Я для себя написал небольшую прогу, которая подкладывается в каталог к предварительно сконфигурированному ListTV и делает она следующее:
1) с e1 автоматом качается программа в формате ListTV и кладется в определенный каталог
2) запускает ListTV, который загружает скачанную программу телепередач и удаляет уже ненужные файлы
3) посылает в ListTV нажатия клавиш, которые заставляют его выгрузить программу в формате JTV в папку к бехолдеру
программка написана на дельфе, исходник прилагаю
Код:
program tv_console;
{$APPTYPE CONSOLE}
uses
  SysUtils,Windows,WinInet,DateUtils;
var
  fname,url,s,s1:string;
procedure WinExecute;
var
 si: TSTARTUPINFO;
 pi: TPROCESSINFORMATION;
 hwnd:Cardinal;
 l:integer;
begin
 l:=0;
 ZeroMemory(@si, SizeOf(si));
 ZeroMemory(@pi, SizeOf(pi));
 GetStartupInfo(si);
 si.cb := SizeOf(si);
 si.dwFlags := STARTF_USESHOWWINDOW;
 si.wShowWindow := SW_HIDE;
 Win32Check(CreateProcess(nil, pchar('ListTV.exe'), nil, nil, false,
    CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi));
 //ищем окно запущенного процесса
 repeat
  hwnd:=FindWindow(nil, 'ListTV');
  inc(l);
  sleep(1000);
 until ( hwnd <> 0 ) or ( l > 30 );
 if hwnd<>0 then
 begin
    SetForegroundWindow(hwnd);
    sleep(1000);
    keybd_event(VK_MENU,0,0,0);
    keybd_event(ord('S'),0,0,0);
    keybd_event(ord('S'),0,KEYEVENTF_KEYUP,0);
    keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
    sleep(1000);
    keybd_event(VK_RETURN,0,0,0);
    keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
    sleep(1000);
    keybd_event(VK_RETURN,0,0,0);
    keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
    sleep(1000);
    keybd_event(VK_RETURN,0,0,0);
    keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
    sleep(1000);
    keybd_event(VK_MENU,0,0,0);
    keybd_event(ord('X'),0,0,0);
    keybd_event(ord('X'),0,KEYEVENTF_KEYUP,0);
    keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
 end;
 WaitforSingleObject(pi.hProcess,INFINITE);
 CloseHandle(pi.hThread);
 CloseHandle(pi.hProcess);
end;
procedure DownloadFile;
var
  hInet, //<-переменная сод. указатель на сессию
  hURL: HINTERNET; //<-указатель на URL
  ReadLen: Cardinal; //<-количество реально прочитанных байт
  fBuf: array[1..4096] of byte; //<-буфер куда качаем
  f: file; //<-файл куда качаем
  Header: string; //<-|дополнительная переменная в HTTP заголовок
begin
  AssignFile(f, fname);
  ReWrite(f, 1);
  //открываем сессию
  hInet := InternetOpen('Mozilla', PRE_CONFIG_INTERNET_ACCESS, nil, nil, 0);
  //Пишем дополнительную строку для заголовка
  Header := 'Accept: */*';
  //открываем URL
  hURL := InternetOpenURL(hInet, PChar(url), pchar(Header), StrLen(pchar(Header)), 0, 0);
  //качаем до тех пор пока реально прочитаное число байт не
  //будет равно нулю
  repeat    //читаем в буфер
    InternetReadFile(hURL, @fBuf, SizeOf(fBuf), ReadLen);
    BlockWrite(f, fBuf, ReadLen); //<-пишем в файл
  until (ReadLen = 0);
  InternetCloseHandle(hURL); //<-|закрываем
  InternetCloseHandle(hInet); //<-|сесcии
  CloseFile(f); //<-|и файл
end;
BEGIN
  //качаем программу на текущую неделю
  s:=datetostr(date-1);
  s1:=Copy(s,7,4)+Copy(s,4,2)+Copy(s,1,2);
  fname:='c:\downloads\ekatv'+s1+'.htb';
  url:='http://www.e1.ru/afisha/tv/getprog.php?start='+s1;
  s:=datetostr(date-dayoftheweek(date)+7);
  s1:=Copy(s,7,4)+Copy(s,4,2)+Copy(s,1,2);
  url:=url+'&stop='+s1;
  writeln(url);
  DownloadFile;
  //и на следующую
  s:=datetostr(date-dayoftheweek(date)+8);
  s1:=Copy(s,7,4)+Copy(s,4,2)+Copy(s,1,2);
  fname:='c:\downloads\ekatv'+s1+'.htb';
  url:='http://www.e1.ru/afisha/tv/getprog.php?start='+s1;
  s:=datetostr(date-dayoftheweek(date)+14);
  s1:=Copy(s,7,4)+Copy(s,4,2)+Copy(s,1,2);
  url:=url+'&stop='+s1;
  writeln(url);
  DownloadFile;
  //вызываем ListTV
  WinExecute;
END.