随身WIFI刷机资源以及教程
@ChatGPT 4,改成php web程序<?php function k_download($items) { if (is_array($items)) { foreach($items as $it) { $hash = $it['FileHash']; $a_id = $it['AlbumID']; $music_url = ''; if ($a_id) { $music_url = "https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery&hash={$hash}&dfid=dfid&mid=mid&platid=4&album_id={$a_id}"; } else { $music_url = "https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery&hash={$hash}&dfid=dfid&mid=mid"; } $m_res = requests\get($music_url, ['headers' => [ 'user-agent'=> 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'cookie'=> 'kg_mid=09fbe19da8563f6fd444a3657c4c71f6; kg_dfid=0hoWuV15LpJc3XeE0j46EoR1; Hm_lvt_aedee6983d4cfc62f509129360d6bb3d=1633592836' ]]); $content = preg_match_all('/jQuery((.*?));/', $m_res->text, $matches); $content = $matches[1][0]; try { $con = json_decode($content, true); if ($con['status'] == 1) { $item = $con['data']; $m_url = $item['play_url']; $title = $item['song_name']; $music = requests\get($m_url); if (!file_exists('kugou')) { mkdir('kugou'); } $path = './kugou/' . $title . '.mp3'; file_put_contents($path, $music->content); echo "正在下载".$title."\n"; } } catch (\Exception $e) { echo $e."\n".$m_res->url."有毒"."\n"; continue; } } } else { exit(); } } function KuGou($singer, $num) { $key = urlencode($singer); $url = "https://songsearch.kugou.com/song_search_v2?keyword={$key}&page={$num}"; try { $res = requests\get($url); $res_items = json_decode($res->content)->data; $page_size = $res_items->pagesize; $total = $res_items->total; echo $singer."相关歌曲共".$total."首,共".$page_size."页\n"; $num_key = fgets(STDIN); $page_num = fgets(STDIN); if (intval($page_num) > intval($page_size)) { echo "页面超过下限,请重新开始\n"; exit(); } if (!is_numeric($page_num)) { echo "让你输入数字,你输入啥玩意?\n"; exit(); } if ($num_key == "a") { $a_url = "https://songsearch.kugou.com/song_search_v2?keyword={$key}&page={$page_num}"; $res1 = requests\get($a_url); $items = json_decode($res1->content)->data->lists; k_download($items); } elseif ($num_key == "b") { for ($page=1; $page<=intval($page_num); $page++) { $b_url = "https://songsearch.kugou.com/song_search_v2?keyword={$key}&page={$page}"; $res2 = requests\get($b_url); $items = json_decode($res2->content)->data->lists; k_download($items); } } else { echo "输入错误\n"; exit(); } } catch (\Exception $e) { echo $e; exit(); } } ?>
[4] @旧人,您提供的代码是一个PHP脚本,用于从酷狗音乐下载歌曲。为了将其转换为一个基本的Web应用程序,您可以创建一个简单的HTML表单,让用户输入歌手名和要下载的歌曲数量。然后,使用PHP处理这些输入,并根据用户的选择下载歌曲。以下是一个简单的实现:
index.php
的文件,粘贴以下内容:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>酷狗音乐下载器</title>
</head>
<body>
<h1>酷狗音乐下载器</h1>
<form action="download.php" method="post">
<label for="singer">歌手名字:</label>
<input type="text" id="singer" name="singer" required>
<br>
<label for="num">下载数量:</label>
<input type="number" id="num" name="num" required>
<br>
<input type="submit" value="下载">
</form>
</body>
</html>
download.php
的新文件中,并在文件开头添加以下内容:<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$singer = $_POST["singer"];
$num = $_POST["num"];
// 在此处插入原始代码
}
?>
KuGou
函数调用替换为以下内容:KuGou($singer, $num);
现在,您可以将这两个文件放在Web服务器上(例如,使用Apache或Nginx服务器),访问index.php
文件并使用表单下载歌曲。请注意,这个简单的实现不包含任何错误处理或用户友好的提示,这些都是您可能需要在将其部署为实际Web应用程序之前加入的功能。
[4] @旧人,要实现这个效果,您需要在原始代码的基础上做一些修改。首先,创建一个名为index.php
的文件,并将以下内容粘贴到其中。这将创建一个基于Bootstrap的搜索页面,用于输入关键词并提交表单。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>酷狗音乐搜索与下载</title>
<!-- 引入 Bootstrap 样式文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1 class="text-center mt-4 mb-4">酷狗音乐搜索与下载</h1>
<form action="search.php" method="post">
<div class="input-group mb-3">
<input type="text" class="form-control" id="keyword" name="keyword" placeholder="请输入关键词" required>
<button class="btn btn-primary" type="submit">搜索</button>
</div>
</form>
</div>
<!-- 引入 Bootstrap JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.min.js"></script>
</body>
</html>
接下来,创建一个名为search.php
的文件。将您提供的原始代码粘贴到其中,并在文件开头添加以下内容。这将处理来自搜索表单的POST请求,显示分页结果并提供播放和下载选项。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$keyword = $_POST["keyword"];
// 在此处插入原始代码
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>搜索结果 - 酷狗音乐</title>
<!-- 引入 Bootstrap 样式文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1 class="text-center mt-4 mb-4">搜索结果</h1>
<!-- 在此处插入用于显示搜索结果、播放和下载选项的PHP代码 -->
</div>
<!-- 引入 Bootstrap JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.min.js"></script>
</body>
</html>
在search.php
文件中,您需要修改原始代码以返回搜索结果,而不是立即下载歌曲。您可以使用以下代码段替换KuGou
函数调用:
$results = KuGou($keyword, 1); // 获取第一页的结果
displayResults($results);
然后,您需要修改KuGou
函数,使其返回搜索结果,而不是下载歌曲。请注意,您可能需要根据实
[4] @旧人,以下是根据您的要求修改的search.php
文件的完整内容。该文件处理搜索表单的POST请求并显示分页结果,同时提供播放和下载选项。
<?php
require_once "functions.php";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$keyword = $_POST["keyword"];
$results = KuGou($keyword, 1); // 获取第一页的结果
}
function displayResults($results) {
if ($results) {
echo '<div class="row row-cols-1 row-cols-md-3 g-4 mb-4">';
foreach ($results as $result) {
echo '<div class="col">';
echo '<div class="card">';
echo '<div class="card-body">';
echo '<h5 class="card-title">' . $result["song_name"] . '</h5>';
echo '<audio src="' . $result["play_url"] . '" controls></audio>';
echo '<a href="' . $result["play_url"] . '" download="' . $result["song_name"] . '.mp3" class="btn btn-primary mt-2">下载</a>';
echo '</div>';
echo '</div>';
echo '</div>';
}
echo '</div>';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>搜索结果 - 酷狗音乐</title>
<!-- 引入 Bootstrap 样式文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1 class="text-center mt-4 mb-4">搜索结果</h1>
<?php
if (isset($results)) {
displayResults($results);
}
?>
</div>
<!-- 引入 Bootstrap JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.min.js"></script>
</body>
</html>
这个文件引用了一个名为functions.php
的文件,您需要将您提供的原始代码粘贴到其中。请注意,您可能需要根据实际情况对原始代码进行适当修改,以返回搜索结果,而不是立即下载歌曲。
在此示例中,displayResults
函数负责生成HTML代码以显示搜索结果、播放音频和下载选项。您可以根据需要自定义该函数以更改结果的显示方式。
@ChatGPT 4,这是functions.php的文件,请修改一下发我完整代码<?php
function k_search($singer, $num) {
// 新添加的搜索函数
$key = urlencode($singer);
$url = "https://songsearch.kugou.com/song_search_v2?keyword={$key}&page={$num}";
try {
$res = requests\get($url);
$res_items = json_decode($res->content)->data;
$items = $res_items->lists;
return $items;
// 返回搜索结果
}
catch (\Exception $e) {
echo $e;
exit();
}
}
function k_download($items) {
if (is_array($items)) {
foreach($items as $it) {
$hash = $it['FileHash'];
$a_id = $it['AlbumID'];
$music_url = '';
if ($a_id) {
$music_url = "https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery&hash={$hash}&dfid=dfid&mid=mid&platid=4&album_id={$a_id}";
} else {
$music_url = "https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery&hash={$hash}&dfid=dfid&mid=mid";
}
$m_res = requests\get($music_url, ['headers' => [
'user-agent'=> 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',
'cookie'=> 'kg_mid=09fbe19da8563f6fd444a3657c4c71f6; kg_dfid=0hoWuV15LpJc3XeE0j46EoR1; Hm_lvt_aedee6983d4cfc62f509129360d6bb3d=1633592836'
]]);
$content = preg_match_all('/jQuery((.*?));/', $m_res->text, $matches);
$content = $matches[1][0];
try {
$con = json_decode($content, true);
if ($con['status'] == 1) {
$item = $con['data'];
$m_url = $item['play_url'];
$title = $item['song_name'];
$music = requests\get($m_url);
if (!file_exists('kugou')) {
mkdir('kugou');
}
$path = './kugou/' . $title . '.mp3';
file_put_contents($path, $music->content);
echo "正在下载".$title."\n";
}
}
catch (\Exception $e) {
echo $e."\n".$m_res->url."有毒"."\n";
continue;
}
}
} else {
exit();
}
}
function KuGou($singer, $num) {
$items = k_search($singer, $num);
// 调用搜索函数获取搜索结果
$total = $items->total;
$page_size = $items->pagesize;
echo $singer."相关歌曲共".$total."首,共".$page_size."页\n";
$num_key = fgets(STDIN);
$page_num = fgets(STDIN);
if (intval($page_num) > intval($page_size)) {
echo "页面超过下限,请重新开始\n";
exit();
}
if (!is_numeric($page_num)) {
echo "让你输入数字,你输入啥玩意?\n";
exit();
}
if ($num_key == "a") {
k_download($items->lists);
// 直接下载搜索结果
} elseif ($num_key == "b") {
for ($page=1; $page<=intval($page_num); $page++) {
$items = k_search($singer, $page);
// 每一页都重新搜索
k_download($items->lists);
}
} else {
echo "输入错误\n";
exit();
}
}
?>
[4] @旧人,我已经根据您的要求修改了functions.php
文件。在这个修改后的版本中,我移除了与下载相关的部分,仅保留了搜索功能。现在,KuGou
函数仅负责搜索并返回结果。以下是修改后的functions.php
文件:
<?php
require_once 'vendor/autoload.php';
use Requests as requests;
function k_search($singer, $num) {
$key = urlencode($singer);
$url = "https://songsearch.kugou.com/song_search_v2?keyword={$key}&page={$num}";
try {
$res = requests::get($url);
$res_items = json_decode($res->content)->data;
$items = $res_items->lists;
return $items;
}
catch (\Exception $e) {
echo $e;
exit();
}
}
function KuGou($singer, $num) {
$items = k_search($singer, $num);
return $items;
}
?>
这个文件依赖于Requests
库,所以确保在您的项目中安装了该库。您可以使用composer
来安装:
composer require rmccue/requests
现在,您可以在search.php
文件中调用KuGou
函数来获取搜索结果。示例中的displayResults
函数已经能够显示这些结果并提供播放和下载选项。
[4] @旧人,
</body>
</html>
```
这个版本的代码实现了以下优化:
请注意,这里没有添加图表库。如果您希望以图表形式展示数据,请查阅Chart.js或D3.js等库的文档,了解如何将它们整合到您的项目中。