例えば https://www.youtube.com/watch?v=gocwRvLhDf8 の「gocwRvLhDf8」のような数字だ。
衝突しないidを作る場合、uuidが良さそうだ。
Universally Unique Identifierのことで、「将来にわたって重複や偶然の一致が起こらないという前提で用いることができる」ようだ。
uuid4は、16進数の32文字からなる。
しかしYouTubeでは、動画のidとしてuuidを使わず11文字の文字列で表していることがわかる。
YouTubeではvideo idとして、base64をベースに用いている。
base64とは大文字小文字のアルファベット(a~z
, A~z
)と数字(0~9
)、記号(+
と/
)で表す。
アルファベットは26文字、数字は10文字、記号は2文字なので、26×2 + 10 + 2 = 64
となる。
そのうち+
と/
はURLにおいて不都合が生じるため-
と_
で代用している。
これをPythonで書くとこのようになる。(適当なのでより良い書き方があったら教えてほしいです。)