diff --git a/src/main/java/net/lamgc/cgj/Main.java b/src/main/java/net/lamgc/cgj/Main.java index e7c86ec..d73380f 100644 --- a/src/main/java/net/lamgc/cgj/Main.java +++ b/src/main/java/net/lamgc/cgj/Main.java @@ -13,7 +13,7 @@ import net.lamgc.cgj.bot.framework.cli.ConsoleMain; import net.lamgc.cgj.bot.framework.coolq.CQConfig; import net.lamgc.cgj.bot.framework.mirai.MiraiMain; import net.lamgc.cgj.pixiv.PixivDownload; -import net.lamgc.cgj.pixiv.PixivSearchBuilder; +import net.lamgc.cgj.pixiv.PixivSearchLinkBuilder; import net.lamgc.cgj.pixiv.PixivURL; import net.lamgc.plps.PixivLoginProxyServer; import net.lamgc.utils.base.runner.Argument; @@ -254,24 +254,24 @@ public class Main { @Argument(name = "excludeKeywords", force = false) String excludeKeywords, @Argument(name = "contentOption", force = false) String contentOption ) throws IOException { - PixivSearchBuilder searchBuilder = new PixivSearchBuilder(Strings.isNullOrEmpty(content) ? "" : content); + PixivSearchLinkBuilder searchBuilder = new PixivSearchLinkBuilder(Strings.isNullOrEmpty(content) ? "" : content); if (type != null) { try { - searchBuilder.setSearchType(PixivSearchBuilder.SearchType.valueOf(type.toUpperCase())); + searchBuilder.setSearchType(PixivSearchLinkBuilder.SearchType.valueOf(type.toUpperCase())); } catch (IllegalArgumentException e) { log.warn("不支持的SearchType: {}", type); } } if(area != null) { try { - searchBuilder.setSearchArea(PixivSearchBuilder.SearchArea.valueOf(area)); + searchBuilder.setSearchArea(PixivSearchLinkBuilder.SearchArea.valueOf(area)); } catch (IllegalArgumentException e) { log.warn("不支持的SearchArea: {}", area); } } if(contentOption != null) { try { - searchBuilder.setSearchContentOption(PixivSearchBuilder.SearchContentOption.valueOf(contentOption)); + searchBuilder.setSearchContentOption(PixivSearchLinkBuilder.SearchContentOption.valueOf(contentOption)); } catch (IllegalArgumentException e) { log.warn("不支持的SearchContentOption: {}", contentOption); } @@ -310,7 +310,7 @@ public class Main { JsonObject resultBody = jsonObject.getAsJsonObject("body"); - for(PixivSearchBuilder.SearchArea searchArea : PixivSearchBuilder.SearchArea.values()) { + for(PixivSearchLinkBuilder.SearchArea searchArea : PixivSearchLinkBuilder.SearchArea.values()) { if(!resultBody.has(searchArea.jsonKey) || resultBody.getAsJsonObject(searchArea.jsonKey).getAsJsonArray("data").size() == 0) { //log.info("返回数据不包含 {}", searchArea.jsonKey); continue; diff --git a/src/main/java/net/lamgc/cgj/bot/BotCommandProcess.java b/src/main/java/net/lamgc/cgj/bot/BotCommandProcess.java index bc03f7b..4e90626 100644 --- a/src/main/java/net/lamgc/cgj/bot/BotCommandProcess.java +++ b/src/main/java/net/lamgc/cgj/bot/BotCommandProcess.java @@ -12,7 +12,7 @@ import net.lamgc.cgj.bot.event.BufferMessageEvent; import net.lamgc.cgj.bot.sort.PreLoadDataComparator; import net.lamgc.cgj.pixiv.PixivDownload; import net.lamgc.cgj.pixiv.PixivDownload.PageQuality; -import net.lamgc.cgj.pixiv.PixivSearchBuilder; +import net.lamgc.cgj.pixiv.PixivSearchLinkBuilder; import net.lamgc.cgj.pixiv.PixivURL; import net.lamgc.utils.base.runner.Argument; import net.lamgc.utils.base.runner.Command; @@ -310,7 +310,7 @@ public class BotCommandProcess { @Argument(name = "in", force = false) String includeKeywords, @Argument(name = "ex", force = false) String excludeKeywords, @Argument(name = "option", force = false) String contentOption, - @Argument(name = "page", force = false, defaultValue = "1") int pagesIndex + @Argument(name = "p", force = false, defaultValue = "1") int pagesIndex ) throws IOException { log.info("正在执行搜索..."); JsonObject resultBody = CacheStoreCentral.getCentral() @@ -326,7 +326,7 @@ public class BotCommandProcess { log.warn("参数转换异常!将使用默认值(" + limit + ")", e); } int totalCount = 0; - for (PixivSearchBuilder.SearchArea searchArea : PixivSearchBuilder.SearchArea.values()) { + for (PixivSearchLinkBuilder.SearchArea searchArea : PixivSearchLinkBuilder.SearchArea.values()) { if (!resultBody.has(searchArea.jsonKey) || resultBody.getAsJsonObject(searchArea.jsonKey).getAsJsonArray("data").size() == 0) { log.debug("返回数据不包含 {}", searchArea.jsonKey); @@ -493,7 +493,7 @@ public class BotCommandProcess { @Argument(name = "$fromGroup") long fromGroup, @Argument(name = "id") int illustId, @Argument(name = "quality", force = false) PixivDownload.PageQuality quality, - @Argument(name = "page", force = false, defaultValue = "1") int pageIndex + @Argument(name = "p", force = false, defaultValue = "1") int pageIndex ) { return CacheStoreCentral.getCentral().getImageById(fromGroup, illustId, quality, pageIndex); } diff --git a/src/main/java/net/lamgc/cgj/bot/cache/CacheStoreCentral.java b/src/main/java/net/lamgc/cgj/bot/cache/CacheStoreCentral.java index a64ce81..e25b0b6 100644 --- a/src/main/java/net/lamgc/cgj/bot/cache/CacheStoreCentral.java +++ b/src/main/java/net/lamgc/cgj/bot/cache/CacheStoreCentral.java @@ -9,7 +9,7 @@ import net.lamgc.cgj.bot.BotCommandProcess; import net.lamgc.cgj.bot.SettingProperties; import net.lamgc.cgj.bot.boot.BotGlobal; import net.lamgc.cgj.pixiv.PixivDownload; -import net.lamgc.cgj.pixiv.PixivSearchBuilder; +import net.lamgc.cgj.pixiv.PixivSearchLinkBuilder; import net.lamgc.cgj.pixiv.PixivURL; import net.lamgc.cgj.util.URLs; import net.lamgc.utils.encrypt.MessageDigestUtils; @@ -386,17 +386,17 @@ public final class CacheStoreCentral { String includeKeywords, String excludeKeywords, String contentOption) throws IOException { - PixivSearchBuilder searchBuilder = new PixivSearchBuilder(Strings.isNullOrEmpty(content) ? "" : content); + PixivSearchLinkBuilder searchBuilder = new PixivSearchLinkBuilder(Strings.isNullOrEmpty(content) ? "" : content); if (type != null) { try { - searchBuilder.setSearchType(PixivSearchBuilder.SearchType.valueOf(type.toUpperCase())); + searchBuilder.setSearchType(PixivSearchLinkBuilder.SearchType.valueOf(type.toUpperCase())); } catch (IllegalArgumentException e) { log.warn("不支持的SearchType: {}", type); } } if (area != null) { try { - searchBuilder.setSearchArea(PixivSearchBuilder.SearchArea.valueOf(area)); + searchBuilder.setSearchArea(PixivSearchLinkBuilder.SearchArea.valueOf(area)); } catch (IllegalArgumentException e) { log.warn("不支持的SearchArea: {}", area); } @@ -404,7 +404,7 @@ public final class CacheStoreCentral { if (contentOption != null) { try { searchBuilder.setSearchContentOption( - PixivSearchBuilder.SearchContentOption.valueOf(contentOption.trim().toUpperCase())); + PixivSearchLinkBuilder.SearchContentOption.valueOf(contentOption.trim().toUpperCase())); } catch (IllegalArgumentException e) { log.warn("不支持的SearchContentOption: {}", contentOption); } diff --git a/src/main/java/net/lamgc/cgj/pixiv/PixivSearchBuilder.java b/src/main/java/net/lamgc/cgj/pixiv/PixivSearchLinkBuilder.java similarity index 89% rename from src/main/java/net/lamgc/cgj/pixiv/PixivSearchBuilder.java rename to src/main/java/net/lamgc/cgj/pixiv/PixivSearchLinkBuilder.java index 88959bb..bae548c 100644 --- a/src/main/java/net/lamgc/cgj/pixiv/PixivSearchBuilder.java +++ b/src/main/java/net/lamgc/cgj/pixiv/PixivSearchLinkBuilder.java @@ -16,7 +16,7 @@ import java.util.Objects; * @see PixivURL#PIXIV_SEARCH_CONTENT_URL */ @SuppressWarnings("ALL") -public class PixivSearchBuilder { +public class PixivSearchLinkBuilder { private final String content; @@ -42,7 +42,7 @@ public class PixivSearchBuilder { private Date startDate = null; private Date endDate = null; - public PixivSearchBuilder(String searchContent) { + public PixivSearchLinkBuilder(String searchContent) { this.content = Objects.requireNonNull(searchContent); } @@ -99,7 +99,7 @@ public class PixivSearchBuilder { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - PixivSearchBuilder that = (PixivSearchBuilder) o; + PixivSearchLinkBuilder that = (PixivSearchLinkBuilder) o; return page == that.page && wgt == that.wgt && hgt == that.hgt && @@ -141,7 +141,7 @@ public class PixivSearchBuilder { @Override public String toString() { - return "PixivSearchBuilder{" + + return "PixivSearchLinkBuilder{" + "content='" + content + '\'' + ", searchArea=" + searchArea + ", searchMode=" + searchMode + @@ -161,7 +161,7 @@ public class PixivSearchBuilder { '}'; } - public PixivSearchBuilder setSearchArea(SearchArea searchArea) { + public PixivSearchLinkBuilder setSearchArea(SearchArea searchArea) { this.searchArea = Objects.requireNonNull(searchArea); return this; } @@ -202,50 +202,50 @@ public class PixivSearchBuilder { return searchContent.toString(); } - public PixivSearchBuilder setSearchMode(SearchMode searchMode) { + public PixivSearchLinkBuilder setSearchMode(SearchMode searchMode) { this.searchMode = Objects.requireNonNull(searchMode); return this; } - public PixivSearchBuilder setSearchType(SearchType searchType) { + public PixivSearchLinkBuilder setSearchType(SearchType searchType) { this.searchType = Objects.requireNonNull(searchType); return this; } - public PixivSearchBuilder setSearchOrder(SearchOrder searchOrder) { + public PixivSearchLinkBuilder setSearchOrder(SearchOrder searchOrder) { this.searchOrder = Objects.requireNonNull(searchOrder); return this; } - public PixivSearchBuilder setSearchContentOption(SearchContentOption searchContentOption) { + public PixivSearchLinkBuilder setSearchContentOption(SearchContentOption searchContentOption) { this.searchContentOption = Objects.requireNonNull(searchContentOption); return this; } - public PixivSearchBuilder setRatioOption(RatioOption ratioOption) { + public PixivSearchLinkBuilder setRatioOption(RatioOption ratioOption) { this.ratioOption = Objects.requireNonNull(ratioOption); return this; } - public PixivSearchBuilder setDateRange(Date startDate, Date endDate) { + public PixivSearchLinkBuilder setDateRange(Date startDate, Date endDate) { this.startDate = startDate; this.endDate = endDate; return this; } - public PixivSearchBuilder setMaxSize(int width, int height) { + public PixivSearchLinkBuilder setMaxSize(int width, int height) { this.wgt = width; this.hgt = height; return this; } - public PixivSearchBuilder setMinSize(int width, int height) { + public PixivSearchLinkBuilder setMinSize(int width, int height) { this.wlt = width; this.hlt = height; return this; } - public PixivSearchBuilder setPage(int pageIndex) { + public PixivSearchLinkBuilder setPage(int pageIndex) { if (pageIndex <= 0) { throw new IllegalArgumentException("Invalid pageIndex: " + pageIndex); } @@ -253,22 +253,22 @@ public class PixivSearchBuilder { return this; } - public PixivSearchBuilder addExcludeKeyword(String keyword) { + public PixivSearchLinkBuilder addExcludeKeyword(String keyword) { excludeKeywords.add(keyword); return this; } - public PixivSearchBuilder removeExcludeKeyword(String keyword) { + public PixivSearchLinkBuilder removeExcludeKeyword(String keyword) { excludeKeywords.remove(keyword); return this; } - public PixivSearchBuilder addIncludeKeyword(String keyword) { + public PixivSearchLinkBuilder addIncludeKeyword(String keyword) { includeKeywords.add(keyword); return this; } - public PixivSearchBuilder removeIncludeKeyword(String keyword) { + public PixivSearchLinkBuilder removeIncludeKeyword(String keyword) { includeKeywords.remove(keyword); return this; } diff --git a/src/main/java/net/lamgc/cgj/pixiv/PixivURL.java b/src/main/java/net/lamgc/cgj/pixiv/PixivURL.java index 9b98f41..db8f555 100644 --- a/src/main/java/net/lamgc/cgj/pixiv/PixivURL.java +++ b/src/main/java/net/lamgc/cgj/pixiv/PixivURL.java @@ -13,52 +13,52 @@ import java.util.GregorianCalendar; public class PixivURL { - public static final String PIXIV_INDEX_URL = "https://www.pixiv.net"; + public final static String PIXIV_INDEX_URL = "https://www.pixiv.net"; /** * P站预登陆url */ - public static final String PIXIV_LOGIN_PAGE_URL = "https://accounts.pixiv.net/login?lang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index"; + public final static String PIXIV_LOGIN_PAGE_URL = "https://accounts.pixiv.net/login?lang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index"; /** * P站登录请求url */ - public static final String PIXIV_LOGIN_URL = "https://accounts.pixiv.net/api/login?lang=zh"; + public final static String PIXIV_LOGIN_URL = "https://accounts.pixiv.net/api/login?lang=zh"; /** * P站搜索请求url - * @deprecated 该接口已被替换, 请使用{@link PixivSearchBuilder}构造搜索Url - * @see PixivSearchBuilder + * @deprecated 该接口已被替换, 请使用{@link PixivSearchLinkBuilder}构造搜索Url + * @see PixivSearchLinkBuilder */ @Deprecated - private static final String PIXIV_SEARCH_URL = "https://www.pixiv.net/search.php"; + private final static String PIXIV_SEARCH_URL = "https://www.pixiv.net/search.php"; /** * P站搜索用户url * 需要替换的参数: * {nick} - 用户昵称、部分名称 - * @deprecated 该接口已被替换, 请使用{@link PixivSearchBuilder}构造搜索Url - * @see PixivSearchBuilder + * @deprecated 该接口已被替换, 请使用{@link PixivSearchLinkBuilder}构造搜索Url + * @see PixivSearchLinkBuilder */ @Deprecated - public static final String PIXIV_SEARCH_USER_URL = PIXIV_SEARCH_URL + "?s_mode=s_usr&nick={nick}"; + public final static String PIXIV_SEARCH_USER_URL = PIXIV_SEARCH_URL + "?s_mode=s_usr&nick={nick}"; /** * P站搜索插画url * 需要替换的参数: * {word} - 插画相关文本 - * @deprecated 该接口已被替换, 请使用{@link PixivSearchBuilder}构造搜索Url - * @see PixivSearchBuilder + * @deprecated 该接口已被替换, 请使用{@link PixivSearchLinkBuilder}构造搜索Url + * @see PixivSearchLinkBuilder */ @Deprecated - public static final String PIXIV_SEARCH_TAG_URL = PIXIV_SEARCH_URL + "?s_mode=s_tag&word={word}"; + public final static String PIXIV_SEARCH_TAG_URL = PIXIV_SEARCH_URL + "?s_mode=s_tag&word={word}"; /** * P站插图下载链接获取url * 需要替换的文本: * {illustId} - 插画ID */ - public static final String PIXIV_ILLUST_API_URL = "https://www.pixiv.net/ajax/illust/{illustId}/pages"; + public final static String PIXIV_ILLUST_API_URL = "https://www.pixiv.net/ajax/illust/{illustId}/pages"; /** * P站用户插图列表获取API @@ -67,42 +67,42 @@ public class PixivURL { * {userId} - 用户ID */ //{"error":false,"message":"","body":{"illusts":{"74369837":null,"70990542":null,"70608653":null,"69755191":null,"69729450":null,"69729416":null,"69503608":null,"69288766":null,"69083882":null,"69051458":null,"68484200":null,"68216927":null,"68216866":null,"68192333":null,"67915106":null,"67914932":null,"67854803":null,"67854745":null,"67854670":null,"67787211":null,"67772199":null,"67770637":null,"67754861":null,"67754804":null,"67754726":null,"67740486":null,"67740480":null,"67740450":null,"67740434":null,"67726337":null,"67499196":null,"67499163":null,"67499145":null,"67499111":null,"67499085":null,"67499038":null,"67498987":null,"67473178":null,"66271465":null,"63682753":null,"63682697":null,"59385148":null,"59383265":null,"59383240":null,"59383227":null,"59383173":null},"manga":[],"novels":[],"mangaSeries":[],"novelSeries":[],"pickup":[],"bookmarkCount":{"public":{"illust":1,"novel":0},"private":{"illust":0,"novel":0}}}} - public static final String PIXIV_USER_ILLUST_LIST_URL = "https://www.pixiv.net/ajax/user/{userId}/profile/all"; + public final static String PIXIV_USER_ILLUST_LIST_URL = "https://www.pixiv.net/ajax/user/{userId}/profile/all"; /** * 能够同时获取插图信息的用户插图列表获取API * 需要替换的文本: * {userId} - 用户ID */ - public static final String PIXIV_USER_TOP_ILLUST_LIST_URL = "https://www.pixiv.net/ajax/user/{userId}/profile/top"; + public final static String PIXIV_USER_TOP_ILLUST_LIST_URL = "https://www.pixiv.net/ajax/user/{userId}/profile/top"; /** * P站单图详情页url * 需要替换的文本: * {illustId} - 插画ID */ - public static final String PIXIV_ILLUST_MEDIUM_URL = "https://www.pixiv.net/member_illust.php?mode=medium&illust_id={illustId}"; + public final static String PIXIV_ILLUST_MEDIUM_URL = "https://www.pixiv.net/member_illust.php?mode=medium&illust_id={illustId}"; /** * P站多图详情页url * 需要替换的文本: * {illustId} - 插画ID */ - public static final String PIXIV_ILLUST_MANGA_URL = "https://www.pixiv.net/member_illust.php?mode=manga&illust_id={illustId}"; + public final static String PIXIV_ILLUST_MANGA_URL = "https://www.pixiv.net/member_illust.php?mode=manga&illust_id={illustId}"; /** * P站用户页面url * 需要替换的文本: * {userId} - 用户ID */ - public static final String PIXIV_USER_URL = "https://www.pixiv.net/member.php?id={userId}"; + public final static String PIXIV_USER_URL = "https://www.pixiv.net/member.php?id={userId}"; /** * P站插图信息获取API * 这个API能获取插图基本信息,但不能获取大小 * 请使用{@link #getPixivIllustInfoAPI(int[])}获取URL */ - private static final String PIXIV_GET_ILLUST_INFO_URL = "https://www.pixiv.net/ajax/illust/recommend/illusts?"; + private final static String PIXIV_GET_ILLUST_INFO_URL = "https://www.pixiv.net/ajax/illust/recommend/illusts?"; /** * P站获取用户所有插图ID的Api @@ -110,7 +110,15 @@ public class PixivURL { * 需要替换的文本: * {userId} - 用户ID */ - public static final String PIXIV_GET_USER_ALL_ILLUST_ID_URL = "https://www.pixiv.net/ajax/user/{userId}/profile/all"; + public final static String PIXIV_GET_USER_ALL_ILLUST_URL = "https://www.pixiv.net/ajax/user/{userId}/profile/all"; + + /** + * P站获取用户推荐插画及用户基本数据 + * 这个API能获得作者的部分(推荐)作品, 每个作品有详细数据, 还能获取作者主页信息(比如主页说明, 看板图) + * 需要替换的文本: + * {userId} - 用户ID + */ + public final static String PIXIV_GET_USER_TOP_ILLUST_URL = "https://www.pixiv.net/ajax/user/{userId}/profile/top"; /** * P站标签搜索URL @@ -118,7 +126,7 @@ public class PixivURL { * 需要替换的文本: * {content} - 大致tag内容 */ - public static final String PIXIV_TAG_SEARCH_URL = "https://www.pixiv.net/ajax/search/tags/{content}"; + public final static String PIXIV_TAG_SEARCH_URL = "https://www.pixiv.net/ajax/search/tags/{content}"; /** * 获取动图下载链接和拼接数据. @@ -128,11 +136,17 @@ public class PixivURL { */ public final static String PIXIV_GET_UGOIRA_META_URL = "https://www.pixiv.net/ajax/illust/{illustId}/ugoira_meta"; + /** + * 获取自己帐号的部分数据(目前仅能获取: 关注数, 粉丝数和看板图) + * 需要登录. + */ + public final static String PIXIV_GET_USER_EXTRA_URL = "https://www.pixiv.net/ajax/user/extra"; + /** * 请求时带上需要退出的Cookies * 无论成功与否都会返回302重定向到{@linkplain #PIXIV_LOGIN_PAGE_URL 登录页面} */ - public static final String PIXIV_LOGOUT_URL = "https://www.pixiv.net/logout.php"; + public final static String PIXIV_LOGOUT_URL = "https://www.pixiv.net/logout.php"; /** * 构造P站获取插图信息的Api Url @@ -279,7 +293,7 @@ public class PixivURL { /** * Pixiv搜索接口.
- * 要使用该链接请使用{@link PixivSearchBuilder}构造链接.
+ * 要使用该链接请使用{@link PixivSearchLinkBuilder}构造链接.
* 需要替换的参数:
* content - 搜索内容 */ diff --git a/src/test/java/net/lamgc/cgj/pixiv/PixivSearchBuilderTest.java b/src/test/java/net/lamgc/cgj/pixiv/PixivSearchLinkBuilderTest.java similarity index 51% rename from src/test/java/net/lamgc/cgj/pixiv/PixivSearchBuilderTest.java rename to src/test/java/net/lamgc/cgj/pixiv/PixivSearchLinkBuilderTest.java index 0ebf0d2..c2b0006 100644 --- a/src/test/java/net/lamgc/cgj/pixiv/PixivSearchBuilderTest.java +++ b/src/test/java/net/lamgc/cgj/pixiv/PixivSearchLinkBuilderTest.java @@ -3,23 +3,23 @@ package net.lamgc.cgj.pixiv; import org.junit.Assert; import org.junit.Test; -public class PixivSearchBuilderTest { +public class PixivSearchLinkBuilderTest { @Test public void buildTest() { - PixivSearchBuilder builder = new PixivSearchBuilder("hololive"); + PixivSearchLinkBuilder builder = new PixivSearchLinkBuilder("hololive"); builder.addIncludeKeyword("35").addIncludeKeyword("okayu").addIncludeKeyword("百鬼あやめ"); System.out.println(builder.buildURL()); } @Test public void equalsTest() { - Assert.assertEquals(new PixivSearchBuilder("风景"), new PixivSearchBuilder("风景")); + Assert.assertEquals(new PixivSearchLinkBuilder("风景"), new PixivSearchLinkBuilder("风景")); } @Test public void hashCodeTest() { - Assert.assertEquals(new PixivSearchBuilder("风景").hashCode(), new PixivSearchBuilder("风景").hashCode()); + Assert.assertEquals(new PixivSearchLinkBuilder("风景").hashCode(), new PixivSearchLinkBuilder("风景").hashCode()); } }