初始化
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