3
51
165683c1-2fb0-4545-85f9-385133cba960
4B011F97-1151-45B1-A954-76BDFCAE746A
4
Tuchka TV
515
0
700
0
701
-1
702
-1
517
578-720,722-1080,482-576,402-480,322-400,202-320,0-200
518
0
512
0
532
0
553
1
522
0
570
0
245
165683c1-2fb0-4545-85f9-385133cba960
93
42242,9235293287
550
// Константы
const
csCommandLine = 'cmd://"%s" --no-crashdump --play-and-exit --language en -Idummy --dummy-quiet --demuxdump-file="<OUTPUT FILE>" vlc://pause:2 --access=p2p_access "%s" :demux=dump';
// Глобальные переменные
Var
gsEngine: string = RegistryRead("Software\\AceStream\\EnginePath");
gsParams: string = '--login "test" --password "test"'; // Параметры запуска ace_engine
gsLink, gsHtml: string;
///////////////////////////////////////////////////////////////////////////////
// Подготовка строки параметров gsParams (c указанными логином и паролем)
Procedure PrepareParams();
Begin
If mpPodcastAuthorizationUserName <> "" Then
gsParams := ReplaceStr(gsParams, '--login "test"', '--login "'+mpPodcastAuthorizationUserName+'"');
If mpPodcastAuthorizationPassword <> "" Then
gsParams := ReplaceStr(gsParams, '--password "test"', '--password "'+mpPodcastAuthorizationPassword+'"');
gsParams := gsParams + " " + mpPodcastParameters;
End;
///////////////////////////////////////////////////////////////////////////////
// Запуск команды в системе
Procedure RunCmd(sCmd: string);
Var
objShell: Variant;
Begin
Try objShell := CreateOleObject('WScript.Shell'); Except End;
If VarType(objShell)=varDispatch Then
objShell.Run(sCmd)
Else
HmsLogMessage(2, mpTitle+": Ошибка создания объекта ActiveX WScript.Shell для запуска командной строки.")
End;
///////////////////////////////////////////////////////////////////////////////
// Перезапуск ace_engine.exe
Procedure AceEngineRestart();
Begin
RunCmd("taskkill /f /im ace_engine.exe"); // Прибиваем все процессы ace_engine.exe
HmsSleep(2000); // Пауза в 2 сек
RunCmd(Format('"%s" %s', [gsEngine, gsParams])); // Запускаем ace_engine.exe с нужными параметрами
End;
///////////////////////////////////////////////////////////////////////////////
// Получение пути AceStream плеера
function GetTsPlayerPath: string;
var
sResult: string;
begin
sResult := IncludeTrailingBackslash(RegistryRead('Software\AceStream\InstallDir')) + 'Player\ace_player.exe';
Result := ExtractShortPathName(sResult);
if Result = '' then Result := sResult
end;
///////////////////////////////////////////////////////////////////////////////
// Г Л А В Н А Я П Р О Ц Е Д У Р А //
///////////////////////////////////////////////////////////////////////////////
Begin
HmsLogMessage(1, 'Открываем ' + mpTitle);
gsHtml := HmsDownloadURL(mpFilePath, "User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"+#10#13); // Загружаем главную страницу сайта
gsHtml := HmsUtf8Decode(gsHtml); // Переводим из юникода
gsHtml := HmsRemoveLineBreaks(gsHtml); // Удаляем переносы строк (чтобы не указывать PCRE_SINGLELINE в RegEx-ах)
HmsRegExMatch('<center><iframe scrolling="no" frameborder="0" src="(.*?)"', gsHtml, gsLink); // Выделяем ссылку на видео
If gsLink='' Then // Если ссылку не нашли, второй способ её получения
HmsRegExMatch('loadPlayer.*?"(.*?)", {autoplay', gsHtml, gsLink);
If (Pos('http', gsLink)<>0) AND (Pos('.acelive', gsLink)=0) Then Begin
// Ссылка является ссылкой на веб-страницу - загружаем данные по ней
gsHtml := HmsUtf8Decode(HmsDownloadURL(gsLink,"User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"+#10#13, true));
HmsLogMessage(1,'test'+gsHtml);
gsLink := '';
HmsRegExMatch('loadPlayer.*?"(.*?)"', gsHtml, gsLink); // Выделяем ссылку
End;
If gsLink <> '' Then
MediaResourceLink := Format(csCommandLine, [GetTsPlayerPath, gsLink])
Else Begin
AceEngineRestart();
gsHtml := HmsDownloadURL('https://studio.stupeflix.com/v/dpmnhU2yf55v/', '', True);
if not HmsRegExMatch('"([^"]+\.mp4)"', gsHtml, MediaResourceLink) Then
MediaResourceLink := ProgramPath+"\Presentation\Images\videook.mp4";
HmsLogMessage(2, "Не удалось найти ссылку или ID на канал вещания: "+mpTitle);
End;
//HmsLogMessage(1, MediaResourceLink);
End.
551
PascalScript
50
AceStream (ACEPLAYER - FFMPEG)
43
video/vnd.dlna.mpeg-tts
42
2
55
http://moja-skazka.ru/wp-content/uploads/2011/05/tuchka.png
-
51
45b87c96-af17-42a6-8960-e7ca02bf3cf0
http://tuchkatv.ru/
165683c1-2fb0-4545-85f9-385133cba960
515
1
512
2
532
1
700
2
553
2
42
3
701
-1
702
-1
517
578-720,722-1080,482-576,402-480,322-400,202-320,0-200
518
0
522
0
571
const
PCRE_CASELESS = $00000001;
PCRE_DOTALL = $00000004;
PCRE_SINGLELINE = PCRE_CASELESS + PCRE_DOTALL;
var
s,s1,s2,ini, file,kat,id,pap,pap1,mes,god,img: string;
j,i,aPercent,e,grp:Integer;
ItemsRegExpr,ItemsRegExpr1,ItemsRegExpr2,ItemsRegExpr3: TRegExpr;
sWebPage_,sWebPage_1,sWebPage,sWebPage1,sWebPage2,total,total1: string;
Item: THmsScriptMediaItem;
myYear, myMonth, myDay : Word;
k:byte;
kol: string;
kol_i,ka,kolS:integer;
sez_adr,sez_nazv:string;
sItemLink,s3,s4,s5,nazv: string;
t_na4,t_kon,t_pr:TDatetime;
Hour, Min, Sec, MSec: Word;
ACaption, APrompt, ADefault: string;
sc: THmsScriptMediaItem;
procedure serial(const aItemDescr: string); // поцедура выделение свойств фильмов aItemDescr -строка -результат поиска ItemsRegExpr1.Match между <li> и </li>
var // обьявление в процедуре
Item: THmsScriptMediaItem; // обьект Item из класса THmsScriptMediaItem -пункт в перечне фильмов
// строка
begin // начало процедуры
inc(kolS);
HmsRegExMatch('">(.*?)</', aItemDescr, s2); // в строку sItemLink вставить то что между (href=") и (") из aItemDescr .Пример: sItemLink = /trillery/23781-punkt-naznacheniya-5-final-destination-5-2011.html
// kat:=s2[1]; // Алфавит
kat := '\' + kat ;
HmsRegExMatch('href="(.*?)"', aItemDescr, s3);
// if (s2 = 'Сериалы') or (s2 = '- Русские сериалы') or (s2 = '- Зарубежные сериалы') or (s2 = 'Аниме') or (s2 = 'HQ качество') then //
if (s2 = 'HD') then
begin
s2:= '';
s3:= '';
end
else
begin
Item := Folderitem.AddFolder(kat,true).AddFolder('http://tuchkatv.ru' + s3, false); // Создаём подкаст (Сериал)
s2:=ReplaceStr(s2, '\',' ');
s2:=ReplaceStr(s2, '/',' ');
s2:=ReplaceStr(s2, '<br/>',' ');
s2 := Uppercase(s2) ;
Item[mpiTitle] := s2; // Название
// HmsRegExMatch('<img src="(.*?)"', aItemDescr, img);
//ShowMessage(img);
//exit;
// Item.Properties[mpiThumbnail] := 'http://tuchkatv.ru' +img ; //картинка
end;
end; // конец процедуры
begin
FolderItem.DeleteChildItems;
sWebPage1 := HmsDownloadURL(mpFilePath,"User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"+#10#13);
sWebPage1 :=HmsUtf8Decode (sWebPage1);
sWebPage1 :=HmsRemoveLineBreaks(sWebPage1);
HmsRegExMatch('<ul id="slidemenu" class="reset">(.*?)<div class="wwide footbg">', sWebPage1, sWebPage1);
ItemsRegExpr1 := TRegExpr.Create('<li>(.*?)</li>',PCRE_SINGLELINE); //создать объект с содерж. между кавычек
try
if ItemsRegExpr1.Search(sWebPage1) then repeat //искать в исх.строке объект и повторять
serial(ItemsRegExpr1.Match) //запускать процедуру получения свойств фильма каждый раз как найден объект
until not ItemsRegExpr1.SearchAgain;
finally
ItemsRegExpr1.Free;
end;
HmsHideInformation ;
// Hmslogmessage(1,'добавлено сериалов '+inttostr(kols));
end.
572
PascalScript
570
1
245
45b87c96-af17-42a6-8960-e7ca02bf3cf0
93
42242,9239712732
4
КАТЕГОРИИ
530
const
PCRE_CASELESS = $00000001;
PCRE_DOTALL = $00000004;
PCRE_SINGLELINE = PCRE_CASELESS + PCRE_DOTALL; //нужны для класса TRegExpr
var
jpg1,jpg,pap,id,kat,nazva: string; //объявляем строки
i,j,grp:Integer; //объявляем целые числа
ItemsRegExpr,ItemsRegExpr1: TRegExpr; //объявляем объект из класса TRegExpr
sWebPage,sWebPage1,total,total1: string; //объявляем строки
procedure ProcessItem1(const aItemDescr: string); // процедура обработки инфы о видео , aItemDescr -строка с инфой о видео
var
Item: THmsScriptMediaItem; //объявляем файл в списке медиафайлов
sItemLink1,sItemLink,s: string;
begin
HmsRegExMatch('href="(.*?)"', aItemDescr, sItemLink);
HmsRegExMatch('http://tuchkatv.ru/.*?-(.*?).html', sItemLink, nazva);
Item := HmsCreateMediaItem(sItemLink, FolderItem.ItemID);
// Item := HmsCreateMediaItem(sItemLink+'&n='+IntToStr(FolderItem.ChildCount), FolderItem.ItemID );
HmsRegExMatch('канал(.*?)онлайн', aItemDescr, sItemLink); //Смотреть
// ShowMessage(sItemLink);
if (Pos('http',sItemLink)<>0) then
sItemLink := nazva;
if sItemLink='' then
sItemLink := nazva;
sItemLink := Uppercase(sItemLink) ;
Item.Properties[mpiTitle] := sItemLink ;
HmsRegExMatch('/uploads(.*?)png', aItemDescr, jpg);
jpg1 := 'http://tuchkatv.ru/uploads' + jpg + 'png';
Item.Properties[mpiThumbnail] := jpg1;
end;
//Тут начинается сама программа
begin
FolderItem.DeleteChildItems; //удаляем список видеофайлов
HmsShowInformation(mptitle);
sWebPage1 := HmsDownloadURL(mpFilePath,"User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"+#10#13); //загружаем главную страницу сайта
sWebPage1 :=HmsUtf8Decode(sWebPage1); //переводим из уникода
sWebPage1 :=HmsRemoveLineBreaks(sWebPage1); //убираем переводы строки
HmsRegExMatch('<div id="midside" class="lcol">(.*?)<div id="sidebar" class="rcol">', sWebPage1, sWebPage1);
ItemsRegExpr1 := TRegExpr.Create('<div class="maincont">(.*?)<div class="clr">',PCRE_SINGLELINE); //создать объект с содерж. между кавычек (инфа о категории) искать между подстрокой (<li>) и (</li>)
try
if ItemsRegExpr1.Search(sWebPage1) then repeat //искать в исх.строке объект и повторять
// ShowMessage(ItemsRegExpr1.Match);
ProcessItem1(ItemsRegExpr1.Match) // запускать процедуру обработки категории каждый раз как найден объект ItemsRegExpr1.Match = aItemDescr
until not ItemsRegExpr1.SearchAgain;
finally
ItemsRegExpr1.Free //освободить объект
end ;
HmsHideInformation;
end.
531
PascalScript
-
53
261dbe3c4464fc404fa1f459f82034e3
http://tuchkatv.ru/razvlekatelnye/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
РАЗВЛЕКАТЕЛЬНЫЕ
93
42243,5408579282
525
43098,07181625
-
53
d966a3fea0ef906fd7b9ad26b654a8bc
http://tuchkatv.ru/poznavatelnye/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
ПОЗНАВАТЕЛЬНЫЕ
93
42243,5408579282
525
43098,0718197569
-
53
433fddfcda50b2e329ebfdf7c353c5d0
http://tuchkatv.ru/kino-serialy/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
КИНО, СЕРИАЛЫ
93
42243,5408579282
525
43098,0718228704
-
53
a263baaa04168cad5b8e0f9c5c0aba29
http://tuchkatv.ru/obschestvennye/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
ОБЩЕСТВЕННЫЕ
93
42243,5408579282
525
43098,0718263773
-
53
dfac16efd39de296f5759fbe73a74393
http://tuchkatv.ru/muzykalnye/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
МУЗЫКАЛЬНЫЕ
93
42243,5408579282
525
43098,071830081
-
53
97f3053a0be7a2b02097fdb2005d38f5
http://tuchkatv.ru/sportivnye/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
СПОРТИВНЫЕ
93
42243,5408579282
525
43098,0718334954
-
53
61e513b7fc95779bebb05f35bad9def0
http://tuchkatv.ru/novostnye/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
НОВОСТНЫЕ
93
42243,5408579282
525
43098,0718361111
-
53
1b68f407abc86141a010a2424057ab73
http://tuchkatv.ru/detskie/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
ДЕТСКИЕ
93
42243,5408579282
525
43098,0718385764
-
53
f856d65364f5b7469eba11cda23f519d
http://tuchkatv.ru/regionalnye/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
РЕГИОНАЛЬНЫЕ
93
42243,5408579282
525
43098,0718412963
-
53
7efe363344781686471d1031f1a2f576
http://tuchkatv.ru/religioznye/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
РЕЛИГИОЗНЫЕ
93
42243,5408579282
525
43098,0718431829
-
53
30e02830633456f4e5893325f79dd68c
http://tuchkatv.ru/18/
45b87c96-af17-42a6-8960-e7ca02bf3cf0
515
2
512
2
532
2
700
2
553
2
42
3
4
18+
93
42243,5408579282
525
43098,0718456134
95
2
701
-1
702
-1
517
578-720,722-1080,482-576,402-480,322-400,202-320,0-200
518
0
522
0
245
30e02830633456f4e5893325f79dd68c
-
53
ada5988e-7e57-4c90-b770-a60bf877c62d
http://tuchkatv.ru/hd
165683c1-2fb0-4545-85f9-385133cba960
515
1
512
2
532
1
700
2
553
2
42
3
4
HD КАНАЛЫ
701
-1
702
-1
517
578-720,722-1080,482-576,402-480,322-400,202-320,0-200
518
0
522
0
245
ada5988e-7e57-4c90-b770-a60bf877c62d
93
42243,3496395718
530
const
PCRE_CASELESS = $00000001;
PCRE_DOTALL = $00000004;
PCRE_SINGLELINE = PCRE_CASELESS + PCRE_DOTALL; //нужны для класса TRegExpr
var
jpg1,jpg,pap,id,kat,nazva: string; //объявляем строки
i,j,grp:Integer; //объявляем целые числа
ItemsRegExpr,ItemsRegExpr1: TRegExpr; //объявляем объект из класса TRegExpr
sWebPage,sWebPage1,total,total1: string; //объявляем строки
procedure ProcessItem1(const aItemDescr: string); // процедура обработки инфы о видео , aItemDescr -строка с инфой о видео
var
Item: THmsScriptMediaItem; //объявляем файл в списке медиафайлов
sItemLink1,sItemLink,s: string;
begin
HmsRegExMatch('href="(.*?)"', aItemDescr, sItemLink);
HmsRegExMatch('http://tuchkatv.ru/.*?-(.*?).html', sItemLink, nazva);
Item := HmsCreateMediaItem(sItemLink, FolderItem.ItemID);
// Item := HmsCreateMediaItem(sItemLink+'&n='+IntToStr(FolderItem.ChildCount), FolderItem.ItemID );
HmsRegExMatch('канал(.*?)онлайн', aItemDescr, sItemLink); //Смотреть
// ShowMessage(sItemLink);
if (Pos('http',sItemLink)<>0) then
sItemLink := nazva;
if sItemLink='' then
sItemLink := nazva;
sItemLink := Uppercase(sItemLink) ;
Item.Properties[mpiTitle] := sItemLink ;
HmsRegExMatch('/uploads(.*?)png', aItemDescr, jpg);
jpg1 := 'http://tuchkatv.ru/uploads' + jpg + 'png';
Item.Properties[mpiThumbnail] := jpg1;
end;
//Тут начинается сама программа
begin
FolderItem.DeleteChildItems; //удаляем список видеофайлов
HmsShowInformation(mptitle);
sWebPage1 := HmsDownloadURL(mpFilePath,"User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"+#10#13); //загружаем главную страницу сайта
sWebPage1 :=HmsUtf8Decode(sWebPage1); //переводим из уникода
sWebPage1 :=HmsRemoveLineBreaks(sWebPage1); //убираем переводы строки
HmsRegExMatch('<div id="midside" class="lcol">(.*?)<div id="sidebar" class="rcol">', sWebPage1, sWebPage1);
ItemsRegExpr1 := TRegExpr.Create('<div class="maincont">(.*?)<div class="clr">',PCRE_SINGLELINE); //создать объект с содерж. между кавычек (инфа о категории) искать между подстрокой (<li>) и (</li>)
try
if ItemsRegExpr1.Search(sWebPage1) then repeat //искать в исх.строке объект и повторять
// ShowMessage(ItemsRegExpr1.Match);
ProcessItem1(ItemsRegExpr1.Match) // запускать процедуру обработки категории каждый раз как найден объект ItemsRegExpr1.Match = aItemDescr
until not ItemsRegExpr1.SearchAgain;
finally
ItemsRegExpr1.Free //освободить объект
end ;
HmsHideInformation;
end.
531
PascalScript
525
43098,0718493056
-
53
64832dfe-9755-4ed5-9b54-f9b2fe11b6a5
165683c1-2fb0-4545-85f9-385133cba960
515
2
512
2
532
2
700
2
553
2
42
3
4
ИЗБРАННОЕ
701
-1
702
-1
517
578-720,722-1080,482-576,402-480,322-400,202-320,0-200
518
0
522
0
245
64832dfe-9755-4ed5-9b54-f9b2fe11b6a5
93
42243,3532790741
525
43098,0718493056
HMSMPEG
hmsmpeg.exe
http://www.ffmpeg.org/
HmsMPEG
Hmsmpeg.exe
http://www.ffmpeg.org/
hmsMPEG
hmsmpeg.exe
http://www.ffmpeg.org/
HMSMPEG
PascalScript
Транскодирование для TorrentStream, AceStream медиа-ресурсов
3
cfgTranscodingVideoMimeType
PascalScript
1
const
csVlcParams = '-Idummy --language en vlc://pause:2 --demuxdump-file="%s" --access=p2p_access "%s" :demux=dump';
var
sFileType, sInputFileName, sMediaResourceLink, sReadPipeName, sWritePipeName, sTranscodingParams: string;
begin
TranscodingResult := False;
sInputFileName := InputFileName;
if sInputFileName = '-' then begin
sMediaResourceLink := HmsGetItemProperty(mpiMediaResourceLink);
if Pos('--demuxdump-file', sMediaResourceLink) > 0 then begin
if not HmsRegExMatch('--access=p2p_access "(.*?)"', sMediaResourceLink, sInputFileName) then
HmsRegExMatch('"(.*?\.torrent)"', sMediaResourceLink, sInputFileName)
end
end;
if HmsCreateDualPipe(sReadPipeName, sWritePipeName) then begin
if HmsTranscodingExecute('ACEPLAYER', Format(csVlcParams, [sWritePipeName, sInputFileName]), False) then begin
if mpFileType <> '' then
sFileType := '-f "' + mpFileType + '" '
else
sFileType := '';
mpInternetItem := False;
sTranscodingParams := HmsTranscodingProfileParams('Фильмы (основной)');
sTranscodingParams := ReplaceStr(sTranscodingParams, '<HMSMPEG> ', sFileType);
sTranscodingParams := ReplaceStr(sTranscodingParams, '<INPUT FILE>', sReadPipeName);
sTranscodingParams := sTranscodingParams + ' "' + OutputFileName + '"';
TranscodingResult := HmsTranscodingExecute('HMSMPEG', sTranscodingParams, True)
end
end
end.
PascalScript
AceStream (ACEPLAYER - FFMPEG)
-1
23
09d8f390-166e-4b6d-88cf-64820cf53475