1

初心者の質問です... Bitlyを使用してリンクを短縮するための次のコードが既にあります。

def bitly_links(url)                                     
 bitly ||= begin                                            
  Bitly.use_api_version_3                                     
  Bitly.new('username', 'key')
  bitly.shorten(url)
 end
end

今回やりたいことは、コメント作成後にコメント内のすべてのリンクを検索して短縮することです。これは、このブログ投稿Using bitly in rails 3に似ていますが、 do ... endブロックの代わりにforループを使用しているため、少し混乱しています。また、メソッドが呼び出されていないことにも気付きました。

ウェブサイトでのコメントの例:

ねえ、投稿http://vox4life.blogspot.com/2012/11/4Life-2012-Growth-is-strong.htmlとこれをチェックしてください.. http://vox4life.blogspot.com/2012/ 11/dengue-outbreak-peoples-journal.htmlこちらも http://vox4life.blogspot.com/2012/02/transfer-factor-immunotherapy.html

次のようになります。

ねえ、投稿http://bit.ly/ZHdLTaとこれをチェックしてください.. http://bit.ly/TZ6Nrjまた、このhttp://bit.ly/ZrnWMj

前もって感謝します。

this と同様の質問ですが、Javaで

4

1 に答える 1

1

forループが必要ない場合は、メソッドをそのまま変更できると思います。本文は URL を含むテキスト全体であると考えています。

def bitly_body(body)
    matches = body.scan(/((http|https):\/\/(\&|\=|\_|\?|\w|\.|\d|\/|-)+(:\d+(\&|\=|\?|\w|\.|\d|\/|-)+)?)/)
    Bitly.use_api_version_3

    bitly = Bitly.new("thealey", "bitly_api_key")

    (0..matches.length).each do |i|    # <-- changed here.
      if matches[i].to_s.size > 0
        logger.info("url " + matches[i][0])
        if matches[i][0].include? "bit.ly"
          logger.info("already a bitly url " + matches[i][0])
        else
          u = bitly.shorten(matches[i][0])
          body[matches[i][0]] = u.short_url
        end
      end
    end
    body
end
于 2012-11-14T09:08:06.590 に答える