初始化
This commit is contained in:
		
						commit
						670f5baf03
					
				
							
								
								
									
										33
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| HELP.md | ||||
| target/ | ||||
| !.mvn/wrapper/maven-wrapper.jar | ||||
| !**/src/main/**/target/ | ||||
| !**/src/test/**/target/ | ||||
| 
 | ||||
| ### STS ### | ||||
| .apt_generated | ||||
| .classpath | ||||
| .factorypath | ||||
| .project | ||||
| .settings | ||||
| .springBeans | ||||
| .sts4-cache | ||||
| 
 | ||||
| ### IntelliJ IDEA ### | ||||
| .idea | ||||
| *.iws | ||||
| *.iml | ||||
| *.ipr | ||||
| 
 | ||||
| ### NetBeans ### | ||||
| /nbproject/private/ | ||||
| /nbbuild/ | ||||
| /dist/ | ||||
| /nbdist/ | ||||
| /.nb-gradle/ | ||||
| build/ | ||||
| !**/src/main/**/build/ | ||||
| !**/src/test/**/build/ | ||||
| 
 | ||||
| ### VS Code ### | ||||
| .vscode/ | ||||
							
								
								
									
										81
									
								
								pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								pom.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,81 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
|     <modelVersion>4.0.0</modelVersion> | ||||
|     <parent> | ||||
|         <groupId>org.springframework.boot</groupId> | ||||
|         <artifactId>spring-boot-starter-parent</artifactId> | ||||
|         <version>3.1.2</version> | ||||
|         <relativePath/> <!-- lookup parent from repository --> | ||||
|     </parent> | ||||
|     <groupId>cn.jecyp</groupId> | ||||
|     <artifactId>baidu-pan-openapi</artifactId> | ||||
|     <version>0.0.1-SNAPSHOT</version> | ||||
|     <name>baidu-pan-openapi</name> | ||||
|     <description>baidu-pan-openapi</description> | ||||
|     <properties> | ||||
|         <java.version>17</java.version> | ||||
|     </properties> | ||||
|     <dependencies> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-jdbc</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-data-redis</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-web</artifactId> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-thymeleaf</artifactId> | ||||
|         </dependency> | ||||
| 
 | ||||
|         <dependency> | ||||
|             <groupId>com.mysql</groupId> | ||||
|             <artifactId>mysql-connector-j</artifactId> | ||||
|             <scope>runtime</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.projectlombok</groupId> | ||||
|             <artifactId>lombok</artifactId> | ||||
|             <optional>true</optional> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|             <artifactId>spring-boot-starter-test</artifactId> | ||||
|             <scope>test</scope> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>com.baomidou</groupId> | ||||
|             <artifactId>mybatis-plus-boot-starter</artifactId> | ||||
|             <version>3.5.3.1</version> | ||||
|         </dependency> | ||||
|         <dependency> | ||||
|             <groupId>cn.hutool</groupId> | ||||
|             <artifactId>hutool-all</artifactId> | ||||
|             <version>5.8.16</version> | ||||
|         </dependency> | ||||
|     </dependencies> | ||||
| 
 | ||||
|     <build> | ||||
|         <plugins> | ||||
|             <plugin> | ||||
|                 <groupId>org.springframework.boot</groupId> | ||||
|                 <artifactId>spring-boot-maven-plugin</artifactId> | ||||
|                 <configuration> | ||||
|                     <excludes> | ||||
|                         <exclude> | ||||
|                             <groupId>org.projectlombok</groupId> | ||||
|                             <artifactId>lombok</artifactId> | ||||
|                         </exclude> | ||||
|                     </excludes> | ||||
|                 </configuration> | ||||
|             </plugin> | ||||
|         </plugins> | ||||
|     </build> | ||||
| 
 | ||||
| </project> | ||||
| @ -0,0 +1,13 @@ | ||||
| package cn.jecyp.baidupanopenapi; | ||||
| 
 | ||||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
| 
 | ||||
