The building block for decentralized media
Project description
Nucleus
NOTE! Nucleus is alpha-stage software. It means nucleus hasn't been security audited and programming APIs and data formats can still change.
Nucleus is a collection of low-level tools for media decentralization. It offers functionalities to make it easier to process, store, and distribute multimedia in a decentralized way.
The key features of Nucleus include:
- Metadata harvesting
- Multimedia processing
- Multimedia storage
- Metadata distribution
- Web3 instruments
Nucleus follows a modular and layered design approach, consisting of the following layers:
-
The Core: This layer contains the building block packages that have minimal or no external dependencies. Any dependencies within the core layer will be limited to other internal packages.
-
The SDK: The SDK exposes the programming-level API to interact with the core functions in a safe and conformant way.
-
The CLI and HTTP API: These components utilize the SDK to provide services through command-line interfaces (CLI) and HTTP API endpoints.
Summary
Nucleus proposes a sequence of steps (pipeline) for the processing and decentralization of multimedia:
- Harvesting: Collect metadata associated with the multimedia content.
- Processing: Performing media processing tasks.
- Storage: Store the processed content in the IPFS network.
- Expose: Distribute metadata through the IPFS ecosystem.
- Mint: Create metadata as NFTs (Non-Fungible Tokens).
- Retrieval: Retrieve and unmarshal metadata for further distribution.
The pipeline design follows the decoupling principle, allowing for flexible use cases. For example, the storage component can be optional if data is already stored on the IPFS network. Similarly, the mint component can be skipped if there is no need to create NFTs for the metadata. The processing component may also be unnecessary if the media is already prepared for storage.
The Retrieval component facilitates the retrieval and unmarshalling of metadata from IPFS ecosystem, which can then be distributed through various means. eg.OrbitDB, Gun, etc..
Installing
You can use pip to install nucleus with e.g.:
pip install nucleus-sdk
Before using nucleus
, FFmpeg and IPFS must be installed.
- Check the official docs to install IPFS.
- There are a variety of ways to install FFmpeg, such as the official download links, or using your package manager of choice (e.g.
sudo apt install ffmpeg
on Debian/Ubuntu,brew install ffmpeg
on OS X, etc.).
Examples
Development
Some available capabilities for dev support:
- Install:
make install
- Tests:
make test
- Debug:
make debug
- Lint:
make lint
- Lint Fix:
make format
Note: Please check Makefile for more capabilities.
Contributors ✨
Thanks goes to these wonderful people (emoji key):
phillmac 💻 📓 🤔 🚇 |
Mark Robert Henderson 💻 🤔 |
Echedenyan 🚇 |
This project follows the all-contributors specification. Contributions of any kind welcome!
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 nucleus_sdk-0.1a1.tar.gz
.
File metadata
- Download URL: nucleus_sdk-0.1a1.tar.gz
- Upload date:
- Size: 17.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.6.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cb480c6dcf314d7a082e84694208d7f0f66807a86c1ef3a698b69827a7b4416 |
|
MD5 | a5ef042e4ca2f149ae2e94aae01b20a3 |
|
BLAKE2b-256 | e94e341d68c4f5c7848fa0006783640e942483c614f5448eff768969c9740202 |
File details
Details for the file nucleus_sdk-0.1a1-py3-none-any.whl
.
File metadata
- Download URL: nucleus_sdk-0.1a1-py3-none-any.whl
- Upload date:
- Size: 79.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.6.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c51cda7ac6e9e8f4b40f9dcc31b905a492c315880c015579ec8c5d5990778714 |
|
MD5 | 879a986e3a34717c46e979ad0190ad7f |
|
BLAKE2b-256 | 8b927c332bc5ddf191f4ad2ed54fc25b0c0ae15cf7c4698838038059ff724fe4 |