<?xml version="1.0" encoding="utf-8"?>
<HmsMediaItem>
  <MediaType>3</MediaType>
  <ClassID>53</ClassID>
  <ItemID>03436d33-e100-4f5b-adec-8edd911ef3d6</ItemID>
  <ItemPath>https://vk.com/football_acestream</ItemPath>
  <ParentID>234DF17B-418C-4FDC-9DFE-CD0C586D2E76</ParentID>
  <Properties>
    <Property>
      <ID>4</ID>
      <Value>Football</Value>
    </Property>
    <Property>
      <ID>515</ID>
      <Value>1</Value>
    </Property>
    <Property>
      <ID>700</ID>
      <Value>0</Value>
    </Property>
    <Property>
      <ID>701</ID>
      <Value>-1</Value>
    </Property>
    <Property>
      <ID>702</ID>
      <Value>-1</Value>
    </Property>
    <Property>
      <ID>517</ID>
      <Value>578-720,722-1080,482-576,402-480,322-400,202-320,0-200</Value>
    </Property>
    <Property>
      <ID>518</ID>
      <Value>0</Value>
    </Property>
    <Property>
      <ID>512</ID>
      <Value>0</Value>
    </Property>
    <Property>
      <ID>532</ID>
      <Value>1</Value>
    </Property>
    <Property>
      <ID>553</ID>
      <Value>0</Value>
    </Property>
    <Property>
      <ID>522</ID>
      <Value>0</Value>
    </Property>
    <Property>
      <ID>245</ID>
      <Value>03436d33-e100-4f5b-adec-8edd911ef3d6</Value>
    </Property>
    <Property>
      <ID>93</ID>
      <Value>42989,0196146759</Value>
    </Property>
    <Property>
      <ID>530</ID>
      <Value>///////////////////////////////////////////////////////////////////////////////
int
  INTERNET_FLAG_NO_AUTO_REDIRECT = 0x200000,
  INTERNET_FLAG_RELOAD = 0x80000000,
  INTERNET_FLAG_NO_COOKIES = 0x00080000;    

