Skip to main content

A python module for deso

Project description

DesoPy - A python module to intereact with DeSo Blockchain.

The module uses node.deso.org API (by default) and can be changed to any Deso node URL

Developed by ItsAditya

Run pip install deso to install the module!!

How to Use:

Metadata

  1. Getting Deso Price
import deso



# takes two optional Argument; publicKey and nodeURL. By default NodeURL is https://node.deso.org/api/v0/"

desoMetadata = deso.Metadata()

response = desoMetadata.getExchangeRate() # returns a response object.

print(response.json()) #  you can also use response.status_code to check if request was succesful
  1. Getting Node Health
import deso

desoMetadata = deso.Metadata()

print(desoMetadata.getNodeHealth().json())
  1. Getting App State which includes node fee, diamond level map and other info related to node
import deso

desoMetadata = deso.Metadata()

print(desoMetadata.getAppState().json())
  1. Getting value of each diamond
import deso

desoMetadata = deso.Metadata()

print(desoMetadata.getDiamondLevelMap()) # getDiamondLevelMap takes optional inDesoNanos argument which is by default True.

User

  1. Getting user profile
import deso

desoUser = deso.User()

print(desoUser.getSingleProfile(username="ItsAditya").json())

# you can set username to "" and use publicKey instead. Like: getSingleProfiel(publicKey = "BBC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg")
  1. Getting publicKey info
import deso

desoUser = deso.User()

publicKeyList = ["BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg",

    "BC1YLhGyi3t6ppCMARk3pmXGTkrSJXw3GWxQsYwQp58897ho8Nbr1it"]

print(desoUser.getUsersStateless(listOfPublicKeys=publicKeyList).json())
  1. Getting profile pic URL
import deso

desoUser = deso.User()

print(desoUser.getProfilePicURL(

    "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"))
  1. Getting User Messages
import deso

desoUser = deso.User()

userPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoUser.getMessagesStateless(

    publicKey=userPublicKey, numToFetch=10).json())

# There are more argument in getMessagesStateless like sortAlgorithm, followersOnly, followingOnly, holdersOnly, holdingsOnly, fetchAfterPublicKey
  1. Getting user notifications
import deso

desoUser = deso.User()

userPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoUser.getNotifications(userPublicKey, numToFetch=1000).json())

# There are other argument in getNotifications() like startIndex, filterOutNotificationCategories, etc.
  1. Getting User NFTs
import deso

desoUser = deso.User()

userPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoUser.getNFTs(userPublicKey = userPublicKey, isForSale=True).json())
  1. Get derived keys of a user
import deso

desoUser = deso.User()

userPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoUser.getDerivedKeys(userPublicKey).json())
  1. Getting transaction info of a user
import deso

desoUser = deso.User()

userPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoUser.getTransactionInfo(userPublicKey).json())

# There are other arguments in getTransactionInfo() like limit, lastPublicKeyTransactionIndex and lastTransactionIDBase58Check
  1. Getting holders for a public key
import deso

desoUser = deso.User()

userPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoUser.getHoldersForPublicKey(userPublicKey).json())

# There are other arugments in getHoldersForPublicKey like username, fetchAll, numToFetch, fetchHodlings, isDAOCOIN, lastPublicKey
  1. Getting DAO coin limit orders of a DAO coin
import deso

desoUser = deso.User()

daoCoinPublicKey = "BC1YLj3zNA7hRAqBVkvsTeqw7oi4H6ogKiAFL1VXhZy6pYeZcZ6TDRY"

print(desoUser.getDaoCoinLimitOrders(daoCoinPublicKey))
  1. Getting DAO coin price (market price)
import deso

desoUser = deso.User()

daoCoinPublicKey = "BC1YLj3zNA7hRAqBVkvsTeqw7oi4H6ogKiAFL1VXhZy6pYeZcZ6TDRY"

print(desoUser.getDaoCoinPrice(daoCoinPublicKey))
  1. Geting user followings/followers
import deso

desoUser = deso.User()

print(desoUser.getFollowsStateless(username = "ItsAditya").json())
  1. Getting diamonds sent/received by a publicKey
import deso



desoUser = deso.User()

publicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoUser.getDiamondsForPublicKey(publicKey, received=False).json())

# set received = True to get diamonds given to a publicKey

Posts

  1. Get posts stateless - getting info about post
import deso



desoPosts = deso.Posts()

postHashHex = "74d50e4d33b7512941a2ada91a947aecfc2f9fd179d67eb1e0008d4812597196"

print(desoPosts.getPostsStateless(postHashHex= postHashHex, numToFetch=10).json())



# There are other functions in getPostsStateless that can be used to get more information about a post.
  1. Get single post information
import deso



desoPosts = deso.Posts()

postHashHex = "74d50e4d33b7512941a2ada91a947aecfc2f9fd179d67eb1e0008d4812597196"

print(desoPosts.getSinglePost(postHashHex).json())

# There are other functions in getSinglePost() that can be used to get more information about a post.
  1. Get posts by publicKey or user
import deso



desoPosts = deso.Posts()

postHashHex = "74d50e4d33b7512941a2ada91a947aecfc2f9fd179d67eb1e0008d4812597196"

