|
1 | | -const needle = require('needle'); |
2 | 1 | const { Groq } = require('groq-sdk'); |
3 | 2 | const print = require('./lib/print'); |
4 | | -const parseString = require('xml2js').parseString; |
| 3 | +const fetch = (...args) => import('node-fetch').then(({ default: fetch }) => fetch(...args)); |
| 4 | +const { XMLParser } = require('fast-xml-parser'); |
5 | 5 | const ora = require('ora'); |
6 | 6 | const gradient = require('gradient-string'); |
7 | 7 |
|
@@ -32,17 +32,12 @@ module.exports = async (word, options) => { |
32 | 32 | 'http://dict-co.iciba.com/api/dictionary.php?key=D191EBD014295E913574E1EAF8E06666&w='; |
33 | 33 | const spinner = ora('正在请教 iciba...').start(); |
34 | 34 | try { |
35 | | - const response = await needle('get', `${ICIBA_URL}${endcodedWord}`, { parse: false }); |
36 | | - if (response.statusCode === 200) { |
37 | | - const result = await new Promise((resolve, reject) => { |
38 | | - parseString(response.body, (err, res) => { |
39 | | - if (err) reject(err); |
40 | | - else resolve(res); |
41 | | - }); |
42 | | - }); |
43 | | - spinner.stop(); |
44 | | - print.iciba(result.dict, options); |
45 | | - } |
| 35 | + const response = await fetch(`${ICIBA_URL}${endcodedWord}`); |
| 36 | + const xml = await response.text(); |
| 37 | + const parser = new XMLParser(); |
| 38 | + const result = parser.parse(xml); |
| 39 | + spinner.stop(); |
| 40 | + print.iciba(result.dict, options); |
46 | 41 | } catch (error) { |
47 | 42 | spinner.fail('访问 iciba 失败,请检查网络'); |
48 | 43 | } |
|
0 commit comments