Merge branch 'develop' into feature/10-templates
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Vylpes 2023-02-24 20:31:27 +00:00
commit 263a84dd4c
4 changed files with 35 additions and 36 deletions

4
app.ts
View file

@ -1,7 +1,7 @@
import randomBunny from "./src"; import randomBunny from "./dist";
async function app() { async function app() {
const result = await randomBunny('rabbits', 'hot', 100); const result = await randomBunny('rabbits', 'hot');
console.log(result); console.log(result);
} }

View file

@ -1,11 +1,11 @@
{ {
"name": "random-bunny", "name": "random-bunny",
"version": "2.0.3", "version": "2.0.5",
"description": "Get a random subreddit image url", "description": "Get a random subreddit image url",
"license": "MIT", "license": "MIT",
"author": "Vylpes", "author": "Vylpes",
"main": "./dist/index", "main": "./dist/index.js",
"typings": "./dist", "typings": "./dist/index.d.ts",
"keywords": [ "keywords": [
"rabbit", "rabbit",
"bunny", "bunny",
@ -37,5 +37,8 @@
"eslint": "^7.17.0", "eslint": "^7.17.0",
"ts-node": "^10.4.0", "ts-node": "^10.4.0",
"typescript": "^4.5.2" "typescript": "^4.5.2"
} },
"files": [
"dist"
]
} }

View file

@ -21,7 +21,7 @@ yarn add random-bunny
import randomBunny from "random-bunny"; import randomBunny from "random-bunny";
// ... In an async function // ... In an async function
const result = await randomBunny('rabbits', 'hot', 100); const result = await randomBunny('rabbits', 'hot');
console.log(result); console.log(result);
``` ```
@ -29,7 +29,7 @@ console.log(result);
### `randomBunny()` ### `randomBunny()`
Returns a `json string` for a random post. Accepts 3 arguments: `subreddit`, `sortby` ('new', 'hot', 'top'), `maxTries?` (default 100) Returns a `json string` for a random post. Accepts 2 arguments: `subreddit`, and `sortby` ('new', 'hot', 'top')
The json string which gets returned consists of: The json string which gets returned consists of:
- archived - archived
@ -44,8 +44,6 @@ The json string which gets returned consists of:
`sortBy` will default to 'hot' if not given or invalid `sortBy` will default to 'hot' if not given or invalid
`maxTries` prevents the script from rerolling too many times. The script rerolls the randomiser if the post its given doesn't contain an image. Default 100.
## Notes ## Notes
* Node 4 or newer. * Node 4 or newer.

View file

@ -10,7 +10,7 @@ const sortable = [
'top' 'top'
]; ];
export default async function randomBunny(subreddit: string, sortBy?: string, maxTries = 100): Promise<IReturnResult> { export default async function randomBunny(subreddit: string, sortBy?: string): Promise<IReturnResult> {
if (!sortBy || !sortable.includes(sortBy)) sortBy = 'hot'; if (!sortBy || !sortable.includes(sortBy)) sortBy = 'hot';
const result = await fetch(`https://reddit.com/r/${subreddit}/${sortBy}.json`); const result = await fetch(`https://reddit.com/r/${subreddit}/${sortBy}.json`);
@ -30,39 +30,37 @@ export default async function randomBunny(subreddit: string, sortBy?: string, ma
} }
const data: IFetchResult[] = json.data.children; const data: IFetchResult[] = json.data.children;
const dataWithImages = new List<IFetchResult>(data) const dataWithImages = new List<IFetchResult>(data)
.Where(x => x!.data.url.includes('.jpg') || x!.data.url.includes('.png')) .Where(x => x!.data.url.includes('.jpg') || x!.data.url.includes('.png'))
.ToArray(); .ToArray();
for (let i = 0; i < maxTries; i++) { const random = Math.floor((Math.random() * dataWithImages.length - 1) + 0); // Between 0 and (size - 1)
const random = Math.floor((Math.random() * dataWithImages.length - 1) + 0); // Between 0 and (size - 1)
const randomSelect = dataWithImages[random]; const randomSelect = dataWithImages[random];
if (!randomSelect) continue;
const randomData = randomSelect.data;
const redditResult: IRedditResult = {
Archived: randomData['archived'],
Downs: randomData['downs'],
Hidden: randomData['hidden'],
Permalink: randomData['permalink'],
Subreddit: randomData['subreddit'],
SubredditSubscribers: randomData['subreddit_subscribers'],
Title: randomData['title'],
Ups: randomData['ups'],
Url: randomData['url']
};
if (!randomSelect) {
return { return {
IsSuccess: true, IsSuccess: false,
Result: redditResult
}; };
} };
const randomData = randomSelect.data;
const redditResult: IRedditResult = {
Archived: randomData['archived'],
Downs: randomData['downs'],
Hidden: randomData['hidden'],
Permalink: randomData['permalink'],
Subreddit: randomData['subreddit'],
SubredditSubscribers: randomData['subreddit_subscribers'],
Title: randomData['title'],
Ups: randomData['ups'],
Url: randomData['url']
};
return { return {
IsSuccess: false IsSuccess: true,
} Result: redditResult
};
} }