Skip to content
Merged

Dev #77

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/main/java/xyz/zcraft/acgpicdownload/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,12 @@ public static void main(String[] args) {
}
if (argList.isEmpty()) {
GUI.start(args);
} else if (argList.get(0).equalsIgnoreCase("fetch")) {
argList.remove(0);
} else if (argList.getFirst().equalsIgnoreCase("fetch")) {
argList.removeFirst();
Fetch f = new Fetch();
f.enableConsoleProgressBar = true;
f.invoke(argList, new Logger("Fetch", System.out));
} else if (argList.get(0).equalsIgnoreCase("pixiv")) {
} else if (argList.getFirst().equalsIgnoreCase("pixiv")) {
Pixiv p = new Pixiv();
p.invoke(argList, new Logger("Pixiv", System.out));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public List<PixivArtwork> invoke(List<String> argList, Profile profile, List<Pix
final List<PixivArtwork> result = new LinkedList<>();

previous.stream().filter(p -> p.getLikeCount() != 0 || p.getBookmarkData() != null).forEach(result::add);
final List<PixivArtwork> list = previous.stream().filter(p -> p.getLikeCount() == 0 && p.getBookmarkData() == null).toList();
final List<PixivArtwork> list = previous.stream().filter(a -> !a.isComplete()).toList();
final List<PixivArtwork> failedList = new LinkedList<>();

out.info("Got " + list.size() + " artworks to complete data.");
Expand Down
349 changes: 344 additions & 5 deletions src/main/java/xyz/zcraft/acgpicdownload/commands/pixiv/sub/Fetch.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.LinkedList;

public class Load extends SubCommand {
private String fileName;
Expand Down Expand Up @@ -40,13 +41,18 @@ public List<PixivArtwork> invoke(List<String> argList, Profile profile, List<Pix

try {
final String s = Files.readString(Path.of(fileName));
final List<PixivArtwork> list = JSONArray.parseArray(s, PixivArtwork.class);
final List<PixivArtwork> list = JSONArray.parseArray(s, PixivArtwork.class)
.stream()
.filter(e -> e != null)
.toList();

out.info("Read " + list.size() + " artwork data from file: " + fileName);
if (append && previous != null && !previous.isEmpty()) {
out.info("Appending to previous " + previous.size() + " artwork data, now total: " + (previous.size() + list.size()));
previous.addAll(list);
return previous;
var result = new LinkedList<PixivArtwork>();
result.addAll(previous);
result.addAll(list);
return List.copyOf(result);
} else {
return list;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,10 @@ public List<PixivArtwork> invoke(List<String> argList, Profile profile, List<Pix
out.info("Saving " + previous.size() + " artwork data to file: " + fileName);

try {

Files.writeString(Path.of(fileName),
JSONArray.toJSONString(
previous.stream().flatMap(
(Function<PixivArtwork, Stream<?>>) e -> Stream.of(e.getOrigJson())
).toList()
previous
, (format ? new JSONWriter.Feature[]{JSONWriter.Feature.PrettyFormat} : new JSONWriter.Feature[]{}))
);
out.info("File written to " + fileName);
Expand Down
18 changes: 10 additions & 8 deletions src/main/java/xyz/zcraft/acgpicdownload/util/dl/DownloadUtil.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package xyz.zcraft.acgpicdownload.util.dl;

import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.JSONWriter.Feature;
import com.madgag.gif.fmsware.AnimatedGifEncoder;
import org.jetbrains.annotations.NotNull;
Expand All @@ -11,6 +12,7 @@
import javax.imageio.ImageIO;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
Expand All @@ -29,7 +31,7 @@ public static void download(File file, String link, String referer) throws IOExc
InputStream is = null;
FileOutputStream fos = null;
try {
URL url = new URL(link);
URL url = URI.create(link).toURL();
HttpURLConnection c = (HttpURLConnection) url.openConnection();

if (referer != null) {
Expand Down Expand Up @@ -77,7 +79,7 @@ public void download(Result r, File toDic, DownloadResult d, boolean saveFullRes
}
}

URL url = new URL(r.getUrl());
URL url = URI.create(r.getUrl()).toURL();
URLConnection c = url.openConnection();

if (referer != null) {
Expand Down Expand Up @@ -174,7 +176,7 @@ private void downloadPixivGif(@NotNull PixivDownload a, File toDic, String cooki
return;
}
}
URL url = new URL(gifData.getSrc());
URL url = URI.create(gifData.getSrc()).toURL();
URLConnection c = url.openConnection();
c.setRequestProperty("Referer", PixivDownloadUtil.REFERER);
final InputStream inputStream = c.getInputStream();
Expand All @@ -198,11 +200,11 @@ private void downloadPixivGif(@NotNull PixivDownload a, File toDic, String cooki

age.finish();

if (fullResult && a.getArtwork().getOrigJson() != null) {
if (fullResult) {
File jsonf = new File(toDic, namingRule.name(a.getArtwork()).concat(".json"));
BufferedOutputStream jsonos = new BufferedOutputStream(new FileOutputStream(jsonf));

String str = a.getArtwork().getOrigJson().toJSONString(Feature.PrettyFormat);
String str = JSONObject.from(a.getArtwork()).toJSONString(Feature.PrettyFormat);
jsonos.write(str.getBytes(StandardCharsets.UTF_8));
jsonos.flush();
jsonos.close();
Expand Down Expand Up @@ -252,7 +254,7 @@ private void downloadPixivIllusion(@NotNull PixivDownload a, File toDic, String
for (int i = 0, pagesSize = pages.size(); i < pagesSize; i++) {
a.setProgress(i);
String s = pages.get(i);
URL url = new URL(s);
URL url = URI.create(s).toURL();
URLConnection c = url.openConnection();

Comment on lines 254 to 259
c.setRequestProperty("Referer", PixivDownloadUtil.REFERER);
Expand All @@ -277,11 +279,11 @@ private void downloadPixivIllusion(@NotNull PixivDownload a, File toDic, String
fos.close();
}

if (fullResult && a.getArtwork().getOrigJson() != null) {
if (fullResult) {
File jsonf = new File(toDic, namingRule.name(a.getArtwork()).concat(".json"));
BufferedOutputStream jsonos = new BufferedOutputStream(new FileOutputStream(jsonf));

String str = a.getArtwork().getOrigJson().toJSONString(Feature.PrettyFormat);
String str = JSONObject.from(a.getArtwork()).toJSONString(Feature.PrettyFormat);
jsonos.write(str.getBytes(StandardCharsets.UTF_8));
jsonos.flush();
jsonos.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

public record NamingRule(String rule, int multiP, String folderRule) {
public String name(PixivArtwork artwork, int p) {
JSONObject clone = artwork.getOrigJson().clone();
JSONObject clone = JSONObject.from(artwork);
if (p != -1) {
clone.put("p", p);
clone.put("dp", "0".repeat(Math.max(4 - String.valueOf(p).length(), 0)).concat(String.valueOf(p)));
Expand All @@ -14,10 +14,10 @@ public String name(PixivArtwork artwork, int p) {
}

public String name(PixivArtwork artwork) {
return FetchUtil.replaceArgument(rule, artwork.getOrigJson());
return FetchUtil.replaceArgument(rule, JSONObject.from(artwork));
}

public String nameFolder(PixivArtwork artwork) {
return FetchUtil.replaceArgument(folderRule, artwork.getOrigJson());
return FetchUtil.replaceArgument(folderRule, JSONObject.from(artwork));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ public class PixivAccount {
@JSONField(name = "cookie")
private String cookie;

private String token;
private transient String token;
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,22 +72,23 @@ public class PixivArtwork {
@JSONField(name = "viewCount")
private int viewCount;

private LinkedHashSet<String> translatedTags = new LinkedHashSet<>();
private String imageUrl;
private GifData gifData;
private From from;
private transient LinkedHashSet<String> translatedTags = new LinkedHashSet<>();
private transient String imageUrl;
private transient GifData gifData;
private transient From from;

private JSONObject origJson;
private String ranking;
private String search;
private transient String ranking;
private transient String search;

@JSONField(serialize = false)
public String getTypeString() {
if (illustType == 2) return ResourceBundleUtil.getString("fetch.pixiv.type.gif");
else if (illustType == 1 || illustType == 0)
return Objects.requireNonNull(ResourceBundleUtil.getString("fetch.pixiv.type.illust")).concat("-" + pageCount);
else return "?";
}

@JSONField(serialize = false)
public String getFromString() {
if(from == null) return null;
if (from.equals(From.Ranking)) {
Expand All @@ -99,6 +100,7 @@ public String getFromString() {
}
}

@JSONField(serialize = false)
public String getTagsString() {
if (translatedTags == null || translatedTags.isEmpty()) {
if (originalTags == null) return null;
Expand All @@ -117,4 +119,9 @@ public String getTagsString() {
return sb.toString();
}
}

@JSONField(serialize = false)
public boolean isComplete() {
return urls != null && urls.containsKey("original") && urls.getString("original") != null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,6 @@ public static PixivArtwork getArtwork(@NotNull String id, String cookieString, S
}
JSONObject jsonObject = JSONObject.parseObject(c.get().body().ownText()).getJSONObject("body");
PixivArtwork pixivArtwork = jsonObject.to(PixivArtwork.class);
pixivArtwork.setOrigJson(jsonObject);
JSONArray jsonArray = jsonObject.getJSONObject("tags").getJSONArray("tags");
LinkedHashSet<String> tags = new LinkedHashSet<>();
for (int i = 0; i < jsonArray.size(); i++) {
Expand Down Expand Up @@ -461,7 +460,6 @@ public static List<PixivArtwork> getUserArtworks(@NotNull String queryString, @N
}
a.setTranslatedTags(translatedTags);
a.setFrom(From.User);
a.setOrigJson(jsonObject);
artworks.add(a);
}

Expand Down Expand Up @@ -558,7 +556,6 @@ public static LinkedList<PixivArtwork> parseArtworks(String jsonString, boolean
for (Object t : a.getOriginalTags()) {
a.getTranslatedTags().add(translateTag(t.toString(), tran));
}
a.setOrigJson(jsonObject);
artworks.add(a);
}

Expand All @@ -582,7 +579,6 @@ public static LinkedList<PixivArtwork> parseArtworks(String jsonString) {
for (int i = 0; i < illust.size(); i++) {
JSONObject jsonObject = illust.getJSONObject(i);
PixivArtwork a = jsonObject.to(PixivArtwork.class);
a.setOrigJson(jsonObject);
a.setFrom(From.Discovery);
for (Object t : a.getOriginalTags()) {
a.getTranslatedTags().add(translateTag(t.toString(), tran));
Expand Down Expand Up @@ -656,7 +652,6 @@ public static List<PixivArtwork> getRelated(@NotNull PixivArtwork artwork, @Rang
JSONObject jsonObject = illusts.getJSONObject(i);
PixivArtwork object = jsonObject.to(PixivArtwork.class);
if (object.getTitle() == null) continue;
object.setOrigJson(jsonObject);
object.setFrom(From.Related);
artworks.add(object);
}
Expand Down
Loading