//               Г Л О Б А Л Ь Н Ы Е   П Е Р Е М Е Н Н Ы Е                   //
string    gsUrlBase    = mpFilePath; 
TDateTime gTimeStart   = Now; 
int       gnItemsAdded = 0;
// Флаг группировки ссылок в папки по буквам алфавита
bool  bGroup=false; 
// Регулярные выражения для поиска на странице блоков с информацией о сериалах
string
  // Шаблон поиска фрейма/раздела со списком 
  gsPatternCut    = &apos;&lt;div\\s+id="page_wall_posts"(.*?)\\id="wall_more_link"&apos;,      // Выражение для вырезки нужного куска из html для поиска ссылок в нём
  // Шаблон поиска повторяющегося блока с информацией о трансляции 
  gsPatternBlock  = &apos;&lt;div\\s+class="wall_text"(.*?)&lt;\\/div&gt;(\\s*&lt;\\/div&gt;){6}&apos;,
  // Шаблон поиска Названия трансляции
  gsPatternTitle  = &apos;div\\s+class="wall_post_text"&gt;(.*?)&lt;br&gt;(.*?)&lt;&apos;,
  // Шаблон поиска Ссылки на трансляцию
  gsPatternLink   = &apos;acestream:\/\/(.*?)&lt;&apos;,
  // Шаблон поиска Изображения
  gsPatternImg    = &apos;background-image: url\\((.*?)\\)&apos;,
  //
  gsPatternBlock2 = &apos;&lt;div\\s+class="tv"&gt;(.*?)&lt;\\/div&gt;\\s*&lt;\\!-- \\/edit-text --&gt;&apos;,  // Блоки, содержащие нужную информацию
  gsPatternLink2  = &apos;&lt;iframe scrolling="no" frameborder="0" src="(.*?)"&apos;,
  gsPatternLink3  = &apos;loadPlayer\\("(.*?)"&apos;,
  gsPatternComment= &apos;&lt;p&gt;(.*?)&lt;/p&gt;&apos;
  ;

///////////////////////////////////////////////////////////////////////////////
//                             Ф У Н К Ц И И                                 //

// ------------------------------------ Получение название группы из имени ----
  string GetGroupName(string sName) {
  string sGrp = &apos;#&apos;;
  if (HmsRegExMatch(&apos;([A-ZА-Я0-9])&apos;, sName, sGrp, 1, PCRE_CASELESS)) sGrp = Uppercase(sGrp);
  if (HmsRegExMatch(&apos;[0-9]&apos;, sGrp, sGrp)) sGrp = &apos;#&apos;;
  if (HmsRegExMatch(&apos;[A-Z]&apos;, sGrp, sGrp)) sGrp = &apos;A..Z&apos;;
  return sGrp;
}

// -------------------------------------------------------- Создание папки ----
THmsScriptMediaItem CreateFolder(THmsScriptMediaItem ParentFolder, 
                               string sLink, string sTitle="", string sImg="", string sComment="") {
  THmsScriptMediaItem Item = ParentFolder.AddFolder(sLink);
  Item[mpiTitle          ] = sTitle;
  Item[mpiCreateDate     ] = VarToStr(IncTime(gTimeStart,0,-gnItemsAdded,0,0));
  Item[mpiFolderSortOrder] = "-mpCreateDate";
  Item[mpiThumbnail      ] = sImg;
  Item[mpiComment        ] = sComment;
  gnItemsAdded++;
  return Item; 
}

// ---------------------------------------- Создание ссылки на видео ----------
THmsScriptMediaItem AddMediaItem(THmsScriptMediaItem Folder, string sLink, 
                               string sTitle="", string sImg="", string sComment="", string sRef="") {
  THmsScriptMediaItem i;                               
  i=Folder.FindItemByProperty(mpiFilePath,sLink);
  if(i!=nil) return nil;
  THmsScriptMediaItem Item = HmsCreateMediaItem(sLink, Folder.ItemID, "");
  Item[mpiTitle     ] = sTitle;
  Item[mpiCreateDate] = VarToStr(IncTime(gTimeStart,0,0,-gnItemsAdded,0));
  Item[mpiTimeLength] = 6300;
  Item[mpiThumbnail ] = sImg;
  Item[mpiComment   ] = sComment;
  Item[mpiProgramID   ] = gnItemsAdded; //sRef;
  Item[mpiInternetItem] = false;
  gnItemsAdded++;
  return Item;
}

// -------------------- Загрузка страниц, поиск и создание ссылок на видео ----
void CreateLinks() {
  string sHtml2, sData, sLink2; 
  


  if (bGroup) FolderItem.Sort("mpTitle");
}

///////////////////////////////////////////////////////////////////////////////
//                      Г Л А В Н А Я   П Р О Ц Е Д У Р А                    //
// ----------------------------------------------------------------------------
{
  string  sHtml, sName, sLink, sImg, sComment, sGrp;
  string  sHeaders,sAnswerHeaders, sUrlServer, sRequestPage;
  string  sName2, sTime;
  int     iFlags;
  TRegExpr RE, RE2; 
  THmsScriptMediaItem Item, Folder = FolderItem; 
  
  //HmsLogMessage(1, mpTitle+&apos;: Очистка подкаста&apos;);
  FolderItem.DeleteChildItems(); // Удаление существующих ссылок
  // Загружаем страницу
  // sHtml = HmsDownloadURL(mpFilePath, &apos;Referer: &apos;+mpFilePath, true);
  sHeaders = mpFilePath+&apos;\nAccept-Encoding: gzip, deflate\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36\n&apos;;
  iFlags   = INTERNET_FLAG_NO_COOKIES + INTERNET_FLAG_RELOAD; //+INTERNET_FLAG_NO_AUTO_REDIRECT; 
  HmsRegExMatch(&apos;^https://(.*)&apos;, mpFilePath, sUrlServer);
  HmsRegExMatch2(&apos;^(.*?)(/.*)&apos;, sUrlServer, sUrlServer, sRequestPage);
  sHtml = HmsSendRequestEx(sUrlServer, sRequestPage, &apos;GET&apos;, &apos;application/x-www-form-urlencoded&apos;, sHeaders, &apos;&apos;, 80, iFlags, sAnswerHeaders, true);
  sHtml = HmsUtf8Decode(sHtml);
  sHtml = HmsRemoveLineBreaks(sHtml);
  // Убираем переносы, чтобы далее в HmsRegExMatch не указывать PCRE_SINGLELINE 
  sHtml = HmsRemoveLineBreaks(HmsUtf8Decode(sHtml));
  // Если указана переменная gsPatternCut - вырезаем нужный кусок из HTML 
  if (gsPatternCut!=&apos;&apos;) HmsRegExMatch(gsPatternCut, sHtml, sHtml);
  // Цикл создания ссылок
  RE = TRegExpr.Create(gsPatternBlock, PCRE_SINGLELINE);
  try {
    // В цикле перебираем блоки описаний трансляций
    if (RE.Search(sHtml)) do {
      sName=""; sImg=""; sComment="";
      HmsRegExMatch2(gsPatternTitle, RE.Match, sName, sComment);          // Название
      HmsRegExMatch2(&apos;^(.*?) \\| Начало в (.*?)\\s+&apos;, sComment, sComment, sTime);
      HmsRegExMatch(gsPatternImg  , RE.Match, sImg );          // Картинка
      //if (sImg) sImg = HmsExpandLink(sImg, gsUrlBase);
      //HmsRegExMatch(gsPatternLink , RE.Match, sLink);          // Ссылка на трансляцию
      RE2 = TRegExpr.Create(gsPatternLink, PCRE_SINGLELINE);
      try  {
        if (RE2.Search(RE.Match)) do {  
          sName2=""; sLink=""; 
          HmsRegExMatch2(&apos;^(.*?)\\s+(.*?)$&apos; , RE2.Match, sLink, sName2);
          sName2 = HmsHtmlToText(sTime + &apos; &apos; + sName + &apos; &apos; + sName2 + &apos; &apos; + sComment);
          sName2 = ReplaceStr(sName2, "\n", " ");
          sName2 = ReplaceStr(sName2, "\r", "");
          AddMediaItem(Folder, sLink, sName2, sImg, sComment, "");
        } while (RE2.SearchAgain()); 
      } finally { RE2.Free(); }
    
      //if (bGroup) {
      //  // Группируем по-алфавиту  
      //  sGrp = GetGroupName(sName);
      //  Folder = CreateFolder(FolderItem, sGrp);
      //}
    } while (RE.SearchAgain()); // Ищем пока ищется

  } finally { RE.Free(); }      // Освобождаем объекты из памяти
  

  HmsLogMessage(1, mpTitle+&apos;: Создано ссылок - &apos;+IntToStr(gnItemsAdded));
  //HmsLogMessage(1, mpTitle+&apos;: Время работы (сек.) - &apos;+FloatToStr((Now-gTimeStart)*3600.0));
}</Value>
    </Property>
    <Property>
      <ID>531</ID>
      <Value>C++Script</Value>
    </Property>
    <Property>
      <ID>525</ID>
      <Value>42993,9192950463</Value>
    </Property>
    <Property>
      <ID>50</ID>
      <Value>AceStream (Входной поток)</Value>
    </Property>
    <Property>
      <ID>215</ID>
      <Value>mpCreateDate</Value>
    </Property>
    <Property>
      <ID>521</ID>
      <Value>1</Value>
    </Property>
  </Properties>
  <HmsTranscodingConfig>
    <TranscoderList>
      <Transcoder>
        <Name>ACEPLAYER</Name>
        <Path>%Registry\SOFTWARE\AceStream\InstallDir%\player\ace_player.exe</Path>
        <HomePage>http://www.acestream.org</HomePage>
        <Download>http://www.acestream.org</Download>
      </Transcoder>
    </TranscoderList>
    <TranscodingProfileList>
      <Profile>
        <TranscoderName>ACEPLAYER</TranscoderName>
        <TranscodingCondition></TranscodingCondition>
        <TranscodingConditionSyntaxType>PascalScript</TranscodingConditionSyntaxType>
        <TranscodingComment></TranscodingComment>
        <TranscodingFolder>Транскодирование для TorrentStream, AceStream медиа-ресурсов</TranscodingFolder>
        <TranscodingMediaType>3</TranscodingMediaType>
        <TranscodingMimeType></TranscodingMimeType>
        <TranscodingMimeTypeScript>var
  i: Integer;
  sFileExt: string;
begin
  if mpFileType &lt;&gt; &apos;&apos; then begin
    if SameText(mpFileType, &apos;mpegts&apos;) then  
      sFileExt := &apos;ts&apos;    
    else if SameText(mpFileType, &apos;mpeg&apos;) then
      sFileExt := &apos;mpg&apos;      
    else if MatchText(mpFileType, [&apos;matroska&apos;, &apos;matroska,webm&apos;]) then
      sFileExt := &apos;mkv&apos;
    else if SameText(mpFileType, &apos;asf&apos;) then  
      sFileExt := &apos;wmv&apos;    
    else begin  
      i := Pos(&apos;,&apos;, mpFileType);    
      if i &gt; 0 then    
        sFileExt := Copy(mpFileType, 1, i - 1)      
      else              
        sFileExt := mpFileType      
    end;    
    MimeType := HmsGetMimeType(sFileExt)
  end                                   
end.</TranscodingMimeTypeScript>
        <TranscodingMimeTypeSyntaxType>PascalScript</TranscodingMimeTypeSyntaxType>
        <TranscodingMode>0</TranscodingMode>
        <TranscodingParams>const
  csVideoLanParams = &apos;--no-crashdump --play-and-exit -Idummy --language en --demuxdump-file="&lt;OUTPUT FILE&gt;" --access=p2p_access "%s" :demux=dump&apos;;
var
  sInputFileName, sMediaResourceLink: string;  
begin
  sInputFileName := &apos;&lt;INPUT FILE&gt;&apos;;
  if InputFileName = &apos;-&apos; then begin
    sMediaResourceLink := HmsGetItemProperty(mpiMediaResourceLink);
    if Pos(&apos;--demuxdump-file&apos;, sMediaResourceLink) &gt; 0 then begin
      if not HmsRegExMatch(&apos;--access=p2p_access "(.*?)"&apos;, sMediaResourceLink, sInputFileName) then 
        HmsRegExMatch(&apos;"(.*?\.torrent)"&apos;, sMediaResourceLink, sInputFileName)
    end    
  end;
  TranscodingParams := Format(csVideoLanParams, [sInputFileName])  
end.</TranscodingParams>
        <TranscodingParamsSyntaxType>PascalScript</TranscodingParamsSyntaxType>
        <TranscodingProfile>AceStream (Входной поток)</TranscodingProfile>
        <TranscodingProfileActive>-1</TranscodingProfileActive>
        <TranscodingProfilePriority>16</TranscodingProfilePriority>
        <TranscodingProfileUuid>9b658aac-e270-40ba-9114-0ca9d833c2a1</TranscodingProfileUuid>
      </Profile>
    </TranscodingProfileList>
  </HmsTranscodingConfig>
</HmsMediaItem>
