xudaolong / CodeVar

生成可用的代码变量 (CodeVar that return u a better variable from Chinese to English . )
1.13k stars 84 forks source link

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

Open MrBugDou opened 1 year ago

MrBugDou commented 1 year ago

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 '<', \"<!DOCTYPE \"... is not valid JSON in \"http://fanyi.youdao.com/openapi.do\": \n<!DOCTYPE html>\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 '<', \"<!DOCTYPE \"... is not valid JSON in \"http://fanyi.youdao.com/openapi.do\": \n<!DOCTYPE html>\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 commented 1 year ago

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

MrBugDou commented 1 year ago

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

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

xudaolong commented 1 year ago

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

xudaolong commented 1 year ago

迟点我清理一下

MrBugDou commented 1 year ago

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

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

image
xudaolong commented 1 year ago

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

daniellauyu commented 1 year ago

同遇到这个问题

viobert commented 1 year ago

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

A very handy tool. Good luck.

HappyXuan commented 1 year ago

翻译插件无法使用了

image
jsculsp commented 1 year ago

好像有道翻译的 api 挂了

xudaolong commented 1 year ago

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

Nickkkkkkkkk commented 1 year ago

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

MrBugDou commented 1 year ago

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

angelporo commented 1 year ago

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

ArwenFang commented 1 year ago

以下配置建立在你已申请有道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 commented 1 year ago

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

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

Oliverxyj123 commented 1 year ago

试了下,还是报错

liuarui commented 1 year ago

试了下,还是报错

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

friday-ckp commented 1 year ago

以下配置建立在你已申请有道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 commented 1 year ago

以下配置建立在你已申请有道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,请自行查询

跑通了,谢谢大佬!

gooohlan commented 1 year ago

以下配置在您已申请有道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 commented 1 year ago

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

image
daniellauyu commented 1 year ago

以下配置在您已申请有道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 commented 1 year ago

怎么也用不了 也是抱歉

lucasmen9527 commented 1 year ago

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

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

谢谢大佬 已经可以了

daniellauyu commented 1 year ago

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

Liberty-liu commented 1 year ago

以下配置建立在你已申请有道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'
        ]
    }
};