Skip to content

Commit

Permalink
sources: fix HTML listing parsing for Philomena
Browse files Browse the repository at this point in the history
  • Loading branch information
Bionus committed Mar 25, 2023
1 parent cac113b commit 3102698
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/sites/Philomena/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,17 +199,17 @@ export const source: ISource = {
auth: [],
forcedLimit: 15,
search: {
url: (query: ISearchQuery): string => {
url: (query: ISearchQuery, opts: IUrlOptions): string => {
if (!query.search || query.search.length === 0) {
return "/images/page/" + query.page;
}
return "/search?page=" + query.page + "&sbq=" + searchToArg(query.search);
return "/search?per_page=" + opts.limit + "&page=" + query.page + "&q=" + searchToArg(query.search);
},
parse: (src: string): IParsedSearch => {
return {
images: Grabber.regexToImages('<div class="image-container[^"]*" data-aspect-ratio="[^"]*" data-comment-count="(?<comments>[^"]*)" data-created-at="(?<created_at>[^"]*)" data-downvotes="[^"]*" data-faves="(?<favorites>[^"]*)" data-height="(?<height>[^"]*)" data-image-id="(?<id>[^"]*)" data-image-tag-aliases="(?<tags>[^"]*)" data-image-tags="[^"]*" data-score="(?<score>[^"]*)" data-size="[^"]*" data-source-url="(?<source>[^"]*)" data-upvotes="[^"]*" data-uris="(?<json_uris>[^"]*)" data-width="(?<width>[^"]*)">.*?<a[^>]*><picture><img[^>]* src="(?<preview_url>[^"]*)"[^>]*>', src).map(completeImage),
pageCount: Grabber.regexToConst("page", '<a href="(?:/images/page/|/tags/[^\\?]*\\?[^"]*page=|/search/index\\?[^"]*page=)(?<image>\\d+)[^"]*">Last', src),
imageCount: Grabber.regexToConst("count", "of <strong>(?<count>[^<]+)</strong> total", src),
images: Grabber.regexToImages('<div class="image-container[^"]*" data-aspect-ratio="[^"]*" data-comment-count="(?<comments>[^"]*)" data-created-at="(?<created_at>[^"]*)" data-downvotes="[^"]*" data-faves="(?<favorites>[^"]*)" data-height="(?<height>[^"]*)" data-image-id="(?<id>[^"]*)" data-image-tag-aliases="(?<tags>[^"]*)" data-image-tags="[^"]*" data-score="(?<score>[^"]*)" data-size="[^"]*" data-source-url="(?<source>[^"]*)"(?: data-tag-count="[^"]*")? data-upvotes="[^"]*" data-uris="(?<json_uris>[^"]*)" data-width="(?<width>[^"]*)">.*?<a[^>]*><picture><img[^>]* src="(?<preview_url>[^"]*)"[^>]*>', src).map(completeImage),
pageCount: Grabber.regexToConst("page", '<a href="(?:/images|/tags/[^\\?]*|/search)\\?[^"]*page=(?<page>\\d+)[^"]*">Last', src),
imageCount: Grabber.regexToConst("count", "of\\s*<strong>\\s*(?<count>[^<]+?)\\s*</strong>\\s*total", src),
};
},
},
Expand All @@ -218,9 +218,13 @@ export const source: ISource = {
return "/" + id;
},
parse: (src: string): IParsedDetails => {
return {
tags: Grabber.regexToTags('<span class="tag dropdown"(?: data-tag-category="(?<type>[^"]*)")? data-tag-id="(?<id>[^"]+)" data-tag-name="(?<name>[^"]+)" data-tag-slug="[^"]+">', src),
};
const tags: ITag[] = Grabber.regexToTags('<span class="tag dropdown"(?: data-tag-category="(?<type>[^"]*)")? data-tag-id="(?<id>[^"]+)" data-tag-name="(?<name>[^"]+)" data-tag-slug="[^"]+">', src);
for (const item of tags) {
if (!item.type) {
item.type = "general";
}
}
return { tags };
},
},
tagTypes: false,
Expand Down

0 comments on commit 3102698

Please sign in to comment.