Pepak.net Forum

Tematická diskuse => Software => Topic started by: 151kbar151 on July 13, 2013, 01:09:46 PM

Title: Nefunkční stahování z Idnes.cz
Post by: 151kbar151 on July 13, 2013, 01:09:46 PM
Když chci stáhnout video z Idnes.cz tak to napíše tuhle chybu: Chyba RTMPDUMPu: Problem acessing the DNS. (addr: http) (EDownloadThreadError).
Sice je to video, které na webu hlásí že již není dostupné ale dřív jsem z Idnes stahoval videa údajně nedostupná bez problému (samozřejmě YTD).
Title: Re: Nefunkční stahování z Idnes.cz
Post by: pepak on July 13, 2013, 01:35:22 PM
Dřív také stahování z iDnes fungovalo úplně jinak než teď.

Nevylučuji, že tam stále je možnost nějak stahovat, ale bez konkrétního URL se s tím nedá nic dělat.
Title: Re: Nefunkční stahování z Idnes.cz
Post by: 151kbar151 on July 13, 2013, 01:37:52 PM
Tady máš URL: http://zpravy.idnes.cz/zaoralek-prosel-az-na-druhy-pokus-dll-/domaci.aspx?c=A020710_102451_domaci_kot
Title: Re: Nefunkční stahování z Idnes.cz
Post by: balutbj on July 13, 2013, 02:05:05 PM
Zas tolik se to nezměnilo.
** url odstraněna **
Title: Re: Nefunkční stahování z Idnes.cz
Post by: 151kbar151 on July 13, 2013, 02:24:43 PM
Díky, to je ono. Ale jak jsi tohle udělal? Já jen, abych si dovedl poradit příště.
Title: Re: Nefunkční stahování z Idnes.cz
Post by: balutbj on July 13, 2013, 02:32:13 PM
Quote from: 151kbar151 on July 13, 2013, 02:24:43 PM
Díky, to je ono. Ale jak jsi tohle udělal? Já jen, abych si dovedl poradit příště.
Napiš mi soukromě: http://testtbj.mzf.cz/formular.php
Title: Re: Nefunkční stahování z Idnes.cz
Post by: svezij on August 20, 2013, 09:59:54 AM
Ahoj, mám stejný problém. Chtěl bych si stáhnout celý seriál těchto videí "Na klavír za několik týdnů" (http://hobby.idnes.cz/video-na-klavesy-se-naucite-za-par-tydnu-zacnete-s-nami-od-prvni-lekce-1jg-/hobby-domov.aspx?c=A100514_153649_hobby-domov_bma), ale YTD píše tutéž chybu, co říkal @151kbar151. Mohl bych tě také přes tvůj formulář (http://testtbj.mzf.cz/formular.php) požádat o postup? Mockrát děkuji.
Title: Re: Nefunkční stahování z Idnes.cz
Post by: pepak on August 20, 2013, 12:08:47 PM
http://stream7p.idnes.cz/0807/01/VF080701_095218_flv_middle.mp4
Title: Re: Nefunkční stahování z Idnes.cz
Post by: svezij on August 21, 2013, 12:59:06 PM
Opět zdravím, nevím, jestli se to tu smí nebo nesmí, ale napsal jsem jednoduchou funkci v PHP, přes kterou je možné přímo stáhnout video z idnes.cz. Bohužel nemám přístupný žádný hosting a tak to nemůžu dát přímo na web a napojit na jednoduchý formulář, a tak je to uděláno jen pro "znalejší" a stáhne to soubor na localhost do daného umístění na disku. Pokud by někdo měl tu možnost dát to někam na web, jsem i ochotný tam dodělat nějaký jednoduchý formulář, a např. po stažení všech souborů to zazipovat a nabídnout uživateli ke stažení přes prohlížeč (a pak samozřejmě smazat, ať to neplní disk). O úpravách se každopádně dá mluvit. Kdyby funkci někdo ale přece jen potřeboval takto a využil ji (mně dost pomohla a ušetřila čas), tak tady je:

/**
   * Downloads video from IDNES page.
   *
   * @param array|string $pages Array with URL on requested pages | URL on requested page
   * @param string $destDir Destination directory, the place where the video will be saved.
   * @param type $namePattern Pattern of destination filename:
   *                          %S% - source filename
   *                          %C% - counter (according to the count of given pages is counter padded by zeros)
   *    example:
   *      'Piano school - Lesson no. %C%' => returns e.g. 'Piano school - Lesson no. 03'
   */
  function download_idnes_videos($pages = array(), $destDir = '', $namePattern = '%S%')
  {
    // check parameter
    if (!is_array($pages)) {
      $pages = (array)$pages;
    }

    // get services from pages
    array_walk($pages, function(&$page) {
      preg_match('/videoFLV.+data:\s*["\'](.+?)["\']/', @file_get_contents($page), $matches);
      $page = (($matches) ? $matches[1] : '');
    });

    // download videos
    $count = count($pages);
    $sprintf = (($count < 10) ? '%d' : (($count < 100) ? '%02d' : '%03d'));
    $echoSprintf = $sprintf . '. ';

    $i = 1;
    foreach ($pages as $service) {
      if ($service) {
        $xml = simplexml_load_file($service);

        foreach ($xml->items->item as $item) {
          if ($item->type == 'video') {
            $video = $item->linkvideo->server . $item->linkvideo->path . $item->linkvideo->file;

            $source = @fopen($video, 'r');
            if (!$source) {
              $server = (($item->linkvideo->server == 'http://stream7p.idnes.cz/') ? 'http://stream6p.idnes.cz/' : 'http://stream7p.idnes.cz/');
              $video = $server . $item->linkvideo->path . $item->linkvideo->file;

              $source = @fopen($video, 'r');
            }

            if ($source) {
              // check destination
              if (!is_dir($destDir)) {
                mkdir($destDir, 0777, TRUE);
              }

              // create destination file
              $dotPos = strrpos($item->linkvideo->file, '.');
              $filename = substr($item->linkvideo->file, 0, $dotPos);
              $ext = substr($item->linkvideo->file, $dotPos);

              $destname = str_replace(array('%S%', '%C%'), array($filename, sprintf($sprintf, $i)), $namePattern);
              $destfile = rtrim($destDir, '/') . '/' . $destname . $ext;

              $dest = fopen($destfile, 'w');

              if ($dest) {
                echo sprintf($echoSprintf, $i) . 'copying... "' . $video . '" to "' . $destfile . '"<br />';

                stream_copy_to_stream($source, $dest);
              } else {
                echo sprintf($echoSprintf, $i) . 'destination is not writable.<br />';
              }
            } else {
              echo sprintf($echoSprintf, $i) . 'source was not found.<br />';
            }

            $i++;

            // jump to next page
            break;
          }
        }
      } else {
        echo sprintf($echoSprintf, $i) . 'service was not found.<br />';
        $i++;
      }
    }
  }

  // example
  /*
    $pages = array(
      'http://hobby.idnes.cz/video-na-klavesy-se-naucite-za-par-tydnu-zacnete-s-nami-od-prvni-lekce-1jg-/hobby-domov.aspx?c=A100514_153649_hobby-domov_bma',
      'http://hobby.idnes.cz/video-na-klavir-za-nekolik-tydnu-2-dil-dsk-/hobby-domov.aspx?c=A100522_083145_hobby-domov_bma',
      'chybna url'
    );
    download_idnes_videos($pages, 'test', 'Piano school - Lesson no. %C% (%S%)');
  */