Page 50 of 52

Re: Коллекция подкастов

Posted: Sat Jan 12, 2013 7:07 pm
by VVS1234
WendyH wrote:Обычно имеется ввиду категория типа "Свежие поступления" с сылкой "http://hdkinomir.com/", например. И там просто ограничить количество загружаемых страниц (последние 100 фильмов) да и группировка, наверно, не нужна. Как-то так.
это без проблем -- перезалил в посте.
WendyH wrote:VVS1234, спасибо за подкасты.
спасибо за спасибо :). Но вообще-то спасибо тем, кто эти подкасты создал -- к сожалению, уже и не помню, у кого что качал. Я, в основном, лишь поправил парсинг, ну и от себя кое-что добавил, конечно.

Re: Коллекция подкастов

Posted: Sat Jan 12, 2013 10:13 pm
by isko
VVS1234 wrote: Изменения: 1.0 12-01-13:
поправлен парсинг картинок
удалил строку с буферным файлом...
Было бы хорошо еслы бы вы создали отдельную тему в разделе "Интернет медиа-ресурсы (Подкасты)", чтобы было проще найти данный подкаст и обновления.

Re: Коллекция подкастов

Posted: Sun Jan 13, 2013 12:29 am
by VVS1234
isko wrote:
VVS1234 wrote: Изменения: 1.0 12-01-13:
поправлен парсинг картинок
удалил строку с буферным файлом...
Было бы хорошо еслы бы вы создали отдельную тему в разделе "Интернет медиа-ресурсы (Подкасты)", чтобы было проще найти данный подкаст и обновления.
ОК. сделал
http://www.homemediaserver.ru/forum/vie ... =20&t=2576

Re: Коллекция подкастов

Posted: Mon Jan 14, 2013 1:00 pm
by linkey
может кто займется торрент тв (torrent-tv.ru).

Re: Коллекция подкастов

Posted: Thu Jan 24, 2013 10:35 am
by tarzann5
gribok65 wrote:кто может поправьте подкаст kinofilms.tv что то перестал работать
Перезалил сюда:
http://www.homemediaserver.ru/forum/vie ... =20&t=2644

Re: Коллекция подкастов

Posted: Sun Feb 10, 2013 9:16 pm
by whot
kinozal.tv - не кто не смотрит что-ли? :)

Re: Коллекция подкастов

Posted: Fri Feb 15, 2013 11:30 pm
by WendyH
bartwell wrote:Обновил сегодня HMS до 1.4 и перестал работать Youtube. При тестовом транскодировании вариант от WendyH выдает input/output error, а вариант Eugen - no such file or directory. Почините, пожалуйста.
Таки да, есть такое. Ответ от ютуба, оказывается, может быть и в ещё одном варианте. Но вот, набросал такой скрипт получения ссылки, пока им можно воспользоваться.
Там есть функция VideoMessage, для кучи (для сообщений причины недоступности видео). Она там через стороний сервер работает, а я сейчас работаю над вариантом с классом Bitmap32. Как получится чтобы было красиво - буду использовать этот класс.
[+] Скрипт получения ссылки youtube
С++ script

Code: Select all

