USD2CNY

Table of Contents

最开始的起因是看到 1 USD 兑换的 CNY 越来越多导致我要给 vultr 交的钱越来越多,因此比较关注汇率。

接着就是 Google,所以想干脆整一个命令行工具得了。

That is how the project comes.

项目地址:https://github.com/intMojIBakE/USD2CNY

0:在 IDEA 上做完项目

至少能在 IDEA 上跑起来吧(

可以说是有手就行。

新建空项目,加 Maven,依赖只需要 Jsoup。

然后是 main class,指定数据源 URL,连上以后用正则把数据拿出来,再输出就行了。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class USD2CNY {
    public static void main(String[] args) {
        String url = "https://www.xe.com/currencyconverter/convert/?Amount=1&From=USD&To=CNY";
        String UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0";
        Document document = null;
        try {
            document = Jsoup.connect(url)
                    .userAgent(UA)
                    .get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        assert document != null;
        String body = document.body().toString();
        String crop1 = "result__ConvertedText";
        String crop2 = "result__Repulsor-sc";
        body = body.substring(body.indexOf(crop1) + crop1.length(), body.indexOf(crop2) - crop2.length());
//        System.out.println("^" + body + "$");
        String reg = ">.+<s";
        Pattern pattern = Pattern.compile(reg);
        Matcher matcher = pattern.matcher(body);
        BigDecimal rate = null;
        if (matcher.find()) {
            String str = matcher.group();
            str = str.substring(1, str.indexOf("<"));
            rate = new BigDecimal(str);
        }
        if (rate != null) {
            System.out.println("1 USD = " + rate + "CNY");
        }
    }
}

几乎就是个单文件程序。(没错,就是这么简单)

1:jar 包以及运行脚本

打 jar 包这一趴,甚至不需要 maven 的 package,直接 build 就行了。

当然 build 前是要引入 Jsoup 路径。

jar 包的运行脚本也很简单,主体就一句java -jar的命令就行了。

2:打包 deb

离最终目标:打成 deb 包实现命令行直接运行只差一步。

参考的文章:https://blog.csdn.net/gatieme/article/details/52829907


我比较懒,就直接在项目目录上建立deb目录作为打包目录。

deb目录下,必须有一个DEBIAN目录,下有control,是一个文本文件,存储该包的相关信息。这里参考 debian 官方写的文档差不多就行了。

Package: USD2CNY
Version: 1.0
Priority: optional
Suggests:
Architecture: amd64
Installed-Size: 4096
Maintainer: Shinohara<[email protected]>
Provides: iCooper.cc
Description: A java CLI program to get the real time exchange rate between USD and CNY.

和 DEBIAN 的同级目录是你希望包内软件的架构。

在这个 demo 中,只需要把 jar 包和运行脚本放在 opt 目录,以及在 bin 目录下的一个软链接。

文件树目录如下:

.
├── deb
│   ├── DEBIAN
│   │   └── control
│   ├── opt
│   │   └── usd2cny
│   │       ├── launch.sh
│   │       └── USD2CNY.jar
│   └── usr
│       └── bin
│           └── usd2cny -> ../../opt/usd2cny/launch.sh

最后在 deb 目录下,运行dpkg-deb -b deb usd2cny.deb,即可生成 deb 包。

安装即可。

Share