MCPcopy Index your code
hub / github.com/echisan/wbp4j

github.com/echisan/wbp4j @v3.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.2 ↗ · + Follow
261 symbols 462 edges 43 files 69 documented · 26%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

wbp4j

(第三方)使用Java实现的微博图床API,提供简单的api即可完成上传图片到微博图床, 可方便集成到自己的项目当中。

文档

简介

这是个使用了微博图床接口的上传图片的api - 使用方便简单 - 获取简单,直接加入maven依赖即可 - cookie缓存 - cookie过期自动登录 - 第三方依赖少,仅依赖fastjson,logback - 可自定义配置

Maven

<dependency>
  <groupId>com.github.echisan</groupId>
  <artifactId>wbp4j</artifactId>
  <version>3.2</version>
</dependency>

用法

使用默认配置

UploadRequest uploadRequest = UploadRequestBuilder.buildDefault("your username", "your password");
UploadResponse response = uploadRequest.upload(new File(""));

自定义配置

支持自定义拦截器,具体查看文档

UploadRequest uploadRequest = UploadRequestBuilder.custom("your username", "your password")
                .setCacheFilename("myCache")
                .addInterceptor(new UploadInterceptor() {
                    @Override
                    public boolean processBefore(UploadAttributes uploadAttributes) {
                        System.out.println("hello world");
                        return true;
                    }
                    @Override
                    public void processAfter(UploadResponse uploadResponse) {
                    }
                }).build();

UploadResponse uploadResponse = uploadRequest.upload(new File(""));

返回结果

{
    "message": "上传图片成功",
    "imageInfo": {
        "pid": "7fa15162gy1g1e5o2vlmwj20dn07e0t7",
        "width": 491,
        "height": 266,
        "size": 27707,
        "large": "https://ws3.sinaimg.cn/large/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg",
        "middle": "https://ws3.sinaimg.cn/mw690/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg",
        "small": "https://ws3.sinaimg.cn/small/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg"
    },
    "result": "SUCCESS"
}

使用

Spring中使用

@SpringBootApplication
public class DemoApplication {
    @Bean
    public UploadRequest uploadRequest() {
        return UploadRequestBuilder.buildDefault("your username", "your password");
    }
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

@RestController
@RequestMapping("/wbp4j")
class TestController {

    @Autowired
    private UploadRequest uploadRequest;

    @PostMapping
    public WbpUploadResponse uploadImage(@RequestPart("file") MultipartFile multipartFile) throws IOException, UploadFailedException {
        UploadResponse upload = uploadRequest.upload(multipartFile.getBytes());
        // 推荐先做一个判断
        // if (response.getResult().equals(UploadResponse.ResultStatus.SUCCESS)) {
        //    做自己的响应封装
        //}
        return (WbpUploadResponse) upload;
    }

}

注意:UploadRequest是一个线程安全的类,可直接注入到你想使用的类中去,不要每次调用上传api时都去调用UploadRequestBuilder.build()是没有任何意义的

更新日志

优化了重试代码,修复了重试机制还是不生效的问题 ———— 2019.03.30

修复了重试机制不生效的问题 ———— 2019.03.25

修复了部署到服务器后无法登陆的问题,修复了返回的图片格式问题 ————2019.03.24

重构代码,代码结构更清晰稳定,减低各模块的耦合。修复缓存文件位置错误的问题,修复上传图片格式问题,支持了上传gif————2019.03.23

重构了代码,减少第三方依赖,目前只依赖logging,fastjson,将包上传至官方仓库使用更方便————2018.11.08

Extension points exported contracts — how you extend this code

UploadInterceptor (Interface)
上传图片接口的拦截器接口 主要用于拦截上传图片的接口,对参数进行相应的处理 而拦截处理后虽然已经不能影响上传结果了 但是可以根据UploadResponse的结果做一些操作 [9 implementers]
src/main/java/com/github/echisan/wbp4j/interceptor/UploadInterceptor.java
CookieCacheAccessor (Interface)
一个用于访问cookie持久层的接口 定义了两个接口,上层调用着只需关注获取以及保存两个主要功能 而无需在意是从数据库获取还是从文件中获取 [5 implementers]
src/main/java/com/github/echisan/wbp4j/cache/CookieCacheAccessor.java
LoginRequest (Interface)
登陆的接口 因为似乎发现了还有另外一种登陆方式 所以将方法抽离出来了 [3 implementers]
src/main/java/com/github/echisan/wbp4j/LoginRequest.java
UploadRequest (Interface)
上传图片的接口 提供三种上传方式 虽然到最后都是调用upload(String base64)去实现的了。。 主要提供upload(String base64)的包装方法 不需要上层去实现了 [3 implementers]
src/main/java/com/github/echisan/wbp4j/UploadRequest.java
UploadResponse (Interface)
响应结果接口 虽然好像并没有什么必要写成接口 [2 implementers]
src/main/java/com/github/echisan/wbp4j/UploadResponse.java

Core symbols most depended-on inside this repo

getBody
called by 10
src/main/java/com/github/echisan/wbp4j/http/WbpHttpResponse.java
getStatusCode
called by 8
src/main/java/com/github/echisan/wbp4j/http/WbpHttpResponse.java
getContext
called by 7
src/main/java/com/github/echisan/wbp4j/UploadAttributes.java
setMessage
called by 5
src/main/java/com/github/echisan/wbp4j/WbpUploadResponse.java
upload
called by 4
src/main/java/com/github/echisan/wbp4j/UploadRequest.java
setResult
called by 4
src/main/java/com/github/echisan/wbp4j/WbpUploadResponse.java
getHeader
called by 4
src/main/java/com/github/echisan/wbp4j/http/WbpHttpResponse.java
toString
called by 4
src/main/java/com/github/echisan/wbp4j/http/DefaultWbpHttpResponse.java

Shape

Method 215
Class 37
Interface 7
Enum 2

Languages

Java100%

Modules by API surface

src/main/java/com/github/echisan/wbp4j/entity/PreLogin.java20 symbols
src/main/java/com/github/echisan/wbp4j/entity/ImageInfo.java17 symbols
src/main/java/com/github/echisan/wbp4j/entity/upload/Pic_1.java14 symbols
src/main/java/com/github/echisan/wbp4j/SzvoneLoginRequest.java14 symbols
src/main/java/com/github/echisan/wbp4j/UploadRequestBuilder.java12 symbols
src/main/java/com/github/echisan/wbp4j/UploadAttributes.java12 symbols
src/main/java/com/github/echisan/wbp4j/WbpLoginRequest.java11 symbols
src/main/java/com/github/echisan/wbp4j/http/DefaultWbpHttpRequest.java10 symbols
src/main/java/com/github/echisan/wbp4j/entity/upload/Data.java8 symbols
src/main/java/com/github/echisan/wbp4j/WbpUploadResponse.java8 symbols
src/main/java/com/github/echisan/wbp4j/UploadResponse.java8 symbols
src/main/java/com/github/echisan/wbp4j/http/WbpHttpRequest.java7 symbols

For agents

$ claude mcp add wbp4j \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact