Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ParseError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON in "http://fanyi.youdao.com/openapi.do": <!DOCTYPE html> #35

Open
MrBugDou opened this issue May 5, 2023 · 27 comments

Comments

@MrBugDou
Copy link

MrBugDou commented May 5, 2023

CodeVar undefined
Alfred 5.0.4
darwin arm64 22.4.0

image

image

[11:58:58.213] CodeVar[Script Filter] Queuing argument '你好'
[11:58:58.421] CodeVar[Script Filter] Script with argv '(null)' finished
[11:58:58.426] ERROR: CodeVar[Script Filter] Code 1: {
"items": [
{
"title": "ParseError: Unexpected token '<', "\n\n\n <meta http-equiv="Content-Type" content="te...\n at /Users/doudou/Library/Application Support/Alfred/Alfred.alfredpreferences/workflows/user.workflow.1239E880-0DA5-4507-9E68-9DD6FCD250E2/node_modules/got/index.js:118:14\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)",
"subtitle": "Press ⌘L to see the full error and ⌘C to copy it.",
"valid": false,
"text": {
"copy": "\nParseError: Unexpected token '<', \"<!DOCTYPE \"... is not valid JSON in \"http://fanyi.youdao.com/openapi.do\": \n<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv=\"Content-Type\" content=\"te...\n at /Users/doudou/Library/Application Support/Alfred/Alfred.alfredpreferences/workflows/user.workflow.1239E880-0DA5-4507-9E68-9DD6FCD250E2/node_modules/got/index.js:118:14\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n\n\n-\nCodeVar undefined\nAlfred 5.0.4\ndarwin arm64 22.4.0",
"largetype": "ParseError: Unexpected token '<', "\n\n\n <meta http-equiv="Content-Type" content="te...\n at /Users/doudou/Library/Application Support/Alfred/Alfred.alfredpreferences/workflows/user.workflow.1239E880-0DA5-4507-9E68-9DD6FCD250E2/node_modules/got/index.js:118:14\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
},
"icon": {
"path": "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/AlertStopIcon.icns"
}
}
]
}

@asuratu
Copy link

asuratu commented May 22, 2023

查了下应该是代码里面的有道账号都是失效了

@MrBugDou
Copy link
Author

MrBugDou commented May 22, 2023

查了下应该是代码里面的有道账号都是失效了

大佬会改么、我都看不懂这玩意怎么写的,我看有些翻译的插件可以配自己的有道key进去

@xudaolong
Copy link
Owner

@MrBugDou https://github.com/xudaolong/CodeVar/blob/master/src/config.js#L7 你查找文件 然后改下这里 或者自己去申请一个就行了哈

@xudaolong
Copy link
Owner

迟点我清理一下

@MrBugDou
Copy link
Author

@MrBugDou https://github.com/xudaolong/CodeVar/blob/master/src/config.js#L7 你查找文件 然后改下这里 或者自己去申请一个就行了哈

@xudaolong 这个key是什么呀,我看有道的是这样的一个key,一个secret

image

@xudaolong
Copy link
Owner

@MrBugDou http://fanyi.youdao.com/openapi?path=data-mode 很早以前的了,现在申请不了,要改造一波了

@daniellauyu
Copy link

同遇到这个问题

@viobert
Copy link

viobert commented May 31, 2023

@MrBugDou http://fanyi.youdao.com/openapi?path=data-mode 很早以前的了,现在申请不了,要改造一波了

A very handy tool. Good luck.

@HappyXuan
Copy link

翻译插件无法使用了
image

@jsculsp
Copy link

jsculsp commented Jul 18, 2023

好像有道翻译的 api 挂了

@xudaolong
Copy link
Owner

你们有空可以提个mr,最近比较忙

@Nickkkkkkkkk
Copy link

换新的api了,但返回的结构没怎么变,请求的地方要改下,新版api要收费了不过有体验金。我不太会js 有人有空不
https://ai.youdao.com/DOCSIRMA/html/trans/api/wbfy/index.html

@MrBugDou
Copy link
Author

MrBugDou commented Jul 19, 2023

我不会写这种项目,我看到有个翻译的workflow,支持多平台,用户自己设置API的方式使用,我觉得可以改成这样,但是我不知道怎么写,有没有大佬愿意参照这个改改的:
https://github.com/wensonsmith/YoudaoTranslator

@angelporo
Copy link

是的,有道更换了api并且添加一些可以的内容,需要申请自己的key,我本地可以使用了,随后给提交一个PR

@ArwenFang
Copy link

ArwenFang commented Jul 20, 2023

以下配置建立在你已申请有道key,请自行查询相关申请流程:

第一步:打开codevar项目
image
第二步:打开config.js文件
image
第三步: 把以下代码cv到该文件中,并覆盖原本代码
`

'use strict';

const alfy = require('alfy');
const sample = require('lodash.sample');
const CryptoJS = require('crypto-js');

function truncate(q){
var len = q.length;
if(len<=20) return q;
return q.substring(0, 10) + len + q.substring(len-10, len);
}

module.exports = {
youDaoApi: 'https://openapi.youdao.com/api',
getParams: function () {
var appKey = ''; // 你的应用ID
var key = ''; // 你的应用秘钥

    var salt = (new Date).getTime();
    var curtime = Math.round(new Date().getTime()/1000);
    var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
    var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);

    return {
        query: {
          q: alfy.input,
          appKey,
          salt,
          from: 'zh-CHS',
          to: 'en',
          sign: sign,
          signType: "v3",
          curtime,
        }
    }
},
filter: {
    prep: [
        'and', 'or', 'the', 'a', 'at', 'of'
    ],
    prefix: [],
    suffix: [
        'ing', 'ed', 'ly'
    ],
    verb: [
        'was'
    ]
}

};

`

第四步: 需要注意的是,appKey(应用ID)、key(应用秘钥)分别是你在有道需要申请的,然后分别配置其中

第五步: 需要你安装crypto-js,在当前项目目录下安装跟package.json文件同级别目录,如果安装下载crypto-js,请自行查询

@liuarui
Copy link

liuarui commented Jul 20, 2023

我fork了一份,已经修复了,可以直接用这个版本
https://github.com/liuarui/CodeVar/releases/tag/v1.0.0
配置方式参考readme

我不会写这种项目,我看到有个翻译的workflow,支持多平台,用户自己设置API的方式使用,我觉得可以改成这样,但是我不知道怎么写,有没有大佬愿意参照这个改改的: https://github.com/wensonsmith/YoudaoTranslator

@Oliverxyj123
Copy link

试了下,还是报错

@liuarui
Copy link

liuarui commented Jul 21, 2023

试了下,还是报错

抱歉,昨天上传的是xudaolong的安装包,我刚更新了安装包,再试试,配置方式可以参考我仓库里的readme

@friday-ckp
Copy link

以下配置建立在你已申请有道key,请自行查询相关申请流程:

第一步:打开codevar项目 image 第二步:打开config.js文件 image 第三步: 把以下代码cv到该文件中,并覆盖原本代码 `

'use strict';

const alfy = require('alfy'); const sample = require('lodash.sample'); const CryptoJS = require('crypto-js');

function truncate(q){ var len = q.length; if(len<=20) return q; return q.substring(0, 10) + len + q.substring(len-10, len); }

module.exports = { youDaoApi: 'https://openapi.youdao.com/api', getParams: function () { var appKey = ''; // 你的应用ID var key = ''; // 你的应用秘钥

    var salt = (new Date).getTime();
    var curtime = Math.round(new Date().getTime()/1000);
    var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
    var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);

    return {
        query: {
          q: alfy.input,
          appKey,
          salt,
          from: 'zh-CHS',
          to: 'en',
          sign: sign,
          signType: "v3",
          curtime,
        }
    }
},
filter: {
    prep: [
        'and', 'or', 'the', 'a', 'at', 'of'
    ],
    prefix: [],
    suffix: [
        'ing', 'ed', 'ly'
    ],
    verb: [
        'was'
    ]
}

};

`

第四步: 需要注意的是,appKey(应用ID)、key(应用秘钥)分别是你在有道需要申请的,然后分别配置其中

第五步: 需要你安装crypto-js,在当前项目目录下安装跟package.json文件同级别目录,如果安装下载crypto-js,请自行查询

大佬 牛逼

@HOTT-X
Copy link

HOTT-X commented Aug 4, 2023

以下配置建立在你已申请有道key,请自行查询相关申请流程:

第一步:打开codevar项目 image 第二步:打开config.js文件 image 第三步: 把以下代码cv到该文件中,并覆盖原本代码 `

'use strict';

const alfy = require('alfy'); const sample = require('lodash.sample'); const CryptoJS = require('crypto-js');

function truncate(q){ var len = q.length; if(len<=20) return q; return q.substring(0, 10) + len + q.substring(len-10, len); }

module.exports = { youDaoApi: 'https://openapi.youdao.com/api', getParams: function () { var appKey = ''; // 你的应用ID var key = ''; // 你的应用秘钥

    var salt = (new Date).getTime();
    var curtime = Math.round(new Date().getTime()/1000);
    var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
    var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);

    return {
        query: {
          q: alfy.input,
          appKey,
          salt,
          from: 'zh-CHS',
          to: 'en',
          sign: sign,
          signType: "v3",
          curtime,
        }
    }
},
filter: {
    prep: [
        'and', 'or', 'the', 'a', 'at', 'of'
    ],
    prefix: [],
    suffix: [
        'ing', 'ed', 'ly'
    ],
    verb: [
        'was'
    ]
}

};

`

第四步: 需要注意的是,appKey(应用ID)、key(应用秘钥)分别是你在有道需要申请的,然后分别配置其中

第五步: 需要你安装crypto-js,在当前项目目录下安装跟package.json文件同级别目录,如果安装下载crypto-js,请自行查询

跑通了,谢谢大佬!

@gooolan
Copy link

gooolan commented Aug 8, 2023

以下配置在您已申请有道key,请自行查询相关申请流程:

第一步:打开codevar项目 第二步:打开config.js文件 第三步: 把以下代码cv到该文件中,并覆盖不知代码 ` 图像 图像

'使用严格';

const alfy = require('alfy'); const 样本 = require('lodash.sample'); const CryptoJS = require('crypto-js');

函数 truncate(q){ var len = q.length; if(len<=20) 返回 q; 返回 q.substring(0, 10) + len + q.substring(len-10, len); }

module.exports = { youDaoApi: ' https://openapi.youdao.com/api ', getParams: function () { var appKey = ''; // 你的应用程序 ID var key = ''; // 你的应用秘钥

    var salt = (new Date).getTime();
    var curtime = Math.round(new Date().getTime()/1000);
    var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
    var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);

    return {
        query: {
          q: alfy.input,
          appKey,
          salt,
          from: 'zh-CHS',
          to: 'en',
          sign: sign,
          signType: "v3",
          curtime,
        }
    }
},
filter: {
    prep: [
        'and', 'or', 'the', 'a', 'at', 'of'
    ],
    prefix: [],
    suffix: [
        'ing', 'ed', 'ly'
    ],
    verb: [
        'was'
    ]
}

};

`

第四步:需要注意的是,appKey(应用ID)、key(应用秘钥)分别是你在有道需要申请的,然后分别配置其中

第五步: 需要安装crypto-js,在当前项目目录下安装跟package.json文件同级别目录,如果安装下载crypto-js,请自行查询

强迫症受不了,格式化下代码

'use strict';

const alfy = require('alfy');
const sample = require('lodash.sample');
const CryptoJS = require('crypto-js');

function truncate(q){
    var len = q.length;
    if(len<=20) return q;
    return q.substring(0, 10) + len + q.substring(len-10, len);
}

module.exports = {
    youDaoApi: 'https://openapi.youdao.com/api',
    getParams: function () {
        var appKey = ''; // 你的应用ID
        var key = ''; // 你的应用秘钥
        var salt = (new Date).getTime();
        var curtime = Math.round(new Date().getTime() / 1000);
        var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
        var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);

        return {
            query: {
                q: alfy.input,
                appKey,
                salt,
                from: 'zh-CHS',
                to: 'en',
                sign: sign,
                signType: "v3",
                curtime,
            }
        }
    },
    filter: {
        prep: [
            'and', 'or', 'the', 'a', 'at', 'of'
        ],
        prefix: [],
        suffix: [
            'ing', 'ed', 'ly'
        ],
        verb: [
            'was'
        ]
    }
};

@daniellauyu
Copy link

@liuarui 大佬,用了你的包,现在还是报错是啥问题啊,有道的key没问题,在有道翻译那个workflow中用是正常的
image

@daniellauyu
Copy link

以下配置在您已申请有道key,请自行查询相关申请流程:
第一步:打开codevar项目 第二步:打开config.js文件 第三步: 把以下代码cv到该文件中,并覆盖不知代码 ` 图像 图像
'使用严格';
const alfy = require('alfy'); const 样本 = require('lodash.sample'); const CryptoJS = require('crypto-js');
函数 truncate(q){ var len = q.length; if(len<=20) 返回 q; 返回 q.substring(0, 10) + len + q.substring(len-10, len); }
module.exports = { youDaoApi: ' https://openapi.youdao.com/api ', getParams: function () { var appKey = ''; // 你的应用程序 ID var key = ''; // 你的应用秘钥

    var salt = (new Date).getTime();
    var curtime = Math.round(new Date().getTime()/1000);
    var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
    var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);

    return {
        query: {
          q: alfy.input,
          appKey,
          salt,
          from: 'zh-CHS',
          to: 'en',
          sign: sign,
          signType: "v3",
          curtime,
        }
    }
},
filter: {
    prep: [
        'and', 'or', 'the', 'a', 'at', 'of'
    ],
    prefix: [],
    suffix: [
        'ing', 'ed', 'ly'
    ],
    verb: [
        'was'
    ]
}

};
`
第四步:需要注意的是,appKey(应用ID)、key(应用秘钥)分别是你在有道需要申请的,然后分别配置其中
第五步: 需要安装crypto-js,在当前项目目录下安装跟package.json文件同级别目录,如果安装下载crypto-js,请自行查询

强迫症受不了,格式化下代码

'use strict';

const alfy = require('alfy');
const sample = require('lodash.sample');
const CryptoJS = require('crypto-js');

function truncate(q){
    var len = q.length;
    if(len<=20) return q;
    return q.substring(0, 10) + len + q.substring(len-10, len);
}

module.exports = {
    youDaoApi: 'https://openapi.youdao.com/api',
    getParams: function () {
        var appKey = ''; // 你的应用ID
        var key = ''; // 你的应用秘钥
        var salt = (new Date).getTime();
        var curtime = Math.round(new Date().getTime() / 1000);
        var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
        var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);

        return {
            query: {
                q: alfy.input,
                appKey,
                salt,
                from: 'zh-CHS',
                to: 'en',
                sign: sign,
                signType: "v3",
                curtime,
            }
        }
    },
    filter: {
        prep: [
            'and', 'or', 'the', 'a', 'at', 'of'
        ],
        prefix: [],
        suffix: [
            'ing', 'ed', 'ly'
        ],
        verb: [
            'was'
        ]
    }
};

大佬,我按你这个试了,依赖也都安装了,但还是出现抱歉(无相关记录),系统版本13.3.1
image

@1174846885
Copy link

怎么也用不了 也是抱歉

@lucasmen9527
Copy link

lucasmen9527 commented Aug 30, 2023

我fork了一份,已经修复了,可以直接用这个版本 liuarui/CodeVar@v1.0.0 (release) 配置方式参考readme

我不会写这种项目,我看到有个翻译的workflow,支持多平台,用户自己设置API的方式使用,我觉得可以改成这样,但是我不知道怎么写,有没有大佬愿意参照这个改改的: wensonsmith/YoudaoTranslator

谢谢大佬 已经可以了

@daniellauyu
Copy link

我用python写了一个:https://github.com/daniellauyu/pyCodevar
熟悉python的可以用我这个试试

@Liberty-liu
Copy link

Liberty-liu commented Sep 6, 2023

以下配置建立在你已申请有道key,请自行查询相关申请流程:

第一步:打开codevar项目 image 第二步:打开config.js文件 image 第三步: 把以下代码cv到该文件中,并覆盖原本代码 `

'use strict';

const alfy = require('alfy'); const sample = require('lodash.sample'); const CryptoJS = require('crypto-js');

function truncate(q){ var len = q.length; if(len<=20) return q; return q.substring(0, 10) + len + q.substring(len-10, len); }

module.exports = { youDaoApi: 'https://openapi.youdao.com/api', getParams: function () { var appKey = ''; // 你的应用ID var key = ''; // 你的应用秘钥

    var salt = (new Date).getTime();
    var curtime = Math.round(new Date().getTime()/1000);
    var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
    var sign = CryptoJS.SHA256(str1).toString(CryptoJS.enc.Hex);

    return {
        query: {
          q: alfy.input,
          appKey,
          salt,
          from: 'zh-CHS',
          to: 'en',
          sign: sign,
          signType: "v3",
          curtime,
        }
    }
},
filter: {
    prep: [
        'and', 'or', 'the', 'a', 'at', 'of'
    ],
    prefix: [],
    suffix: [
        'ing', 'ed', 'ly'
    ],
    verb: [
        'was'
    ]
}

};

`

第四步: 需要注意的是,appKey(应用ID)、key(应用秘钥)分别是你在有道需要申请的,然后分别配置其中

第五步: 需要你安装crypto-js,在当前项目目录下安装跟package.json文件同级别目录,如果安装下载crypto-js,请自行查询

感谢,在你这个基础上我稍作修改了一些,无需安装crypto-js,改成用node自己的crypto来实现SHA-256

'use strict';

const alfy = require('alfy');
const sample = require('lodash.sample');
const crypto = require('crypto');
function truncate(q){
    var len = q.length;
    if(len<=20) return q;
    return q.substring(0, 10) + len + q.substring(len-10, len);
}

module.exports = {
    youDaoApi: 'https://openapi.youdao.com/api',
    getParams: function () {
        var appKey = ''; // 你的应用ID
        var key = ''; // 你的应用秘钥
        var salt = (new Date).getTime();
        var curtime = Math.round(new Date().getTime() / 1000);
        var str1 = appKey + truncate(alfy.input) + salt + curtime + key;
        const hash = crypto.createHash('sha256');
        hash.update(str1);

        return {
            query: {
                q: alfy.input,
                appKey,
                salt,
                from: 'zh-CHS',
                to: 'en',
                sign: hash.digest('hex'),
                signType: "v3",
                curtime,
            }
        }
    },
    filter: {
        prep: [
            'and', 'or', 'the', 'a', 'at', 'of'
        ],
        prefix: [],
        suffix: [
            'ing', 'ed', 'ly'
        ],
        verb: [
            'was'
        ]
    }
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests