Edited at
JuliaDay 10

AMAZONの購入したい本を秘書さんにリストで送る

More than 1 year has passed since last update.

所属する研究室で、研究に必要な書籍を購入する時に、一度秘書さんにリストを送って発注をかけてもらうのだが、本の著者名、タイトル、出版社、URLをまとめておかないといけないので、冊数が増えるとこの作業が地味にめんどくさかった。

そこで(?)、最近話題の、LLVMベースのJITコンパイラでC並みの速度で計算ができる、Julia言語を無駄に使い、この作業を半自動化してみた。

正直Juliaを使う理由は特に無いが、練習がてら触ってみた。

まず最初に買いたい本のURLだけをコピペした。


url.txt

https://www.amazon.co.jp/dp/4274219992/

https://www.amazon.co.jp/dp/4274219348/
https://www.amazon.co.jp/dp/4785315709/
https://www.amazon.co.jp/dp/4621088173/

その後にurl.txtと同じディレクトリで、以下のプログラムを作成して、

julia AmazonOrder.jl

と打った。


AmazonOrder.jl

# Pkg.add("Requests")

# Pkg.add("Gumbo")

using Requests
using Gumbo

# 重複を除く
lines = open("url.txt", "r") do fpd
readlines(fpd)
end

lines = unique(lines)

open("new_url.txt", "w") do fpn
write(fpn, lines)
end

open("ToHoge.txt", "w") do fp1

# 定型文
write(fp1, "Hogeさん\n\n")
NoBook = length(readdlm("new_url.txt"))
write(fp1, "お疲れ様です、@antiplasticsです。\n")
write(fp1, "以下の" * string(NoBook) * "冊の書籍の購入を公費でお願いします。\n")
write(fp1, "全て揃ってからの受け取りで結構です。\n")
write(fp1, "受け取りは何時でもかまいません。\n")
write(fp1, "よろしくお願いします。\n\n")
write(fp1, "@antiplastics\n\n\n")

# Web scraping
counter1 = 0
open("new_url.txt", "r") do fp2
for line in eachline(fp2)
request = get(rstrip(line))
doc = parsehtml(Requests.text(request))

counter1 = counter1 + 1
print(string(counter1) * " / " * string(NoBook) * "\n")

write(fp1, string(counter1) * ".\n")

res = string(doc.root[1][19])
res = replace(res, "<meta name=\"keywords\"content=", "")
res = replace(res, "></meta>", "")
res = replace(res, "\"", "")
res = replace(res, "^ ", "")
res = split(res, ",")

counter2 = 0
for val = res
counter2 = counter2 + 1
if(match(r"[0-9]{9}", val) != nothing)
break
end
end

# 著者名
write(fp1, "著者名 : ")
write(fp1, join(res[1:counter2-3], " "))
write(fp1, "\n")

# タイトル
write(fp1, "タイトル : ")
write(fp1, res[counter2-2])
write(fp1, "\n")

# 出版社
write(fp1, "出版社 : ")
write(fp1, res[counter2-1])
write(fp1, "\n")

# URL
write(fp1, "URL : ")
write(fp1, line * "\n")

write(fp1, "\n")
# sleep
sleep(2)
end
end
end


うまく出力されると以下のような文章がファイルに書き出される。

ToHoge_txt.png

あとはこの文章をメールにコピペして、送信するだけ。

Julia便利!