Skip to content

Commit

Permalink
sources: add basic support for Newgrounds Art (fix #2794)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bionus committed Mar 26, 2023
1 parent 82b2869 commit eaee2dd
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 0 deletions.
11 changes: 11 additions & 0 deletions docs/_sources/newgrounds-art.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Newgrounds Art
---


## Newgrounds Art

### Search syntax

* `order:{date,score,views}`: sort the results (default: `date`)
* `approved:{yes,no}`: if set to "yes", only return approved artists. If set to "no", only return undiscovered artists. If not set, return both.
4 changes: 4 additions & 0 deletions scripts/windows-setup/setup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,10 @@ Source: "{#SrcDir}\sites\Mastodon\sites.txt"; DestDir: "{app}\sites\Mastodon"; F
Source: "{#SrcDir}\sites\Moebooru\icon.png"; DestDir: "{app}\sites\Moebooru"; Flags: ignoreversion
Source: "{#SrcDir}\sites\Moebooru\model.js"; DestDir: "{app}\sites\Moebooru"; Flags: ignoreversion
Source: "{#SrcDir}\sites\Moebooru\sites.txt"; DestDir: "{app}\sites\Moebooru"; Flags: ignoreversion
Source: "{#SrcDir}\sites\Newgrounds Art\icon.png"; DestDir: "{app}\sites\Newgrounds Art"; Flags: ignoreversion
Source: "{#SrcDir}\sites\Newgrounds Art\model.js"; DestDir: "{app}\sites\Newgrounds Art"; Flags: ignoreversion
Source: "{#SrcDir}\sites\Newgrounds Art\sites.txt"; DestDir: "{app}\sites\Newgrounds Art"; Flags: ignoreversion
Source: "{#SrcDir}\sites\Newgrounds Art\supported.txt"; DestDir: "{app}\sites\Newgrounds Art"; Flags: ignoreversion
Source: "{#SrcDir}\sites\NHentai\icon.png"; DestDir: "{app}\sites\NHentai"; Flags: ignoreversion
Source: "{#SrcDir}\sites\NHentai\model.js"; DestDir: "{app}\sites\NHentai"; Flags: ignoreversion
Source: "{#SrcDir}\sites\NHentai\sites.txt"; DestDir: "{app}\sites\NHentai"; Flags: ignoreversion
Expand Down
Binary file added src/sites/Newgrounds Art/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
91 changes: 91 additions & 0 deletions src/sites/Newgrounds Art/model.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
const map = {
"id": "id",
"name": "title",
"file_url": "file.path",
"created_at": "created_at",
"tags": "tags",
// "page_url": "url",
};
const mediaMap = {
"url": "url",
"file_size": "filesize",
"width": "width",
"height": "height",
}
const ratingMap: Record<string, string> = {
e: "general",
t: "safe",
m: "questionable",
a: "explicit",
}
function parseJsonImage(data: any): IImage {
const img: IImage = Grabber.mapFields(data, map);
img.rating = ratingMap[data["suitability"]];

const user = data["users"].filter((u: any) => u["primary"]);
img.author = user["user_name"];
img.author_id = user["id"];

img.medias = data["icons"]
.concat(data["files"])
.map((media: any) => Grabber.mapFields(media, mediaMap));
console.log("img.medias", img.medias);

return img;
}

const meta: ISource["meta"] = {
order: {
type: "options",
options: ["date", "score", "views"],
default: "date",
},
approved: {
type: "bool",
},
};

export const source: ISource = {
name: "Newgrounds Art",
meta,
apis: {
json: {
name: "JSON",
auth: [],
forcedLimit: 28,
search: {
url: (query: ISearchQuery, opts: IUrlOptions): IRequest | IError => {
const parsed = Grabber.parseSearchQuery(query.search, meta);
if (parsed.query) {
return {error: "Cannot search in JSON mode."};
}

const offset = (query.page - 1) * opts.limit;
const artistType = parsed.approved === true ? "approved" : (parsed.approved === false ? "undiscovered" : "all");
return {
url: "/browse?interval=all&sort=" + parsed.order + "&genre=0&artist-type=" + artistType + "&offset=" + offset,
headers: {
"X-Requested-With": "XMLHttpRequest",
},
};
},
parse: (src: string): IParsedSearch => {
console.log(src, "src");
const data = JSON.parse(src);
return {
images: data["total"]["hits"].map((img: any) => parseJsonImage(img["_source"])),
imageCount: data["total"]["total"]["relation"] === "eq" ? data["total"]["total"]["value"] : undefined,
};
},
},
check: {
url: (): string => {
return "/";
},
parse: (src: string): boolean => {
return src.indexOf("www.newgrounds.com") !== -1;
},
},
},
},
};
1 change: 1 addition & 0 deletions src/sites/Newgrounds Art/sites.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
www.newgrounds.com/art
1 change: 1 addition & 0 deletions src/sites/Newgrounds Art/supported.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
www.newgrounds.com/art

0 comments on commit eaee2dd

Please sign in to comment.