4chan-list-webm
Version:
Generate a list of webms posted in a 4chan thread
142 lines (96 loc) • 4.1 kB
Markdown
# 4chan-list-webm
[](https://badge.fury.io/js/4chan-list-webm)
[](https://travis-ci.org/scootykins/4webm)
[](https://coveralls.io/github/scootykins/4chan-list-webm?branch=master)
[](https://packagephobia.now.sh/result?p=4chan-list-webm)
Generate a list of webms posted in a thread.
Here's a little [demonstration](https://www.4webm.org/) of `4chan-list-webm` in action (plz star).
## Installation
```bash
$ yarn add 4chan-list-webm
# OR
$ npm install --save 4chan-list-webm
```
## Usage
```js
const listWebms = require('4chan-list-webm')
// promise
listWebms('wsg', 2045456)
.then(data => console.log(data.webms))
.catch(err => console.error('404!', err))
// async/await
async function run () {
try {
const data = await listWebms('http://boards.4chan.org/wsg/thread/2045456')
console.log(data)
} catch (err) {
console.error('Whoa! 404! :c', err)
}
}
run()
```
## API
#### listWebm(url)
#### listWebm(board, threadNo, config)
Returns a promise that resolves to data about webms within a thread (see payload).
#### url
Type: `String`
The URL of the thread. The thumbnail and webm links will use `https` if an `https` request is made.
#### board
Type: `String`
The short-name of the board, eg. `'wsg'`, `'b'`, etc.
#### threadNo
Type: `Number`
The thread number of the target thread. For example, `2312676` is the thread number of http://boards.4chan.org/wsg/thread/2312676
#### config
Type: `Object`
A configuration object, see details below.
#### config.https
Type: `Boolean`
Property that determines whether to use `https`. Setting the key to `true` enables `https`.
## Payload
Below an example payload. Note that the subject key will be omitted if the thread has no subject.
```json
{
"subject": "Hawkeye being epic in other roles",
"webms": [
{
"filename": "1534288775634",
"url": "http://i.4cdn.org/wsg/1534332395477.webm",
"thumbnail": "http://i.4cdn.org/wsg/1534332395477s.jpg"
},
{
"filename": "1534288802449",
"url": "http://i.4cdn.org/wsg/1534332452014.webm",
"thumbnail": "http://i.4cdn.org/wsg/1534332452014s.jpg"
},
{
"filename": "1534288878879",
"url": "http://i.4cdn.org/wsg/1534332526405.webm",
"thumbnail": "http://i.4cdn.org/wsg/1534332526405s.jpg"
},
{
"filename": "Dahmer (2002)",
"url": "http://i.4cdn.org/wsg/1534799616292.webm",
"thumbnail": "http://i.4cdn.org/wsg/1534799616292s.jpg"
},
{
"filename": "Bourne_legacy",
"url": "http://i.4cdn.org/wsg/1535117894788.webm",
"thumbnail": "http://i.4cdn.org/wsg/1535117894788s.jpg"
}
]
}
```
## Miscellaneous
#### CORS, and why this doesn't work in the browser
Because CORS [is only supported](https://github.com/4chan/4chan-API/issues/35) with an origin of `http(s)://boards.4chan.org`,
this module **does not work in the browser; it only works with Node.js**. The **ONLY** exception to this is if you're creating a Chrome plugin, with `http(s)://boards.4chan.org` set as the origin.
#### Rate limits
*As stated in the [4chan API](https://github.com/4chan/4chan-API), you must ensure that you do not make more than one request per second. It is __your__ responsiblity to ensure that the request limit is respected. I recommend using [limiter](https://www.npmjs.com/package/limiter) or [bottleneck](https://www.npmjs.com/package/bottleneck).*
#### Thumbnails
You will get an `403 Forbidden error` if you try to load the thumbnails via inline linking (eg. changing the `src` attribute of an `<img>` via JavaScript, or hard-coding it). You can still download these images via a proxy server and serve them there.
## Why?
¯\\\_(ツ)\_/¯
## Disclaimer
The creator of `4chan-list-webm` is not associated with 4chan.org in any way.