【问题标题】:retrieving video and images from given link using php使用php从给定链接中检索视频和图像
【发布时间】:2011-02-14 19:57:25
【问题描述】:

您好,我正在构建网站,我需要从不同链接检索视频(如果是视频)、图像、描述的功能,例如不同的视频网站,或者如果一般网站链接获取缩略图和描述。

是否存在任何 php 类?为此请帮我提出更好的解决方案提前谢谢...

哦,是的,示例就像 facebook 链接选项卡

【问题讨论】:

    标签: php


    【解决方案1】:

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

    但是最好的方法是使用 curl 来模拟浏览器。 也许您可以在 http://phpclasses.org 上找到一些针对该解决方案的类

    【讨论】:

    • Diego 感谢您的回复 是的,我们可以使用 curl 并且可以找到类 phpclasses.org 我做了研究但找不到任何 SOLID 类,如果您知道的话,请给我 url 吗?
    • 这里有很多类:phpclasses.org/…,我认为最有趣的是“高级 HTTP 客户端”和“PHP HTTP 协议客户端”。
    【解决方案2】:

    首先,您很可能指的是 Youtube 和 Vimeo 等视频网站。

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

    对于 youtube api 请求中的广泛框架,您可以使用 Zend Data:http://framework.zend.com/download/gdata

    对于 Vimeo PHP 库,请使用 https://github.com/vimeo/vimeo-php-lib

    大多数其他专业网站都会有某种 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();
            }
        }
    }
    

    【讨论】:

    • 谢谢罗伯特,是的,所有著名的网站都提供了 api,但是是否存在与所有这些网站交互的 fre php 类?
    • 更新了一个可能的解决方案。
    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多