utiller 1.0.419 → 1.0.420

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"exceptioner",{enumerable:!0,get:function(){return _exceptioner.default}}),Object.defineProperty(exports,"pooller",{enumerable:!0,get:function(){return _pooller.default}}),exports.utiller=void 0;var _exceptioner=_interopRequireDefault(require("./exceptioner")),_pooller=_interopRequireDefault(require("./pooller")),_lodash=_interopRequireDefault(require("lodash"));let instance=exports.utiller=void 0;if(void 0===process||_lodash.default.isUndefined(process.version)||_lodash.default.isEmpty(process.version)){const e=require("./utiller/index");exports.utiller=instance=new e.default}else{const e=require("./utiller/nodeutiller");exports.utiller=instance=new e.default}
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"exceptioner",{enumerable:!0,get:function(){return _exceptioner.default}}),Object.defineProperty(exports,"pooller",{enumerable:!0,get:function(){return _pooller.default}}),Object.defineProperty(exports,"spider",{enumerable:!0,get:function(){return _spider.default}}),exports.utiller=void 0;var _exceptioner=_interopRequireDefault(require("./exceptioner")),_pooller=_interopRequireDefault(require("./pooller")),_spider=_interopRequireDefault(require("./spider")),_lodash=_interopRequireDefault(require("lodash"));let instance=exports.utiller=void 0;if(void 0===process||_lodash.default.isUndefined(process.version)||_lodash.default.isEmpty(process.version)){const e=require("./utiller/index");exports.utiller=instance=new e.default}else{const e=require("./utiller/nodeutiller");exports.utiller=instance=new e.default}
@@ -0,0 +1 @@
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty")),_lodash=_interopRequireDefault(require("lodash")),_index=require("../index.js");class Spider{constructor(){(0,_defineProperty2.default)(this,"getFullPage",async({browser:e,type:t="desktop"})=>{const a=await e.newPage(),i=_index.utiller.getRandomValue(1080,1920),r=_index.utiller.getRandomValue(1080,1920);return a.setViewport({width:i,height:r}),a}),(0,_defineProperty2.default)(this,"clickNextPageTilEnd",async({page:e,selector:t=".pagination-container .pagination > *",sign:a="»"})=>{try{const i=await e.$$(t);if(!i||0===i.length)return console.log("⚠️ 找不到頁面按鈕們"),!1;console.log(`📍 找到 ${i.length} 個頁面按鈕`);let r=null;for(const e of[...i].reverse())if(await this.fetchAttributeOfEl(e,await this.isElementTagBy(e,"a")?"":"a","innerText")===a){r=e;break}return r?(console.log("✅ 找到下一頁按鈕"),await r.evaluate(e=>e.disabled||e.classList.contains("disabled"))?(console.log("⚠️ 下一頁按鈕已禁用 (已是最後一頁)"),!1):(console.log("🖱️ 點擊下一頁按鈕..."),await r.click(),await e.waitForNavigation({waitUntil:"networkidle2",timeout:0}).catch(()=>{}),console.log("✅ 成功翻到下一頁"),!0)):(console.log("⚠️ 找不到下一頁按鈕 (»)"),!1)}catch(e){return console.log(`❌ 點擊下一頁出錯: ${e.message}`),!1}}),(0,_defineProperty2.default)(this,"fetchAttributesOfEl",async(e,t,a)=>{let i;if(t&&""!==t.trim()){if(i=await e.$(t),!i)return console.warn(`⚠️ 找不到元素: ${t}`),{}}else i=e;return await i.evaluate((e,t)=>{const a={};for(const[i,r]of Object.entries(t)){const t=void 0!==e[r]?e[r]:e.getAttribute(r);a[i]=null!==t?t:void 0}return a},a)}),(0,_defineProperty2.default)(this,"fetchAttributeOfEl",async(e,t,a)=>{let i;if(t&&""!==t.trim()){if(i=await e.$(t),!i)return void console.warn(`⚠️ 找不到元素: ${t}`)}else i=e;return await i.evaluate((e,t)=>{const a=void 0!==e[t]?e[t]:e.getAttribute(t);return null!==a?a:void 0},a)}),(0,_defineProperty2.default)(this,"isElementTagBy",async(e,t)=>await e.evaluate((e,t)=>e.tagName.toLowerCase()===t.toLowerCase(),t))}async fetchElementsTilPageEnd({page:e,href:t,fetcher:a=async()=>{},selectorOfPagingN:i,signOfPagingN:r="»"}){let n=[];try{do{await _index.utiller.syncDelay(10);const t=await a(e);n=n.concat(t)}while(await this.clickNextPageTilEnd({page:e,selector:i,sign:r}))}catch(e){return console.error(`抓取失敗: ${e.message}`),[]}finally{await e.close()}return n}}var _default=exports.default=Spider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utiller",
3
- "version": "1.0.419",
3
+ "version": "1.0.420",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,7 +11,7 @@
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
13
  "configerer": "^1.0.23",
14
- "utiller": "^1.0.418",
14
+ "utiller": "^1.0.419",
15
15
  "linepayer": "^1.0.15",
16
16
  "databazer": "^1.0.17",
17
17
  "lodash": "^4.17.20",