int LOG = 0;
bool gbQualityLog = false; // Ключ --qualitylog включает показ выбора качества видео
char gsUrlBase, gsHeaders, gsComments;
// ------------------------------------------- Получение ссылки на Youtube ----
bool GetLink_YouTube(char sLink) {
  char sHtml, sFormatMap='', sVideoID='', sFormat, itag, sig, sQAval, sQSel, s1, s2, sQP='';
  int i, iHeight, iPriority, iMinPriority=99; bool bGotLink=false;

  if (HmsRegExMatch('(\\w{4,5}://.*/video.3gp)', sLink, MediaResourceLink)) return true;
  if (LeftCopy(sLink, 4)!='http') sLink = 'http://' + Trim(sLink);
  if (Pos('%3F', sLink)>0) sLink=HmsHttpDecode(sLink);  // Если нужно - декодим
  if (!HmsRegExMatch('[\\?&]v=([^&"\\?]*)',       sLink, sVideoID))
  if (!HmsRegExMatch('youtube.com/v/([^&"\\?]*)', sLink, sVideoID))
  if (!HmsRegExMatch('youtu.be/([^&"\\?]*)',      sLink, sVideoID))
       HmsRegExMatch('/embed/([^&"\\?]*)',        sLink, sVideoID); // Внимательно - ИФы выполняются, если предыдующий нет!
  if (sVideoID=='') {
    sHtml = LoadUrl(sLink);
    HmsRegExMatch('/watch[^&"\']v=([^&"]*)', sHtml, sVideoID);
  }
  if (sVideoID=='') {
    HmsLogMessage(2, mpTitle+' Немогу найти VideoID в ссылке на youtube.com ('+sLink+')');
    MediaResourceLink = 'http://wonky.lostcut.net/vids/error_getlink.avi';
    return true;
  }

  char aGUrl[2]; // Несколько способов искать stream_map
  aGUrl[0] = '/watch?has_verified=1&v=';
  aGUrl[1] = '/get_video_info?video_id=';
  // aGUrl[2] = '/api_video_info?video_id=';
  sHtml = HmsDownLoadUrl('http://www.youtube.com'+aGUrl[0]+sVideoID);
  if (!HmsRegExMatch('fmt_stream_map=(.*?)&', sHtml, sFormatMap))
  if (!HmsRegExMatch('fmt_stream_map"\\s*?:\\s*?"(.*?)"', sHtml, sFormatMap))
  if (!HmsRegExMatch('fmt_url_map=(.*?)&', sHtml, sFormatMap)) {
    // Попытка сделать это немного по-другому
    sHtml = HmsSendRequestEx('www.youtube.com', aGUrl[1]+sVideoID, 'GET', 'application/x-www-form-urlencoded; Charset=UTF-8', gsHeaders, '', 80, 0, '', true);
    if (!HmsRegExMatch('fmt_stream_map=(.*?)&', sHtml, sFormatMap))
    if (!HmsRegExMatch('fmt_stream_map"\\s*?:\\s*?"(.*?)"', sHtml, sFormatMap))
         HmsRegExMatch('fmt_url_map=(.*?)&', sHtml, sFormatMap);
  }
  HmsRegExMatch('--quality=(\\d+)', gsComments, sQP);
  if (sFormatMap!='') {
    sQAval = '';
    if (Pos(',', sFormatMap)<1) sFormatMap = HmsHttpDecode(sFormatMap);
    for (i=1; i<=WordCount(sFormatMap, ','); i++) {
      sFormat = ExtractWord(i, sFormatMap, ',');
      sFormat = ReplaceStr(sFormat, '\\u0026', '&');
      HmsRegExMatch('itag=(\\d+)', sFormat, itag );
      HmsRegExMatch('url=(.*?)[&$]',  sFormat, sLink);
      sLink = HmsHttpDecode(sLink);
      if (HmsRegExMatch('sig=(.*?)&', sFormat, sig)) sLink+= '&signature=' + sig;
      iHeight=0;
      if      (IsWordPresent(itag, '13,17',           ',')) iHeight=144;
      else if (IsWordPresent(itag, '5,83',            ',')) iHeight=240;
      else if (IsWordPresent(itag, '6',               ',')) iHeight=270;
      else if (IsWordPresent(itag, '18,34,43,82,100', ',')) iHeight=360;
      else if (IsWordPresent(itag, '35,44,101',       ',')) iHeight=480;
      else if (IsWordPresent(itag, '22,45,84,102',    ',')) iHeight=720;
      else if (IsWordPresent(itag, '37,46',           ',')) iHeight=1080;
      else if (IsWordPresent(itag, '38',              ',')) iHeight=3072;
      s1 = IntToStr(iHeight); if (Pos(s1, sQAval)<1) sQAval += s1+'  ';
      if (sQP==s1) {iMinPriority=0; MediaResourceLink=sLink; sQSel=IntToStr(iHeight); bGotLink=true;}
      if (mpPodcastMediaFormats=='') {
        if (bGotLink) continue;
        MediaResourceLink = sLink; bGotLink=true; sQSel=IntToStr(iHeight); continue;
      }
      iPriority = HmsMediaFormatPriority(iHeight, mpPodcastMediaFormats);
      if ((iPriority>=0)&&(iPriority<iMinPriority)) {
        iMinPriority=iPriority; MediaResourceLink=sLink; sQSel=IntToStr(iHeight);
      }
    }
    if (gbQualityLog) {
      if (sQAval=='') HmsLogMessage(2, Format('%s: Нет выбора доступного качества у этого видео', [mpTitle]));
      else HmsLogMessage(2, Format('%s: Доступно качество: %s Выбрано: %s', [mpTitle ,sQAval, sQSel]));
    }
  } else {
    // Если нет stream_map, пробуем тупо взять ссылку по API
    if (HmsRegExMatch('reason=(.*?)(?:&|$)', sHtml, sQP)) {
      sQP = HmsHtmlToText(HmsUtf8Decode(HmsHttpDecode(sQP)));
      HmsLogMessage(2, mpTitle+': Видео на youtube.com недоступно ('+sQP+')');
      VideoMessage(mpTitle, 'YOUTUBE.COM СООБЩАЕТ:\n\n'+sQP);
    } else {
      sHtml = LoadUrl('http://gdata.youtube.com/feeds/api/videos/'+sVideoID+'?v=2');
      HmsRegExMatch('<media:content[^>]+url=\'([^>]+)\'[^>]+type=\'video[^>]+yt:format=\'6', sHtml, MediaResourceLink);
    }
  }
  if (MediaResourceLink=='') {
    HmsLogMessage(2, mpTitle+': Видео на youtube.com недоступно ('+sLink+')');
    MediaResourceLink = 'http://wonky.lostcut.net/vids/error3d_3.avi';
  }
  return true;
}
// -------------------------------- Вывод вместо видео заданного сообщения ----
bool VideoMessage(char sCaption, char sMessage, int nTime=30) {
  char tmpImg = HmsTempDirectory+'\\videomessage.jpg'; char sCmd;
  sCaption = HmsHttpEncode(ReplaceStr(sCaption, '\n', '|'));
  sMessage = HmsHttpEncode(ReplaceStr(sMessage, '\n', '|'));
  HmsDownloadURLToFile('http://wonky.lostcut.net/videomessage.php?caption='+sCaption+'&msg='+sMessage, tmpImg);
  sCmd = Format('cmd://"%s\\hmsmpeg.exe" -loop 1 -f image2 -i "%s" -t %d -r 25 %s "<OUTPUT FILE>"', [ProgramPath, tmpImg, nTime, HmsTranscodingVideoParams]);
  MediaResourceLink = sCmd;
}
// ------------------------------------------- Загрузка страницы по ссылке ----
char LoadUrl(char sLink, char sMethod='GET', char sHeaders='') {
  char sHtml, sUrlServer, sRequestPage='/', sPostData='', sAnswHeaders='';
  if (!HmsRegExMatch('^http://(.*)', sLink, sUrlServer)) return '';
  HmsRegExMatch2('^(.*?)(/.*)', sUrlServer, sUrlServer, sRequestPage);
  if (sMethod=='POST') HmsRegExMatch2('^(.*?)\\?(.*)', sRequestPage, sRequestPage, sPostData);
  if (sHeaders=='') sHeaders = gsHeaders;
  sHtml = HmsSendRequestEx(sUrlServer, sRequestPage, sMethod, 'application/x-www-form-urlencoded; Charset=UTF-8', sHeaders, sPostData, 80, 0, sAnswHeaders, true);
  sHtml = HmsRemoveLineBreaks(HmsUtf8Decode(sHtml));
  return sHtml;
}
// ------------------ Проверка переданных параметров в полях "Комментарий" ----
void CheckParameters() {
  char sValue;
  gsComments = mpComment;
  THmsScriptMediaItem TempFolderItem = PodcastItem;
  while ((TempFolderItem.ItemParent != HmsDatabaseRootItem) &&
         (TempFolderItem.ItemParent != nil)) {
    gsComments    += ' '+TempFolderItem.ItemParent[mpiComment];
    TempFolderItem = TempFolderItem.ItemParent;
  }
  if (Pos('--log',          gsComments)>0) LOG = 1;
  if (Pos('--qualitylog',   gsComments)>0) gbQualityLog = true;
}
// ---------------------  M A I N   P R O C E D U R E  ------------------------
{
  //mpFilePath = 'http://www.youtube.com/watch?v=g0SUG6Fv15Y&feature=youtube_gdata'; //4testing

  gsHeaders = 'http://google.com/\r\n';
  if (HmsRegExMatch('(http://.*?)/', mpFilePath+'/', gsUrlBase)) gsHeaders = gsUrlBase+'\r\n';
  gsHeaders+= 'Accept-Encoding: gzip, deflate\r\n';
  gsHeaders+= 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0\r\n';
  gsHeaders+= 'Connection: Keep-Alive\r\n';
  gsHeaders+= 'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n';
  gsHeaders+= 'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8\r\n';

  CheckParameters();

  GetLink_YouTube(mpFilePath);
}

Re: Коллекция подкастов

Posted: Sat Mar 02, 2013 4:17 pm
by Lexan
isko обновите пожалуйста ваши три подкаста.

Re: Коллекция подкастов

Posted: Sat Mar 02, 2013 8:27 pm
by isko
Lexan, что имеете ввиду?

Re: Коллекция подкастов

Posted: Sat Mar 02, 2013 9:40 pm
by Lexan
Прошу прошения, разобрался. Всё фунциклирует... имел ввиду HDKinoTeatr.ru _ vSeriale.tv _ NewSeriya.ru