From 14270c59bbc7f4d47d0dbbcb066657ca62bd403a Mon Sep 17 00:00:00 2001 From: Kronos2308 Date: Tue, 12 Nov 2024 09:46:50 +0000 Subject: [PATCH 1/2] webp support --- .../main/java/com/dar/nclientv2/api/SimpleGallery.java | 9 ++++++++- .../com/dar/nclientv2/api/components/GalleryData.java | 1 + .../main/java/com/dar/nclientv2/api/components/Page.java | 6 ++++++ .../main/java/com/dar/nclientv2/api/enums/ImageExt.java | 2 +- .../java/com/dar/nclientv2/api/local/LocalGallery.java | 4 +++- .../main/java/com/dar/nclientv2/files/GalleryFolder.java | 2 +- app/src/main/java/com/dar/nclientv2/files/PageFile.java | 4 ++-- 7 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/dar/nclientv2/api/SimpleGallery.java b/app/src/main/java/com/dar/nclientv2/api/SimpleGallery.java index 28c0f048..13ab18d4 100644 --- a/app/src/main/java/com/dar/nclientv2/api/SimpleGallery.java +++ b/app/src/main/java/com/dar/nclientv2/api/SimpleGallery.java @@ -80,7 +80,8 @@ public SimpleGallery(Context context, Element e) { a = e.getElementsByTag("img").first(); temp = a.hasAttr("data-src") ? a.attr("data-src") : a.attr("src"); mediaId = Integer.parseInt(temp.substring(temp.indexOf("galleries") + 10, temp.lastIndexOf('/'))); - thumbnail = Page.charToExt(temp.charAt(temp.length() - 3)); + String extension = temp.substring(temp.lastIndexOf('.') + 1); + thumbnail = Page.charToExt(extension.charAt(0));//thumbnail = Page.charToExt(temp.charAt(temp.length() - 3)); title = e.getElementsByTag("div").first().text(); if (context != null && id > Global.getMaxId()) Global.updateMaxId(context, id); } @@ -93,6 +94,10 @@ public SimpleGallery(Gallery gallery) { } private static String extToString(ImageExt ext) { + //just in case + if (ext == null) { + return null; + } switch (ext) { case GIF: return "gif"; @@ -100,6 +105,8 @@ private static String extToString(ImageExt ext) { return "png"; case JPG: return "jpg"; + case WEBP: + return "webp"; } return null; } diff --git a/app/src/main/java/com/dar/nclientv2/api/components/GalleryData.java b/app/src/main/java/com/dar/nclientv2/api/components/GalleryData.java index f38fb6a5..15999215 100644 --- a/app/src/main/java/com/dar/nclientv2/api/components/GalleryData.java +++ b/app/src/main/java/com/dar/nclientv2/api/components/GalleryData.java @@ -315,6 +315,7 @@ private void readPagePath(String path) throws IOException { case 'p': case 'j': case 'g': + case 'w': if (specialImages) { cover = new Page(ImageType.COVER, Page.charToExt(actualChar)); thumbnail = new Page(ImageType.THUMBNAIL, Page.charToExt(actualChar)); diff --git a/app/src/main/java/com/dar/nclientv2/api/components/Page.java b/app/src/main/java/com/dar/nclientv2/api/components/Page.java index d7948dec..8f43af54 100644 --- a/app/src/main/java/com/dar/nclientv2/api/components/Page.java +++ b/app/src/main/java/com/dar/nclientv2/api/components/Page.java @@ -90,6 +90,8 @@ public static String extToString(ImageExt ext) { return "png"; case JPG: return "jpg"; + case WEBP: + return "webp"; } return null; } @@ -102,6 +104,8 @@ public static char extToChar(ImageExt imageExt) { return 'p'; case JPG: return 'j'; + case WEBP: + return 'w'; } return '\0'; } @@ -114,6 +118,8 @@ public static ImageExt charToExt(int ext) { return ImageExt.PNG; case 'j': return ImageExt.JPG; + case 'w': + return ImageExt.WEBP; } return null; } diff --git a/app/src/main/java/com/dar/nclientv2/api/enums/ImageExt.java b/app/src/main/java/com/dar/nclientv2/api/enums/ImageExt.java index 6ea3a7fb..70712010 100644 --- a/app/src/main/java/com/dar/nclientv2/api/enums/ImageExt.java +++ b/app/src/main/java/com/dar/nclientv2/api/enums/ImageExt.java @@ -1,7 +1,7 @@ package com.dar.nclientv2.api.enums; public enum ImageExt { - JPG("jpg"), PNG("png"), GIF("gif"); + JPG("jpg"), PNG("png"), GIF("gif"), WEBP("webp"); private final char firstLetter; private final String name; diff --git a/app/src/main/java/com/dar/nclientv2/api/local/LocalGallery.java b/app/src/main/java/com/dar/nclientv2/api/local/LocalGallery.java index 642d387b..2a099ab2 100644 --- a/app/src/main/java/com/dar/nclientv2/api/local/LocalGallery.java +++ b/app/src/main/java/com/dar/nclientv2/api/local/LocalGallery.java @@ -34,7 +34,7 @@ public LocalGallery[] newArray(int size) { return new LocalGallery[size]; } }; - private static final Pattern FILE_PATTERN = Pattern.compile("^(\\d{1,9})\\.(gif|png|jpg)$", Pattern.CASE_INSENSITIVE); + private static final Pattern FILE_PATTERN = Pattern.compile("^(\\d{1,9})\\.(gif|png|jpg|webp)$", Pattern.CASE_INSENSITIVE); private static final Pattern DUP_PATTERN = Pattern.compile("^(.*)\\.DUP\\d+$"); private static final Pattern IDFILE_PATTERN = Pattern.compile("^\\.\\d{1,6}$"); private final GalleryFolder folder; @@ -106,6 +106,8 @@ public static File getPage(File dir, int page) { if (dir == null || !dir.exists()) return null; String pag = String.format(Locale.US, "%03d.", page); File x; + x = new File(dir, pag + "webp"); + if (x.exists()) return x; x = new File(dir, pag + "jpg"); if (x.exists()) return x; x = new File(dir, pag + "png"); diff --git a/app/src/main/java/com/dar/nclientv2/files/GalleryFolder.java b/app/src/main/java/com/dar/nclientv2/files/GalleryFolder.java index 9a172c38..d28867ed 100644 --- a/app/src/main/java/com/dar/nclientv2/files/GalleryFolder.java +++ b/app/src/main/java/com/dar/nclientv2/files/GalleryFolder.java @@ -32,7 +32,7 @@ public GalleryFolder[] newArray(int size) { return new GalleryFolder[size]; } }; - private static final Pattern FILE_PATTERN = Pattern.compile("^0*(\\d{1,9})\\.(gif|png|jpg)$", Pattern.CASE_INSENSITIVE); + private static final Pattern FILE_PATTERN = Pattern.compile("^0*(\\d{1,9})\\.(gif|png|jpg|webp)$", Pattern.CASE_INSENSITIVE); private static final Pattern IDFILE_PATTERN = Pattern.compile("^\\.(\\d{1,6})$"); private static final String NOMEDIA_FILE = ".nomedia"; private final SparseArrayCompat pageArray = new SparseArrayCompat<>(); diff --git a/app/src/main/java/com/dar/nclientv2/files/PageFile.java b/app/src/main/java/com/dar/nclientv2/files/PageFile.java index d36ea6ef..934a778e 100644 --- a/app/src/main/java/com/dar/nclientv2/files/PageFile.java +++ b/app/src/main/java/com/dar/nclientv2/files/PageFile.java @@ -28,8 +28,8 @@ public PageFile[] newArray(int size) { return new PageFile[size]; } }; - private static final Pattern DEFAULT_THUMBNAIL = Pattern.compile("^0*1\\.(gif|png|jpg)$", Pattern.CASE_INSENSITIVE); - private static final Pattern VALID_PAGE = Pattern.compile("^0*(\\d+)\\.(gif|png|jpg)$", Pattern.CASE_INSENSITIVE); + private static final Pattern DEFAULT_THUMBNAIL = Pattern.compile("^0*1\\.(gif|png|jpg|webp)$", Pattern.CASE_INSENSITIVE); + private static final Pattern VALID_PAGE = Pattern.compile("^0*(\\d+)\\.(gif|png|jpg|webp)$", Pattern.CASE_INSENSITIVE); private final ImageExt ext; private final int page; From 24caebd6b14955c792e6e4653d256b457c3139e3 Mon Sep 17 00:00:00 2001 From: Kronos2308 Date: Sun, 8 Dec 2024 15:55:43 -0500 Subject: [PATCH 2/2] fix subdomaim --- .../main/java/com/dar/nclientv2/api/SimpleGallery.java | 5 +++-- .../main/java/com/dar/nclientv2/api/comments/User.java | 2 +- .../java/com/dar/nclientv2/api/components/Gallery.java | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/dar/nclientv2/api/SimpleGallery.java b/app/src/main/java/com/dar/nclientv2/api/SimpleGallery.java index 13ab18d4..56261291 100644 --- a/app/src/main/java/com/dar/nclientv2/api/SimpleGallery.java +++ b/app/src/main/java/com/dar/nclientv2/api/SimpleGallery.java @@ -79,6 +79,7 @@ public SimpleGallery(Context context, Element e) { id = Integer.parseInt(temp.substring(3, temp.length() - 1)); a = e.getElementsByTag("img").first(); temp = a.hasAttr("data-src") ? a.attr("data-src") : a.attr("src"); + //temp = a.attr("src"); mediaId = Integer.parseInt(temp.substring(temp.indexOf("galleries") + 10, temp.lastIndexOf('/'))); String extension = temp.substring(temp.lastIndexOf('.') + 1); thumbnail = Page.charToExt(extension.charAt(0));//thumbnail = Page.charToExt(temp.charAt(temp.length() - 3)); @@ -178,9 +179,9 @@ public void writeToParcel(Parcel dest, int flags) { public Uri getThumbnail() { if (thumbnail == ImageExt.GIF) { - return Uri.parse(String.format(Locale.US, "https://i." + Utility.getHost() + "/galleries/%d/1.gif", mediaId)); + return Uri.parse(String.format(Locale.US, "https://i1." + Utility.getHost() + "/galleries/%d/1.gif", mediaId)); } - return Uri.parse(String.format(Locale.US, "https://t." + Utility.getHost() + "/galleries/%d/thumb.%s", mediaId, extToString(thumbnail))); + return Uri.parse(String.format(Locale.US, "https://t1." + Utility.getHost() + "/galleries/%d/thumb.%s", mediaId, extToString(thumbnail))); } public int getMediaId() { diff --git a/app/src/main/java/com/dar/nclientv2/api/comments/User.java b/app/src/main/java/com/dar/nclientv2/api/comments/User.java index 3025628c..820ddc08 100644 --- a/app/src/main/java/com/dar/nclientv2/api/comments/User.java +++ b/app/src/main/java/com/dar/nclientv2/api/comments/User.java @@ -70,7 +70,7 @@ public int getId() { } public Uri getAvatarUrl() { - return Uri.parse(String.format(Locale.US, "https://i.%s/%s", Utility.getHost(), avatarUrl)); + return Uri.parse(String.format(Locale.US, "https://i1.%s/%s", Utility.getHost(), avatarUrl)); } public String getUsername() { diff --git a/app/src/main/java/com/dar/nclientv2/api/components/Gallery.java b/app/src/main/java/com/dar/nclientv2/api/components/Gallery.java index aa410ed9..a9b8a880 100644 --- a/app/src/main/java/com/dar/nclientv2/api/components/Gallery.java +++ b/app/src/main/java/com/dar/nclientv2/api/components/Gallery.java @@ -155,7 +155,7 @@ public String getPathTitle() { public Uri getCover() { if (Global.getDownloadPolicy() == Global.DataUsageType.THUMBNAIL) return getThumbnail(); if (galleryData.getCover().getImageExt() == ImageExt.GIF) return getHighPage(0); - return Uri.parse(String.format(Locale.US, "https://t." + Utility.getHost() + "/galleries/%d/cover.%s", getMediaId(), galleryData.getCover().extToString())); + return Uri.parse(String.format(Locale.US, "https://t1." + Utility.getHost() + "/galleries/%d/cover.%s", getMediaId(), galleryData.getCover().extToString())); } public ImageExt getThumb() { @@ -164,7 +164,7 @@ public ImageExt getThumb() { public Uri getThumbnail() { if (galleryData.getCover().getImageExt() == ImageExt.GIF) return getHighPage(0); - return Uri.parse(String.format(Locale.US, "https://t." + Utility.getHost() + "/galleries/%d/thumb.%s", getMediaId(), galleryData.getThumbnail().extToString())); + return Uri.parse(String.format(Locale.US, "https://t1." + Utility.getHost() + "/galleries/%d/thumb.%s", getMediaId(), galleryData.getThumbnail().extToString())); } private @Nullable @@ -183,13 +183,13 @@ public Uri getPageUrl(int page) { } public Uri getHighPage(int page) { - return Uri.parse(String.format(Locale.US, "https://i." + Utility.getHost() + "/galleries/%d/%d.%s", getMediaId(), page + 1, getPageExtension(page))); + return Uri.parse(String.format(Locale.US, "https://i1." + Utility.getHost() + "/galleries/%d/%d.%s", getMediaId(), page + 1, getPageExtension(page))); } public Uri getLowPage(int page) { Uri uri = getFileUri(page); if (uri != null) return uri; - return Uri.parse(String.format(Locale.US, "https://t." + Utility.getHost() + "/galleries/%d/%dt.%s", getMediaId(), page + 1, getPageExtension(page))); + return Uri.parse(String.format(Locale.US, "https://t1." + Utility.getHost() + "/galleries/%d/%dt.%s", getMediaId(), page + 1, getPageExtension(page))); } public String getPageExtension(int page) {