Better parse image

This commit is contained in:
Balazs Toldi 2023-07-29 22:33:50 +02:00
parent 554eb3c2fe
commit 8ae681c753
No known key found for this signature in database
GPG Key ID: 6C7D440036F99D58

View File

@ -514,8 +514,23 @@ public class ParsePost {
post.setStreamableShortCode(shortCode);
}
}
} catch (IllegalArgumentException ignore) { }
} else if (post.getPostType() == Post.LINK_TYPE || post.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
} catch (IllegalArgumentException ignore) {
}
} else if (post.getPostType() == Post.TEXT_TYPE) {
List<ImageInfo> images = extractImages(post.getSelfText());
if (images.size() == 1) {
post.setPostType(Post.IMAGE_TYPE);
post.setUrl(images.get(0).imageUrl);
} else if (images.size() > 1) {
post.setPostType(Post.GALLERY_TYPE);
ArrayList<Post.Gallery> gallery = new ArrayList<>();
for (ImageInfo image : images) {
String[] imagePath = image.getImageUrl().split(Pattern.quote("/"));
gallery.add(new Post.Gallery("image/jpg", image.getImageUrl(), "", imagePath[imagePath.length - 1], image.caption, ""));
}
post.setGallery(gallery);
}
if (!data.isNull(JSONUtils.GALLERY_DATA_KEY)) {
JSONArray galleryIdsArray = data.getJSONObject(JSONUtils.GALLERY_DATA_KEY).getJSONArray(JSONUtils.ITEMS_KEY);
JSONObject galleryObject = data.getJSONObject(JSONUtils.MEDIA_METADATA_KEY);
@ -687,4 +702,40 @@ public class ParsePost {
}
}
}
static class ImageInfo {
private String caption;
private String imageUrl;
public ImageInfo(String caption, String imageUrl) {
this.caption = caption;
this.imageUrl = imageUrl;
}
public String getCaption() {
return caption;
}
public String getImageUrl() {
return imageUrl;
}
}
public static List<ImageInfo> extractImages(String markdown) {
List<ImageInfo> images = new ArrayList<>();
// Regular expression to match markdown image syntax ![alt text](image URL)
Pattern pattern = Pattern.compile("!\\[(.*?)\\]\\((.*?)\\)");
Matcher matcher = pattern.matcher(markdown);
// Find all matches and extract image URLs and captions
while (matcher.find()) {
String caption = matcher.group(1);
String imageUrl = matcher.group(2);
images.add(new ImageInfo(caption, imageUrl));
}
return images;
}
}