Rubyによるアメブロのペタ貼り自動化スクリプト(5) ペタ貼りのリンク検出正規表現の変更

アメブロへの自動ペタ貼りソフト、作成して、10日ばかり運用したのだが、何点か気になる所が出てきた。
気になる点は以下の通り

  • ペタを貼るリンクの検索で記事IDの入ってないペタ貼りリンクも検出してしまう。
  • 毎日ソフトを走らせると、特に更新されていない記事にもペタを貼る。更新されてない記事にペタを貼るのはどうも自動スクリプトっぽくていけない。
  • 一日に貼れるペタ数は500。500貼ろうとすると対象となるどうやって選び出すかが問題。"peta_target.txt"で設定されているものだけでは、到底数が足りない。
  • ペタを貼って貰った相手にお返しをしないといけないのだが、今の仕組みだと、"peta_target.txt"に一々登録しないといけない。

順にスクリプトを直していく。

まず、ペタ貼りのリンクを検出するための正規表現を変更する。
元々の正規表現

peta_entry = Regexp.new
("(?-mix:\\/p\\/addPeta.do(?:\\?(?:[;\\/?:@&=+$,A-Za-z0-9\\-_.!~*'()]|%[0-9a-fA-F][0-9a-fA-F])*))")

で設定されている。
スクリプトでは、HTMLを読み込んで、最初にこの正規表現にマッチしたリンクを使いその後の処理を続けるのだが、この正規表現ではブログ記事のIDが入ってないペタ用のリンクが先に出てきた場合にもマッチしてしまい、それで処理を続けてしまう。
具体的に問題になるのは、
>||/p/addPeta.do?targetAmebaId=ブログのID&service=blog|