31

Re: Создание подкаста на примере stereotraker.ru

Leshiy71 пишет:

Не пойму где  нужно встать на саму эту ссылку (выделить мышкой) и нажать Alt+4
ничего не реагирует.

+ анимация выделения нужной ссылки, для отладки скрипта получения ссылки на медиа-ресурс

Leshiy71 пишет:

При наведении мышки на mpFilePath сначала отображалась ссылка и в sHtml отображался код, но ошибку писало в последней строчке.
Сейчас закрыл скрипт, открыл заново и уже ничего не отображает.

Отображать значение переменных при наведении мышкой он может только в режиме отладки (когда нажимаем F8 и по шагам выполняем и, естественно, только после присвоения этим переменным значения)

Кстати, в HMSEditor, чтобы он показывал значение при отладке при наведении мышкой, нужно перед этим открыть и закрыть окно "Вычислить выражение" (кнопки снизу). Он иногда и сам может открыть-закрыть, но не всегда.

Leshiy71 пишет:

И не понял надо вставлять сюда http://stereotraker.ru/ промеж кавычек ?
sHtml := HmsDownloadURL(mpFilePath, "", True); // Скачиваем страницу сайта в переменную sHtml

Нет. Страница скачивается по адресу, указанному в первом параметре, т.е. в mpFilePath. Какой адрес в этой переменной хранится, по тому и будет скачана страница.
mpFilePath - это встроенная переменная. Хранит значение ссылки текущего элемента базы данных (а в ней, в нашем случае, ссылка на страницу фильма должна быть).

Sony Bravia KDL-32CX523

32

Re: Создание подкаста на примере stereotraker.ru

Ну вроде сейчас скрипт без ошибок исполняется,
сохраняется торрент во временную папку sFile
D:\Временные файлы HMS\HmsTemp\\3ab783fea66679aeb37d9784189236ce.torrent,
но пришли к той же непонятной проблеме, потому что ссылка sLink
HMS http://stereotraker.ru/engine/download.php?id=1571
обманная ссылка и нам создаёт не правильный торрент, который через AcePlayer не запускается, а через mTorrent пишет :
невозможно загрузить - торрент закодирован не верно.

Надо дальше ломать голову, как получить ссылку на настоящий торрент.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

33

Re: Создание подкаста на примере stereotraker.ru

Leshiy71 пишет:

HMS http://stereotraker.ru/engine/download.php?id=1571
обманная ссылка и нам создаёт не правильный торрент, который через AcePlayer не запускается, а через mTorrent пишет :
невозможно загрузить - торрент закодирован не верно.

Надо дальше ломать голову, как получить ссылку на настоящий торрент.

Настоящий торрент мы уже получили и скачали, вот он:
D:\Временные файлы HMS\HmsTemp\\3ab783fea66679aeb37d9784189236ce.torrent

+ Кстати

раз там двойной слеш встречается (лишний), тогда в строке:

sFile := HmsTranscodingTempDirectory+"\"+PodcastItem.ItemID+".torrent";

можно убрать +"\"

sFile := HmsTranscodingTempDirectory+PodcastItem.ItemID+".torrent";

Вот его мы и можем подставлять всяким плеерам, умеющим с ними работать. Хоть в MuTorrent или qBitTorrent вставлять.
Хм.. чёт у меня торрены этих фильмов не качаются толком, видимо, плохо раздают.

Sony Bravia KDL-32CX523

34

Re: Создание подкаста на примере stereotraker.ru

Убрал +"\", после запуска скрипта на мультах головоломка и миньоны, у меня создаются торренты в
D:\Временные файлы HMS\HmsTemp
но запускаться отказываются, везде ошибку пишет и AcePlayer и mTorrent.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

35

Re: Создание подкаста на примере stereotraker.ru

Можете открыть в любом редакторе скачанные торренты и посмотреть на первые символы?
Там должны данные начинаться с "d8:announce".

P.S. Приведите код скрипта, который у вас получился.

Sony Bravia KDL-32CX523

36

Re: Создание подкаста на примере stereotraker.ru

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>3D торрент трекер  - stereotraker.ru</title>
<meta name="description" content="3D торрент трекер специализирующиеся на 3D торрент файлах, у нас Вы всегда сможете найти фильмы 3d скачать торрент" />
<meta name="keywords" content="3d торрент, 3d скачать торрент, 3d через торрент, 3d скачать бесплатно торрент, скачать 3d бесплатно через торрент ,3d бесплатно через торрент" />
                                                                                                                                                                                                           
<link rel="search" type="application/opensearchdescription+xml" href="http://stereotraker.ru/engine/opensearch.php" title="3D торрент" />
<link rel="alternate" type="application/rss+xml" title="3D торрент" href="http://stereotraker.ru/rss.xml" />
<link rel="icon" href="/templates/default/images/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="/templates/default/images/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="/engine/classes/min/index.php?f=/templates/default/css/style.css,/templates/default/css/engine.css" />
<meta name='wmail-verification' content='05cb88019fb77b4a' />
<meta name='yandex-verification' content='44b16c22b07301dc' />
<link media="screen" href="/templates/default/icomm/style.css" type="text/css" rel="stylesheet" />
<meta name="google-site-verification" content="6LfieSZU3ZXFpGqEveD8QYYfiqlh8ZKA5_wNg99DoyA" />

</head>

<body>

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

37

Re: Создание подкаста на примере stereotraker.ru

Вот скрипт

Var
  gsUrlBase: String = "http://stereotraker.ru";
  sHtml, sLink, sFile: String;
///////////////////////////////////////////////////////////////////////////////
//                     Г Л А В Н А Я    П Р О Ц Е Д У Р А                    //
Begin
 
  sHtml := HmsDownloadURL(mpFilePath, "", True); // Скачиваем страницу сайта в переменную sHtml
  sHtml := HmsRemoveLineBreaks(sHtml); // Убираем переносы строк - облегчает работу с регулярными выражениями, чтобы не писать дополнительные флаги. Кстати, именно тут это не обязательно.
  HmsRegExMatch('(http://stereotraker.ru/engine/download.php\?id=\d+)', sHtml, sLink); // С помощью регулярного выражения ищем совпадения и всё что попадёт в скобках, занесётся в переменную sLink. Тут \d+ означает "любые цифры".
  sFile := HmsTranscodingTempDirectory+PodcastItem.ItemID+".torrent"; // Формируем путь и имя файла (PodcastItem.ItemID - чтобы быть просто уникальным)
  HmsDownloadURLToFile(sLink, sFile); // Скачиваем по указанной ссылке в указанный файл.
End.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

38

Re: Создание подкаста на примере stereotraker.ru

Код HTML в торрент файле - означает, что вместо файла по ссылке скачалась страница сайта.
Такое бывает. Сайты защищают свой контент и часто не дают так просто скачивать файлы по своим ссылкам сторонним ресурсам.

В сообщении раньше я и описывал эту ситуацию.
Сайт разрешает скачивать файлы с их ресурса только когда по ссылке перешли с их же сайта.
Скорее всего, они проверяют HTTP заголовок "Referer", который содержит адрес, откуда мы перешли.

Поэтому нужно задавать дополнительные параметры функциям скачивающим с их сайта файлов.
В функции HmsDownloadURL - это второй параметр (изначально стоял "")
В функции HmsDownloadURLToFile - это третий параметр (был вообще не указан).

Значит,  нужно добавить переменную sHeaders и указать в ней этот заголовок и что, типа мы перешли со страницы фаильма:

sHeaders := "Referer: "+mpFilePath+#13#10;

а в функциях указать эти заголовки:

sHtml := HmsDownloadURL(mpFilePath, sHeaders, True);
...
HmsDownloadURLToFile(sLink, sFile, sHeaders);

Мы же помним, что mpFilePath содержит ссылку на страницу фильма. Поэтому мы формируем заголовки и в Referer ставим страницу этого фильма.
Вот такие мы обманщики.

P.S.: не забудьте объявить переменную sHeaders в начале после Var.

