読者です 読者をやめる 読者になる 読者になる

読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

新浪微博の各ポストへのURL生成

Ruby

新浪微博の各ポストに当たるURLを生成する必要があったので、調べました。

URLはhttp://weibo.com/<user id>/<post mid>という構造になっていて、post midはpost idから計算できます。
post midを計算するAPI(Querymid)が用意されていたようですが、今の提供されていないようです。


それ以前に単なる関数なのにRESTで取得するのが嫌だった人がいて、関数を実装されていました。

Using base62 to generate a Sina Weibo post permalink

ちょっと長いコードですが、どうやら大部分はbase62の実装のようです。

Rubyにはbase62のgemがあったので、それを使って、id2midだけ実装しました。

require 'base62'

def id2mid id
    id.to_s.reverse.scan(/.{1,7}/) # 下から7桁ずつに分割
        .map { |a| a.reverse.to_i.base62_encode }.reverse # 各パートをbase62エンコード
        .join('').swapcase #くっつけて大文字小文字変換
end

終わり。(短くてすいません)