Rubyによるアメブロのペタ貼り自動化スクリプト(14) アメンバー限定記事の処理(4)

さて、間が開いてしまったのだが、アメンバー限定記事の処理のコードを載せる。
今までのコードと違うのは
ペタへのリンクとアメンバー申請へのリンクのどちらが先に出てくるか調べて、アメンバー申請が先に出てきた場合にはアメンバー限定記事と判断。
アメンバー限定記事の場合には、更にそのリンクを調べる。
アメンバー承認されている場合には、リンク先にペタリンクが出てくる。
ペタリンクが出てこない場合には、アメンバー承認されていないのでプロフィールからペタを貼る。

アメンバー承認されていない場合にはペタを貼らないという選択肢もあるけれど、依頼者の要望はプロフィールから貼ると言う事だ。
さて、従来の様にログファイルに、ペタを貼った時のurlを表す変数peta_e_pathをそのまま更新確認用のログファイルに使うと、プロファイルからペタを貼った場合に更新確認が出来なくなるので、新しい変数peta_e_logを作って、ログ用記事のペタurlと実際に貼ったurlを別にしている。

#アメンバー記事へのエントリーを抽出する正規表現を設定
amember_entry = Regexp.new("secret.ameba.jp/[A-Za-z0-9\\-]+/amemberentry-[0-9]+.html")


#各ペタページにアクセスしてペタ貼りをする
http = Net::HTTP.new('peta.ameba.jp',80)
http.start
header = Hash::new
header['Connection'] = 'Keep-Alive'
header['Cookie'] = cookie_str(cookie)


  list1.each do |line|
    print "Checking ", line ," blog... "
    #Get peta_entry url
    response = Net::HTTP.get('ameblo.jp','/'+line+'/')
    if peta_blog_e_get = peta_entry.match(response)
      entry_point = peta_blog_e_get.begin(0)
   peta_e_log = peta_blog_e_get.to_s #ブログトップページで見つけたペタへのリンクを最新記事へのログデータとして変数に保存する。
      #アメンバー申請へのリンクを探す
   #アメンバー申請へのリンクが見つかった場合には、ペタへのリンクとどちらが先か確認する
		if (amember_e_get = amember_entry.match(response)) and (entry_point > amember_e_get.begin(0))
			amember_path = amember_e_get.to_s
			amember_path.sub!(/secret.ameba.jp/,'')
			http2 = Net::HTTP.new('secret.ameba.jp')
			http2.start
			amember_response = http2.get(amember_path, header)
			http2.finish
			
			if peta_entry.match(amember_response.body)
				peta_e_path = peta_blog_e_get.to_s
				posting_text = "from blog entry(amenber).."
			else
				peta_e_path = '/p/addPeta.do?targetAmebaId='+line+'&service=profile'
				posting_text = "from Profile(not amenber)..."
			end
		else
			peta_e_path = peta_blog_e_get.to_s
			posting_text = "from blog entry..."
		end
     if (log.assoc(line) == nil) or (log.assoc(line)[1] != peta_e_log) then
        print "Posting Peta " + posting_text
        response = http.get(peta_e_path,header)

        if petaIDget =peta_url.match(response.body)
          peta_path =  petaIDget.to_s
          response = http.get(peta_path,header)

          if log.assoc(line) == nil then
            log << [line, peta_e_log]
          else
            log.assoc(line)[1] = peta_e_log
          end
          print "OK"
        else
          print "NG"
        end

     else
        print "not updated."
     end
    end
    print "\n"
  end

http.finish