Ccmmutty logo
Commutty IT
2 min read

YouTubeのvideo idをpythonで作ってみた。

https://cdn.magicode.io/media/notebox/3e70bb33-f400-4b9b-b089-658a0d0af2a5.jpeg

YouTubeのビデオのidがuuidじゃない件

例えば https://www.youtube.com/watch?v=gocwRvLhDf8 の「gocwRvLhDf8」のような数字だ。
衝突しないidを作る場合、uuidが良さそうだ。
python
import uuid

id = uuid.uuid4().hex

print(id)
print(f'{len(id)}文字')

0752ec709a534b85a9c975a67680c770 32文字

UUID4とは

Universally Unique Identifierのことで、「将来にわたって重複や偶然の一致が起こらないという前提で用いることができる」ようだ。
uuid4は、16進数の32文字からなる。
しかしYouTubeでは、動画のidとしてuuidを使わず11文字の文字列で表していることがわかる。

YouTubeのvideo idで使われている文字

YouTubeではvideo idとして、base64をベースに用いている。 base64とは大文字小文字のアルファベット(a~z, A~z)と数字(0~9)、記号(+/)で表す。 アルファベットは26文字、数字は10文字、記号は2文字なので、26×2 + 10 + 2 = 64となる。
そのうち+/はURLにおいて不都合が生じるため-_で代用している。 これをPythonで書くとこのようになる。(適当なのでより良い書き方があったら教えてほしいです。)
python
import random

def random_string_generator():
    chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'
    result = ''
    for i in range(0, 11):
        result += random.choice(chars)
    
    return result
python
random_string_generator()

'4_El_ZFuqvk'

おまけ

この動画を見て思いつきました。 https://www.youtube.com/watch?v=gocwRvLhDf8
ご意見やご感想があればコメントください!

Discussion

コメントにはログインが必要です。