├── .gitignore ├── data.js ├── package-lock.json ├── script.js └── secret.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /data.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | { 3 | "College": "Maharaja Agrasen Institute Of Technology", 4 | "Degree" : "Bachelor of Technology (B.Tech)", 5 | "Stream" : "Information Technology", 6 | "Percentage" : "91", 7 | "Training" : "Data Structures and Algorithms, Web Development", 8 | "Organization" : "XYZ Pvt Ltd.", 9 | "description" : "XYZ is a great institution where I got to learn the not only the basics of data structures and algorithms but I also got familiar with Web Development and Competitive Programming. Here, the main focus is on concept building and it was a great start for me.", 10 | "link" : "https://github.com/xyz/Task1", 11 | "hiringReason" : "Over the past few years, I have acquired relevant skills and experience, which I shall bring to your organization. I have also worked tirelessly on my communication abilities and teamwork skills, which I will put to use in my future career, which would be in your organization if I am selected for the position.", 12 | "availability" : "Yes, I will be available", 13 | "rating" : "4", 14 | } 15 | ] -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "@types/node": { 6 | "version": "14.14.37", 7 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", 8 | "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" 9 | }, 10 | "@types/yauzl": { 11 | "version": "2.9.1", 12 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", 13 | "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", 14 | "requires": { 15 | "@types/node": "*" 16 | } 17 | }, 18 | "agent-base": { 19 | "version": "6.0.2", 20 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 21 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 22 | "requires": { 23 | "debug": "4" 24 | } 25 | }, 26 | "balanced-match": { 27 | "version": "1.0.2", 28 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 29 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 30 | }, 31 | "base64-js": { 32 | "version": "1.5.1", 33 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 34 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 35 | }, 36 | "bl": { 37 | "version": "4.1.0", 38 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 39 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 40 | "requires": { 41 | "buffer": "^5.5.0", 42 | "inherits": "^2.0.4", 43 | "readable-stream": "^3.4.0" 44 | } 45 | }, 46 | "brace-expansion": { 47 | "version": "1.1.11", 48 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 49 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 50 | "requires": { 51 | "balanced-match": "^1.0.0", 52 | "concat-map": "0.0.1" 53 | } 54 | }, 55 | "buffer": { 56 | "version": "5.7.1", 57 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 58 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 59 | "requires": { 60 | "base64-js": "^1.3.1", 61 | "ieee754": "^1.1.13" 62 | } 63 | }, 64 | "buffer-crc32": { 65 | "version": "0.2.13", 66 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 67 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" 68 | }, 69 | "chownr": { 70 | "version": "1.1.4", 71 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 72 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 73 | }, 74 | "concat-map": { 75 | "version": "0.0.1", 76 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 77 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 78 | }, 79 | "debug": { 80 | "version": "4.3.1", 81 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 82 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 83 | "requires": { 84 | "ms": "2.1.2" 85 | } 86 | }, 87 | "devtools-protocol": { 88 | "version": "0.0.854822", 89 | "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.854822.tgz", 90 | "integrity": "sha512-xd4D8kHQtB0KtWW0c9xBZD5LVtm9chkMOfs/3Yn01RhT/sFIsVtzTtypfKoFfWBaL+7xCYLxjOLkhwPXaX/Kcg==" 91 | }, 92 | "end-of-stream": { 93 | "version": "1.4.4", 94 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 95 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 96 | "requires": { 97 | "once": "^1.4.0" 98 | } 99 | }, 100 | "extract-zip": { 101 | "version": "2.0.1", 102 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 103 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 104 | "requires": { 105 | "@types/yauzl": "^2.9.1", 106 | "debug": "^4.1.1", 107 | "get-stream": "^5.1.0", 108 | "yauzl": "^2.10.0" 109 | } 110 | }, 111 | "fd-slicer": { 112 | "version": "1.1.0", 113 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 114 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 115 | "requires": { 116 | "pend": "~1.2.0" 117 | } 118 | }, 119 | "find-up": { 120 | "version": "4.1.0", 121 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 122 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 123 | "requires": { 124 | "locate-path": "^5.0.0", 125 | "path-exists": "^4.0.0" 126 | } 127 | }, 128 | "fs-constants": { 129 | "version": "1.0.0", 130 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 131 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 132 | }, 133 | "fs.realpath": { 134 | "version": "1.0.0", 135 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 136 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 137 | }, 138 | "get-stream": { 139 | "version": "5.2.0", 140 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 141 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 142 | "requires": { 143 | "pump": "^3.0.0" 144 | } 145 | }, 146 | "glob": { 147 | "version": "7.1.6", 148 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 149 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 150 | "requires": { 151 | "fs.realpath": "^1.0.0", 152 | "inflight": "^1.0.4", 153 | "inherits": "2", 154 | "minimatch": "^3.0.4", 155 | "once": "^1.3.0", 156 | "path-is-absolute": "^1.0.0" 157 | } 158 | }, 159 | "https-proxy-agent": { 160 | "version": "5.0.0", 161 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 162 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 163 | "requires": { 164 | "agent-base": "6", 165 | "debug": "4" 166 | } 167 | }, 168 | "ieee754": { 169 | "version": "1.2.1", 170 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 171 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 172 | }, 173 | "inflight": { 174 | "version": "1.0.6", 175 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 176 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 177 | "requires": { 178 | "once": "^1.3.0", 179 | "wrappy": "1" 180 | } 181 | }, 182 | "inherits": { 183 | "version": "2.0.4", 184 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 185 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 186 | }, 187 | "locate-path": { 188 | "version": "5.0.0", 189 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 190 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 191 | "requires": { 192 | "p-locate": "^4.1.0" 193 | } 194 | }, 195 | "minimatch": { 196 | "version": "3.0.4", 197 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 198 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 199 | "requires": { 200 | "brace-expansion": "^1.1.7" 201 | } 202 | }, 203 | "mkdirp-classic": { 204 | "version": "0.5.3", 205 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 206 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 207 | }, 208 | "ms": { 209 | "version": "2.1.2", 210 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 211 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 212 | }, 213 | "node-fetch": { 214 | "version": "2.6.1", 215 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 216 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 217 | }, 218 | "once": { 219 | "version": "1.4.0", 220 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 221 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 222 | "requires": { 223 | "wrappy": "1" 224 | } 225 | }, 226 | "p-limit": { 227 | "version": "2.3.0", 228 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 229 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 230 | "requires": { 231 | "p-try": "^2.0.0" 232 | } 233 | }, 234 | "p-locate": { 235 | "version": "4.1.0", 236 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 237 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 238 | "requires": { 239 | "p-limit": "^2.2.0" 240 | } 241 | }, 242 | "p-try": { 243 | "version": "2.2.0", 244 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 245 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 246 | }, 247 | "path-exists": { 248 | "version": "4.0.0", 249 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 250 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 251 | }, 252 | "path-is-absolute": { 253 | "version": "1.0.1", 254 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 255 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 256 | }, 257 | "pend": { 258 | "version": "1.2.0", 259 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 260 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 261 | }, 262 | "pkg-dir": { 263 | "version": "4.2.0", 264 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 265 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 266 | "requires": { 267 | "find-up": "^4.0.0" 268 | } 269 | }, 270 | "progress": { 271 | "version": "2.0.3", 272 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 273 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 274 | }, 275 | "proxy-from-env": { 276 | "version": "1.1.0", 277 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 278 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 279 | }, 280 | "pump": { 281 | "version": "3.0.0", 282 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 283 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 284 | "requires": { 285 | "end-of-stream": "^1.1.0", 286 | "once": "^1.3.1" 287 | } 288 | }, 289 | "puppeteer": { 290 | "version": "8.0.0", 291 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-8.0.0.tgz", 292 | "integrity": "sha512-D0RzSWlepeWkxPPdK3xhTcefj8rjah1791GE82Pdjsri49sy11ci/JQsAO8K2NRukqvwEtcI+ImP5F4ZiMvtIQ==", 293 | "requires": { 294 | "debug": "^4.1.0", 295 | "devtools-protocol": "0.0.854822", 296 | "extract-zip": "^2.0.0", 297 | "https-proxy-agent": "^5.0.0", 298 | "node-fetch": "^2.6.1", 299 | "pkg-dir": "^4.2.0", 300 | "progress": "^2.0.1", 301 | "proxy-from-env": "^1.1.0", 302 | "rimraf": "^3.0.2", 303 | "tar-fs": "^2.0.0", 304 | "unbzip2-stream": "^1.3.3", 305 | "ws": "^7.2.3" 306 | } 307 | }, 308 | "readable-stream": { 309 | "version": "3.6.0", 310 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 311 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 312 | "requires": { 313 | "inherits": "^2.0.3", 314 | "string_decoder": "^1.1.1", 315 | "util-deprecate": "^1.0.1" 316 | } 317 | }, 318 | "rimraf": { 319 | "version": "3.0.2", 320 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 321 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 322 | "requires": { 323 | "glob": "^7.1.3" 324 | } 325 | }, 326 | "safe-buffer": { 327 | "version": "5.2.1", 328 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 329 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 330 | }, 331 | "string_decoder": { 332 | "version": "1.3.0", 333 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 334 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 335 | "requires": { 336 | "safe-buffer": "~5.2.0" 337 | } 338 | }, 339 | "tar-fs": { 340 | "version": "2.1.1", 341 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 342 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 343 | "requires": { 344 | "chownr": "^1.1.1", 345 | "mkdirp-classic": "^0.5.2", 346 | "pump": "^3.0.0", 347 | "tar-stream": "^2.1.4" 348 | } 349 | }, 350 | "tar-stream": { 351 | "version": "2.2.0", 352 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 353 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 354 | "requires": { 355 | "bl": "^4.0.3", 356 | "end-of-stream": "^1.4.1", 357 | "fs-constants": "^1.0.0", 358 | "inherits": "^2.0.3", 359 | "readable-stream": "^3.1.1" 360 | } 361 | }, 362 | "through": { 363 | "version": "2.3.8", 364 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 365 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 366 | }, 367 | "unbzip2-stream": { 368 | "version": "1.4.3", 369 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 370 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 371 | "requires": { 372 | "buffer": "^5.2.1", 373 | "through": "^2.3.8" 374 | } 375 | }, 376 | "util-deprecate": { 377 | "version": "1.0.2", 378 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 379 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 380 | }, 381 | "wrappy": { 382 | "version": "1.0.2", 383 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 384 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 385 | }, 386 | "ws": { 387 | "version": "7.4.4", 388 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", 389 | "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==" 390 | }, 391 | "yauzl": { 392 | "version": "2.10.0", 393 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 394 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 395 | "requires": { 396 | "buffer-crc32": "~0.2.3", 397 | "fd-slicer": "~1.1.0" 398 | } 399 | } 400 | } 401 | } 402 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | const pup = require("puppeteer"); 2 | let {id,pass} = require("./secret"); 3 | let tab; 4 | let dataFile = require("./data"); 5 | 6 | async function main(){ 7 | 8 | let browser = await pup.launch({ 9 | headless : false, 10 | defaultViewport : false, 11 | args : ["--start-maximized"] 12 | }); 13 | 14 | let pages = await browser.pages(); 15 | tab = pages[0]; 16 | await tab.goto("https://internshala.com/"); 17 | await tab.click(".btn.btn-secondary.home_page_login_button") 18 | await tab.type("#modal_email", id); 19 | await tab.type("#modal_password", pass); 20 | await tab.click("#modal_login_submit"); 21 | 22 | await tab.waitForNavigation({waitUntil : "networkidle2"}); 23 | await tab.click(".nav-link.dropdown-toggle.profile_container .is_icon_header.ic-24-filled-down-arrow"); 24 | 25 | let profile_options = await tab.$$(".profile_options a"); 26 | let app_urls = []; 27 | for(let i=0; i<11; i++){ 28 | let url = await tab.evaluate(function(ele){ 29 | return ele.getAttribute("href"); 30 | }, profile_options[i]); 31 | app_urls.push(url); 32 | } 33 | await new Promise(function(resolve,reject){ 34 | return setTimeout(resolve, 2000); 35 | }); 36 | tab.goto("https://internshala.com"+app_urls[1]); 37 | 38 | await tab.waitForSelector("#graduation-tab .ic-16-plus", {visible : true}); 39 | await tab.click("#graduation-tab .ic-16-plus"); 40 | await graduation(dataFile[0]); 41 | 42 | await new Promise(function(resolve,reject){ 43 | return setTimeout(resolve, 1000); 44 | }); 45 | 46 | await tab.waitForSelector(".next-button", {visible : true}); 47 | await tab.click(".next-button"); 48 | 49 | await training(dataFile[0]); 50 | 51 | await new Promise(function(resolve,reject){ 52 | return setTimeout(resolve, 1000); 53 | }); 54 | 55 | await tab.waitForSelector(".next-button", {visible : true}); 56 | await tab.click(".next-button"); 57 | 58 | await tab.waitForSelector(".btn.btn-secondary.skip.skip-button", {visible : true}); 59 | await tab.click(".btn.btn-secondary.skip.skip-button"); 60 | 61 | await workSample(dataFile[0]); 62 | 63 | await new Promise(function(resolve,reject){ 64 | return setTimeout(resolve, 1000); 65 | }); 66 | 67 | await tab.waitForSelector("#save_work_samples", {visible : true}); 68 | await tab.click("#save_work_samples"); 69 | 70 | // await tab.waitForSelector(".resume_download_mobile", {visible : true}); 71 | // await tab.click(".resume_download_mobile"); // if you want to download resume. 72 | 73 | await new Promise(function(resolve,reject){ 74 | return setTimeout(resolve, 1000); 75 | }); 76 | await application(dataFile[0]); 77 | } 78 | 79 | async function graduation(data){ 80 | await tab.waitForSelector("#degree_completion_status_pursuing", {visible : true}); 81 | await tab.click("#degree_completion_status_pursuing"); 82 | 83 | await tab.waitForSelector("#college", {visible : true}); 84 | await tab.type("#college", data["College"]); 85 | 86 | await tab.waitForSelector("#start_year_chosen", {visible : true}); 87 | await tab.click("#start_year_chosen"); 88 | await tab.waitForSelector(".active-result[data-option-array-index='5']", {visible : true}); 89 | await tab.click(".active-result[data-option-array-index='5']"); 90 | 91 | await tab.waitForSelector("#end_year_chosen", {visible : true}); 92 | await tab.click('#end_year_chosen'); 93 | await tab.waitForSelector("#end_year_chosen .active-result[data-option-array-index = '6']", {visible : true}); 94 | await tab.click("#end_year_chosen .active-result[data-option-array-index = '6']"); 95 | 96 | await tab.waitForSelector("#degree", {visible : true}); 97 | await tab.type("#degree", data["Degree"]); 98 | 99 | await new Promise(function(resolve,reject){ 100 | return setTimeout(resolve, 1000); 101 | }); 102 | await tab.waitForSelector("#stream", {visible : true}); 103 | await tab.type("#stream", data["Stream"]); 104 | 105 | await new Promise(function(resolve,reject){ 106 | return setTimeout(resolve, 1000); 107 | }); 108 | await tab.waitForSelector("#performance-college", {visible : true}); 109 | await tab.type("#performance-college", data["Percentage"]); 110 | 111 | await new Promise(function(resolve,reject){ 112 | return setTimeout(resolve, 1000); 113 | }); 114 | 115 | await tab.click("#college-submit"); 116 | 117 | } 118 | 119 | async function training(data){ 120 | await tab.waitForSelector(".experiences-tabs[data-target='#training-modal'] .ic-16-plus", {visible : true}); 121 | await tab.click(".experiences-tabs[data-target='#training-modal'] .ic-16-plus"); 122 | 123 | await tab.waitForSelector("#other_experiences_course", {visible : true}); 124 | await tab.type("#other_experiences_course", data["Training"]); 125 | 126 | await new Promise(function(resolve,reject){ 127 | return setTimeout(resolve, 1000); 128 | }); 129 | 130 | await tab.waitForSelector("#other_experiences_organization", {visible : true}); 131 | await tab.type("#other_experiences_organization", data["Organization"]); 132 | 133 | await new Promise(function(resolve,reject){ 134 | return setTimeout(resolve, 1000); 135 | }); 136 | 137 | await tab.click("#other_experiences_location_type_label"); 138 | 139 | await tab.click("#other_experiences_start_date"); 140 | 141 | await new Promise(function(resolve,reject){ 142 | return setTimeout(resolve, 1000); 143 | }); 144 | 145 | await tab.waitForSelector(".ui-state-default[href='#']", {visible : true}); 146 | let date = await tab.$$(".ui-state-default[href='#']"); 147 | await date[0].click(); 148 | await tab.click("#other_experiences_is_on_going"); 149 | 150 | await tab.waitForSelector("#other_experiences_training_description", {visible : true}); 151 | await tab.type("#other_experiences_training_description", data["description"]); 152 | 153 | await new Promise(function(resolve,reject){ 154 | return setTimeout(resolve, 2000); 155 | }); 156 | 157 | await tab.click("#training-submit"); 158 | 159 | } 160 | 161 | async function workSample(data){ 162 | await tab.waitForSelector("#other_portfolio_link", {visible : true}); 163 | await tab.type("#other_portfolio_link", data["link"]); 164 | } 165 | 166 | async function application(data){ 167 | 168 | await tab.goto("https://internshala.com/the-grand-summer-internship-fair"); 169 | 170 | await tab.waitForSelector(".btn.btn-primary.campaign-btn.view_internship", {visible : true}); 171 | await tab.click(".btn.btn-primary.campaign-btn.view_internship") 172 | 173 | await new Promise(function(resolve,reject){ 174 | return setTimeout(resolve, 2000); 175 | }); 176 | await tab.waitForSelector(".view_detail_button", {visible : true}); 177 | let details = await tab.$$(".view_detail_button"); 178 | let detailUrl = []; 179 | for(let i=0; i<3; i++){ 180 | let url = await tab.evaluate(function(ele){ 181 | return ele.getAttribute("href"); 182 | }, details[i]); 183 | detailUrl.push(url); 184 | } 185 | 186 | for(let i of detailUrl){ 187 | await apply(i, data); 188 | await new Promise(function(resolve,reject){ 189 | return setTimeout(resolve, 1000); 190 | }); 191 | } 192 | 193 | } 194 | 195 | async function apply(url, data){ 196 | await tab.goto("https://internshala.com"+url); 197 | 198 | await tab.waitForSelector(".btn.btn-large", {visible : true}); 199 | await tab.click(".btn.btn-large"); 200 | 201 | await tab.waitForSelector("#application_button", {visible : true}); 202 | await tab.click("#application_button"); 203 | 204 | await tab.waitForSelector(".textarea.form-control", {visible : true}); 205 | let ans = await tab.$$(".textarea.form-control"); 206 | 207 | for(let i=0; i