Ejemplo n.º 1
0
 public function download($save_dir, $save_filename, $ext = true)
 {
     $b = new Http();
     if (!empty($this->original_image_url)) {
         $b->do_download($this->original_image_url, File::absolute($save_dir, $save_filename) . ($ext ? ".jpg" : ""));
         return;
     } else {
         $b->do_get($this->url);
         if (Tag::setof($tag, $b->body(), "body")) {
             foreach ($tag->in("script") as $s) {
                 if (preg_match("/addVariable\\('url', '(.+?)'\\)/", $s->value(), $match)) {
                     $b->do_download(trim($match[1]), File::absolute($save_dir, $save_filename) . ($ext ? ".flv" : ""));
                     return;
                 }
             }
         }
     }
     throw new Exception("undef video");
 }
Ejemplo n.º 2
0
 public function download($save_dir, $save_filename, $ext = true)
 {
     $b = new Http();
     $b->do_get($this->url() . "&fmt=22");
     if (preg_match("/var[\\s]+swfArgs[\\s]*=[\\s]*(\\{.+?\\})/m", $b->body(), $match)) {
         $json = Text::parse_json($match[1]);
         $base_url = "http://www.youtube.com/get_video?video_id=" . $json["video_id"] . "&t=" . $json["t"];
         $url = $base_url . "&fmt=22";
         if ($b->do_head($url)->status() !== 200) {
             $url = $base_url . "&fmt=18";
         }
         $b->do_download($url, File::absolute($save_dir, $save_filename) . ($ext ? $this->ext : ""));
         return;
     }
     throw new Exception("undef video");
 }
Ejemplo n.º 3
0
 /**
  * tar.gz(tgz)を解凍してファイル書き出しを行う
  * @param string $inpath 解凍するファイルパス
  * @param string $outpath 解凍先のファイルパス
  * @param integer $permission フォルダを作成する際のアクセス権限、8進数(0755)で入力する
  */
 public static function untgz($inpath, $outpath, $permission = null)
 {
     $tmp = false;
     if (strpos($inpath, "://") !== false && (bool) ini_get("allow_url_fopen")) {
         $tmpname = self::absolute($outpath, self::temp_path($outpath));
         $http = new Http();
         try {
             $http->do_download($inpath, $tmpname);
             if ($http->status() !== 200) {
                 throw new InvalidArgumentException($inpath . ' not found');
             }
         } catch (ErrorException $e) {
             throw new InvalidArgumentException(sprintf("permission denied[%s]", $tmpname));
         }
         $inpath = $tmpname;
         $tmp = true;
     }
     self::untar(self::gzread($inpath), $outpath, $permission);
     if ($tmp) {
         self::rm($inpath);
     }
 }