src/AppBundle/Component/MediaParser/ItemParser/YoukuVideoItemParser.php

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php

namespace AppBundle\Component\MediaParser\ItemParser;

use AppBundle\Component\MediaParser\ParserException;

class YoukuVideoItemParser extends AbstractItemParser
{
    private $patterns = array(
        'p1' => '/^http[s]{0,1}\:\/\/v\.youku\.com\/v_show\/id_(.+?).html/s',
        'p2' => '/http[s]{0,1}:\/\/player\.youku\.com\/player\.php.*?\/sid\/(.+?)\/v.swf/s',
    );

    protected function parseForWebUrl($item, $url)
    {
        $matched = preg_match($this->patterns['p2'], $url, $matches);
        if ($matched) {
            $url = "http://v.youku.com/v_show/id_{$matches[1]}.html";
        }

        $matched = preg_match('/\/id_(.+?).html/s', $url, $matches);
        if (empty($matched)) {
            throw ParserException::PARSED_FAILED_YOUKU();
        }

        $videoId = $matches[1];

        $response = $this->fetchUrl($url);
        if (200 != $response['code']) {
            throw ParserException::PARSED_FAILED_YOUKU();
        }

        $response['content'] = htmlspecialchars_decode(urldecode($response['content']));
        $matched = preg_match('/id=[\\\\]{0,1}"s_baidu1[\\\\]{0,1}"\s+href=[\\\\]{0,1}"(.*?)[\\\\]{0,1}"/s', $response['content'], $matches);
        if (empty($matched)) {
            throw ParserException::PARSED_FAILED_YOUKU();
        }
        $queryString = substr($matches[1], strpos($matches[1], '?') + 1);
        $queryString = substr($queryString, 0, strpos($queryString, '#') ?: strlen($queryString));
        parse_str($queryString, $query);

        if (empty($query) || empty($query['title'])) {
            throw ParserException::PARSED_FAILED_YOUKU();
        }

        $item['uuid'] = 'youku:'.$videoId;
        $item['name'] = $query['title'];
        $item['summary'] = empty($query['desc']) ? '' : $query['desc'];
        $item['page'] = "http://v.youku.com/v_show/id_{$videoId}.html";
        $item['pictures'] = empty($query['pic']) ? array() : array('url' => $query['pic']);
        $item['files'] = array(
            array('url' => "//player.youku.com/player.php/sid/{$videoId}/v.swf", 'type' => 'swf'),
        );

        return $item;
    }

    protected function getUrlPrefixes()
    {
        return array('v.youku.com', 'player.youku.com');

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。