Help us understand the problem. What is going on with this article?

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

More than 3 years have 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便利!

antiplastics
書くぜーどんどん書くぜー(書いてない
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away