UNPKG

ptt-scr

Version:
179 lines (144 loc) 5.22 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _request = _interopRequireDefault(require("request")); var _getUrlContent = _interopRequireDefault(require("./getUrlContent")); var _cheerio = _interopRequireDefault(require("cheerio")); var _url = require("url"); var _querystring = _interopRequireDefault(require("querystring")); var request = _request.default.defaults(); var google = 'https://www.google.com'; var googleSearch = "".concat(google, "/search"); var site = '+site:ptt.cc'; var itemElector = 'div.g'; var linkSelector = 'h3.r a'; var descSelector = 'div.s span.st'; var nextSelector = 'td.b > a#pnnext'; var getSearchResultHTML = /*#__PURE__*/ function () { var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee(url) { return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return (0, _getUrlContent.default)(request, url.toString()); case 2: return _context.abrupt("return", _context.sent); case 3: case "end": return _context.stop(); } } }, _callee, this); })); return function getSearchResultHTML(_x) { return _ref.apply(this, arguments); }; }(); var getSearchUrl = function getSearchUrl(url, userName) { url = new _url.URL(url); // const start = url.searchParams.get('start') || 0; // console.log(start); url.searchParams.set('q', "".concat(userName).concat(site)); url.searchParams.set('oq', "".concat(userName).concat(site)); url.searchParams.set('ie', 'UTF-8'); url.searchParams.set('lang', 'tw'); url.searchParams.set('tld', 'tw'); url.searchParams.set('sourceid', 'chrome'); // url.searchParams.set('start', start); url.searchParams.set('num', 100); // console.log(url); return url; }; var parseHtml = /*#__PURE__*/ function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee2(html, userName) { var contents, $, _args2 = arguments; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: contents = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : []; $ = _cheerio.default.load(html); // const next = $(nextSelector).attr('href'); // console.log(next); // let nextLink = next && new URL(`${google}${next}`); $(itemElector).each(function (i, ele) { $ = $.load(ele); var link = ''; var linkEle = $(linkSelector); var descEle = $(descSelector); var linkObj = _querystring.default.parse(linkEle.attr('href')); var title = linkEle.text(); var text = descEle.text(); if (linkObj['/url?q']) { link = linkObj['/url?q']; } // console.log(i); // console.log(title); // console.log(link); // console.log(text); contents.push({ title: title, link: link, text: text }); }); // if (nextLink) { // nextLink = getSearchUrl(nextLink, userName); // const nextHtml = await getSearchResultHTML(nextLink); // return await parseHtml(nextHtml, userName, contents); // } return _context2.abrupt("return", contents); case 4: case "end": return _context2.stop(); } } }, _callee2, this); })); return function parseHtml(_x2, _x3) { return _ref2.apply(this, arguments); }; }(); var _default = /*#__PURE__*/ function () { var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee3(userName) { var googleSearchUrl, userGoogleHTML, contents; return _regenerator.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: googleSearchUrl = getSearchUrl(new _url.URL(googleSearch), userName); _context3.next = 3; return getSearchResultHTML(googleSearchUrl); case 3: userGoogleHTML = _context3.sent; _context3.next = 6; return parseHtml(userGoogleHTML, userName); case 6: contents = _context3.sent; return _context3.abrupt("return", contents); case 8: case "end": return _context3.stop(); } } }, _callee3, this); })); return function (_x4) { return _ref3.apply(this, arguments); }; }(); exports.default = _default;