蜻蜓FM-当前页电台网络地址下载【最转换为欧卡电台格式】

蜻蜓FM-当前页电台网络地址下载

اعتبارا من 23-04-2022. شاهد أحدث إصدار.

// ==UserScript==
// @name         蜻蜓FM-当前页电台网络地址下载【最转换为欧卡电台格式】
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  蜻蜓FM-当前页电台网络地址下载
// @author       PwnInt
// @match        https://www.qingting.fm/radiopage/*
// @include      https://www.qingting.fm/
// @icon         https://www.google.com/s2/favicons?domain=qingting.fm
// @grant        unsafeWindow
// @run-at       document-end
// ==/UserScript==
(function() {
    'use strict';
    /*
       脚本实际属于自用脚本,用不了的希望见谅,蜻蜓FM地址:https://www.qingting.fm
       第一次进入到电台页面是可以显示下载按钮的,如果在电台页面切换到其他页面再切换回来,需要刷新一下才会显示按钮【定时器的原因导致需要这步操作,否则太浪费资源】
    */
//var LocalNum_QT = 0;//记录本地id
function ShowRegHtml()
{
    var Main_Element,InjectHtml,LocalKey;
    Main_Element = document.getElementById("app");
    LocalKey = localStorage.localkey;
    InjectHtml = ` <style>
    #unlockMain{
    float:left;
    width:500px;
    height:300px;
    background-color:#d4edda;
    broder:1px solid #d4edda;
    border-radius:10px;
    }
    #unlockOneRow{
    text-align:center;
    margin-top:15px;
    margin-bottom:10px;
    }
    #Useage
    {
    margin-left:20px;
    }
    #li_1{
    margin-top:20px;
    margin-bottom:20px;
    }
    #uploadKey{
    border-radius:5px;
    margin-left:40px;
    width:400px;
    height:25px;
    margin-top:5px;
    }
    #button_div
    {
    margin-top:15px;
    margin-left:15px;
    }
    #check
    {
    border-radius:5px;
    margin-left:25px;
    height:30px;
    width:100px;
    background-color:#fff3cd;
    }
    #errormsg
    {
    margin-left:30px;
    font-size:5px;
    color:red;
    }
    </style>
    <div id="unlockMain">
    <div id="unlockOneRow">蜻蜓电台解锁</div>
    <div id="Useage">使用方法</div>
    <ol  style="margin-left:15px;list-style:square">
        <li id="li_1">
            购买卡密:
            <a href="https://dwz.cn/K93WcVqG" style="color:blue;" target="_blank">点击前往购买卡密</a>
            >激活不了?
            <a href="http://wpa.qq.com/msgrd?v=3&uin=2732423664&site=qq&menu=yes" style="color:blue" target="_blank">点击这里联系我</a>
        </li>
        <li>
            卡密购买完成后,在下方输入卡密,并点击获取权限
        </li>
    </ol>
    <div style="">
        <input type="text" id="uploadKey" maxlength="80">
    </div>
    <div id="button_div">
        <span >
            <button id="check">获取权限</button>
        </span>
        <span id="errormsg">
        </span>
    </div>
    </div>`;

        Main_Element.insertAdjacentHTML("afterbegin",InjectHtml);

}
unsafeWindow.LocalNum_QT = 0;
function AddDownload_Button()//移除二维码下载的文字,改为自己的下载描述
{
    var QR_OneDesc = document.getElementsByClassName("text-view")[0];
    for(var o=0;o<QR_OneDesc.childElementCount;o++)
    {
        QR_OneDesc.children[o].remove();//移除
    }
    var DownloadFileButton=document.createElement("a");
    DownloadFileButton.className = "title";
    DownloadFileButton.text = "点击下载当前页面电台文本【欧卡】";
    DownloadFileButton.style.fontSize="16px";
    DownloadFileButton.style.cursor = "pointer";
    DownloadFileButton.onclick = function()
    {
        var Date_ = new Date();
        var NowDetailDate = Date_.getFullYear()+"-"+(Date_.getMonth()+1)+"-"+Date_.getDate()+"-"+Date_.getHours()+"-"+Date_.getMinutes()+"-"+Date_.getSeconds();
        DownloadFileButton.download = `电台列表[欧卡]-${NowDetailDate}.txt`;
        DownloadFileButton.href = GetDownloadUrl().DownloadUrl;
    };
    QR_OneDesc.appendChild(DownloadFileButton);
}
function GetDownloadUrl()//获取下载链接
{
    var Radio_CoverImg = document.getElementsByClassName("coverImg");
    var TextContent = "";//最后汇总的文本名称
    var LivePlay_url_start = "https://lhttp.qingting.fm/live/";
    var LivePlay_url_end = "/64k.mp3";
    var NowPageRadioCount = Radio_CoverImg.length;
    var RegxMatchRadio = /(?<=radios\/)\d.+/;//正则表达式
    var BlobStream;var DownloadUrl;
    for (var i=0;i<NowPageRadioCount;i++)
    {
        unsafeWindow.LocalNum_QT++;
        var Radio_Name = Radio_CoverImg[i].children[0].alt.trim();//电台名称
        var Radio_Num = RegxMatchRadio.exec(Radio_CoverImg[i].href)[0];//电台ID
        var EuroStreamText = `stream_data[${unsafeWindow.LocalNum_QT-1}]:`;//使用增长ID
        var Radio_liveUrl = LivePlay_url_start+Radio_Num+LivePlay_url_end;
        var Radio_Name_Utf8 = encodeURIComponent(Radio_Name).replaceAll("%","\\x").toLocaleLowerCase();//转为UTF8编码,目的是为了让中文在欧卡电台中正常显示
        TextContent+=EuroStreamText+`\"${Radio_liveUrl}\|${Radio_Name_Utf8}\"\n`;//拼接为欧卡支持的格式
    }
    BlobStream = new Blob([TextContent]);//返回一个Blob对象
    DownloadUrl = URL.createObjectURL(BlobStream);
    var ReturnInfo = {"DownloadUrl":DownloadUrl};
    return ReturnInfo;//返回下载的URL
}
var TimeEndFlag = setInterval(() => {
    if(window.location.href.indexOf("radiopage")!=-1)
    {
        //AddDownload_Button();
ShowRegHtml();
        clearInterval(TimeEndFlag);
    }
}, 100);//寻找到raidopage页面就停止
})();