| @SpringBootApplication | ||||
| public class BaiduPanOpenapiApplication { | ||||
| 
 | ||||
|     public static void main(String[] args) { | ||||
|         SpringApplication.run(BaiduPanOpenapiApplication.class, args); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,115 @@ | ||||
| package cn.jecyp.baidupanopenapi.controller; | ||||
| 
 | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| import cn.hutool.http.HttpUtil; | ||||
| import cn.hutool.json.JSON; | ||||
| import cn.hutool.json.JSONArray; | ||||
| import cn.hutool.json.JSONObject; | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import cn.jecyp.baidupanopenapi.pojo.dto.BaiduPanAccessTokenDTO; | ||||
| import cn.jecyp.baidupanopenapi.pojo.dto.BaiduPanImageListDTO; | ||||
| import jakarta.servlet.http.HttpServletRequest; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import org.springframework.stereotype.Controller; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestParam; | ||||
| import org.springframework.web.bind.annotation.ResponseBody; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.net.URLEncoder; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| import java.text.MessageFormat; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| import java.util.Objects; | ||||
| 
 | ||||
| /** | ||||
|  * @author cyp | ||||
|  * @date 2023-07-31 | ||||
|  */ | ||||
| @Controller | ||||
| @RequestMapping("/baidu/pan") | ||||
| public class BaiduPanController { | ||||
| 
 | ||||
|     private String callback = "http://jecyp.nat300.top/openapi/baidu/pan/callback"; | ||||
| 
 | ||||
|     private BaiduPanAccessTokenDTO accessToken = new BaiduPanAccessTokenDTO(); | ||||
|     { | ||||
|         accessToken.setAccess_token("121.62804fe376fc92c5ac1ddd017c056edc.YmfpvVDzVgESpQp2wgw1yVfUd23vHbAIzhONRXp.795eYw"); | ||||
|         accessToken.setExpires_in("2592000"); | ||||
|         accessToken.setRefresh_token("122.ef800517f78d73f18acf5126b5659631.YaxBybnvqW6pUiTafTJCN5atxmnTaOu8U8QV6e-.f6WXCw"); | ||||
|         accessToken.setScope("basic netdisk"); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @RequestMapping("/callback") | ||||
|     public String callback(@RequestParam(name = "code", required = false, defaultValue = "code") String code, | ||||
|                            @RequestParam(name = "state", required = false, defaultValue = "state") String state, | ||||
|                            HttpServletRequest request){ | ||||
|         String contextPath = request.getContextPath(); | ||||
|         System.out.println("contextPath:"+contextPath); | ||||
|         System.out.println("code="+code+",state="+state); | ||||
|         String accessTokenBaseUrl = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code={3}&client_id={0}&client_secret={1}&redirect_uri={2}"; | ||||
|         String accessTokenUrl = MessageFormat.format(accessTokenBaseUrl, "4DyoVFaBH2zoSAnpAowWS5w3P6FsgGM1", "ePuUZ64mq5qhNcRL7UpcRUhUoZVeHUZl",callback,code); | ||||
|         String accessTokenRes = HttpUtil.get(accessTokenUrl); | ||||
| 
 | ||||
|         System.out.println("refreshTokenRes="+accessTokenRes); | ||||
|         BaiduPanAccessTokenDTO baiduPanAccessTokenDTO = JSONUtil.toBean(accessTokenRes, BaiduPanAccessTokenDTO.class); | ||||
|         System.out.println("refreshTokenRes bean="+baiduPanAccessTokenDTO); | ||||
| 
 | ||||
| //        String refreshTokenBaseUrl = "https://openapi.baidu.com/oauth/2.0/token?grant_type=refresh_token&refresh_token={2}&client_id={0}&client_secret={1}"; | ||||
| //        String refreshTokenUrl = MessageFormat.format(refreshTokenBaseUrl, "4DyoVFaBH2zoSAnpAowWS5w3P6FsgGM1", "ePuUZ64mq5qhNcRL7UpcRUhUoZVeHUZl",baiduPanAccessTokenDTO.getRefresh_token()); | ||||
| //        String refreshTokenRes = HttpUtil.get(refreshTokenUrl); | ||||
| //        System.out.println("refreshTokenRes="+refreshTokenRes); | ||||
| //        baiduPanAccessTokenDTO = JSONUtil.toBean(refreshTokenRes, BaiduPanAccessTokenDTO.class); | ||||
| //        System.out.println("refreshTokenRes bean="+baiduPanAccessTokenDTO); | ||||
| 
 | ||||
|         return "index"; | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping("/login") | ||||
|     @ResponseBody | ||||
|     public void login(HttpServletResponse response) throws IOException { | ||||
|         String baseUrl = "http://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&scope=basic,netdisk&qrcode=1"; | ||||
|         String url = MessageFormat.format(baseUrl, "4DyoVFaBH2zoSAnpAowWS5w3P6FsgGM1", callback); | ||||
|         System.out.println("url="+url); | ||||
|         response.sendRedirect(url); | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping("/imagesList") | ||||
|     @ResponseBody | ||||
|     public String imagesList(HttpServletResponse response) throws IOException, InterruptedException { | ||||
| 
 | ||||
|         String url = "http://pan.baidu.com/rest/2.0/xpan/file"; | ||||
|         BaiduPanImageListDTO baiduPanImageListDTO = new BaiduPanImageListDTO(); | ||||
|         baiduPanImageListDTO.setAccess_token(accessToken.getAccess_token()); | ||||
|         baiduPanImageListDTO.setParent_path(URLEncoder.encode("/电脑文件/手机图片/照片-杂", StandardCharsets.UTF_8)); | ||||
|         baiduPanImageListDTO.setPage(1); | ||||
|         baiduPanImageListDTO.setNum(1); | ||||
|         baiduPanImageListDTO.setWeb(1); | ||||
|         Map<String, Object> stringObjectMap = BeanUtil.beanToMap(baiduPanImageListDTO); | ||||
|         String res = HttpUtil.get(url, stringObjectMap); | ||||
|         JSONObject json = JSONUtil.parseObj(res); | ||||
|         JSONArray info = json.getJSONArray("info"); | ||||
|         JSONObject entries = info.get(0, JSONObject.class); | ||||
|         JSONObject thumbs = entries.get("thumbs", JSONObject.class); | ||||
|         String url3 = thumbs.getStr("url3"); | ||||
| 
 | ||||
|         Thread.sleep(1000 * 10); | ||||
|         res = HttpUtil.get(url, stringObjectMap); | ||||
|         json = JSONUtil.parseObj(res); | ||||
|         info = json.getJSONArray("info"); | ||||
|         entries = info.get(0, JSONObject.class); | ||||
|         thumbs = entries.get("thumbs", JSONObject.class); | ||||
|         String url32 = thumbs.getStr("url3"); | ||||
|         System.out.println(Objects.equals(url32, url3)); | ||||
|         System.out.println("imagesList="+res); | ||||
|         return res; | ||||
|     } | ||||
| 
 | ||||
|     @RequestMapping("/index") | ||||
|     public String index(HttpServletResponse response) throws IOException { | ||||
|         return "index"; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,34 @@ | ||||
| package cn.jecyp.baidupanopenapi.pojo.dto; | ||||
| 
 | ||||
| import lombok.Data; | ||||
| 
 | ||||
| import java.io.Serializable; | ||||
| 
 | ||||
| /** | ||||
|  * 百度判断返回的accessToken对象 | ||||
|  * @author cyp | ||||
|  * @date 2023-07-31 | ||||
|  */ | ||||
| @Data | ||||
| public class BaiduPanAccessTokenDTO implements Serializable { | ||||
| 
 | ||||
|     /** | ||||
|      * 获取到的Access Token是调用网盘开放API访问用户授权资源的凭证。 | ||||
|      */ | ||||
|     private String access_token; | ||||
| 
 | ||||
|     /** | ||||
|      *  Token的有效期,单位为秒。 | ||||
|      */ | ||||
|     private String expires_in; | ||||
| 
 | ||||
|     /** | ||||
|      * 用于刷新 Access Token, 有效期为10年。 | ||||
|      */ | ||||
|     private String refresh_token; | ||||
| 
 | ||||
|     /** | ||||
|      * Access Token 最终的访问权限,即用户的实际授权列表。 | ||||
|      */ | ||||
|     private String scope; | ||||
| } | ||||
| @ -0,0 +1,56 @@ | ||||
| package cn.jecyp.baidupanopenapi.pojo.dto; | ||||
| 
 | ||||
| import lombok.Data; | ||||
| 
 | ||||
| /** | ||||
|  * @author cyp | ||||
|  * @date 2023-07-31 | ||||
|  */ | ||||
| @Data | ||||
| public class BaiduPanImageListDTO { | ||||
| 
 | ||||
|     /** | ||||
|      * 是 URL参数 本接口固定为imagelist | ||||
|      */ | ||||
|     private String method = "imagelist"; | ||||
| 
 | ||||
|     /** | ||||
|      * 是 URL参数	接口鉴权参数 | ||||
|      */ | ||||
|     private String access_token; | ||||
| 
 | ||||
|     /** | ||||
|      * 否	URL参数	目录名称,以/开头的绝对路径, 默认为/ 路径包含中文时需要UrlEncode编码 | ||||
|      */ | ||||
|     private String parent_path; | ||||
| 
 | ||||
|     /** | ||||
|      * 	否	URL参数	页码,从1开始, 如果不指定页码,则为不分页模式,返回所有的结果 如果指定page参数,则按修改时间倒序排列 | ||||
|      */ | ||||
|     private Integer page; | ||||
| 
 | ||||
|     /** | ||||
|      * 否	URL参数	一页返回的图片数,默认值为1000,建议最大值不超过1000 | ||||
|      */ | ||||
|     private Integer num; | ||||
| 
 | ||||
|     /** | ||||
|      * 否 URL参数	排序字段:time按修改时间排序,name按文件名称排序(注意,此处排序是按字符串排序的,如果用户有剧集排序需求,需要自行开发),size按文件大小排序,默认为time | ||||
|      */ | ||||
|     private String order; | ||||
| 
 | ||||
|     /** | ||||
|      * 否	URL参数	0为升序,1为降序,默认为1 | ||||
|      */ | ||||
|     private Integer desc; | ||||
| 
 | ||||
|     /** | ||||
|      * 	否	URL参数	是否需要递归,0为不需要,1为需要,默认为0.递归是指:当目录下有文件夹,使用此参数,可以获取到文件夹下面的图片 | ||||
|      */ | ||||
|     private Integer recursion; | ||||
| 
 | ||||
|     /** | ||||
|      * 否	URL参数	为1时返回图片缩略图 | ||||
|      */ | ||||
|     private Integer web; | ||||
| } | ||||
							
								
								
									
										18
									
								
								src/main/resources/application.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/main/resources/application.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| 
 | ||||
| spring: | ||||
|   datasource: | ||||
|     driver-class-name: com.mysql.cj.jdbc.Driver | ||||
|     url: jdbc:mysql://rm-bp1r0y7o8554i172duo.mysql.rds.aliyuncs.com:3306/baidu_openapi?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8 | ||||
|     username: aliyun_mysql | ||||
|     password: peng0012 | ||||
| 
 | ||||
| server: | ||||
|   tomcat: | ||||
|     uri-encoding: UTF-8 | ||||
|   port: 9000 | ||||
|   servlet: | ||||
|     context-path: /openapi | ||||
|     session: | ||||
|       cookie: | ||||
|         http-only: true | ||||
| 
 | ||||
							
								
								
									
										13
									
								
								src/main/resources/templates/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/main/resources/templates/index.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <title>Title</title> | ||||
| </head> | ||||
| <body> | ||||
|     hello | ||||
|     <a href="#" th:href="@{/baidu/pan/login}" class="ui mini teal basic button">登录</a> | ||||
|     <a href="#" th:href="@{/baidu/pan/imagesList}" class="ui mini teal basic button">获取图片</a> | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
| @ -0,0 +1,13 @@ | ||||
| package cn.jecyp.baidupanopenapi; | ||||
| 
 | ||||
| import org.junit.jupiter.api.Test; | ||||
| import org.springframework.boot.test.context.SpringBootTest; | ||||
| 
 | ||||
| @SpringBootTest | ||||
| class BaiduPanOpenapiApplicationTests { | ||||
| 
 | ||||
|     @Test | ||||
|     void contextLoads() { | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user