Skip to content

Instantly share code, notes, and snippets.

@watzon
Created January 3, 2022 08:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save watzon/fcc954b0afa8629c56fd849830121d89 to your computer and use it in GitHub Desktop.
Save watzon/fcc954b0afa8629c56fd849830121d89 to your computer and use it in GitHub Desktop.
KNOWN_ID_MAP = { 2768409 => 1383264000000, 7679610 => 1388448000000, 11538514 => 1391212000000, 15835244 => 1392940000000, 23646077 => 1393459000000, 38015510 => 1393632000000, 44634663 => 1399334000000, 46145305 => 1400198000000, 54845238 => 1411257000000, 63263518 => 1414454000000, 101260938 => 1425600000000, 101323197 => 1426204000000, 111220210 => 1429574000000, 103258382 => 1432771000000, 103151531 => 1433376000000, 116812045 => 1437696000000, 122600695 => 1437782000000, 109393468 => 1439078000000, 112594714 => 1439683000000, 124872445 => 1439856000000, 130029930 => 1441324000000, 125828524 => 1444003000000, 133909606 => 1444176000000, 157242073 => 1446768000000, 143445125 => 1448928000000, 148670295 => 1452211000000, 152079341 => 1453420000000, 171295414 => 1457481000000, 181783990 => 1460246000000, 222021233 => 1465344000000, 225034354 => 1466208000000, 278941742 => 1473465000000, 285253072 => 1476835000000, 294851037 => 1479600000000, 297621225 => 1481846000000, 328594461 => 1482969000000, 337808429 => 1487707000000, 341546272 => 1487782000000, 352940995 => 1487894000000, 369669043 => 1490918000000, 400169472 => 1501459000000, 805158066 => 1563208000000, 1974255900 => 1634000000000 }
KNOWN_ID_IDS = KNOWN_ID_MAP.keys
KNOWN_MIN_ID = KNOWN_ID_IDS.first
KNOWN_MAX_ID = KNOWN_ID_IDS.last
def id_age(id : Int64)
if id < KNOWN_MIN_ID
{ -1, Time.unix_ms(KNOWN_ID_MAP[KNOWN_MIN_ID]) }
elsif id > KNOWN_MAX_ID
{ 1, Time.unix_ms(KNOWN_ID_MAP[KNOWN_MAX_ID]) }
else
lid = KNOWN_MIN_ID
(0..KNOWN_ID_IDS.size).each do |i|
if id <= KNOWN_ID_IDS[i]
# calculate the middle date
uid = KNOWN_ID_IDS[i]
lage = KNOWN_ID_MAP[lid]
uage = KNOWN_ID_MAP[uid]
idratio = (id - lid) / (uid - lid)
mid_date = (idratio * (uage - lage) + lage).floor.to_i64
break { 0, Time.unix_ms(mid_date) }
else
next lid = KNOWN_ID_IDS[i]
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment