<?xml version="1.0" encoding="utf-8"?>
<HmsMediaItem>
  <MediaType>3</MediaType>
  <ClassID>53</ClassID>
  <ItemID>0c189586-ac4a-4e33-8912-80bc12095ccf</ItemID>
  <ItemPath>http://www.vipsop.su/</ItemPath>
  <ParentID>234DF17B-418C-4FDC-9DFE-CD0C586D2E76</ParentID>
  <Properties>
    <Property>
      <ID>4</ID>
      <Value>Vipsop</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>530</ID>
      <Value>///////////////////////////////////////////////////////////////////////////////
//               Г Л О Б А Л Ь Н Ы Е   П Е Р Е М Е Н Н Ы Е                   //
int       gnItemsAdded = 0;
string    gsUrlBase    = mpFilePath; 
TDateTime gTimeStart   = Now; 

// Регулярные выражения для поиска на странице блоков с информацией о сериалах
string
  gsPatternBlock  = &apos;&lt;div\\s+class="tv-list-block\\sffl"&gt;(.*?)&lt;\\/p&gt;\\s+&lt;\\/div&gt;&apos;,  // Блоки, содержащие нужную информацию
  gsPatternBlock2 = &apos;&lt;div\\s+class="tv"&gt;(.*?)&lt;\\/div&gt;\\s*&lt;\\!-- \\/edit-text --&gt;&apos;,  // Блоки, содержащие нужную информацию
  gsPatternCut    = &apos;&lt;div\\s+class="main-center\\sffl"&gt;(.*?)\\/tv-list --&gt;&apos;,      // Выражение для вырезки нужного куска из html для поиска ссылок в нём
  gsPatternTitle  = &apos;&lt;p&gt;\\[\\d+\\](.*?)&lt;/p&gt;&apos;,                       // Название
  gsPatternLink   = &apos;&lt;a[^&gt;]+href="\\.\\.\\/(.*?)"&apos;,           // Ссылка
  gsPatternLink2  = &apos;&lt;iframe scrolling="no" frameborder="0" src="(.*?)"&apos;,
  gsPatternLink3  = &apos;loadPlayer\\("(.*?)"&apos;,
  gsPatternImg    = &apos;&lt;img[^&gt;]+src="(.*?)"&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="") {
  THmsScriptMediaItem Item = HmsCreateMediaItem(sLink, Folder.ItemID, "");
  Item[mpiTitle     ] = sTitle;
  Item[mpiCreateDate] = VarToStr(IncTime(gTimeStart,0,-gnItemsAdded,0,0));
  Item[mpiTimeLength] = 4800;
  Item[mpiThumbnail ] = sImg;
  Item[mpiComment   ] = sComment;
  Item[mpiInternetItem] = true;
  gnItemsAdded++;
  return Item;
}

// -------------------- Загрузка страниц, поиск и создание ссылок на видео ----
void CreateLinks() {
  string sHtml, sHtml2, sData, sName, sLink, sLink2, sImg, sGrp, sComment; TRegExpr RE; 
  THmsScriptMediaItem Item, Folder = FolderItem; bool bGroup=false; 

  // Загружаем страницу
  sHtml = HmsDownloadURL(mpFilePath, &apos;Referer: &apos;+gsUrlBase, true);

  // Убираем переносы, чтобы далее в 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=""; sLink=""; sImg="";
      HmsRegExMatch(gsPatternTitle, RE.Match + &apos;&lt;/p&gt;&apos;, sName); // Название
      HmsRegExMatch(gsPatternLink , RE.Match, sLink);          // Ссылка на сериал
      HmsRegExMatch(gsPatternImg  , RE.Match, sImg );          // Картинка
      if (Length(sLink) &lt; 4) continue;
    
      // Приводим в порядок полученные данные
      sLink = HmsExpandLink(sLink, gsUrlBase)+&apos;/&apos;;
      sName = HmsHtmlToText(sName);     
      sName = ReplaceStr(sName, "\n", " ");
      sName = ReplaceStr(sName, "\r", "");
      if (sImg) sImg = HmsExpandLink(sImg, gsUrlBase);

      // Загружаем страницу с описанием телеканала
      sHtml2 = HmsRemoveLineBreaks(HmsUtf8Decode(HmsDownloadURL(sLink, &apos;Referer: &apos;+gsUrlBase, true)));
      HmsRegExMatch(gsPatternBlock2, sHtml2, sHtml2);
      HmsRegExMatch(gsPatternComment, sHtml2, sComment ); // Комментарий
      sComment = HmsHtmlToText(sComment);     
      HmsRegExMatch(gsPatternLink2, sHtml2, sLink2 ); // Ссылка на торрент-тв

      // Загружаем страницу с плейером торрент тв
      sHtml2 = HmsRemoveLineBreaks(HmsUtf8Decode(HmsDownloadURL(sLink2, &apos;Referer: &apos;+sLink, true)));
      HmsRegExMatch(gsPatternLink3, sHtml2, sLink ); // идентификатор AceStream
      
      if (bGroup) {
        // Группируем по-алфавиту  
        sGrp = GetGroupName(sName);
        Folder = CreateFolder(FolderItem, sGrp);
      }
      
      // Создаём ресурс
      //CreateFolder(Folder, sLink, sName, sImg, sComment);
      AddMediaItem(Folder, sLink, sName, sImg, sComment);

    } while (RE.SearchAgain()); // Ищем пока ищется

  } finally { RE.Free(); }      // Освобождаем объекты из памяти

  if (bGroup) FolderItem.Sort("mpTitle");
}

///////////////////////////////////////////////////////////////////////////////
//                      Г Л А В Н А Я   П Р О Ц Е Д У Р А                    //
// ----------------------------------------------------------------------------
{
  FolderItem.DeleteChildItems(); // Удаление существующих ссылок
  CreateLinks();                 // Загрузка страницы, поиск и создание ссылок

  HmsLogMessage(1, mpTitle+&apos;: Создано ссылок - &apos;+IntToStr(gnItemsAdded));
}</Value>
    </Property>
    <Property>
      <ID>531</ID>
      <Value>C++Script</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>0c189586-ac4a-4e33-8912-80bc12095ccf</Value>
    </Property>
    <Property>
      <ID>93</ID>
      <Value>42355,9779820602</Value>
    </Property>
    <Property>
      <ID>525</ID>
      <Value>42358,7940860417</Value>
    </Property>
    <Property>
      <ID>41</ID>
      <Value>Спортивное on-line телевидение VIPSOP.su. Бесплатный просмотр прямых трансляций спортивных событий, как в высоком качестве (HD), так и в стандартном (SD)</Value>
    </Property>
    <Property>
      <ID>55</ID>
      <Value>http://www.vipsop.su/logo.png</Value>
    </Property>
    <Property>
      <ID>43</ID>
      <Value>video/mpeg</Value>
    </Property>
    <Property>
      <ID>50</ID>
      <Value>AceStream (ACEPLAYER - FFMPEG)</Value>
    </Property>
  </Properties>
  <HmsTranscodingConfig>
    <TranscoderList>
      <Transcoder>
        <Name>HMSMPEG</Name>
        <Path>hmsmpeg.exe</Path>
        <HomePage>http://www.ffmpeg.org/</HomePage>
        <Download></Download>
      </Transcoder>
      <Transcoder>
        <Name>HmsMPEG</Name>
        <Path>Hmsmpeg.exe</Path>
        <HomePage>http://www.ffmpeg.org/</HomePage>
        <Download></Download>
      </Transcoder>
      <Transcoder>
        <Name>hmsMPEG</Name>
        <Path>hmsmpeg.exe</Path>
        <HomePage>http://www.ffmpeg.org/</HomePage>
        <Download></Download>
      </Transcoder>
    </TranscoderList>
    <TranscodingProfileList>
      <Profile>
        <TranscoderName>HMSMPEG</TranscoderName>
        <TranscodingCondition></TranscodingCondition>
        <TranscodingConditionSyntaxType>PascalScript</TranscodingConditionSyntaxType>
        <TranscodingComment></TranscodingComment>
        <TranscodingFolder>Транскодирование для TorrentStream, AceStream медиа-ресурсов</TranscodingFolder>
        <TranscodingMediaType>3</TranscodingMediaType>
        <TranscodingMimeType>video/mpeg</TranscodingMimeType>
        <TranscodingMimeTypeScript>begin
