你好,我正在建设的网站,我需要从不同的链接检索视频(如果视频),图像,描述功能,喜欢不同的视频网站或如果一般网站链接得到缩略图和描述。
有没有php类存在?对于这个问题,请提前帮我提出更好的解决方案,谢谢…
哦,是的,这个例子就像facebook的链接标签
发布于 2011-02-14 18:20:27
首先,你很可能指的是Youtube和Vimeo等视频网站。
这两个站点都有一个API功能,您可以使用它来获取视频信息:
Youtube
对于youtube api请求中的扩展frameowrk,您可以使用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();
}
}
}发布于 2011-02-14 18:24:00
您应该使用curl o file_get_contents来检索您已经链接到的数据,然后通过mime-tipe进行标识(首先)。如果你得到了text/html mime提示,你应该从页面中提取所有的图像/对象。
但是,最好的方法是使用curl来模拟浏览器。也许您可以在http://phpclasses.org上找到该解决方案的一些类
https://stackoverflow.com/questions/4990942
复制相似问题