Sony Bravia KDL-32CX523

39

Re: Создание подкаста на примере stereotraker.ru

А куда вставлять ? после BEGIN  добавляю  или в 1 строчку или в последнюю, везде ошибка синтаксиса.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

40

Re: Создание подкаста на примере stereotraker.ru

Leshiy71 пишет:

А куда вставлять ? после BEGIN  добавляю  или в 1 строчку или в последнюю, везде ошибка синтаксиса.

Что именно? Объявление переменной или строки? Короче, примерно так:

Var
  gsUrlBase: String = "http://stereotraker.ru";
  sHeaders, sHtml, sLink, sFile: String; // Объявление переменных с типом String - строка

///////////////////////////////////////////////////////////////////////////////
//                     Г Л А В Н А Я    П Р О Ц Е Д У Р А                    //
Begin
  sHeaders := "Referer: "+mpFilePath+#13#10;
  sHtml := HmsDownloadURL(mpFilePath, sHeaders, True);
  sHtml := HmsRemoveLineBreaks(sHtml);
  HmsRegExMatch('(http://stereotraker.ru/engine/download.php\?id=\d+)', sHtml, sLink);
  sFile := HmsTranscodingTempDirectory+PodcastItem.ItemID+".torrent";
  HmsDownloadURLToFile(sLink, sFile, sHeaders);

End.
Sony Bravia KDL-32CX523

41

Re: Создание подкаста на примере stereotraker.ru

Но код выше - это не весь код. Просто я жду пока получится и будет всё понятно на этом этапе. Потом нужно сформировать будет ссылку для запуска AceStream.

Sony Bravia KDL-32CX523

42

Re: Создание подкаста на примере stereotraker.ru

Круто ! Заработало !
Я думал здесь без авторизации не обойтись.
Сейчас в начале торрента появились d8:announce43
Попробовал головоломку и миньоны, за несколько секунд у меня трафик раскочегаривается до 80 мбит, показ самих мультов у меня где то через 15-20 сек начинается, и даже попробовал перемотку - тоже срабатывает, если у кого быстрый инет и телек успеет дождаться. (может для этого придётся заморочиться с выставлением правильного времени для фильмов).

А сейчас надо как то принудительно указать для подкаста - обязательный запуск AceStream для ссылок.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

43

Re: Создание подкаста на примере stereotraker.ru

Я добавил шаблонов сегодня на GitHub. Но, т.к. HMSEditor проверяет обновления максимум раз в день, то попрошу вас сделать следующее:
Найдите файл HMSEditor.ini (в Windows 7 он в C:\ProgramData\HMSEditor\, в XP C:\Document and settings\All users\Application data\HMSEditor\), откройте для редактирования чем-нибудь и там удалите строки

[Common]
TemplateLastCheck = 2015.11.07
TemplateLastUpdate = 2015-11-07T08:52:24Z

Это запомненные даты, когда последний раз проверялись обновления шаблонов.
Потом закройте окно редактирования скриптов, если оно открыто, и заново его откройте. Через 5 сек у вас, по-идее, должны обновиться шаблоны и в редакторе станет возможно выбрать шаблон "Функция получения ссылки torrent AceStream".

Вот эту функцию нужно вставить перед главной процедурой.
А в главной процедуре, в самом конце вызвать эту функцию, в качестве параметра передать переменную, которая содержить путь до файла torrent.

Короче, должно получиться что-то типа этого:

Var
  gsUrlBase: String = "http://stereotraker.ru";
  sHeaders, sHtml, sLink, sFile: String;

// ---- Получение ссылки на ресурс из torrent файла через AceStream -----------
Procedure GetLink_AceStreamTorrent(sFile: String);
Var
  sCmd, sPlayer: String;
Begin
  sCmd    := 'cmd://"%s" --no-crashdump --play-and-exit --language en -Idummy --demuxdump-file="<OUTPUT FILE>" vlc://pause:4 --access=p2p_access "%s" :demux=dump';
  sPlayer := ExtractShortPathName(RegistryRead('Software\AceStream\InstallDir'))+'\Player\ace_player.exe';
  MediaResourceLink := Format(sCmd, [sPlayer, sFile]);
