function base64url_decode($data) { return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT)); } function rle_decode($string) { $new = ''; $last = ''; $null = chr(0); foreach (str_split($string) as $cur) { if ($last === $null) { $new .= str_repeat($last, ord($cur)); $last = ''; } else { $new .= $last; $last = $cur; } } $string = $new.$last; return $string; } function parse($s) { $s = base64url_decode($s); $s=rle_decode($s); $r=unpack("ifile_type/idc_id/qfile_id/qaccess_hash",$s); return $r; } var_dump(parse('AgADBAADZbMxG7cJAVGXAeNiLWOiH5lPqBsABAEAAwIAA3kAAzcYAwABFgQ'));
possbible file_type list
0 = thumbnail
2 = photo
3 = voice
4 = video
5 = document
8 = sticker
9 = audio
10 = gif
13 = video_note (round video)