网站LOGO
青竹小轩
页面加载中
4月10日
网站LOGO 青竹小轩
分享生活瞬间,记录琐碎日常里的光与影
菜单
  • 青竹小轩
    分享生活瞬间,记录琐碎日常里的光与影
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    王者荣耀全英雄全皮肤壁纸采集代码
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    王者荣耀全英雄全皮肤壁纸采集代码

    贝斯 · 原创 ·
    写作创作 · 王者荣耀壁纸采集
    共 6399 字 · 约 2 分钟 · 54

    最近再写随机图片API时,没有找到有效的外部url链接,用自己的域名也不划算,服务器带宽问题,还有CDN/OSS存储也是个大问题,所以采集王者荣耀壁纸的url作为随机图片的url。返回图片URL经过处理,是1920x1080的壁纸
    ,还有一个搜索页面:https://www.hueoo.com/s/wzry/
    aPIUrl: https://api.hueoo.com/v1/img/get?type=wzry

    php 代码:
    <?php
    // 基础URL,用于请求数据
    $baseUrl = 'https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi';
    // 活动ID
    $activityId = 2735;
    // 验证码
    $verifyCode = 'ABCD';
    // 数据类型,这里是JSON
    $sDataType = 'JSON';
    // 每页获取的数据数量
    $iListNum = 20;
    // 排序顺序,0可能表示默认顺序
    $iOrder = 0;
    // 某种排序相关的标志,值为1
    $iSortNumClose = 1;
    // 另一个活动相关的ID
    $iAMSActivityId = 51991;
    // 类型ID
    $iTypeId = 2;
    // 流程ID
    $iFlowId = 267733;
    // 活动ID,与上面的activityId可能重复定义
    $iActId = 2735;
    // 模块ID,与上面的activityId可能重复定义
    $iModuleId = 2735;
    // 可能表示每次都读取的标志,值为'true'
    $everyRead = 'true';
    
    // 用于存储处理后的数据的数组
    $processedData = [];
    
    // 假设初始获取第一页数据来确定总页数,页码从0开始
    $page = 0;
    // 构建请求URL,包含各种参数,总页数先设为0,时间戳用于防止缓存
    $url = "{$baseUrl}?activityId={$activityId}&sVerifyCode={$verifyCode}&sDataType={$sDataType}&iListNum={$iListNum}&totalpage=0&page={$page}&iOrder={$iOrder}&iSortNumClose={$iSortNumClose}&iAMSActivityId={$iAMSActivityId}&_everyRead={$everyRead}&iTypeId={$iTypeId}&iFlowId={$iFlowId}&iActId={$iActId}&iModuleId={$iModuleId}&_=". time();
    // 发送HTTP请求获取数据
    $response = file_get_contents($url);
    // 如果请求失败,输出错误信息并终止脚本
    if ($response === false) {
        die("请求失败");
    }
    // 将获取到的JSON数据解码为PHP数组
    $firstPageData = json_decode($response, true);
    // 检查JSON解码是否成功,如果失败,输出错误信息并终止脚本
    if (json_last_error()!== JSON_ERROR_NONE) {
        die("JSON解析错误: ". json_last_error_msg());
    }
    // 获取总页数
    $totalPages = $firstPageData['iTotalPages'];
    
    // 遍历所有页码,从0到总页数减1
    for ($page = 0; $page < $totalPages; $page++) {
        // 构建请求URL,包含各种参数,总页数设为之前获取到的总页数,时间戳用于防止缓存
        $url = "{$baseUrl}?activityId={$activityId}&sVerifyCode={$verifyCode}&sDataType={$sDataType}&iListNum={$iListNum}&totalpage={$totalPages}&page={$page}&iOrder={$iOrder}&iSortNumClose={$iSortNumClose}&iAMSActivityId={$iAMSActivityId}&_everyRead={$everyRead}&iTypeId={$iTypeId}&iFlowId={$iFlowId}&iActId={$iActId}&iModuleId={$iModuleId}&_=". time();
        // 发送HTTP请求获取数据
        $response = file_get_contents($url);
        // 如果请求失败,输出错误信息并继续下一页
        if ($response === false) {
            echo "第 $page 页请求失败<br>";
            continue;
        }
        // 将获取到的JSON数据解码为PHP数组
        $pageData = json_decode($response, true);
        // 检查JSON解码是否成功,如果失败,输出错误信息并继续下一页
        if (json_last_error()!== JSON_ERROR_NONE) {
            echo "第 $page 页JSON解析错误: ". json_last_error_msg(). "<br>";
            continue;
        }
    
        // 遍历当前页的数据列表
        foreach ($pageData['List'] as $item) {
            // 获取产品ID
            $iProdId = $item['iProdId'];
            // 对产品名称字段进行URL解码
            $sProdName = urldecode($item['sProdName']);
            // 如果产品ID在处理后的数据中还未定义,则初始化其数组
            if (!isset($processedData[$iProdId])) {
                $processedData[$iProdId] = [];
            }
            // 如果产品名称在对应产品ID的数组中还未定义,则初始化其数组
            if (!isset($processedData[$iProdId][$sProdName])) {
                $processedData[$iProdId][$sProdName] = [];
                // 遍历8个可能的图片字段
                for ($imgIndex = 1; $imgIndex <= 8; $imgIndex++) {
                    $imgKey = "sProdImgNo_{$imgIndex}";
                    // 检查图片字段是否包含URL编码的字符,如果是则解码
                    if (strpos($item[$imgKey], '%')!== false) {
                        $processedData[$iProdId][$sProdName][$imgKey] = urldecode($item[$imgKey]);
                    } else {
                        // 如果不包含URL编码的字符,则直接使用原始值
                        $processedData[$iProdId][$sProdName][$imgKey] = $item[$imgKey];
                    }
                }
            }
        }
    }
    
    // 将处理后的数据编码为JSON格式,使用格式化输出、不转义斜杠和不转义Unicode字符
    $jsonData = json_encode($processedData, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
    // 检查JSON编码是否成功,如果失败,输出错误信息
    if ($jsonData === false) {
        echo "JSON编码错误: ". json_last_error_msg();
    } else {
        // 要写入的本地文件路径
        $filePath = 'heroes.json';
        // 将JSON数据写入文件
        $writeResult = file_put_contents($filePath, $jsonData);
        // 检查写入是否成功,如果失败,输出错误信息;否则输出成功信息
        if ($writeResult === false) {
            echo "写入文件失败";
        } else {
            echo "数据已成功写入 $filePath";
        }
    }
    
    python 代码:
    import requests
    import json
    import time
    
    baseUrl = 'https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi'
    activityId = 2735
    verifyCode = 'ABCD'
    sDataType = 'JSON'
    iListNum = 20
    iOrder = 0
    iSortNumClose = 1
    iAMSActivityId = 51991
    iTypeId = 2
    iFlowId = 267733
    iActId = 2735
    iModuleId = 2735
    everyRead = 'true'
    
    # 用于存储处理后的数据
    processedData = {}
    
    # 假设初始获取第一页数据来确定总页数
    page = 0
    url = f"{baseUrl}?activityId={activityId}&sVerifyCode={verifyCode}&sDataType={sDataType}&iListNum={iListNum}&totalpage=0&page={page}&iOrder={iOrder}&iSortNumClose={iSortNumClose}&iAMSActivityId={iAMSActivityId}&_everyRead={everyRead}&iTypeId={iTypeId}&iFlowId={iFlowId}&iActId={iActId}&iModuleId={iModuleId}&_={int(time.time())}"
    response = requests.get(url)
    if response.status_code != 200:
        print("请求失败")
        exit(1)
    firstPageData = response.json()
    totalPages = firstPageData['iTotalPages']
    
    # 遍历所有页码
    for page in range(totalPages):
        url = f"{baseUrl}?activityId={activityId}&sVerifyCode={verifyCode}&sDataType={sDataType}&iListNum={iListNum}&totalpage={totalPages}&page={page}&iOrder={iOrder}&iSortNumClose={iSortNumClose}&iAMSActivityId={iAMSActivityId}&_everyRead={everyRead}&iTypeId={iTypeId}&iFlowId={iFlowId}&iActId={iActId}&iModuleId={iModuleId}&_={int(time.time())}"
        response = requests.get(url)
        if response.status_code != 200:
            print(f"第 {page} 页请求失败")
            continue
        pageData = response.json()
        for item in pageData['List']:
            iProdId = item['iProdId']
            sProdName = item['sProdName']
            if iProdId not in processedData:
                processedData[iProdId] = {}
            if sProdName not in processedData[iProdId]:
                processedData[iProdId][sProdName] = {}
                for imgIndex in range(1, 9):
                    imgKey = f"sProdImgNo_{imgIndex}"
                    imgValue = item[imgKey]
                    processedData[iProdId][sProdName][imgKey] = imgValue
    
    # 将处理后的数据编码为JSON格式
    jsonData = json.dumps(processedData, indent=4, ensure_ascii=False)
    
    # 写入本地heroes.json文件
    with open('heroes.json', 'w', encoding='utf-8') as file:
        file.write(jsonData)
    print("数据已成功写入 heroes.json")
    
    声明:本文由 贝斯(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    现在已有

    1

    条评论
    发一条!
    1. ·
      • 角色:博主
      • 在线:本周
      头像
      沙发

      API有时效性,且用且珍惜吧。

      评论
    博客logo 青竹小轩 分享生活瞬间,记录琐碎日常里的光与影 百度统计
    ICP 豫ICP备2024102831号-1 又拍云 本站由又拍云提供CDN加速/云存储服务

    🕛

    本站已运行 1 年 99 天 20 小时 21 分
    青竹小轩. © 2024 ~ 2025.
    网站logo

    青竹小轩 分享生活瞬间,记录琐碎日常里的光与影
     
     
     
     
    壁纸