End;

///////////////////////////////////////////////////////////////////////////////
//                     Г Л А В Н А Я    П Р О Ц Е Д У Р А                    //
Begin
  sHeaders := "Referer: "+mpFilePath+#13#10;
  sHtml := HmsDownloadURL(mpFilePath, sHeaders, True);
  sHtml := HmsRemoveLineBreaks(sHtml);
  HmsRegExMatch('(http://stereotraker.ru/engine/download.php\?id=\d+)', sHtml, sLink);
  sFile := HmsTranscodingTempDirectory + PodcastItem.ItemID + ".torrent";
  HmsDownloadURLToFile(sLink, sFile, sHeaders);
  GetLink_AceStreamTorrent(sFile);

End.
Sony Bravia KDL-32CX523

44

Re: Создание подкаста на примере stereotraker.ru

Шеф ! Мы пропали ! Ничего не работает !

Сделал всё по инструкции в скрипте, ошибок синтаксиса и при выполнении нет, но не происходит автозапуск Ace Playera ни с транскодом ни без транскода т.е. при запуске с телека фильма - создаётся торрент во временной папке HMS и всё глухо. Сам торрент вручную через Ace Plaer запускается нормально.
Специально проверил запуск фильмов с подкаста Торрент ТВ с папки фильмы - там при запуске сразу появляется консольное окно Ace Playera, идёт закачка файла в кеш AceStream (D:\_acestream_cache_), а оттуда если без транскода то сразу на телек, а если через транскод то ещё сохраняется в D:\Временные файлы HMS\HmsTemp, а оттуда на телек.
А у нас только торрент сохраняется в D:\Временные файлы HMS\HmsTemp и всё глухо, потому что нет автозапуска Ace Playera.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

45

Re: Создание подкаста на примере stereotraker.ru

Закежте получившийся скрипт. Или в отладчике по шагам пройдите всё и напишите сюда результат, что получился в переменной MediaResourceLink в конце процедуры GetTorrentMediaResourceLink.

Sony Bravia KDL-32CX523

46

Re: Создание подкаста на примере stereotraker.ru

Var
  gsUrlBase: String = "http://stereotraker.ru";
  sHeaders, sHtml, sLink, sFile: String;
 
  // ---- Получение ссылки на ресурс из torrent файла через AceStream -----------
Procedure GetLink_AceStreamTorrent(sFile: String);
Var
  sCmd, sPlayer: String;
Begin
  sCmd    := 'cmd://"%s" --no-crashdump --play-and-exit --language en -Idummy --demuxdump-file="<OUTPUT FILE>" vlc://pause:4 --access=p2p_access "%s" :demux=dump';
  sPlayer := ExtractShortPathName(RegistryRead('Software\AceStream\InstallDir'))+'\Player\ace_player.exe';
  MediaResourceLink := Format(sCmd, [sPlayer, sFile]);
End;
 
 
///////////////////////////////////////////////////////////////////////////////
//                     Г Л А В Н А Я    П Р О Ц Е Д У Р А                    //
Begin
 
  sHeaders := "Referer: "+mpFilePath+#13#10;
  sHtml := HmsDownloadURL(mpFilePath, sHeaders, True); // Скачиваем страницу сайта в переменную sHtml
  sHtml := HmsRemoveLineBreaks(sHtml); // Убираем переносы строк - облегчает работу с регулярными выражениями, чтобы не писать дополнительные флаги. Кстати, именно тут это не обязательно.
  HmsRegExMatch('(http://stereotraker.ru/engine/download.php\?id=\d+)', sHtml, sLink); // С помощью регулярного выражения ищем совпадения и всё что попадёт в скобках, занесётся в переменную sLink. Тут \d+ означает "любые цифры".
  sFile := HmsTranscodingTempDirectory+PodcastItem.ItemID+".torrent"; // Формируем путь и имя файла (PodcastItem.ItemID - чтобы быть просто уникальным)
  HmsDownloadURLToFile(sLink, sFile, sHeaders); // Скачиваем по указанной ссылке в указанный файл.

End.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

47

Re: Создание подкаста на примере stereotraker.ru

) В конце не хватает вызова функции GetLink_AceStreamTorrent.

В главной процедуре, после команды HmsDownloadURLToFile(...
должна же быть вызвана та самая главная функция формирования команды запуска. Сама функция у вас есть (которую вы ставили из шаблона), а вызова её нет.
Добавьте

GetLink_AceStreamTorrent(sFile);
Sony Bravia KDL-32CX523

48

Re: Создание подкаста на примере stereotraker.ru

Всё отлично.
Пару нюансов
Никак не получается сделать сортировку фильмов как на сайте, пробовал на подкаст выставлять и mpAddDate и mpCreateDate всё не совпадает, охота чтобы самые новые были на телеке самыми первыми.
Создал папки из раздела Топ 100
  Item := FolderItem.AddFolder(gsUrlBase+"/?do=top100&mode=rating/");
  Item.Properties[mpiTitle] := "Топ 100 3D по рейтингу";
но обновляют только по 4 фильма, а на сайте как положено. Без авторизации что ли поиск не работает ?

Не знаю как получился у меня такой косяк который я устранил, но сейчас хочу чтобы именно так и было и не получается - а именно, при заходе в папку подкаста получились созданные папки и тут же фильмы с главной страницы. Вроде бы нет папки "обновить подкаст" когда в ней созданы другие папки, но может можно создать папку "главная" при обновлении которой будут создаваться ссылки и в ней и в самом подкасте stereotraker, потому что смотрелось авторитетно, как будто зашёл на сайт где сразу на виду и фильмы и папки.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

49

Re: Создание подкаста на примере stereotraker.ru

1) По поводу сортировки.
Как вариант, выставить на папке подкаста определённый режим, например mpTrack.
А в "Скрипте чтения списка ресурсов" после команды создания элемента

Item := HmsCreateMediaItem(sLink, FolderItem.ItemID); // Создаём элемент подкаста

там, где присваиваются им разные свойства, также добавить присвоение свойства через идентификатор mpiTrack значение номера созданного элемента.
У нас в скрипте есть счётчик - переменная gnTotalItems, которая увеличивается командой

Inc(gnTotalItems);

после каждого создания элемента. А значит каждый раз будет на единицу больше.
Значит, там где устанавливаем свойства созданного элемента, можно добавить команду

Item.Properties[mpiTrack     ] := gnTotalItems;

И после этого, при установленном режиме сортировки в mpTrack и обновления подкаста, элементы будут внутри отсортированы по этому свойству. А у наших элементов это свойство - у каждого свой номер увеличивающийся.

2) Создание списка фильмов страницы Топ 100
В команде Item := FolderItem.AddFolder(gsUrlBase+"/?do=top100&mode=rating/"), насколько я понимаю, последнего слеша не должно быть. Страница с такой ссылкой в браузере ругается на не существование такой страницы.
Должно быть так:

Item := FolderItem.AddFolder(gsUrlBase+"/?do=top100&mode=rating");

Но тут так быстро ответить не получится.
Откройте эту страницу в браузере - видите, там напрочь по-другому выглядит список. А значит наш скрипт, который ищет ссылки на фильмы в загруженной странице ("Скрипт чтения списка ресурсов") нужно именно под эту страницу писать.
Помните, мы в шаблоне меняли строку на:

RegEx := TRegExpr.Create('<div class="short-story">(.*?)<div class="clear">', PCRE_SINGLELINE);

Это мы задавали регулярное выражения поиска блоков текста, которые начинаются на <div class="short-story"> и кончаются <div class="clear">. Между ними блок текста содержал ссылки на фильм, название и проч.
Так вот на странице "Топ 100" - эти значения в нашем скрипте должны быть другие.

