给我自动从微博上批量下载图片的android手机端脚本代码

HAMI_0483178896 · 4 小时前

回答

Hamibot AI
1
· 4 小时前

文档地址 https://docs.hamibot.com/

// 自动批量下载微博图片(需授予无障碍权限和存储权限)
auto();

// 等待无障碍服务启动
if (!auto.service) {
    toast('请先开启无障碍服务');
    sleep(3000);
    hamibot.exit();
}

// 请求存储权限
if (!files.ensureDir('/storage/emulated/0/微博图片/')) {
    toast('存储权限未授予,请手动开启');
    sleep(3000);
    hamibot.exit();
}

// 跳转到微博用户主页,这里以某博主为例,可自行修改
app.launchApp('微博');
sleep(5000);

// 点击搜索框,搜索目标用户
var searchBtn = id('com.sina.weibo:id/search_box').findOne(10000);
if (searchBtn) {
    searchBtn.click();
    sleep(1000);
    // 输入框输入博主昵称
    setText('来去之间'); // 可替换为任意博主
    sleep(1000);
    // 点击搜索按钮
    var searchConfirm = text('搜索').findOne(5000);
    if (searchConfirm) {
        searchConfirm.click();
    }
}

// 等待搜索结果加载,进入用户主页
sleep(5000);
var userCard = id('com.sina.weibo:id/avatar').findOne(10000);
if (userCard) {
    userCard.parent().click(); // 进入主页
}

// 等待主页加载
sleep(5000);

// 点击“相册”或“全部微博” - 这里使用相册入口更直接
var albumTab = text('相册').findOne(5000);
if (!albumTab) {
    albumTab = text('全部微博').findOne(5000); // 备用
}
if (albumTab) {
    albumTab.click();
    sleep(3000);
}

// 循环滚动并下载图片
var downloaded = 0;
var maxDownload = 50; // 最大下载数量
var scrollCount = 0;

while (downloaded < maxDownload && scrollCount < 20) {
    // 查找当前页面所有图片
    var images = className('android.widget.ImageView').find();
    for (var i = 0; i < images.length; i++) {
        var img = images[i];
        // 微博图片控件通常有 desc 属性
        var desc = img.desc();
        if (desc && desc.indexOf('图片') >= 0 && img.clickable()) {
            // 点击图片进入大图模式
            img.click();
            sleep(2000);

            // 在大图模式下获取真实图片地址
            var bigImg = id('com.sina.weibo:id/image').findOne(3000);
            if (bigImg) {
                // 尝试获取图片链接(通过剪贴板或属性)
                // 微博图片链接通常可以通过长按菜单获取,但为了简化,这里采用截图保存
                // 更好的方式:获取当前 Activity 的图片 view 后截图保存
                var path = '/storage/emulated/0/微博图片/weibo_' + new Date().getTime() + '.png';
                // 截图保存(需无障碍服务截图权限)
                if (captureScreen(path)) {
                    downloaded++;
                    toast('已下载 ' + downloaded + ' 张');
                }
                // 返回上一页
                back();
                sleep(1500);
            }
        }
    }

    // 向下滚动
    swipe(device.width / 2, device.height * 0.8, device.width / 2, device.height * 0.2, 800);
    sleep(3000);
    scrollCount++;
}

toast('下载完成,共保存 ' + downloaded + ' 张图片到 微博图片 文件夹');

使用说明:

  1. 在 Hamibot 中创建新脚本,粘贴以上代码。
  2. 授予「无障碍服务」和「存储权限」。
  3. 修改代码中 '来去之间' 为目标微博博主的昵称。
  4. 如需调整下载数量,修改 maxDownload 变量。
  5. 由于微博大图获取真实 URL 较复杂,示例采用截图方式保存图片,若需下载原图,可结合 http.get 与真实链接(需自行解析或使用 requestScreenCapture 后截取图片区域)。

注意事项:

  • 若微博版本更新导致控件 ID 变化,需使用 auto.js 的控件分析功能重新获取选择器。
  • 大图模式下的 URL 可通过长按菜单中的“复制链接”获取,但自动化操作较复杂,截图方案更通用。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实