我需要一个 PHP 函数来确定 xvideos dot com [NSFW] 上视频的持续时间,例如:
$video = "http://flashservice.xvideos dot com/embedframe/1606356";
function duration ($video);
echo duration;
这将返回 11:49。
请注意:该网站不适合工作。这是一个色情网站。如果您在工作,请谨慎访问。
好吧,您只有一个指向嵌入式播放器的链接,而不是指向视频 (FLV) 文件的实际热链接,所以我假设您不知道如何获得它。
就是这样:
您的链接末尾有一个数字,即1606356
. 该数字是视频 ID,因此它代表您要播放的视频。现在我们有了视频 ID,我们需要加载原始页面,用户在尝试从原始站点(而不是通过嵌入式播放器)观看视频时会访问该页面。原页面链接为:http://www.xvideos.com/video1606356
. 在该链接的末尾也看到相同的视频 ID?
需要加载原始页面的原因实际上是因为它包含一些flash vars,其中之一是指向特定视频的FLV热链接。所以我们需要从原始页面的 HTML 中去除该热链接。
让我们编码吧!
//load the original page
$originalPage = file_get_contents( 'http://www.xvideos dot com/video1606356' );
//strip the FLV link
if ( !preg_match( '|flv_url=(.*)&url_bigthumb|', $originalPage , $match ) )
{
echo "Sorry, I could not find the hot link.";
//bye
exit();
}
$hotLink = $match[1];
//decode the hotlink (because it's URL encoded)
$hotLink = urldecode( $hotLink );
所以我们现在有了我们的热链接!接下来,我们需要下载flv
文件并将其存储在本地,以便我们可以fopen()
在其上使用。这会减慢速度,但这也意味着我们不必在服务器上打开安全漏洞。
//download the flv and store it in a folder called 'videos'
file_put_contents( 'videos/myVideoFileName.flv' , file_get_contents( $hotLink ) );
所以我们现在有一个下载的 flv 视频副本。我们现在需要使用我从这里偷来的方法来获取长度:
$flv = fopen("videos/myVideoFileName.flv", "rb");
fseek($flv, -4, SEEK_END);
$arr = unpack('N', fread($flv, 4));
$last_tag_offset = $arr[1];
fseek($flv, -($last_tag_offset + 4), SEEK_END);
fseek($flv, 4, SEEK_CUR);
$t0 = fread($flv, 3);
$t1 = fread($flv, 1);
$arr = unpack('N', $t1 . $t0);
$milliseconds_duration = $arr[1];
你有它。
最后,我不认为 XVIDEOS 可以接受您在这里所做的事情(没有人喜欢热链接窃贼)。对于您使用上述任何代码/内容所做的任何事情,我概不负责。
您需要先获取视频的热链接,然后在这里查看: