吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 828|回复: 11
收起左侧

[其他原创] 花瓣网图片 API v3

[复制链接]
pzx521521 发表于 2024-10-31 14:30

花瓣网图片 API v3 golang版本

花瓣网图片批量上传/下载工具
python版本的这个太老了 已经不能用了,现在是V3接口
可以作为图床.
示例程序
github

bilibili图床比较

跨域 网页直接使用 不压缩
bilibili ❌(需要no-referrer) ❌(部分压缩机制不知道)
huaban

bilibili跨域很好玩,比如在图片中存储数据(写在最后面),然后fetch 获取数据

功能说明

  • 无需验证的
    • 批量下载图片
    • 错误自动重试
    • 多线程并发数量设置
    • 使用描述作为文件名(未对描述做任何处理,特殊字符可能导致写入失败)
    • 获取画板图片列表
  • 需要验证的
    • 批量上传
      • 每张图片 自定义tag/argc, tags 可以用 azure-vision 的api 生成  
      • 多线程并发,可以快速上传大量文件,添加错误重试机制
    • 新建删除画板
    • 修改图片的tag/argc/描述 描述可以通过azure-vision 的api 生成

使用方法

如果你只想要上传功能

使用typora-plugin-huaban  

安装

go get github.com/pzx521521/huabanv3

下载图片 无需验证的

package main
import "github.com/pzx521521/huabanv3"

func main()  {
    huabanv3.DownloadBoard(94004345, 10, false)
}

上传图片 需要验证的

package main

import (
    "encoding/json"
    "fmt"
    "github.com/pzx521521/huabanv3"
    "log"
)

type Config struct {
    Name  string `json:"name"`
    Pass  string `json:"pass"`
    Board string `json:"board"`
    Dir   string `json:"dir"`
    Debug bool   `json:"debug"`
}
func main() {
    config := &Config{
        Name:  "your_name",
        Pass:  "",
        Board: "your_board_name",
        Dir:   "your_dir",
        Debug: true,
    }
    //获取cookie
    huaBanApi := huabanv3.NewHuaBanApiV3(config.Name, config.Pass)
    err := huaBanApi.Login()
    if err != nil {
        log.Printf("登录失败...%v\n", err)
        return
    }
    //获取文件 可以是文件/也可以是文件夹
    files, err := huabanv3.GetAllFiles(config.Dir)
    if err != nil {
        log.Printf("获取硬盘图片文件失败...%v\n", err)
        return
    }
    //上传
    err = huaBanApi.UploadBatch(files, config.Board)
    if err != nil {
        log.Printf("%v", err)
        return
    }
    //结果
    marshal, err := json.Marshal(huaBanApi.SuccessFiles)
    if err != nil {
        return
    }
    log.Printf("%s\n", marshal)

    //单路径结果
    for _, sf := range huaBanApi.SuccessFiles {
        imgUrl := fmt.Sprintf("https://%s.huaban.com/%s",
            sf.Bucket, sf.Key)
        fmt.Println(imgUrl)
    }
}

自定义每一张图片的title/tag/argc

package main

import "github.com/pzx521521/huabanv3"

func main() {
    huaBanApi := huabanv3.NewHuaBanApiV3(config.Name, config.Pass)
    huaBanApi.UploadOptions.ArgcFunc = func(filePath string) *huabanv3.Aigc {
        //todo 获取的逻辑代码
        return &huabanv3.Aigc{
            AigcCategory: "Stable Diffusion",
            Prompt:       "girl....",
        }
    }
    huaBanApi.UploadOptions.TagFunc = func(filePath string) []string {
        //todo 获取的逻辑代码
        return []string{"tag1", "tag2"}
    }

    huaBanApi.UploadOptions.TitleFunc = func(filePath string) string {
        //todo 获取的逻辑代码
        return "this is a title"
    }
}

可以结合azure-vision的api来获取tag/title

使用代理 抓包或者换ip

package main

import (
    "github.com/pzx521521/huabanv3"
    "net/http"
    "net/url"
)

func main() {

    proxyURL, _ := url.Parse("http://localhost:8888")
    // 创建一个带有代理的 Transport
    transport := &http.Transport{
        Proxy: http.ProxyURL(proxyURL),
    }
    // 创建一个带有自定义 Transport 的 Client
    client := &http.Client{
        Transport: transport,
    }
    huaBanApi := huabanv3.NewHuaBanApiV3(config.Name, config.Pass)
    huaBanApi.SetClient(client)
}

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
wasd71 + 1 + 1 我很赞同!
刘二三 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

13729181580 发表于 2024-10-31 15:45
感谢分享,支持
CC0613 发表于 2024-10-31 16:15
hlw5031420 发表于 2024-10-31 16:24
chaozhi 发表于 2024-10-31 16:35
感谢分享,go不熟,学习学习
HUHU666 发表于 2024-10-31 16:51
楼主厉害了
Yuansir 发表于 2024-10-31 16:55
怎么弄呀?
hackchild 发表于 2024-10-31 16:59
这个需要有一定基础的人才可以操作啊
netpeng 发表于 2024-10-31 17:49
学习了,感谢分享。
aiguohou 发表于 2024-10-31 17:52
感谢分享,有用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 05:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表