print(desoPosts.getPostsForPublicKey(username="ItsAditya").json())

# getPostsForPublicKey() has more arguments like publicKey, mediaRequired, numToFetch, lastPostHashHex, readerPublicKey etc.
  1. Get serials of NFT post include other info
import deso



desoPosts = deso.Posts()

postHashHex = "74d50e4d33b7512941a2ada91a947aecfc2f9fd179d67eb1e0008d4812597196"

print(desoPosts.getNFTEntriesForNFTPost(postHashHex).json())
  1. Get likes for post
import deso



desoPosts = deso.Posts()

postHashHex = "74d50e4d33b7512941a2ada91a947aecfc2f9fd179d67eb1e0008d4812597196"

print(desoPosts.getLikesForPost(postHashHex).json())

# getLikesForPost has more arguments like limit, offset etc.
  1. Get diamonds for post
import deso



desoPosts = deso.Posts()

postHashHex = "74d50e4d33b7512941a2ada91a947aecfc2f9fd179d67eb1e0008d4812597196"

print(desoPosts.getDiamondsForPost(postHashHex).json())

# getDiamondsForPost has more arguments like limit, offset etc.
  1. Get getQuoteRepostsForPost for post
import deso



desoPosts = deso.Posts()

postHashHex = "74d50e4d33b7512941a2ada91a947aecfc2f9fd179d67eb1e0008d4812597196"

print(desoPosts.getQuoteRepostsForPost(postHashHex).json())

# getQuoteRepostsForPost has more arguments like limit, offset etc.
  1. Get Hot feed/ Posts mentioning any @ username
import deso

desoPosts = deso.Posts()

print(desoPosts.getHotFeed(taggedUsername="ItsAditya").json())
  1. Get NFT info along with all the bids made to that NFT
import deso



desoPosts = deso.Posts()

postHashHex = "74d50e4d33b7512941a2ada91a947aecfc2f9fd179d67eb1e0008d4812597196"

print(desoPosts.getNFTBidsForNFTPost(postHashHex).json())

Social

  1. Making post to deso blockchain
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'

desoSocial = deso.Social(PUBLIC_KEY, SEED_HEX)

'''In the above deso.Social() constructor, you can pass `derivedPublicKey` and `derivedSeedHex`

to make the transactions using derived keys.

NOTE: YOU MUST PASS ORIGINAL PUBLIC KEY TO CREATE THE TRANSACTION

''''



# submitPost() takes many optional argument like imageURLs, videoURLs, postExtraData etc.

# you will use the same function to make comment and quote any post.

print(desoSocial.submitPost("This is a test post")) #returns a response object. add .json() in end to see complete response
  1. Follow user
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(nodeURL="https://diamondapp.com/api/v0/",  publicKey = PUBLIC_KEY, seedHex = SEED_HEX)

print(desoSocial.follow("BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg", isFollow=True).json())
  1. Repost a post
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHexToRepost = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

print(desoSocial.repost(postHashHexToRepost).json())
  1. Quote a post
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHexToQuote = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

print(desoSocial.quote(body = "this is quoted post", postHashHexToQuote).json())
  1. Like a post
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHex = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

print(desoSocial.like(postHashHex, isLike=True).json())
  1. Diamond a post
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHex = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

receiverPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoSocial.diamond(postHashHex, receiverPublicKey,  diamondLevel=2).json())
  1. Update Profile
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

print(desoSocial.updateProfile(FR=10, description="This is my description",

      username="NotItsAditya", profilePicBase64='').json())





# In the above example, make sure profilePicBase64 is BASE64 encoded image otherwise it wont' work.

# you can also pass `extraData`, a dict argument for extra data in profile
  1. Send Private Message
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

receiverPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoSocial.sendPrivateMessage(receiverPublicKey, "This DM is send using DesoPy library").json())
  1. Minting a postHashHex as NFT
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHex = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

print(desoSocial.mint(postHashHex, minBidDeSo=1, copy=2, creatorRoyality=10, coinHolderRoyality=4, isForSale=True).json())
  1. Updating NFT to put it on sale, or as buy now etc.
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHex = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

print(desoSocial.updateNFT(postHashHex, buyNowPriceInDeso=2,

      buyNow=True, minBidDeso=1.5, forSale=2, serialNumber=1).json())
  1. Burn an NFT
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHex = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

print(desoSocial.burnNFT(postHashHex, serialNumber=2).json())
  1. Create NFT Bid
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHex = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

print(desoSocial.createNFTBid(NFTPostHashHex=postHashHex, serialNumber=1, bidAmountDeso=2).json())
  1. Transfer NFT
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoSocial = deso.Social(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

postHashHex = "bd292216e8cc1b7f2dd2cc6bba5afa20b65a4b9966ea191644c90254bedbe177"

receiverPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoSocial.transferNFT(postHashHex, receiverPublicKey, serialNumber=1).json())

Deso Identity

  1. Getting JWT token
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoIdentity = deso.Identity(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

print(desoIdentity.getJWT())
  1. Validate JWT token
import deso

desoIdentity = deso.Identity()

jwt_tokenn = "" # JWT TOKEN TO VALIDATE

userPublicKey = "" # User's public Key whoose JWT you wanna validate

print(desoIdentity.validateJWT(JWT=jwt_token, publicKey=userPublicKey))
  1. Sign transaction (OFFLINE OBVIOUSLY)
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

transactionHex = " Transaction Hex of the transaction created by public Key"

desoIdentity = deso.Identity()

print(desoIdentity.signTransaction(seedHex = SEED_HEX, transactionHex=transactionHex))

Media

  1. Upload iamge to images.deso.org
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'

desoMedia = deso.Media(  PUBLIC_KEY, SEED_HEX)

imageFileList = [

    ('file', ('screenshot.jpg', open("img.png", "rb"), 'image/png'))

]  # 'imageToUpload.png' is the image we are uploading to images.bitclout.com

urlResponse = desoMedia.uploadImage(imageFileList)

print(urlResponse.json())

Trade

  1. Send deso to public Key
import deso



SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'

desoTrade = deso.Trade(PUBLIC_KEY, SEED_HEX )



print(desoTrade.sendDeso( recieverPublicKeyOrUsername = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg", desoToSend = 0.01).json())
  1. Buy creator coin
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoTrade = deso.Trade(PUBLIC_KEY, SEED_HEX)

creatorPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoTrade.buyCreatorCoin(creatorPublicKey=creatorPublicKey, desoAmountToBuy=2).json())
  1. get creator coins held by a publicKey
import deso



desoTrade = deso.Trade()

creatorPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoTrade.getHeldCoinsOfCreator(publicKeyOfCoin=creatorPublicKey).json())
  1. Get selling amount of a creator coin
import deso

desoTrade = deso.Trade()

coinsInCirculationNanos = 3857329848

balanceNanons = 34938

desoLockedNanos = 12948584035

print(desoTrade.amountOnSell(desoLockedNanos = desoLockedNanos, coinsInCirculation=coinsInCirculationNanos, balanceNanos=balanceNanos))
  1. Selling a creator coin
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoTrade = deso.Trade(PUBLIC_KEY, SEED_HEX)



coinsToSellNanons = 34938

creatorPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoTrade.sellCreatorCoin(

    creatorPublicKey=creatorPublicKey,  coinsToSellNanos=coinsToSellNanons).json())
  1. Send creator coin
import deso

SEED_HEX = 'YOUR SEED SEED_HEX'

PUBLIC_KEY = 'YOUR PUBLIC_KEY'



desoTrade = deso.Trade(PUBLIC_KEY, SEED_HEX)



coinsToSendNanos = 34938

creatorPublicKey = "BC1YLhBLE1834FBJbQ9JU23JbPanNYMkUsdpJZrFVqNGsCe7YadYiUg"

print(desoTrade.sendCreatorCoins(creatorPublicKey=creatorPublicKey,

      receiverUsernameOrPublicKey="Octane", creatorCoinNanosToSend=coinsToSendNanos).json())
  1. Send DAO coins
import deso

SEED_HEX = "Your seed Hex here"

PUBLIC_KEY = "Your public key"



'''Sends DAO coin to publicKey or username. Use the hex() function to convert a number to hexadecimal

for Example, if you want to send 15 DAO coin, set coinsToTransfer to hex(int(15*1e18))'''

desoTrade = deso.Trade(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

coinsToTransfer = 15

coinsToTransferInRequiredForamt = hex(int(coinsToTransfer * 1e18))

transferStatus = desoTrade.sendDAOCoins(coinsToTransfer=coinsToTransferInRequiredForamt,

                                        daoPublicKeyOrName="CockyClout", receiverPublicKeyOrUsername="ItsAditya")

print(transferStatus)
  1. Burn DAO coins
import deso

SEED_HEX = "Your seed Hex here"

PUBLIC_KEY = "Your public key"



'''Burns DAO coin of daoPublicKeyOrName. Use the hex() function to convert a number to hexadecimal

        for Example, if you want to burn 15 DAO coin, set coinsToBurn to hex(int(15*1e18))'''

desoTrade = deso.Trade(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

coinsToBurn = 5000000

coisToBurnInRequiredFormat = hex(int(coinsToBurn * 1e18))

burnStatus = desoTrade.burnDAOCoins(coinsToBurn=coisToBurnInRequiredFormat,

                                        daoPublicKeyOrName="CockyClout")

print(burnStatus)
  1. Mint DAO coins
import deso



SEED_HEX = "Your seed Hex here"

PUBLIC_KEY = "Your public key"



'''Mint DAO coins. Use the hex() function to convert a number to hexadecimal

        for Example, if you want to mint 15 DAO coin, set coinsToBurn to hex(int(15*1e18))'''

desoTrade = deso.Trade(publicKey=PUBLIC_KEY, seedHex=SEED_HEX)

coinsToMint = 1000000

coinsToBurnInRequiredFormat = hex(int(coinsToMint * 1e18))

mintStatus = desoTrade.mintDAOCoins(coinsToBurnInRequiredFormat)

print(mintStatus)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deso-2.2.1.tar.gz (20.2 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page