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"); }
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"); }
/** * 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); } }