【问题标题】:How to manipulate an API from other server in PHP?如何在 PHP 中操作来自其他服务器的 API?
【发布时间】:2017-01-19 04:18:14
【问题描述】:

我正在使用 API 来生成视频流,问题是我想在 PHP 中从下面的链接中更改一些字符串,然后将它们导出为新的:

https://api.blogit.vn/getlink.php?link=https://drive.google.com/file/d/0B1xQLLJtrzJoaWUxUHdqY01mRGM&json=jwplayer

上面的链接返回一个临时的 HTML 脚本:

[{"label":360,"default":"false","type":"mp4","file":"https:\/\/redirector.googlevideo.com\/videoplayback?api=api.blogit.vn&id=002f5ad6c741e491&itag=18&source=webdrive&requiressl=yes&ttl=transient&mm=31&mn=sn-ab5l6ne7&ms=au&mv=u&nh=IgpwcjAzLmxnYTA3KgkxMjcuMC4wLjE&pl=48&mime=video\/mp4&lmt=1451968289958732&mt=1484794782&ip=2604:a880:400:d0::1300:b001&ipbits=32&expire=1484809258&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cttl%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Cmime%2Clmt&signature=2AA8E475C2979F19490C850FDAC99E5F55888F8E.8369F59FA0DF17DBDEB6727BD4805437E2F84F29&key=ck2&app=explorer"},
{"label":480,"default":"true","type":"mp4","file":"https:\/\/redirector.googlevideo.com\/videoplayback?api=api.blogit.vn&id=002f5ad6c741e491&itag=59&source=webdrive&requiressl=yes&ttl=transient&mm=31&mn=sn-ab5l6ne7&ms=au&mv=u&nh=IgpwcjAzLmxnYTA3KgkxMjcuMC4wLjE&pl=48&mime=video\/mp4&lmt=1451968288256365&mt=1484794782&ip=2604:a880:400:d0::1300:b001&ipbits=32&expire=1484809258&sparams=ip%2Cipbits%2Cexpire%2Cid%2Citag%2Csource%2Crequiressl%2Cttl%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Cmime%2Clmt&signature=7E46471E73EA1D47A3E40A63C2F9B94559E39C67.085EFA564867C6D8226632185559F9EBECB388AD&key=ck2&app=explorer"}]

如何更改labeldefault中的字符串,例如:
360 到 360p 和 this 到 default: true 而不是上面的 480
480 到 480p
720 到 720p *在上面的脚本中不可见,但确实存在
1080 到 1080p *在上面的脚本中不可见,但确实存在

*当然,将它们正确列出为:
1080p
720p
480p
360p

完整的 API 示例:

<?php 
$link = 'https://drive.google.com/file/d/0BwBTO689s4TSeU84LU5DMkszejg';
$api = 'https://api.blogit.vn/getlink.php?link='.$link.'&json=jwplayer';;
$sources = curl($api);
function curl($url)
{
    $ch = @curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    $head[] = "Connection: keep-alive";
    $head[] = "Keep-Alive: 300";
    $head[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $head[] = "Accept-Language: en-us,en;q=0.5";
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36');
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
    curl_setopt($ch, CURLOPT_HTTPHEADER, $head);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    $page = curl_exec($ch);
    curl_close($ch);
    return $page;
}
?>
<div id="player"></div>
<script type="text/javascript" src="https://api.blogit.vn/BITplayer/jwplayer/jwplayer-7.7.4/jwplayer.js"></script>
<script type="text/javascript">
    jwplayer.key = "####jwplayer.key####";
    var playerInstance = jwplayer("player");
        playerInstance.setup({
            id:'player',
            sources: <?php echo $sources; ?>,
            controls: true,
            displaytitle: true,
            width: "100%",
            height: "100%",
            aspectratio: "16:9",
            fullscreen: "true",
            autostart: true,
        });
</script>

【问题讨论】:

    标签: php json api


    【解决方案1】:

    我想我忘了将数组转换为 json 子代码不起作用试试这个

    <?php
    $link = 'https://drive.google.com/file/d/0BwBTO689s4TSeU84LU5DMkszejg';
    $api = 'https://api.blogit.vn/getlink.php?link='.$link.'&json=jwplayer';
    $sources = changeValue(curl($api));
    
    function curl($url)
    {
        $ch = @curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        $head[] = "Connection: keep-alive";
        $head[] = "Keep-Alive: 300";
        $head[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
        $head[] = "Accept-Language: en-us,en;q=0.5";
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36');
        curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
        curl_setopt($ch, CURLOPT_HTTPHEADER, $head);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        $page = curl_exec($ch);
        curl_close($ch);
        return $page;
    }
    
    function changeLabel($label) {
        return $label."p";
    }
    
    function changeDefault($default) {
        return "true";
    }
    
    function changeValue($datas){
        //Define output
        $outputs = [];
        if (!empty($datas)) {
            $datas = json_decode($datas, true);
            rsort($datas);
    
            foreach ($datas as $data) {
                if (isset($data['label'])) {
                    $data['label']   = changeLabel($data['label']);
    
                }
                if (isset($data['default'])) {
                    $data['default'] = changeDefault($data['default']);
    
                }
    
                //keep to output
                $outputs[] = $data;
            }
        }
        return json_encode($outputs);
    }
    ?>
    <div id="player"></div>
    <script type="text/javascript" src="https://api.blogit.vn/BITplayer/jwplayer/jwplayer-7.7.4/jwplayer.js"></script>
    <script type="text/javascript">
        jwplayer.key = "rqQQ9nLfWs+4Fl37jqVWGp6N8e2Z0WldRIKhFg=="; //This is a public key, do not remove it
        var playerInstance = jwplayer("player");
            playerInstance.setup({
                id:"player",
                sources: <?php echo $sources; ?>,
                controls: true,
                displaytitle: true,
                width: "100%",
                height: "100%",
                aspectratio: "16:9",
                fullscreen: "true",
                autostart: true,
            });
    </script>
    

    【讨论】:

    • 为什么要添加答案而不是编辑之前的答案?
    • 对不起,我会删除旧的
    • 就是这样,朋友。我让它与我在你回答中所做的更新一起工作。核实!在您批准后,我将接受它作为主要答案。谢谢!
    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    相关资源
    最近更新 更多