Два варианта:

  • а) В скрипте чтения списка ресурсов сделать проверку: мы обновляем список не Топ 100 случайно? Если Топ 100 - то не загружаем все 10 страниц по циклу, а только одну и используем другие значения для поиска блоков текста, содержащих информацию о фильме.

  • б) На данный раздел (подкаст) сделать персональный скрипт чтения списка ресурсов. Вставить шаблон и его под него переделать.

3) Такая ситуация могла возникнуть, когда активной папкой была главная папка подкаста (которая содержит другие разделы) и вы зашли в редактирование скрипта чтения списка ресурсов и там начали отладку, т.е. запустили скрипт, который загрузил страницу по ссылке, которая указана в этой папке (видимо ссылка на сам сайт там) и там нашла и создала ссылки на фильмы. Получается что с главной страницы сайта.

Насчёт идеи обновления раздела "Главное" и создание ссылок в корневой папке. Думаю, реализуемо даже. Только нужно понять, что обычно, при обновлении подкастов - в начале главной процедуры скрипта есть команда

FolderItem.DeleteChildItems;           // Очищаем существующие ссылки

она подчищает ранее созданные ссылки и создаёт список заново. А у вас там кроме ссылок ещё и папки! Их же желательно не удалять?
Если очистку ранее созданных не делать, тогда кроме проблемы что там будет со временем копиться миллион ссылок, так ещё и с сортировкой что-то тоже придумывать.

Sony Bravia KDL-32CX523

50

Re: Создание подкаста на примере stereotraker.ru

Да по поводу папок Топ 100 - только зря я вас напряг, потому что здесь контента ну очень не много (как и вообще 3D видео), что овчинка выделки не стоит и лишние папки здесь только во вред.

На счёт сортировки надо поэкспериментировать.

На счёт создания ссылок в корневом разделе - я думаю даже можно пожертвовать строчкой  FolderItem.DeleteChildItems; для удаления старых ссылок, лишь бы это реализовать, потому что для каждого подкаста должен быть индивидуальный подход, и именно для этого это даже в плюс, опять же из-за малого колличества контента.

Вот меня сейчас и интересует вопрос : почему при обновлении подкаста не все ссылки попадают с сайта в подкаст ?
Например в разделе "спорт" на сайте 24 фильма, а при обновлении подкаста только 16, и без разницы сколько страниц для обновления выставляешь в скрипте чтения списка ресурсов - хоть 2, хоть 10, хоть 50 - только дольше обновляет подкаст и в итоге то же самое, и так во всех разделах.

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

51

Re: Создание подкаста на примере stereotraker.ru

Если бы мы с вами были немного повнимательней, то могли бы заметить сообщения о том, что страница
"http://stereotraker.ru/kino//page/1/" 404 Not found"
Всё дело в цикле загрузки страниц.
Там формируется ссылка страницы, которая загружается, командой:

sLink := mpFilePath+'/page/'+IntToStr(i)+'/';          // Формируем ссылку для загрузки, включающую номер страницы

В итоге получается два слеша в одном месте. Нужно убрать в ссылках самих разделов последний слеш, либо в цикле загрузке страниц не добавлять лишний.

Кроме того, первой страницы http://stereotraker.ru/kino/page/1/ не существует, сервер ругается. Поэтому нужно сначала загружать просто http://stereotraker.ru/kino/, а потом http://stereotraker.ru/kino/page/2/

Значит, нужно исправить немного код этого цикла загрузки в том месте, где формируется ссылка загружаемой страницы.
Вместо:

    sLink := mpFilePath+'/page/'+IntToStr(i)+'/';          // Формируем ссылку для загрузки, включающую номер страницы

Нужно вставить:

    sLink := mpFilePath;
    If i > 1 Then sLink := sLink+'page/'+IntToStr(i)+'/'; // Формируем ссылку для загрузки, включающую номер страницы    

что означает:
ссылка для загрузки равна ссылке раздела (sLink := mpFilePath;)
а если номер загружаемой страницы больше чем 1 - то добавляем часть "page/i/"

Sony Bravia KDL-32CX523

52

Re: Создание подкаста на примере stereotraker.ru

Ок. Чтобы создать ссылку в корневой папке подкаста, достаточно после кода:

      // Создаём элемент медиа-ссылки
      Item := HmsCreateMediaItem(sLink, FolderItem.ItemID); // Создаём элемент подкаста
      Item.Properties[mpiTitle     ] := sName; // Наименование 
      Item.Properties[mpiThumbnail ] := sImg;  // Картинка 
      Item.Properties[mpiYear      ] := sYear; // Год 
      Item.Properties[mpiTimeLength] := nSec;  // Длительность 
      Item.Properties[mpiTrack     ] := gnTotalItems;

вставить ещё дополнительно:

      // Создаём элемент медиа-ссылки в корневой папке подкаста
      Item := HmsCreateMediaItem(sLink, FolderItem.ItemParent.ItemID); // Создаём элемент подкаста
      Item.Properties[mpiTitle     ] := sName; // Наименование 
      Item.Properties[mpiThumbnail ] := sImg;  // Картинка 
      Item.Properties[mpiYear      ] := sYear; // Год 
      Item.Properties[mpiTimeLength] := nSec;  // Длительность 
      Item.Properties[mpiTrack     ] := FolderItem.ItemParent.ChildCount;

Как тут можно заметить, просто в команде

      Item := HmsCreateMediaItem(sLink, FolderItem.ItemParent.ItemID); // Создаём элемент подкаста

указан ItemID родительского элемента (ItemParent) текущей папки подкаста (FolderItem)
А с сортировкой решил следующим образом - в свойство mpiTrack вставляем количество уже созданных элементов в этой  корневой папке (FolderItem.ItemParent.ChildCount). После каждого создания в корневой папке это число будет увеличиваться и можно по этому полю тоже сортировать.

Всякие FolderItem.DeleteChildItems; не трогаем, ибо у нас эта команда будет удалять только ссылки в текущем разделе, а в корневой ссылки будут копиться вечно.

Sony Bravia KDL-32CX523

53

Re: Создание подкаста на примере stereotraker.ru

Благодарю !
Почти всё готово. Пора уже в тираж выпускать, а всё какие ни то мелочи не устраивают.
Как я понял, это что в корневую папку у нас добавляются не только ссылки с главной страницы, а из всех разделов. В общем то это не плохо, лишь бы одни и те же ссылки не создавались по несколько раз, чтобы не было дублирования одного и того же, иначе они будут расти бесконечно.

А не нравится мне, это что когда для обновления выставляю побольше страниц, например 30, то и разделы где всего 1-2 страницы (спорт, 60fps) - обновляются так же долго , как и где много страниц. Как тут лучше то придумать ?

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

54

Re: Создание подкаста на примере stereotraker.ru

Ссылки дублироваться не будут, если у них будет одна и та же ссылка. А она у них будет одна и та же - если это ссылка на один и тот же фильм.
Так работает команда

Item := HmsCreateMediaItem(sLink, FolderItem.ItemID); // Создаём элемент подкаста

Если в указанной папке уже есть элемент с тким значением ссылки - она  не создаёт новый, а возвращает найденный.
Так что всё норм, в этом плане.

Чтобы грузить для разных категорий разное количество страниц, самое простое, это после:

nPages := 2; // Количество загружаемых страниц

вставить строки:

  // Если в параметрах подкаста указаны значения - устанавливаем оттуда
  If HmsRegExMatch('--pages=(\d+)', mpPodcastParameters, sVal) Then nPages := StrToInt(sVal);

А в параметрах подкаста (категории) указать ключи со значениями количества, например "--pages=2", а у другого "--pages=10".
И скрипт, если найдёт в параметрах это значение - присвоит его переменной nPages.

Sony Bravia KDL-32CX523

55

Re: Создание подкаста на примере stereotraker.ru

Ну вроде всё работает.
Спасибо за науку.
Хоть и чудо- прога HMSEditor и сделала 80% черновой работы, но всё равно ещё пришлось 18% интеллекта WendyH добавлять и 2% моих идей.
Не думал, что создать подкаст это такие "вилы" с кучей заморочек, в общем "жесть страшнейшая".

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!