吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 801|回复: 27
收起左侧

[讨论] 写了个PHP用于显示歌词,但是无法正常加载某些LRC文件

[复制链接]
hdxzd12 发表于 2024-8-8 16:46
本帖最后由 20230713G001133 于 2024-8-8 17:22 编辑

代码如下
<?php
// 获取页面参数中的LRC文件地址
$lrc_file_url = isset($_GET['lrc_File']) ? $_GET['lrc_File'] : '';

// 检查是否传递了有效的LRC文件地址
if (empty($lrc_file_url)) {
    die('请提供有效的LRC文件地址!');
}

// 使用 cURL 打开远程文件(也可以使用 file_get_contents,但需要确保 allow_url_fopen 已启用)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $lrc_file_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$lrc_content = curl_exec($ch);
curl_close($ch);

// 检查是否成功读取内容
if ($lrc_content === false) {
    die('无法读取LRC文件内容!');
}

// 解析LRC文件内容为数组
$lrc_lines = explode("\n", $lrc_content);

// 准备将时间戳转换为秒的数组
$time_stamps = [];
$lyrics = [];

foreach ($lrc_lines as $line) {
    // 使用正则表达式匹配时间戳和歌词
    $pattern = '/\[(\d+):(\d+\.\d+)\](.*)/';
    preg_match($pattern, $line, $matches);

    if (!empty($matches)) {
        // 提取时间信息
        $minutes = intval($matches[1]);
        $seconds = floatval($matches[2]);
        $time_in_seconds = $minutes * 60 + $seconds;

        // 提取歌词内容
        $lyric_text = isset($matches[3]) ? trim($matches[3]) : '';

        // 添加到数组
        $time_stamps[] = $time_in_seconds;
        $lyrics[] = $lyric_text;
    }
}

// 输出JavaScript脚本和初始歌词内容
echo '<script>';
echo 'var timeStamps = ' . json_encode($time_stamps) . ';'; // 时间戳数组
echo 'var lyrics = ' . json_encode($lyrics) . ';'; // 歌词数组
echo '</script>';

// 输出初始歌词容器
echo '<div id="lyric-container"></div>';
?>

<style>

body {
    font-family: Arial, sans-serif;
    background-color: rgb(180, 190, 255);
    color: rgb(0, 0, 128);
    text-align: center;
}

</style>

<script>
    var index = 0;
    var lyricContainer = document.getElementById('lyric-container');
    var startTime = new Date().getTime() / 1000; // 当前时间戳,以秒为单位

    function displayLyric() {
        var currentTime = new Date().getTime() / 1000; // 当前时间戳,以秒为单位
        var elapsed = currentTime - startTime;

        // 寻找当前时间对应的歌词行
        while (index < timeStamps.length && timeStamps[index] <= elapsed) {
            index++;
        }

        // 显示当前歌词内容
        if (index > 0) {
            var currentLyric = lyrics[index - 1];
            lyricContainer.innerHTML = currentLyric;
        }
    }

    // 每100毫秒更新一次歌词显示
    setInterval(displayLyric, 100);
</script>


用它加载某些歌词会出现什么都不显示的情况
这可能是什么原因

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
wu2343 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zwb83925462 发表于 2024-8-8 19:27
凡是文本文件都应该考虑一下打开文件时所使用的编码是什么?
 楼主| hdxzd12 发表于 2024-8-8 20:33
zwb83925462 发表于 2024-8-8 19:27
凡是文本文件都应该考虑一下打开文件时所使用的编码是什么?

编码的话都统一是UTF8的
chishingchan 发表于 2024-8-8 21:18
LRC 字幕很普通!楼主可以关注一下卡拉OK方式的字幕格式,例如:小灰熊、傻丫头 的格式,或  Aegisub 3.2.2 软件。
 楼主| hdxzd12 发表于 2024-8-8 21:57
chishingchan 发表于 2024-8-8 21:18
LRC 字幕很普通!楼主可以关注一下卡拉OK方式的字幕格式,例如:小灰熊、傻丫头 的格式,或  Aegisub 3.2.2 ...

这些东西能不能嵌入HTML页面???
爱飞的猫 发表于 2024-8-8 23:58
试试在 curl_close 之前用 curl_error 查看错误信息
https://www.php.net/manual/zh/function.curl-error.php
goblack 发表于 2024-8-9 00:52
// 解析LRC文件内容为数组
$lrc_lines = explode("\n", $lrc_content);

这一步没有判断。。。lrc的换行符

免费评分

参与人数 1吾爱币 +2 收起 理由
zxinyun + 2 热心回复!

查看全部评分

 楼主| hdxzd12 发表于 2024-8-9 08:56
爱飞的猫 发表于 2024-8-8 23:58
试试在 curl_close 之前用 curl_error 查看错误信息
https://www.php.net/manual/zh/function.curl-error. ...

你说的是不是这个


// 使用 cURL 打开远程文件(也可以使用 file_get_contents,但需要确保 allow_url_fopen 已启用)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $lrc_file_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$lrc_content = curl_exec($ch);

if(curl_exec($ch) === false)
{
    echo 'Curl error: ' . curl_error($ch);
}
else
{
    echo '操作完成没有任何错误';
}


curl_close($ch);

如果是这样那程序会提示
操作完成没有任何错误

点评

那看来请求是成功了,lrc 歌词地址或文件方便发出来看看吗  详情 回复 发表于 2024-8-9 09:13
爱飞的猫 发表于 2024-8-9 09:13

那看来请求是成功了,lrc 歌词地址或文件方便发出来看看吗
 楼主| hdxzd12 发表于 2024-8-9 09:20

点评

我看你这网页也没做访问控制,先帮你把地址码掉… 你的参数有没有正确进行编码?我这里参数正确的情况下是可以的 (注意域名我给码掉了,你对照着改): [mw_shl_code=asm,true]不能正常访问 http://local  详情 回复 发表于 2024-8-9 09:56
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-11 23:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表