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