├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── config.js ├── follow.js ├── main.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | config.js 3 | follows.json 4 | .idea/ 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "semi": true, 4 | "printWidth": 120, 5 | "singleQuote": true 6 | } 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2020 @Favreyo__ 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # twitter-kakedashi-blocker 2 | 3 | FF外で `#駆け出しエンジニアと繋がりたい` などとツイートしたアカウントをブロックします。 4 | 5 | # 使い方 6 | 7 | config.jsに必要な情報を記載して下さい。 8 | 9 | ```Shell 10 | $ git clone https://github.com/Favreyo/twitter-kakedashi-blocker 11 | $ node follow.js 12 | $ node main.js 13 | ``` 14 | -------------------------------------------------------------------------------- /config.js: -------------------------------------------------------------------------------- 1 | exports.auth = { 2 | consumer_key: '', 3 | consumer_secret: '', 4 | access_token_key: '', 5 | access_token_secret: '', 6 | }; 7 | 8 | exports.blacklist_search_query = [ 9 | '#駆け出しエンジニアと繋がりたい', 10 | '#駆け出しエンジニア', 11 | '#プログラミング初心者', 12 | '#プログラミング学習', 13 | '#今日の積み上げ', 14 | '#フリーランス', 15 | '#コード書け', 16 | '#TECHCAMP', 17 | '#人生逆転サロン', 18 | '#TECHBATON', 19 | '#ウェブカツ' 20 | ]; 21 | -------------------------------------------------------------------------------- /follow.js: -------------------------------------------------------------------------------- 1 | const Twitter = require('twitter'); 2 | const config = require('./config'); 3 | const fs = require('fs').promises; 4 | const client = new Twitter(config.auth); 5 | 6 | const getFriends = () => 7 | new Promise((resolve) => { 8 | const params = { screen_name: config.screen_name, cursor: -1, stringify_ids: true }; 9 | client.get('friends/ids', params, (error, data, response) => { 10 | if (error) return console.log(error); 11 | resolve(data); 12 | }); 13 | }); 14 | 15 | async function main() { 16 | const friends = await getFriends(); 17 | await fs.writeFile('follows.json', JSON.stringify(friends)); 18 | } 19 | 20 | main(); 21 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | const Twitter = require('twitter'); 2 | const fs = require('fs').promises; 3 | const config = require('./config'); 4 | const client = new Twitter(config.auth); 5 | 6 | async function main() { 7 | const follows = JSON.parse(await fs.readFile('follows.json')); 8 | 9 | for (const query of config.blacklist_search_query) { 10 | client.get('search/tweets', { q: query, count: 100 }, (error, data, response) => { 11 | if (error) return console.log(error); 12 | 13 | for (const tweet of data.statuses) { 14 | if (follows.ids.includes(tweet.user['id_str'])) return; 15 | 16 | client.post('blocks/create', { user_id: tweet.user['id_str'] }, (error, data, response) => { 17 | if (error) return console.log(error); 18 | 19 | const { name, screen_name, description } = data; 20 | console.log(`[Blocked] ${name}@${screen_name}: ${description}`); 21 | }); 22 | } 23 | }); 24 | } 25 | } 26 | 27 | main(); 28 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "twitter-kakedashi-blocker", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/caseless": { 8 | "version": "0.12.2", 9 | "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", 10 | "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" 11 | }, 12 | "@types/node": { 13 | "version": "13.9.8", 14 | "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.8.tgz", 15 | "integrity": "sha512-1WgO8hsyHynlx7nhP1kr0OFzsgKz5XDQL+Lfc3b1Q3qIln/n8cKD4m09NJ0+P1Rq7Zgnc7N0+SsMnoD1rEb0kA==" 16 | }, 17 | "@types/request": { 18 | "version": "2.48.4", 19 | "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.4.tgz", 20 | "integrity": "sha512-W1t1MTKYR8PxICH+A4HgEIPuAC3sbljoEVfyZbeFJJDbr30guDspJri2XOaM2E+Un7ZjrihaDi7cf6fPa2tbgw==", 21 | "requires": { 22 | "@types/caseless": "*", 23 | "@types/node": "*", 24 | "@types/tough-cookie": "*", 25 | "form-data": "^2.5.0" 26 | }, 27 | "dependencies": { 28 | "form-data": { 29 | "version": "2.5.1", 30 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", 31 | "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", 32 | "requires": { 33 | "asynckit": "^0.4.0", 34 | "combined-stream": "^1.0.6", 35 | "mime-types": "^2.1.12" 36 | } 37 | } 38 | } 39 | }, 40 | "@types/tough-cookie": { 41 | "version": "2.3.6", 42 | "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.6.tgz", 43 | "integrity": "sha512-wHNBMnkoEBiRAd3s8KTKwIuO9biFtTf0LehITzBhSco+HQI0xkXZbLOD55SW3Aqw3oUkHstkm5SPv58yaAdFPQ==" 44 | }, 45 | "@types/twitter": { 46 | "version": "1.7.0", 47 | "resolved": "https://registry.npmjs.org/@types/twitter/-/twitter-1.7.0.tgz", 48 | "integrity": "sha512-acHFbtq5eQs60g/2XWgV2LG+KGknz31hFJeaLtsdsmeezUSO2l7d8Lm7DnSfh5sNx+/NMP3yEAdVR9MrTGKtDw==", 49 | "requires": { 50 | "@types/node": "*", 51 | "@types/request": "*" 52 | } 53 | }, 54 | "ajv": { 55 | "version": "6.12.0", 56 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", 57 | "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", 58 | "requires": { 59 | "fast-deep-equal": "^3.1.1", 60 | "fast-json-stable-stringify": "^2.0.0", 61 | "json-schema-traverse": "^0.4.1", 62 | "uri-js": "^4.2.2" 63 | } 64 | }, 65 | "asn1": { 66 | "version": "0.2.4", 67 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 68 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 69 | "requires": { 70 | "safer-buffer": "~2.1.0" 71 | } 72 | }, 73 | "assert-plus": { 74 | "version": "1.0.0", 75 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 76 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 77 | }, 78 | "asynckit": { 79 | "version": "0.4.0", 80 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 81 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 82 | }, 83 | "aws-sign2": { 84 | "version": "0.7.0", 85 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 86 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 87 | }, 88 | "aws4": { 89 | "version": "1.9.1", 90 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", 91 | "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" 92 | }, 93 | "bcrypt-pbkdf": { 94 | "version": "1.0.2", 95 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 96 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 97 | "requires": { 98 | "tweetnacl": "^0.14.3" 99 | } 100 | }, 101 | "caseless": { 102 | "version": "0.12.0", 103 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 104 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 105 | }, 106 | "combined-stream": { 107 | "version": "1.0.8", 108 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 109 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 110 | "requires": { 111 | "delayed-stream": "~1.0.0" 112 | } 113 | }, 114 | "core-util-is": { 115 | "version": "1.0.2", 116 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 117 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 118 | }, 119 | "dashdash": { 120 | "version": "1.14.1", 121 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 122 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 123 | "requires": { 124 | "assert-plus": "^1.0.0" 125 | } 126 | }, 127 | "deep-extend": { 128 | "version": "0.5.1", 129 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", 130 | "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" 131 | }, 132 | "delayed-stream": { 133 | "version": "1.0.0", 134 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 135 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 136 | }, 137 | "ecc-jsbn": { 138 | "version": "0.1.2", 139 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 140 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 141 | "requires": { 142 | "jsbn": "~0.1.0", 143 | "safer-buffer": "^2.1.0" 144 | } 145 | }, 146 | "extend": { 147 | "version": "3.0.2", 148 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 149 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 150 | }, 151 | "extsprintf": { 152 | "version": "1.3.0", 153 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 154 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 155 | }, 156 | "fast-deep-equal": { 157 | "version": "3.1.1", 158 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 159 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" 160 | }, 161 | "fast-json-stable-stringify": { 162 | "version": "2.1.0", 163 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 164 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 165 | }, 166 | "forever-agent": { 167 | "version": "0.6.1", 168 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 169 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 170 | }, 171 | "form-data": { 172 | "version": "2.3.3", 173 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 174 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 175 | "requires": { 176 | "asynckit": "^0.4.0", 177 | "combined-stream": "^1.0.6", 178 | "mime-types": "^2.1.12" 179 | } 180 | }, 181 | "getpass": { 182 | "version": "0.1.7", 183 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 184 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 185 | "requires": { 186 | "assert-plus": "^1.0.0" 187 | } 188 | }, 189 | "har-schema": { 190 | "version": "2.0.0", 191 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 192 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 193 | }, 194 | "har-validator": { 195 | "version": "5.1.3", 196 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", 197 | "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", 198 | "requires": { 199 | "ajv": "^6.5.5", 200 | "har-schema": "^2.0.0" 201 | } 202 | }, 203 | "http-signature": { 204 | "version": "1.2.0", 205 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 206 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 207 | "requires": { 208 | "assert-plus": "^1.0.0", 209 | "jsprim": "^1.2.2", 210 | "sshpk": "^1.7.0" 211 | } 212 | }, 213 | "is-typedarray": { 214 | "version": "1.0.0", 215 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 216 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 217 | }, 218 | "isstream": { 219 | "version": "0.1.2", 220 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 221 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 222 | }, 223 | "jsbn": { 224 | "version": "0.1.1", 225 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 226 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 227 | }, 228 | "json-schema": { 229 | "version": "0.2.3", 230 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 231 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 232 | }, 233 | "json-schema-traverse": { 234 | "version": "0.4.1", 235 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 236 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 237 | }, 238 | "json-stringify-safe": { 239 | "version": "5.0.1", 240 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 241 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 242 | }, 243 | "jsprim": { 244 | "version": "1.4.1", 245 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 246 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 247 | "requires": { 248 | "assert-plus": "1.0.0", 249 | "extsprintf": "1.3.0", 250 | "json-schema": "0.2.3", 251 | "verror": "1.10.0" 252 | } 253 | }, 254 | "mime-db": { 255 | "version": "1.43.0", 256 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", 257 | "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" 258 | }, 259 | "mime-types": { 260 | "version": "2.1.26", 261 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", 262 | "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", 263 | "requires": { 264 | "mime-db": "1.43.0" 265 | } 266 | }, 267 | "oauth-sign": { 268 | "version": "0.9.0", 269 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 270 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 271 | }, 272 | "performance-now": { 273 | "version": "2.1.0", 274 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 275 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 276 | }, 277 | "prettier": { 278 | "version": "2.0.2", 279 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.2.tgz", 280 | "integrity": "sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg==", 281 | "dev": true 282 | }, 283 | "psl": { 284 | "version": "1.8.0", 285 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 286 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 287 | }, 288 | "punycode": { 289 | "version": "2.1.1", 290 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 291 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 292 | }, 293 | "qs": { 294 | "version": "6.5.2", 295 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 296 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 297 | }, 298 | "request": { 299 | "version": "2.88.2", 300 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 301 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 302 | "requires": { 303 | "aws-sign2": "~0.7.0", 304 | "aws4": "^1.8.0", 305 | "caseless": "~0.12.0", 306 | "combined-stream": "~1.0.6", 307 | "extend": "~3.0.2", 308 | "forever-agent": "~0.6.1", 309 | "form-data": "~2.3.2", 310 | "har-validator": "~5.1.3", 311 | "http-signature": "~1.2.0", 312 | "is-typedarray": "~1.0.0", 313 | "isstream": "~0.1.2", 314 | "json-stringify-safe": "~5.0.1", 315 | "mime-types": "~2.1.19", 316 | "oauth-sign": "~0.9.0", 317 | "performance-now": "^2.1.0", 318 | "qs": "~6.5.2", 319 | "safe-buffer": "^5.1.2", 320 | "tough-cookie": "~2.5.0", 321 | "tunnel-agent": "^0.6.0", 322 | "uuid": "^3.3.2" 323 | } 324 | }, 325 | "safe-buffer": { 326 | "version": "5.2.0", 327 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", 328 | "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" 329 | }, 330 | "safer-buffer": { 331 | "version": "2.1.2", 332 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 333 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 334 | }, 335 | "sshpk": { 336 | "version": "1.16.1", 337 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 338 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 339 | "requires": { 340 | "asn1": "~0.2.3", 341 | "assert-plus": "^1.0.0", 342 | "bcrypt-pbkdf": "^1.0.0", 343 | "dashdash": "^1.12.0", 344 | "ecc-jsbn": "~0.1.1", 345 | "getpass": "^0.1.1", 346 | "jsbn": "~0.1.0", 347 | "safer-buffer": "^2.0.2", 348 | "tweetnacl": "~0.14.0" 349 | } 350 | }, 351 | "tough-cookie": { 352 | "version": "2.5.0", 353 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 354 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 355 | "requires": { 356 | "psl": "^1.1.28", 357 | "punycode": "^2.1.1" 358 | } 359 | }, 360 | "tunnel-agent": { 361 | "version": "0.6.0", 362 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 363 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 364 | "requires": { 365 | "safe-buffer": "^5.0.1" 366 | } 367 | }, 368 | "tweetnacl": { 369 | "version": "0.14.5", 370 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 371 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 372 | }, 373 | "twitter": { 374 | "version": "1.7.1", 375 | "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", 376 | "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", 377 | "requires": { 378 | "deep-extend": "^0.5.0", 379 | "request": "^2.72.0" 380 | } 381 | }, 382 | "uri-js": { 383 | "version": "4.2.2", 384 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 385 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 386 | "requires": { 387 | "punycode": "^2.1.0" 388 | } 389 | }, 390 | "uuid": { 391 | "version": "3.4.0", 392 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 393 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 394 | }, 395 | "verror": { 396 | "version": "1.10.0", 397 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 398 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 399 | "requires": { 400 | "assert-plus": "^1.0.0", 401 | "core-util-is": "1.0.2", 402 | "extsprintf": "^1.2.0" 403 | } 404 | } 405 | } 406 | } 407 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "twitter-kakedashi-blocker", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "main.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "WTFPL", 12 | "dependencies": { 13 | "@types/twitter": "^1.7.0", 14 | "twitter": "^1.7.1" 15 | }, 16 | "devDependencies": { 17 | "prettier": "^2.0.2" 18 | } 19 | } 20 | --------------------------------------------------------------------------------