Instagram get link from media id – Python

I have Instagram post id (ex “2659199092938255786”) and I want to get the url of this post. I have this code

from instabot import Bot
bot = Bot()
bot.login(username=username, password=password)
print(bot.get_link_from_media_id("2659199092938255786"))

there is any api or method without using instabot library

Answer

Use this algorithm

def get_link_from_media_id(media_id):
    if media_id.find("_"):
        media_id = media_id.split("_")[0]
    alphabet = {"-": 62, "1": 53, "0": 52, "3": 55, "2": 54, "5": 57, "4": 56, "7": 59, "6": 58, "9": 61, "8": 60, "A": 0, "C": 2, "B": 1, "E": 4, "D": 3, "G": 6, "F": 5, "I": 8, "H": 7, "K": 10, "J": 9, "M": 12, "L": 11, "O": 14, "N": 13, "Q": 16, "P": 15, "S": 18, "R": 17, "U": 20, "T": 19,
                "W": 22, "V": 21, "Y": 24, "X": 23, "Z": 25, "_": 63, "a": 26, "c": 28, "b": 27, "e": 30, "d": 29, "g": 32, "f": 31, "i": 34, "h": 33, "k": 36, "j": 35, "m": 38, "l": 37, "o": 40, "n": 39, "q": 42, "p": 41, "s": 44, "r": 43, "u": 46, "t": 45, "w": 48, "v": 47, "y": 50, "x": 49, "z": 51, }
    result = ""
    while media_id:
        media_id, char = int(media_id) // 64, int(media_id) % 64
        result += list(alphabet.keys())[list(alphabet.values()).index(char)]
    return "https://instagram.com/p/" + result[::-1] + "/"


url = get_link_from_media_id("2659199092938255786")
print(url)