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

Интернет-телевидение, интернет-радио, подкасты, IPTV
VVS1234
Posts: 44
Joined: Sat Oct 13, 2012 10:41 pm

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

Post by VVS1234 »

WendyH wrote:Обычно имеется ввиду категория типа "Свежие поступления" с сылкой "http://hdkinomir.com/", например. И там просто ограничить количество загружаемых страниц (последние 100 фильмов) да и группировка, наверно, не нужна. Как-то так.
это без проблем -- перезалил в посте.
WendyH wrote:VVS1234, спасибо за подкасты.
спасибо за спасибо :). Но вообще-то спасибо тем, кто эти подкасты создал -- к сожалению, уже и не помню, у кого что качал. Я, в основном, лишь поправил парсинг, ну и от себя кое-что добавил, конечно.
isko
Posts: 32
Joined: Thu Jan 10, 2013 7:31 am

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

Post by isko »

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

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

Post by VVS1234 »

isko wrote:
VVS1234 wrote: Изменения: 1.0 12-01-13:
поправлен парсинг картинок
удалил строку с буферным файлом...
Было бы хорошо еслы бы вы создали отдельную тему в разделе "Интернет медиа-ресурсы (Подкасты)", чтобы было проще найти данный подкаст и обновления.
ОК. сделал
http://www.homemediaserver.ru/forum/vie ... =20&t=2576
linkey
Posts: 110
Joined: Mon Oct 10, 2011 5:45 pm

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

Post by linkey »

может кто займется торрент тв (torrent-tv.ru).
samsung UE32D5000
tarzann5
Posts: 90
Joined: Wed Feb 29, 2012 4:41 pm

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

Post by tarzann5 »

gribok65 wrote:кто может поправьте подкаст kinofilms.tv что то перестал работать
Перезалил сюда:
http://www.homemediaserver.ru/forum/vie ... =20&t=2644
whot
Posts: 1
Joined: Fri Jul 01, 2011 11:57 pm

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

Post by whot »

kinozal.tv - не кто не смотрит что-ли? :)
WendyH
Posts: 393
Joined: Fri Apr 13, 2012 7:59 pm

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

Post 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);
}
SONY KDL-32CX520
Lexan
Posts: 24
Joined: Wed Oct 05, 2011 5:19 pm

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

Post by Lexan »

isko обновите пожалуйста ваши три подкаста.
Philips 32PFL6606H
isko
Posts: 32
Joined: Thu Jan 10, 2013 7:31 am

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

Post by isko »

Lexan, что имеете ввиду?
Lexan
Posts: 24
Joined: Wed Oct 05, 2011 5:19 pm

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

Post by Lexan »

Прошу прошения, разобрался. Всё фунциклирует... имел ввиду HDKinoTeatr.ru _ vSeriale.tv _ NewSeriya.ru
Philips 32PFL6606H
Post Reply