HmsLogMessage(1, &apos;cfgTranscodingFileFormat: &apos;+ cfgTranscodingFileFormat);
  if SameText(cfgTranscodingFileFormat, &apos;MPEG (DVD)&apos;) then
    FileExt := &apos;mpg&apos;
  else if Pos(&apos;MPEGTS&apos;, cfgTranscodingFileFormat) &gt; 0 then
    FileExt := &apos;ts&apos;
  else if Pos(&apos;ASF&apos;, cfgTranscodingFileFormat) &gt; 0 then
    FileExt := &apos;wmv&apos;
  else if SameText(cfgTranscodingFileFormat, &apos;MP4&apos;) then
    FileExt := &apos;mp4&apos;
  else if SameText(cfgTranscodingFileFormat, &apos;MPEG1&apos;) then
    FileExt := &apos;mpeg&apos;
  else
    FileExt := &apos;&apos;;    
  if FileExt &lt;&gt; &apos;&apos; then
    MimeType := HmsGetMimeType(FileExt)    
  else            
    MimeType := &apos;&apos;
//cfgTranscodingVideoMimeType
end.</TranscodingMimeTypeScript>
        <TranscodingMimeTypeSyntaxType>PascalScript</TranscodingMimeTypeSyntaxType>
        <TranscodingMode>1</TranscodingMode>
        <TranscodingParams>const
  csVlcParams = &apos;-Idummy --language en vlc://pause:2 --demuxdump-file="%s" --access=p2p_access "%s" :demux=dump&apos;;  
var
  sFileType, sInputFileName, sMediaResourceLink, sReadPipeName, sWritePipeName, sTranscodingParams: string;    
begin
  TranscodingResult := False;
  sInputFileName := InputFileName;
  HmsLogMessage(1, &apos;Start transcoding &apos;+InputFileName+&apos; @ &apos;+HmsGetItemProperty(mpiMediaResourceLink));
  if sInputFileName = &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 else begin 
      sInputFileName := HmsGetItemProperty(mpiMediaResourceLink);   
    end;
  end;      
  if HmsCreateDualPipe(sReadPipeName, sWritePipeName) then begin
    if HmsTranscodingExecute(&apos;ACEPLAYER&apos;, Format(csVlcParams, [sWritePipeName, sInputFileName]), False) then begin    
      if mpFileType &lt;&gt; &apos;&apos; then      
        sFileType := &apos;-f "&apos; + mpFileType + &apos;" &apos;
      else                          
        sFileType := &apos;&apos;;
      mpInternetItem := False;
      sTranscodingParams := HmsTranscodingProfileParams(&apos;Фильмы (основной)&apos;);
      sTranscodingParams := ReplaceStr(sTranscodingParams, &apos;&lt;HMSMPEG&gt; &apos;, sFileType);          
      sTranscodingParams := ReplaceStr(sTranscodingParams, &apos;&lt;INPUT FILE&gt;&apos;, sReadPipeName);      
      sTranscodingParams := sTranscodingParams + &apos; "&apos; + OutputFileName + &apos;"&apos;;
      TranscodingResult := HmsTranscodingExecute(&apos;HMSMPEG&apos;, sTranscodingParams, True)          
    end 
  end 
end.</TranscodingParams>
        <TranscodingParamsSyntaxType>PascalScript</TranscodingParamsSyntaxType>
        <TranscodingProfile>AceStream (ACEPLAYER - FFMPEG)</TranscodingProfile>
        <TranscodingProfileActive>-1</TranscodingProfileActive>
        <TranscodingProfilePriority>37</TranscodingProfilePriority>
        <TranscodingProfileUuid>09d8f390-166e-4b6d-88cf-64820cf53475</TranscodingProfileUuid>
      </Profile>
    </TranscodingProfileList>
  </HmsTranscodingConfig>
</HmsMediaItem>
