Node.js로 명령줄 만들기 도구

16697 단어 Node.jscommandtool

자기 소개


저는 HAL 오사카 2차생 순수입니다.
평소에 매일 학교와 아르바이트를 합니다.
행사에 자주 참가하기 때문에 함께 할 일이 있으면 같이 이야기합시다!

만들어진 물건



명령줄에서 다른 언어로 변환할 수 있는 옵션을 만들었습니다.
나는 microsoft의translateapi를 사용했다.

이루어지다


그럼에도 불구하고 @n0bisuke씨의 보도가 기본적으로 표절될 수 있다면 문제없습니다.
Microsoft Translator Text API를 노드로 설정합니다.js부터 사용
function getAccessToken(callback) {
    let body = '';
    let data = {
        'client_id': process.env.MS_TRANSLATE_ID,
        'client_secret': process.env.MS_TRANSLATE_SECRET,
        'scope': 'http://api.microsofttranslator.com',
        'grant_type': 'client_credentials'
    };

    let req = https.request({
        host: 'datamarket.accesscontrol.windows.net',
        path: '/v2/OAuth2-13',
        method: 'POST'
    }, (res) => {
        res.setEncoding('utf8');
        res.on('data', (chunk) => {
            body += chunk;
        }).on('end', () => {
            let resData = JSON.parse(body);
            callback(resData.access_token);
        });
    }).on('error', (err) => {
        console.log(err);
    });
    req.write(qs.stringify(data));
    req.end();
}

function translate(token, text,from,to, callback) {
    let options = 'from='+from+'&to='+to+'&text=' + qs.escape(text) +'&oncomplete=translated';
    let body = '';
    let req = http.request({
        host: 'api.microsofttranslator.com',
        path: '/V2/Ajax.svc/Translate?' + options,
        method: 'GET',
        headers: {
            "Authorization": 'Bearer ' + token
        }
    }, (res) => {
        res.setEncoding('utf8');
        res.on('data', (chunk) => {
            body += chunk;
        }).on('end', () => {
            eval(body);
        });
    }).on('error', (err) => {
        console.log(err);
    });
    req.end();

    function translated(text) {
        callback(text);
    }
}
이런 느낌이죠?
그럼 제가 메인 요리를 할게요.
var text = process.argv[2] //変換するテキスト
var translate_type = process.argv[3] || "ja/en" // どのように変換するか

translate_type = translate_type.split("/");


getAccessToken((token) => {
  translate(token, text,translate_type[0],translate_type[1], (translated) => {
      console.log(translated);
  });
});

아주 적합한 코드지만 이동() 가능

명령하다


그럼명령줄 도구를 사용하려면 명령을 사용해야 합니다.
패키지입니다.제이슨 해봐.
{
  "name": "translate-command",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/konojunya/translate-command.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/konojunya/translate-command/issues"
  },
  "homepage": "https://github.com/konojunya/translate-command#readme"
다들 비슷한 느낌이라고 생각해요package.json(저는npm init -y여기 좀 더 써.
"bin": {
  "translate": "bin/app.js"
}
이 세 줄을 추가하세요!
또한 키의 부분은 명령 자체이기 때문에 충돌을 피하고 쉽게 칠 수 있도록 하세요.
그러면 처리 자체가 적힌 파일을 app.js로 저장합니다.
전체적인 구조를 살펴봅시다.
이번에 한 package.jsonapp.js의 관계는 이렇게 하세요.
translate/
  - package.json
  - bin/
    - app.js
bin/app.js.그리고 translate 계층에서npm install -g.
이렇게 하면 translate라는 지령을 사용할 수 있다.
그리고 자신이 좋아하는 방식으로 번역의 즐거움을 누리세요!
하지만 이번에 사용한 API가 200만 자를 넘지 않는 것은 무료이며 이후에는 유료인 것 같다.
조심하세요.

후기


translate-command
GiitHub 코드를 주고 있습니다.
MS의 API Key만 받아서 환경 변수로 그리면 설치가 적힌 곳에 따라 이동할 수 있습니다!
지령선 도구를 만들어 아름다운 조개 생활을 만들자...

좋은 웹페이지 즐겨찾기