fxgsfxgs 发表于 2025-3-29 17:15:59

aallsskkgg 发表于 2025-3-29 16:20
这样改对吗,看不了,帮帮我

if($id=='bjws4k')这里面id要和这里面一致'bjws' => '5755n511tbk8flo40l4c71l0sdf',//北京卫视

杨yang 发表于 2025-3-29 20:24:50

aallsskkgg 发表于 2025-3-29 16:20
这样改对吗,看不了,帮帮我

这样肯定不行的啊

guoma 发表于 2025-3-30 00:06:59

    'bjws4k' => '5755n511tbk8flo40l4c71l0sdf',//北京卫视4K

zow1990 发表于 2025-3-30 00:41:05

简单粗暴的时候回来看看能不能打印

aallsskkgg 发表于 2025-3-31 08:48:33

10086 发表于 2025-3-29 17:12
你id不对。。
你把下面那个判断句的bjws4k改成bjws
然后已经有if判断了下面那句记得删一下 ...

<?php
error_reporting(0);
$id = $_GET['id']??'bjwy';
$n = [
    'bjws4k' => '5755n511tbk8flo40l4c71l0sdf',//北京卫视
    'bjwy' => '54db6gi5vfj8r8q1e6r89imd64s',//BRTV文艺
    ];

$t = time();
$sign = substr(md5($n[$id]."151".$t.'TtJSg@2g*$K4PjUH'),0,8);
$url = "https://pc.api.btime.com/video/play?id=$n[$id]&sign=$sign&timestamp=$t&type_id=151";
$d = file_get_contents($url);
$stream_url = json_decode($d,1)['data']['video_stream']['stream_url'];
if($id=='bjws4k'){
   $playurl = $stream_url;
   } else {
   $playurl = base64_decode(base64_decode(strrev($stream_url)));
   }
$playurl = base64_decode(base64_decode(strrev($stream_url)));
   header('location:'.$playurl);
   //print_r($playurl);
   
?>
也不行啊,帮我看看还哪里不对

tongxunlu 发表于 2025-3-31 10:42:15

本帖最后由 tongxunlu 于 2025-3-31 10:43 编辑

aallsskkgg 发表于 2025-3-31 08:48
也不行啊,帮我看看还哪里不对
漏了header
$options = [
    'http' => [
      'method' => 'GET',
      'header' => implode("\r\n", [
            'Accept: */*',
            'Referer: https://www.btime.com/',
            'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
      ])
    ]
];

$context = stream_context_create($options);
$d = file_get_contents($url,false, $context);

$stream_url = json_decode($d,1)['data']['video_stream']['stream_url'];
if($id=='bjws4k'){
    $playurl = $stream_url;
} else {
    $playurl = base64_decode(base64_decode(strrev($stream_url)));
}
header('location:'.$playurl);

sunyeen 发表于 2025-3-31 12:38:40

用豆包编程改的,测试了一下,可以用。
<?php
error_reporting(0);
// 获取id参数,若未提供则默认为bjwy
$id = isset($_GET['id']) ? $_GET['id'] : 'bjwy';

// 定义频道ID和对应的密钥
$n = [
    'bjws' => '5755n511tbk8flo40l4c71l0sdf',// 北京卫视
    'bjwy' => '54db6gi5vfj8r8q1e6r89imd64s'   // BRTV文艺
];

// 检查id是否存在于数组中
if (!array_key_exists($id, $n)) {
    // 若不存在,输出错误信息并终止脚本
    die("Invalid ID");
}

// 获取当前时间戳
$t = time();

// 生成签名
$sign = substr(md5($n[$id] . "151" . $t . 'TtJSg@2g*$K4PjUH'), 0, 8);

// 构建请求URL
$url = "https://pc.api.btime.com/video/play?id=" . $n[$id] . "&sign=" . $sign . "&timestamp=" . $t . "&type_id=151";

// 设置请求头
$options = [
    'http' => [
      'method' => 'GET',
      'header' => implode("\r\n", [
            'Accept: */*',
            'Referer: https://www.btime.com/',
            'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
      ])
    ]
];

// 创建上下文
$context = stream_context_create($options);

// 发起网络请求
$d = file_get_contents($url, false, $context);

// 检查请求是否成功
if ($d === false) {
    // 若失败,输出错误信息并终止脚本
    die("Failed to fetch data from the server");
}

// 解析JSON数据
$jsonData = json_decode($d, true);

// 检查JSON解析是否成功
if ($jsonData === null || !isset($jsonData['data']['video_stream']['stream_url'])) {
    // 若失败,输出错误信息并终止脚本
    die("Invalid JSON data or missing stream URL");
}

// 获取视频流URL
$stream_url = $jsonData['data']['video_stream']['stream_url'];

// 根据id选择播放URL
if ($id == 'bjws') {
    $playurl = $stream_url;
} else {
    $playurl = base64_decode(base64_decode(strrev($stream_url)));
}

// 重定向到播放URL
header('location:' . $playurl);

// 用于调试,可注释掉
// print_r($playurl);
?>

caodeli1983 发表于 2025-3-31 15:15:54

aallsskkgg 发表于 2025-3-31 08:48
也不行啊,帮我看看还哪里不对

if($id=='bjws4k'){
   $playurl = $stream_url;
   } else {
   $playurl = base64_decode(base64_decode(strrev($stream_url)));
   }
$playurl = base64_decode(base64_decode(strrev($stream_url)));
   header('location:'.$playurl);
   //print_r($playurl);


base64解码这行重复,把最后一行$playurl = base64_decode(base64_decode(strrev($stream_url)));删掉

caodeli1983 发表于 2025-3-31 15:18:19

aallsskkgg 发表于 2025-3-29 16:20
这样改对吗,看不了,帮帮我

$playurl = base64_decode(base64_decode(strrev($stream_url)));
if($playurl == null){
   echo "因版权方要求,暂无直播";
   } else {
   header('location:'.$playurl);
   //print_r($playurl);
   }
?>
这部分改为:
   header('location:'.$playurl);
   //print_r($playurl);
?>

aallsskkgg 发表于 2025-3-31 16:19:31

tongxunlu 发表于 2025-3-31 10:42
漏了header
$options = [
    'http' => [


完美,谢谢!

aallsskkgg 发表于 2025-3-31 16:23:17

sunyeen 发表于 2025-3-31 12:38
用豆包编程改的,测试了一下,可以用。

可用,谢谢!

redflag 发表于 2025-3-31 17:16:33

向guoma大佬致敬
页: 1 [2]
查看完整版本: 请求guoma大佬更新北京台代码