+2
-2
@@ -5,3 +5,3 @@ const baidu = require('baidu-search') | ||
| async function baiduFilter(keyword, page, timewait){ | ||
| /* 基础策略:把description空的放行 | ||
| /* 基础策略:把description空的过滤 | ||
| * 为了提速,如果贪心策略,搞乱分页,需要保存进全局破坏封装性且拖慢首屏速度 | ||
@@ -41,3 +41,3 @@ * 现在决定第一页直接过滤无description的,后面保持 | ||
| return new Promise( (resolve, reject) => { | ||
| baidu( keyword , page ,( (err,res)=>{ | ||
| baidu( encodeURI(keyword) , page ,( (err,res)=>{ | ||
| resolve( res.links ) | ||
@@ -44,0 +44,0 @@ })) |
+1
-1
| { | ||
| "name": "baidur", | ||
| "version": "0.5.1", | ||
| "version": "0.6.0", | ||
| "description": "baidur 是一个在命令行搜百度的工具", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
+9
-6
@@ -28,2 +28,3 @@ baidur 是一个命令行工具,从命令行获取百度结果。因为用惯了ddgr跟googler,找了一圈没有发现baidur的类似东西,毕竟前两个必须fq伤不起,于是决定写(chao)一个,同时改进一下现在的终端搜索的不爽之处 | ||
| ``` | ||
| 这将启动一个repl交互解释器,以后可以直接在解释器里输入关键词,回车搜索 | ||
@@ -38,2 +39,3 @@ 如要使用 - 语法,引号是必要的。否则bash将认为是一个选项参数而导致错误 | ||
| 程序将在home文件夹(linux、mac 一般为 /Users/username , windows 一般为 C:\users\username) 建立.baidur 文件,用于保存搜索历史与配置,可以直接进去修改配置。也可以在命令行修改部分配置。 | ||
@@ -66,6 +68,4 @@ # Installation 安装 | ||
| # 开发进度 | ||
| known issue | ||
| repl在不同终端上表现不同, 有的甚至不能接收中文 | ||
| o: done a: alpha - thoughts // cancel & comment<br /> | ||
| o: done a: alpha b: beta - thoughts // cancel & comment<br /> | ||
| 显示 | ||
@@ -97,7 +97,8 @@ o- 快速、干净、自定义色彩<br /> | ||
| -- 仅记录搜索词<br /> | ||
| -- 上下方向键查询历史, 字节支持 // 得自己动手 困难<br /> | ||
| b- 上下方向键查询历史, 字节支持 // 得自己动手 困难 // 似乎发布后直接支持了<br /> | ||
| -- 默认config的写入<br /> | ||
| -- repl: save current config<br /> | ||
| o- repl: save current config<br /> | ||
| -- repl: show current config<br /> | ||
| -- repl 加入filter<br /> | ||
| -- repl key mapping<br /> | ||
@@ -122,4 +123,6 @@ 自定义结果页数// 需要拼接结果; 弄一个队列 | ||
| # known issue 已知问题 | ||
| 偶尔会显示 MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 pipe listeners added. Use emitter.setMaxListeners() to increase limit, 原因暂时不明 | ||
| # License | ||
| # License 协议 | ||
@@ -126,0 +129,0 @@ GPL 3.0 |
+69
-9
@@ -9,2 +9,4 @@ #! /usr/bin/env node | ||
| const repl = require('repl') | ||
| const osHome = require('os').homedir() | ||
| const fs = require('fs-extra') | ||
@@ -21,3 +23,3 @@ const {textByteLength, textColoredIgnorePart, keywordColor, combineResultToPrint} = require('./util.js') | ||
| const emitter = new EventEmitter(); | ||
| emitter.setMaxListeners(60) | ||
| emitter.setMaxListeners(200) | ||
@@ -67,3 +69,3 @@ | ||
| } | ||
| defaultHistoryConfig: { | ||
| historyConfig: { | ||
| historySize, | ||
@@ -86,2 +88,6 @@ searchTextOnly, | ||
| const homedir = osHome + '/.baidur' | ||
| const configPath = homedir + '/config' | ||
| fs.ensureDirSync(homedir) | ||
| program | ||
@@ -104,3 +110,3 @@ .version('0.0.1') | ||
| showCurrentWord: true, | ||
| showParseError: true, | ||
| showParseError: false, | ||
| } | ||
@@ -114,2 +120,35 @@ } | ||
| if( fs.pathExistsSync(configPath ) ){ | ||
| defaultViewMode = fs.readJsonSync(configPath).viewMode | ||
| defaultHistoryConfig = fs.readJsonSync(configPath).historyConfig | ||
| } else { | ||
| saveConfig({ | ||
| viewMode: defaultViewMode, | ||
| historyConfig: defaultHistoryConfig | ||
| }) | ||
| let configHelpPath = configPath + '_help' | ||
| fs.outputFileSync(configHelpPath, ` | ||
| viewMode:{ | ||
| enableQueueNextSearch: true, // 预加载队列,在快速切换时会加速,同时可启用filter,但不稳定。 | ||
| urlExpansion: false, // 结果标题下显示url | ||
| useFilter: false, // 开启过滤自定义站点 功能暂未实现 | ||
| saveHistory: false, // 保存搜索历史 | ||
| showReverse: true, // 搜索结果反向显示 | ||
| parseTimeout: 1000, // 重定向解析超时时间, 设为100 将会不解析大多数链接。 | ||
| consoleMode: { | ||
| showFilter, // 显示被过滤的站点标题 | ||
| showTime, // 显示搜索时间 | ||
| showCurrentWord, // 显示当前搜索词 | ||
| showParseError, // 显示重定向解析失败的条目 | ||
| } | ||
| } | ||
| historyConfig: { | ||
| historySize, // 保存历史的条数 | ||
| searchTextOnly, // 历史只保存搜索词,功能暂未实现 | ||
| compress, // 不删除,只在达到上限后压缩历史,功能暂未实现 | ||
| } | ||
| `) | ||
| } | ||
| let currentSearch = await baiduFilter(searchText, 1, defaultViewMode.parseTimeout) | ||
@@ -124,2 +163,3 @@ resultPrint(currentSearch, defaultViewMode) | ||
| viewMode: defaultViewMode, | ||
| historyConfig: defaultHistoryConfig, | ||
@@ -140,3 +180,3 @@ resultQueue: [], | ||
| if( shellContext.context.viewMode.saveHistory ) { | ||
| let historyFile = require('os').homedir() + '/.baidu_history' | ||
| let historyFile = homedir + '/baidu_history' | ||
@@ -154,2 +194,9 @@ let historyInitialString = searchText + '\n-- ' + dateNowString() + '\n' | ||
| function saveConfig (object) { | ||
| fs.outputJsonSync(configPath, { | ||
| viewMode: object.viewMode, | ||
| historyConfig: object.historyConfig | ||
| },{spaces:' '}) | ||
| } | ||
| async function changePage(context, page){ | ||
@@ -226,3 +273,10 @@ let {currentSearch, nextSearch , viewMode, resultQueue} = context; | ||
| case 'r': context.viewMode.showReverse = !context.viewMode.showReverse; console.log('切换反向显示');break; | ||
| case 's': console.log('functionality not accomplished'); break; | ||
| case 's':{ | ||
| saveConfig({ | ||
| viewMode: context.viewMode, | ||
| historyConfig: context.historyConfig | ||
| }) | ||
| console.log('保存配置成功') | ||
| break; | ||
| } | ||
| case '?': displayHelp(); break; | ||
@@ -255,6 +309,7 @@ case 'h': displayHelp(); break; | ||
| o [index|range ...] 与直接输入数字效果相同,都将打开页面。用于兼容习惯 (o - open) | ||
| c index 复制结果链接, c - copy | ||
| q, ^D 退出 q - quit | ||
| x 切换显示,切换在标题下显示url与否。x - url expansion, | ||
| r 切换反向显示 r - reverse | ||
| c index 复制结果链接, c - copy | ||
| q, ^D 退出 q - quit | ||
| w 保存当前配置(x,r等控制的显示配置保存)。w - write | ||
| ?, h 显示帮助 h - help | ||
@@ -272,3 +327,5 @@ .help 显示node.repl默认帮助 | ||
| if(errorLogArray.length >= 1) { | ||
| let {consoleMode} = viewMode | ||
| console.log(viewMode) | ||
| if(errorLogArray.length >= 1 && consoleMode.showParseError) { | ||
| errorLogArray.map(item => { | ||
@@ -278,3 +335,3 @@ console.log(item) | ||
| } | ||
| if(filteredArray.length >= 1){ | ||
| if(filteredArray.length >= 1 && consoleMode.showFilter){ | ||
| console.log('过滤了:') | ||
@@ -296,5 +353,8 @@ filteredArray.map(item => { | ||
| if(consoleMode.showTime) | ||
| console.log(`搜索用时: ${searchTime/1000}秒`) | ||
| if(consoleMode.showCurrentWord) | ||
| console.log(`当前搜索:${keyword}`) | ||
| } | ||
37628
7.69%860
6.83%129
2.38%