引言
最近在关注 iPhone 6s Plus 价格,每次去不同国家官网看了价格,然后换算成人民币,有点烦琐,于是写了个 Shell 脚本来做个这个事。
iPhone 不同国家价格获取及转换成人民币
以下是脚本内容:
#!/bin/bash
echo
echo "[1] iPhone 6s 5.5-inch-display-64gb-rose-gold"
echo
read -p "Please choose one iPhone product listed above(enter the number): " Product_ID
echo $Product_ID
if [ $Product_ID -eq 1 ]
then
Product_Model="iphone6s/5.5-inch-display-64gb-rose-gold"
Product_US_URL="http://www.apple.com/us/shop/buy-iphone/${Product_Model}"
Product_HK_URL="http://www.apple.com/hk/shop/buy-iphone/${Product_Model}"
Product_CN_URL="http://www.apple.com/cn/shop/buy-iphone/iphone6s/5.5-%E8%8B%B1%E5%AF%B8%E5%B1%8F%E5%B9%95-64gb-%E7%8E%AB%E7%91%B0%E9%87%91%E8%89%B2"
Product_CN_Search_String="iphone6s/5.5-%E8%8B%B1%E5%AF%B8%E5%B1%8F%E5%B9%95-64gb-%E7%8E%AB%E7%91%B0%E9%87%91%E8%89%B2"
Product_US_Price=`curl -S $Product_US_URL 2>/dev/null | grep --color=auto "${Product_Model}\".*data" -A 9 | grep "$.*$" | uniq | awk -F "$" '{print $2}'`
Product_HK_Price=`curl -S $Product_HK_URL 2>/dev/null | grep --color=auto "${Product_Model}\".*data" -A 9 | grep "$.*$" | uniq | awk -F "$" '{print $2}' | sed "s#,##g"`
Product_CN_Price=`curl -S $Product_CN_URL 2>/dev/null | grep --color=auto "${Product_CN_Search_String}" -A 9 | grep RMB | awk -F " " '{print $2}' | sed "s#,##g"`
USD_CNY_Rate=`curl -S "http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDCNY=x" 2>/dev/null | awk -F "," '{print $2}'`
HKD_CNY_Rate=`curl -S "http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=HKDCNY=x" 2>/dev/null | awk -F "," '{print $2}'`
echo "$Product_Model in US, HK, CN on $(date +%F):"
echo "The US Version in CNY is: `echo "$Product_US_Price * $USD_CNY_Rate" | bc`"
echo "The HK Version in CNY is: `echo "$Product_HK_Price * $HKD_CNY_Rate" | bc`"
echo "The CN Version in CNY is: $Product_CN_Price"
fi
以上只列了一个我关注的 iPhone 型号,脚本逻辑很简单,模拟人工的操作,
首先指定 iPhone 型号的对应的 URL,然后通过 curl 和 grep/awk/sed 等命令获取iPhone 的价格,
再就是获取当日汇率(使用 Yahoo 提供的 API),最后就是换算成人民币输出结果了。
运行结果如下:
[root@Aliyun-BJ-01 test]# sh Apple-Products-Prices-Converter.sh
[1] iPhone 6s 5.5-inch-display-64gb-rose-gold
Please choose one iPhone product listed above(enter the number): 1
1
iphone6s/5.5-inch-display-64gb-rose-gold in US, HK, CN on 2016-01-16:
The US Version in CNY is: 5573.7699
The HK Version in CNY is: 6054.4524
The CN Version in CNY is: 6888
通过 API 接口获取价格信息
上面的方式比较笨,比较高级一点的做法是通过 API 接口获取价格信息。
下面是 iPhone 7 Plus 相关信息的地址,里面包含了价格。
http://www.apple.com/shop/updateSummary?node=home/shop_iphone/family/iphone_7&step=select&product=MN482LL%2FA&cppart=UNLOCKED%2FUS&carrierPolicyType=UNLOCKED