No project description provided
Project description
BlueSky API Data Wrapper
This is built as a wrapper for the atproto package. While that package is fantastic, it can be a bit tricky to navigate. This package will hopefully give a productive user experience.
Installation
pip install bskydata
Example usage
import os
from dotenv import load_dotenv
from bskydata.api.client import BskyApiClient
from bskytdata.agents.agent import BskyAgent
from bskydata.scrapers.search_terms import SearchTermScraper
from bskydata.scrapers.profiles import ProfileScraper
from bskydata.storage.writers import JsonFileWriter
load_dotenv()
BSKY_USERNAME = os.getenv('BSKY_USERNAME')
BSKY_PASSWORD = os.getenv('BSKY_PASSWORD')
# Create a client -- reuse this across your code rather than instantiating a new one each time
# If you run this frequently, you will be rate limited
client = BskyApiClient(username = BSKY_USERNAME, password = BSKY_PASSWORD)
# Scrape all posts for the search term "rstats"
st_scraper = SearchTermScraper(client)
rstats_posts = st_scraper.fetch_all_posts("rstats", limit=200)
# Scrape user: follows, followers, profiles
pf_scraper = ProfileScraper(client)
profiles = pf_scraper.fetch_all_profiles(["stoltzmaniac.bsky.social", "bsky.app"])
profile_follows = pf_scraper.fetch_all_follows("stoltzmaniac.bsky.social", limit=200)
profile_followers = pf_scraper.fetch_all_followers("stoltzmaniac.bsky.social", limit=200)
# Add output files -- you can specify different file names within each method if you prefer not to use the defaults
json_writer = JsonFileWriter()
scraper = SearchTermScraper(client, writer=json_writer)
data = scraper.fetch_all_posts("rstats", limit=200)
pf_scraper = ProfileScraper(client, writer=json_writer)
profiles = pf_scraper.fetch_all_profiles(["stoltzmaniac.bsky.social", "bsky.app"])
profile_follows = pf_scraper.fetch_all_follows("stoltzmaniac.bsky.social", limit=200)
profile_followers = pf_scraper.fetch_all_followers("stoltzmaniac.bsky.social", limit=200)
# Making a post
agent = BskyAgent(client)
agent.new_post()\
.add_text("Python API (sorry for multiple)--text--")\
.add_link("Bluesky", "https://bsky.app")\
.add_image("https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Cute_dog.jpg/1600px-Cute_dog.jpg", "dog")\
.add_image("cat.png", "cat")\
.add_mention("@stoltzmaniac.bsky.social", 'did:plc:6p3e4iybr5ipik3c6tx3jpto')\
.send_post()
# If you don't know the "did" ... which most people don't, it will look it up for you
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
bskydata-0.3.3.tar.gz
(9.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
bskydata-0.3.3-py3-none-any.whl
(11.0 kB
view details)
File details
Details for the file bskydata-0.3.3.tar.gz.
File metadata
- Download URL: bskydata-0.3.3.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.13.1 Darwin/23.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ee1c749eaa24c6abeebe95eea1cd9ab72dad98728da6b6c9d55304c0189219e
|
|
| MD5 |
ea41866a7fad25026d0f20f36e6468d1
|
|
| BLAKE2b-256 |
c3f21d08f5c072e9b739e8a4c0967a04c6f7dfad40928a3e8044ebed3604df28
|
File details
Details for the file bskydata-0.3.3-py3-none-any.whl.
File metadata
- Download URL: bskydata-0.3.3-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.13.1 Darwin/23.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c670ca2093d76a26f007750b3415982c05213623b590869f85833ae7464cbd29
|
|
| MD5 |
06ad44a8bba44d9590dfdb54409725d0
|
|
| BLAKE2b-256 |
108a9dbbaa0bae5774ca301739d2e57b109a0af087734cbcc0a1e22b57683b69
|