LoginSignup
5
1

More than 3 years have passed since last update.

Elixir製の小説家になろうAPIラッパーをリリースしました

Last updated at Posted at 2020-05-11

Elixirでの小説家になろうAPIラッパーがなかったので作成しました。

Elixirらしく書けるようにするために、パイプオペレータでクエリを実行できるようにしました:ok_hand:

リポジトリ

インストール

mix.exs

# Elixirのバージョンは1.10以上必要

def deps do
  [
    {:narou, git: "https://github.com/harukikubota/narou.git"}
  ]
end

使い方

小説検索

iex> use Narou
iex> Narou.init(%{type: :novel})
    |> select([:t, :w])
    |> where(ncode: "n2267be")
    |> Narou.run!

    {
      :ok,
      1,
      [
        %{
          title: => "Re:ゼロから始める異世界生活",
          writer: => "鼠色猫/長月達平"
        }
      ]
    }

ランキング検索

こちらは日付とランキングタイプを指定して、作品毎のポイントを取得します。

iex> use Narou
iex> Narou.init(%{type: :rank})
    |> where(y: 2020, m: 03, d: 31, t: :d)
    |> Narou.run!

    {
      :ok,
      [
        %{"ncode" => "N7378GC", "pt" => 4450, "rank" => 1},
        %{"ncode" => "N7529GB", "pt" => 4280, "rank" => 2},
        %{"ncode" => "N2361GC", "pt" => 3698, "rank" => 3},
        %{...},
        ...
    }

殿堂入り検索

こちらは作品を指定して、いつ、どのランキングに入ったか検索します。

iex> use Narou
iex> Narou.init(%{type: :rankin})
    |> where(ncode: "n2267be")
    |> Narou.run!

    {:ok,
      [
        %{pt: 90, rank: 103, rtype: "20130501-d"},
        %{pt: 4739, rank: 72, rtype: "20130501-m"},
        %{pt: 9947, rank: 86, rtype: "20130501-q"},
        %{...},
        ...
    }

ユーザ検索

iex> use Narou
iex> Narou.init(%{type: :user})
    |> select([:userid, :name, :yomikata])
    |> where(userid: 235132)
    |> Narou.run!

    {
      :ok,
      1,
      [
        %{
          name: "鼠色猫/長月達平",
          userid: 235132,
          yomikata: "ネズミイロネコ/ナガツキタッペイ"
        }
      ]
    }

その他細かい機能

細かい使い方などは iexからモジュールヘルプで参照できるようにしています。iex> h Narou

Narou

APIの種類と、初期パラメータを設定します。

lib/narou/api_struct/init/1の戻り値構造体が定義されてます。

Narou.Query

select, where, orderを定義しています。

Narou.ApiKeyNameConverter

select句で指定するキー名のテーブルを確認できます。

あとがき

筆者はElixirの勉強を始めてからまだ一週間ですが、ここまでのものを無事リリースできました。

Rubyでのライブラリ開発の経験も大きいんですが、Elixirの言語機能が強力なおかげで楽に書けてますw

最後に一言。


シャンフロはいいぞおじさん「シャンフロはいいぞ。」


5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1