使用php从给定链接检索视频和图像

使用php从给定链接检索视频和图像,php,Php,你好,我正在建设的网站,我需要检索视频(如果视频),图像,从不同的链接,如不同的视频网站或如果一般网站链接缩略图和描述功能 是否存在任何php类?对于这个问题,请帮助我提出更好的解决方案,提前感谢 哦,是的,这个例子就像facebook的链接标签一样,首先你很可能会提到视频网站,比如Youtube和Vimeo 这两个网站都有API功能,您可以使用这些功能获取视频信息: 维梅奥 Youtube 对于youtube api请求中的广泛Framework,您可以使用Zend数据:

你好,我正在建设的网站,我需要检索视频(如果视频),图像,从不同的链接,如不同的视频网站或如果一般网站链接缩略图和描述功能

是否存在任何php类?对于这个问题,请帮助我提出更好的解决方案,提前感谢


哦,是的,这个例子就像facebook的链接标签一样,首先你很可能会提到视频网站,比如Youtube和Vimeo

这两个网站都有API功能,您可以使用这些功能获取视频信息:

  • 维梅奥
  • Youtube
对于youtube api请求中的广泛Framework,您可以使用Zend数据:

对于Vimeo PHP库,请使用

大多数其他专业网站都会有一些API,而且很可能会有它们的库


是否有与所有这些网站交互的本机类

简而言之,答案是否定的,所有这些API都是不同的,因此没有一个类可以与所有网站成功交互

您需要做的是创建一个基于驱动程序的包来处理这个问题

您的基类看起来是这样的:

class VideoAPI
{
    private $driver;
    public function __construct($driver)
    {
        require_once "drivers/" . $driver . ".class.php";
        $driverClass = $driver . "_Driver";

        $this->driver = new $driverClass;
    }

    public function FetchVideoById($id)
    {
        return $this->driver->FetchVideoById($id);
    }
}
然后,您将为您的驱动程序提供如下界面:

interface IVideoDriver
{
    public function FetchVideoById($id);
    /*.
        Other required methods
    .*/
}
class Youtube_Driver extends VideoRequest implements IVideoDriver
{
    protected $base_url = "http://gdata.youtube.com"
    public function FetchVideoById($id)
    {
        $Request = $this->request($this->base_url . "/feeds/api/videos/",array(
            "format" => "json",
            "api_id" => $this->config->api_keys->youtube
        ));

        if($Request->status() == VideoRequest::STATUS_OK)
        {
             return $Request->Response();
        }
    }
}
每个驱动程序都将实现该方法并扩展请求类,如下所示:

interface IVideoDriver
{
    public function FetchVideoById($id);
    /*.
        Other required methods
    .*/
}
class Youtube_Driver extends VideoRequest implements IVideoDriver
{
    protected $base_url = "http://gdata.youtube.com"
    public function FetchVideoById($id)
    {
        $Request = $this->request($this->base_url . "/feeds/api/videos/",array(
            "format" => "json",
            "api_id" => $this->config->api_keys->youtube
        ));

        if($Request->status() == VideoRequest::STATUS_OK)
        {
             return $Request->Response();
        }
    }
}

您应该使用curl o file_get_contents检索链接到的数据,然后通过mime tipe进行标识(首先)。 如果您有text/html mime提示,您应该从页面中提取所有图像/对象

但是,最好的方法是使用curl模拟浏览器。
也许你可以在

上找到该解决方案的一些类,谢谢Robert是的,所有著名网站都提供api,但是是否存在任何与所有这些网站交互的fre php类?更新了一个可能的解决方案。Diego感谢您的回复是的,我们可以使用curl并可以找到类phpclasses.org我做了研究,但找不到任何可靠的类,如果您知道的话,可以给我url吗?这里有很多类:,我最感兴趣的是“高级HTTP客户端”和“PHP HTTP协议客户端”。