スリ飯屋MaLankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Ruby】 はてなブログのAPIで記事一覧取得時、 下書きを除外する


【Ruby】 はてなブログのAPIで記事一覧取得時、 下書きを除外する




今すぐ案件紹介をご希望の方へ


このブログから登録の多いエージェントは下記の3つです★

(リンクをクリックすると公式サイトに飛びます)

【ダントツの1番人気】フォスターフリーランス【案件保有数5000件以上。業界25年の超老舗】

【僅差で2位】フリエン(furien)【実務経験1年未満でも案件アリ!】

【惜しくも3位】レバテックフリーランス【業界最大手。素早く手厚いフォローで案件参画】




こんにちは、現役沖縄フリーランスエンジニアのmahです。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、


  • 【Ruby】はてなブログのAPIで記事一覧取得時、下書きを除外する


についてです。




【Ruby】はてなブログのAPIで記事一覧取得時、下書きを除外する





やりたいこと


はてなブログのAPIで記事一覧を取得する際に、

下書きのものを除外したい。


記事一覧の取得については、

下記の記事を大変参考にさせて頂きました。

Ruby:はてなブログAPIを使って記事の一覧をJSON形式で取得する - Madogiwa Blog

はてなブログAPIを使って記事の一覧をJSONで取得する · GitHub <= ソースコードのみ




解決方法


1、

Nokogiriでパースして得たオブジェクトにto_sして、

scanで下書きかどうかを表す文字列を抜き出す。


# 参考にしたサイトのコードのget_entry_list()の内部
# entry = Nokogiri::XML.parse(entry, nil, 'utf-8')

draft_flgs = entry.to_s.scan(/\<app:draft\>.*<\/app:draft\>/)
# こんな感じの配列が返ります
# draft_flgs => [
"<app:draft>no</app:draft>",
"<app:draft>no</app:draft>",
"<app:draft>no</app:draft>",
"<app:draft>yes</app:draft>",
"<app:draft>no</app:draft>",
"<app:draft>no</app:draft>",
"<app:draft>yes</app:draft>",
"<app:draft>no</app:draft>",
"<app:draft>no</app:draft>",
"<app:draft>no</app:draft>"
]




2、

1記事毎にループを回すため、

記事タイトルの配列のインデックスと1のdraft_flgsを対応させ、

「draftがyesのもの」をスキップすればOK。

(APIで一度に取得できる記事数は10件なので、タイトルの配列と下書きフラグの配列のインデックスは一致します)


参考にさせて頂いたコードの、

def entry_list_to_hash(entry)メソッド の中に追加します。


  # title,content,categoryのリストをhashに整形して返却するメソッド
  def entry_list_to_hash(entry)
    entry_hash_list = []
    titles = entry.css('entry title').map(&:text)
    contents = entry.css('entry content').map(&:text)
    # 記事とcategoryは、1:nの関係のため、記事毎に配列で取得
    category = []
    entry.css('entry').each do |e|
      category << e.css('category').map{ |c| c.attribute('term').value }
    end

    draft_flgs = entry.to_s.scan(/\<app:draft\>.*<\/app:draft\>/) ### 追加 ###
    titles.length.times do |i|
      entry_hash_list << titles[i] if draft_flgs[i].match?(/no/) ### if以降を追加 下書きの記事はスキップする 下書きの記事はdraftがyes ###
    end
    entry_hash_list
  end




以上です。




RailsやRubyを学びたい人へ


RailsやRubyを学びたい人は、

RailsHack(レイルズハック)という、

最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、

Udemy で下記のコースを受講すると良いです★


✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座

✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。

✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう




また、

Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、

「30日間なら返金できる」ので、

満足できなかった時でも安心です。


f:id:mah666hhh:20201129193352p:plain


【公式】RailsHack(レイルズハック)

【公式】Udemyで学んでみる




最後に


下記の表に、

フリーランスエンジニア向けの人気エージェントをまとめてみました。


エージェント選びで悩んでいる方は是非参考にしてみてくださいね★


エージェント 詳細 最高単価/月 設立
フリエン(furien) 評判をチェック 180万円/月 2011年
ギークスジョブ 評判をチェック 180万円/月 2011年
フォスターフリーランス 評判をチェック 230万円/月 1996年
pe-bank(pebank) 評判をチェック 200万円/月 1989年
Midworks(ミッドワークス) 評判をチェック 200万円/月 2013年
レバテックフリーランス 評判をチェック 140万円/月 2005年




あわせて読みたい


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech