开发日志251202

date
Dec 2, 2025
slug
开发日志251202
status
Published
tags
AI
计算机
summary
今天继续解决上周遗留的获取不到评论对象的问题 1. 评论块可能只含图片 所以获取不到 content 元素的内容 需要进行处理 2. ~~.findOne() 获取的子元素可能为空~~ 我傻了 .findOne(id()) 方法获取不到是因为:部分手机的id是完整的com.ss.android.ugc.aweme:id/xx🌚
type
Post
今天继续解决上周遗留的获取不到评论对象的问题
  1. 评论块可能只含图片 所以获取不到 content 元素的内容 需要进行处理
  1. .findOne() 获取的子元素可能为空
我傻了 .findOne(id()) 方法获取不到是因为:
部分手机的id是完整的com.ss.android.ugc.aweme:id/xx🌚

现在可以获取到当前可视范围内的评论 @TODO:以后要添加翻页读取更多评论的功能
之后就可以调用AI API生成需要的评论内容
目前的方法是
graph TD
  A[设备]--发送请求--> B[主机]--发送请求-->C[AI平台]
  C--返回请求-->B--返回请求-->A
notion image
//server.js
app.post('/api/bailian', async (req, res) => {
    const { prompt, appId = 'APPID' } = req.body;
    const apiKey = "sk-密钥";

    const url = `https://dashscope.aliyuncs.com/api/v1/apps/${appId}/completion`;

    const body = {
        input: {
            prompt: prompt
        },
        parameters: {
            result_format: "text" 
        },
        debug: {}  // 可选,官方示例有
    };
    try {
        console.log("nodejs开始处理POST请求...");
        const apiRes = await fetch(url, {
            method: "POST",
            headers: {
                "Authorization": `Bearer ${apiKey}`,
                "Content-Type": "application/json"
            },
            body: JSON.stringify(body)
        });
        if (!apiRes.ok) {
            const errorText = await apiRes.text();
            console.error("API 错误:", apiRes.status, errorText);
            return res.status(apiRes.status).json({ error: errorText });
        }

        const data = await apiRes.json();
        const content = data.output?.text || data.output?.choices?.[0]?.message?.content || "无回复";
        console.log("返回的content:" + content.trim());

        res.json({ content: content.trim() });
        console.log("返回结果完成");
    } catch (err) {
        console.error("Fetch 错误:", err);
        res.status(500).json({ error: "fetch failed", details: err.message });
    }
});
//auto.js
function getAIComment(prompt) {
    prompt = prompt || '';
    const url = "/api/bailian";
    try {
        let response = http.post(url, {
            prompt: prompt
        }
        );
        if (response.statusCode === 200) {
            let responseText = response.body.string();
            if (responseText) {
                // 解析JSON
                let responseData = JSON.parse(responseText);
                if (responseData.content) {
                    let aiContent = responseData.content.trim();
                    return aiContent;
                } else {
                    logInfo.e('响应中没有content字段');
                    logInfo.e('解析后的数据: ' + JSON.stringify(responseData));
                    return null;
                }
            } else {
                logInfo.e('响应体为空');
                return null;
            }
        } else {
            logInfo.e('请求失败,状态码: ' + response.statusCode);
            logInfo.e('错误信息: ' + response.statusMessage);
            return null;
        }
    } catch (error) {
        logInfo.e('请求异常: ' + error.toString());
        logInfo.e('堆栈: ' + error.stack);
        return null;
    }
}

logInfo.d(`现在开始调用AI语言模型api`);
let prompt = `PROMPT`;
let aiComment = getAIComment(prompt);

今天调试了老半天 一直没想到直接在 server.js 里打印传入的数据 这样调试就找得到原因

找得到方法问题解决起来就很快

明天考虑将评论脚本完善 需要注意要加入 关键词判别视频标题简介读取 功能 此外还有 下滑屏幕获取更多评论内容 以及 任务队列限制 的功能 方便后期根据 视频标题,简介和评论区内容 来生成内容 后面着手处理发视频脚本 然后把抖音整体的流程再去优化 例如 以设备设定 为准去分配任务 而不是现在的平台分流 这样能做到比较高的自由度 此外要 优化 刷视频脚本 插入一些应该加入的参数 例如 读取视频标题 关键词辨别
prompt配置需要比较花心思 我今天随意写了五六条发现ai还是会自由发挥 效果不佳 这个要仔细钻研一下
 

© Dominic Hodpel 2022 - 2026