Nektar, a Python package to access Hive API.
Project description
nektar
** Nektar allows communication to the Hive blockchain using the Hive API.
Official Release
nektar can now be used on your Python projects through PyPi by running pip command on a Python-ready environment.
pip install hive-nektar --upgrade
Current version is 0.9.*, but more updates are coming soon.
This is compatible with Python 3.9 or later.
WARNINGS:
- This package is still under development, some future breakage is inevatable.
- Some AppBase API methods are still under development and subject to change.
- Do NOT copy your private keys in your codes!
Features
1. Lightweight package for small Hive dApps or projects.
2. Readily available methods using the nektar.Waggle()
class.
3. Highly costumizable via appbase
module.
Nektar Module
Import Module
from nektar import Waggle
# optionally, leverage json to `beautify` dictionaries
import json
Basic Setup
from nektar import Waggle
username = "hive-username"
app = "nectar.app"
version = "2022.10.05"
hive = Waggle(username)
Setup Application
username = "hive-nektar"
app_name = "nektar.app"
version = "2022.10.05"
hive = Waggle(username, app=app_name, version=version)
Setup Application with WIF/s
WARNING: Store WIFs securely in a separate file!
username = "hive-nektar"
app_name = "nektar.app"
version = "2022.10.05"
hive = Waggle(username, app=app_name, version=version)
wifs = [ "5*" ]
hive.append_wif(wifs)
Get Blockchain Constants
# Hive Developer Portal > Understanding Configuration Values
# https://developers.hive.io/tutorials-recipes/understanding-configuration-values.html
data = hive.get_config()
print(json.dumps(data, indent=4))
data = hive.get_config(field="HIVE_CHAIN_ID", fallback="bee*")
print("HIVE_CHAIN_ID: " + str(data))
Browse Communities
## get up to 200 communities by rank
communities = hive.communities(limit=200)
for community in communities:
print(community["name"] + "\t" + community["title"])
communities = {}
sorting = ["new", "rank", "subs"]
for sort in sorting:
## get up to 1000 communities per sorting filter
for community in hive.communities(sort=sort):
communities.update({community["name"]: community})
Get Posts in a Community
Get posts in a community by sorting filter created
, trending
, hot
, promoted
, payout
, payout_comments
, or muted
.
community = "hive-1*" # supply with a valid community name
posts = hive.posts(community, limit=100, sort="created")
print(posts[0]["author"])
print(posts[0]["permlink"])
print(posts[0]["title"])
Get Posts with a Tag
Get posts in a community by sorting filter: created
, trending
, hot
, promoted
, payout
, payout_comments
, or muted
.
tag = "nature"
posts = hive.posts(tag, limit=10, sort="created")
for post in posts:
print(post["title"])
Get Community Sunscribers
subscribers = {}
community = "hive-1*" # supply with a valid community name
for subscriber in hive.subscribers(community, limit=1000):
subscribers.update({subscriber[0]: subscriber})
print(subscriber[0])
Search Accounts Starting with a pattern
accounts = hive.accounts(start="h", limit=1000)
Get Account raw
Current Resource Credits
## resource credit of the initialized account
data = hive.resource_credits()
print(json.dumps(data, indent=4))
## specify another account
data = hive.resource_credits("valid-account")
print(json.dumps(data, indent=4))
Get Account Manabar Percentage
## manabar of the initialized account
percentage = hive.manabar()
print("Current Mana: " + str(int(percentage)) + "%")
## specify another account
percentage = hive.manabar("valid-account")
print("Current Mana: " + str(int(percentage)) + "%")
Get the List of Followers
## followers of the initialized account
followers = hive.followers()
print(followers)
## or using a valid account username
followers = hive.followers(account="valid-username")
print(followers)
Get the List of Delegators
## followers of the initialized account
delegators = hive.delegators()
for delegator, data in delegators.items():
print(delegator)
for dt, vests in data.items():
print(dt, vests)
## or using a valid account username
delegators = hive.delegators("valid-username")
for delegator, data in delegators.items():
print(delegator)
for dt, vests in data.items():
print(dt, vests)
## only show active delegations
delegators = hive.delegators(active=True)
for delegator, vests in delegators.items():
print(delegator, vests)
Get the List of Delegatees
## followers of the initialized account
delegatees = hive.delegatees()
for delegatee, data in delegatees.items():
print(delegatee)
for dt, vests in data.items():
print(dt, vests)
## or using a valid account username
delegatees = hive.delegatees("valid-username")
for delegatee, data in delegatees.items():
print(delegatee)
for dt, vests in data.items():
print(dt, vests)
## only show active delegations
delegatees = hive.delegatees(active=True)
for delegatee, vests in delegatees.items():
print(delegatee, vests)
Get Blog Posts
Get posts of an account by sorting filter: blog
, feed
, post
, replies
, or payout
## blog posts of the initialized account
blogs = hive.blogs(limit=10)
for blog in blogs:
for key, value in blog.items():
print(key + ":", value)
## customized blog search from another account
blogs = hive.blogs(account="valid-username", sort="blog")
for blog in blogs:
for key, value in blog.items():
print(key + ":", value)
Access a Blog Post/Comment If the post or comment does not exists in the blockchain, it will return an empty dictionary.
author = "valid-username"
permlink = "valid-permlink"
data = hive.get_post(author, permlink)
print(json.dumps(data, indent=4))
author = "valid-username"
permlink = "test-permlink-abc-123-def-456"
data = hive.get_post(author, permlink, retries=5)
if not data:
print("The post is not yet in the blockchain.")
Create a Post Programmatically
WARNING: Do NOT abuse Hive, post only quality contents not more than once a day.
title = "Make Your Title Catchy, But Not ClickBait-y"
body = "# This is a header\n\n" \
"## Adding a `h2` Header" \
"![Image Caption](https://image.link.goes/here)\n\n" \
"<center>How to center a text?</center>\n\n" \
"This is how to make it *itzlic*, **bold**, or ***both***!\n\n" \
"Drink more H<sub>2</sub>O<sup>[citatation needed]</sup> everyday.\n\n" \
"<br> this is a line break, below is a horizontal rule:\n\n" \
"---" \
"Click this [link](https://www.markdownguide.org/) to learn more about Markdowwn.\n\n"
description = "My first blog using Nektar!"
tags = "devtalk nektar hive api coderundebug"
community = "hive-1*" # use a valid community name
hive.new_post(title, body, description, tags, community)
Vote on A Post
author = ""
permlink = ""
weight = 10000 # -10000 to 10000, where 1000 = 100%
hive.vote(author, permlink, weight)
Send a Memo
receiver = "valid-username"
amount = 0.001
asset = "HBD"
message = "Sending you some HBDs..."
hive.memo(receiver, amount, asset, message)
Create a Custom JSON (Active Key)
protocol_id = "nektar_admin"
json_data = { "app": "nektar.app/2022.10.05" }
required_auths = ["valid-username"]
required_posting_auths = []
hive.custom_json(protocol_id, json_data, required_auths, required_posting_auths)
AppBase Module
Basic Usage
from appbase import AppBase
hive = AppBase(username)
hive.append_wif("5*")
props = hive.api("database").get_dynamic_global_properties({})
username = "nektar"
account = hive.api("condenser").get_accounts([[self.username]])
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file hive-nektar-0.9.18.tar.gz
.
File metadata
- Download URL: hive-nektar-0.9.18.tar.gz
- Upload date:
- Size: 21.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d713fa0acfed2589f4b031c41b2faad9e1b36de6573a7361367a2d1d83c7c5a |
|
MD5 | d10a2c9b5cb041d74d76a98500986e17 |
|
BLAKE2b-256 | 8b5a2ff32a1a67f1a3aa2e359d0c1c102a6c77e3ba70d56351e53a01f4f2f8e9 |
File details
Details for the file hive_nektar-0.9.18-py3-none-any.whl
.
File metadata
- Download URL: hive_nektar-0.9.18-py3-none-any.whl
- Upload date:
- Size: 23.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22bbcefbdbfbc2a05faa88905f4ab391c5ffe18da4483599bdcf75cf1d2fa6ee |
|
MD5 | 571af47c5dab19903f3a81612e8f237e |
|
BLAKE2b-256 | 63b4d1afd09b0d48c95da40371552bbcc3cd7f65348aaeece2cf52ee7c112e80 |