{"_id":"4chanapi.js","_rev":"4-a99d28d86f383d9275808eca96a9550e","name":"4chanapi.js","description":"Wrapper around parts of the 4chan JSON api that make it easy to rip media from 4chan en masse.","dist-tags":{"latest":"1.1.1"},"versions":{"0.2.0":{"name":"4chanapi.js","version":"0.2.0","description":"Wrapper around parts of the 4chan JSON api that make it easy to rip media from 4chan en masse.","main":"index.js","scripts":{"start":"node index.js"},"author":{"name":"allcaps"},"license":"ISC","dependencies":{"request":"^2.81.0","strman":"^2.0.0"},"_id":"4chanapi.js@0.2.0","_shasum":"15de123e184c7a3f6bef03d5bb19f3ce6e8865f0","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.9.0","_npmUser":{"name":"allcaps","email":"donoteatmikezila@gmail.com"},"dist":{"shasum":"15de123e184c7a3f6bef03d5bb19f3ce6e8865f0","tarball":"https://registry.npmjs.org/4chanapi.js/-/4chanapi.js-0.2.0.tgz","integrity":"sha512-LtsyXWISE5wak8AhTXCDwZsZQ4dZ/BgWmHd+Lq/ErbmprJAw3xgr3EVSQWgtlTcMxQkOZl/pyIr2uGIXEQb5Tw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcAOCSwFsLyzmb7GZao5XXJYWnUDmx3Kd1ywkOjbe7AAIgBkwjhyBOd/PDqBSXU6vNzq5TJCNeqxCdcrbhQKh7Bdg="}]},"maintainers":[{"name":"allcaps","email":"donoteatmikezila@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/4chanapi.js-0.2.0.tgz_1492712347815_0.014802639139816165"}},"1.1.0":{"name":"4chanapi.js","version":"1.1.0","description":"Wrapper around parts of the 4chan JSON api that make it easy to rip media from 4chan en masse.","main":"index.js","scripts":{"start":"node index.js"},"author":{"name":"allcaps"},"license":"ISC","dependencies":{"request":"^2.81.0","request-promise-native":"^1.0.3","strman":"^2.0.0"},"_id":"4chanapi.js@1.1.0","_shasum":"c80a715a714001e247e7af211907935cfc33949f","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.9.0","_npmUser":{"name":"allcaps","email":"donoteatmikezila@gmail.com"},"dist":{"shasum":"c80a715a714001e247e7af211907935cfc33949f","tarball":"https://registry.npmjs.org/4chanapi.js/-/4chanapi.js-1.1.0.tgz","integrity":"sha512-PvLIcDS1Wz0i3gq2HbGMx1ITbz7OHncd8sfGwa+w1j+C0mPi4i012571p/JYXak9ZwCAoWMT2R/2cVSmidGikQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEo6AcDwPQCvBEhsHyhFdErmP2JWUWwMR/L/BGJOu+Z8AiEA6IS4oTixtcXciyOhOWoF6lNjzTMRpKQ4zYfPeR6wFjA="}]},"maintainers":[{"name":"allcaps","email":"donoteatmikezila@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/4chanapi.js-1.1.0.tgz_1493009489598_0.5262664507608861"}},"1.1.1":{"name":"4chanapi.js","version":"1.1.1","description":"Wrapper around parts of the 4chan JSON api that make it easy to rip media from 4chan en masse.","main":"index.js","scripts":{"start":"node index.js"},"author":{"name":"allcaps"},"license":"ISC","dependencies":{"request":"^2.81.0","request-promise-native":"^1.0.3","strman":"^2.0.0"},"_id":"4chanapi.js@1.1.1","_shasum":"b04024c42f38de29c5b90c4ecf1afbd0865cdc9f","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.9.0","_npmUser":{"name":"allcaps","email":"donoteatmikezila@gmail.com"},"dist":{"shasum":"b04024c42f38de29c5b90c4ecf1afbd0865cdc9f","tarball":"https://registry.npmjs.org/4chanapi.js/-/4chanapi.js-1.1.1.tgz","integrity":"sha512-6FJBjFcBh3xjdkkQfAHuBHBWPzBNl6lzALvCMYpzBYUER66UDqTyLjYlcN88qBlyOQsa+kmdRtxTZvvYKDQhCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPVNtKL3UQs3z1sU/qGsoZwqxve6uabVVn5931iFq1eQIhAOT4vZUedr+np/54V2lfCGCxTqVYeyxHN83Qcrv0TSAN"}]},"maintainers":[{"name":"allcaps","email":"donoteatmikezila@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/4chanapi.js-1.1.1.tgz_1493011203163_0.5553118162788451"}}},"readme":"#install\n\nThe usual.\n\n    npm install --save 4chanapi.js\n\n#usage\n\nThere are two functions exported, one to grab the threads on a particular board that match any of an array of keywords, and one that returns the media links for a given thread.  This is done via promises or async/await.\n\n#example\n\n    let chan = require('4chanapi.js')\n    \n    async function testIt() {\n    let threads = await chan.threadsWithTopics(\"v\", [\"rpg\", \"metal gear\"])\n    console.log(threads)\n    let results = await chan.threadMediaLinks(threads[0].url)\n    console.log(results)\n    }\n    \n    testIt()\n    \nIn the above example `threads` would be an array of objects like this:\n \n \t[ { url: 'https://a.4cdn.org/v/thread/123.json',\n    semantic_url: 'do-people-actually-find-puzzle-maps-in-rpgs-fun' },\n    { url: 'https://a.4cdn.org/v/thread/321.json',\n    semantic_url: 'best-story-in-gaming-with-xenogears' } ]\n    \nThe `url` is the url of the json api endpoint for that thread, as used by the other function.  The `semantic_url` is the slugified thread title, suitable for use as a folder name.  The output of `results` is an array of simple string values representing the pictures/webms in the thread.\n\n\t[ 'https://i.4cdn.org/v/123.png' ]\n\t\nThere's no function provided to actually download the images, that's up to you.","maintainers":[{"name":"allcaps","email":"donoteatmikezila@gmail.com"}],"time":{"modified":"2022-06-12T14:07:46.638Z","created":"2017-04-20T18:19:08.501Z","0.2.0":"2017-04-20T18:19:08.501Z","1.1.0":"2017-04-24T04:51:30.213Z","1.1.1":"2017-04-24T05:20:03.797Z"},"author":{"name":"allcaps"},"license":"ISC","readmeFilename":"README.md"}