UNPKG

quora-automation

Version:

Automate creating question and getting all answers

69 lines 3.76 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const puppeteer_1 = require("puppeteer"); const config_1 = require("./config"); const imgur = require("imgur"); function addQuestion(question, userConfig) { return __awaiter(this, void 0, void 0, function* () { const logger = userConfig.logger || console; const browser = yield puppeteer_1.launch(config_1.launchConfig(userConfig.deploymentType)); const page = yield browser.newPage(); yield page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'); yield page.goto('https://www.quora.com'); try { yield page.type('input[tabindex="1"][name="email"]', userConfig.username); yield page.type('input[tabindex="2"][name="password"]', userConfig.password); yield page.keyboard.press('Tab'); yield page.keyboard.press('Enter'); yield page.waitForNavigation(); yield page.click('a.deny_push_notif-button'); yield page.waitForSelector(`div.AddQuestionPrompt > a > span`); yield page.click(`div.AddQuestionPrompt > a > span`); yield page.waitForSelector(`textarea[placeholder='Start your question with "What", "How", "Why", etc.']`); yield page.type(`textarea[placeholder='Start your question with "What", "How", "Why", etc.']`, question); yield page.click('a[id$="submit"]'); try { yield page.waitForSelector('div.QuestionAddFailed', { visible: true, timeout: 2000 }); const answer = yield page.evaluate(() => document.querySelector('div.QuestionAddFailed').textContent); yield browser.close(); return Promise.resolve(answer.replace('✕', '')); } catch (error) { logger.log(error.message); try { yield page.waitForSelector('div.AskToAnswerHeader'); yield page.click('span.modal_close'); } catch (error) { const imageName = `error-${new Date().getTime()}.png`; yield page.screenshot({ path: imageName }); const fileName = yield imgur.uploadFile(`./${imageName}`); logger.log(`${error.message} Image name ${fileName.data.link}`); } yield browser.close(); return Promise.resolve('Successfully added question'); } } catch (error) { const imageName = `error-${new Date().getTime()}.png`; yield page.screenshot({ path: imageName }); const fileName = yield imgur.uploadFile(`./${imageName}`); logger.log(`${error.message} Image name ${fileName.data.link}`); yield browser.close(); return Promise.reject(error.message || 'Something went wrong'); } }); } exports.addQuestion = addQuestion; //# sourceMappingURL=ask-question.js.map