audiusproject / audius-protocol Goto Github PK
View Code? Open in Web Editor NEWThe Audius Protocol - Freedom to share, monetize, and listen to any audio content.
Home Page: https://docs.audius.org
License: Other
The Audius Protocol - Freedom to share, monetize, and listen to any audio content.
Home Page: https://docs.audius.org
License: Other
Minor link update needed,
https://github.com/AudiusProject/audius-protocol/wiki/Service-Provider-Quickstart
In particular,
Prerequisites: must be running IPFS node. A docker-compose file is provided for your convenience locally at https://github.com/AudiusProject/audius-protocol/blob/master/discovery-provider/docker-compose.ipfs.yml. The Kubernetes manifest comes with an IPFS deployment included
The above compose file no longer exists.
Would be helpful if you guys added a types definitions file so that typescript users can use this library. Cheers!
Moin!
how do we upload content with the api?
How about other function which require a login?
I just saw teh OAUTH docs.
I haven't found anything in the docs regarding this.
Cheers Marc
In this page of the wiki: https://github.com/AudiusProject/audius-protocol/wiki/Staking-Resources
the link to the dashboard is https://dashboard.audius.co while it seems the dashboard is now hosted at https://dashboard.audius.org
Unable to confirm if this behavior is repeatable, but I was using the android app in a coffee shop with spotty WiFi and the playback froze on me after what I assume was a temporary loss of connection. Trying to skip to the next track on skipped to the end of that one. Just curious if there is a test for this, or if it's on the app end.
Enjoying the app so far though!
Discovery Provider
The xf
filter in get_karma
appears to act as tool to combat trending score manipulation.
However, it is currently implemented in a manner where it fails to accomplish this.
The goal appears to be to filter out users without pfp/cover imgs & bios (high likelihood spam accounts).
However, it is looking at the wrong attributes in the Users
table to accomplish this.
When the discovery nodes index the chains, the content multihashes are written to cover_photo_sizes
and profile_picture_sizes
,
and their cover_photo
and profile_picture
counterparts are set to null.
Source:
discovery-provider/src/tasks/users.py#L374
# Any write to profile_picture field is replaced by profile_picture_sizes
if user_record.profile_picture:
logger.info(
f"index.py | users.py | Processing user profile_picture {user_record.profile_picture}"
)
user_record.profile_picture_sizes = user_record.profile_picture
user_record.profile_picture = None
# All incoming cover photos intended to be a directory
# Any write to cover_photo field is replaced by cover_photo_sizes
if user_record.cover_photo:
logger.info(
f"index.py | users.py | Processing user cover photo {user_record.cover_photo}"
)
user_record.cover_photo_sizes = user_record.cover_photo
user_record.cover_photo = None
return user_record
As a result, when the xf filter is True (as it is in all three trending categories), the end result of the query will yield a null result.
Following, the final results of the get_karma
function will be Null and will not be applied to the rest of the scoring algorithm.
if xf:
saves_and_reposts = (
session.query(
saves_and_reposts.c.user_id.label("user_id"),
saves_and_reposts.c.item_id.label("item_id"),
)
.select_from(saves_and_reposts)
.join(User, saves_and_reposts.c.user_id == User.user_id)
.filter(
User.cover_photo != None, # <---- ALWAYS None
User.profile_picture != None, # <-- ALWAYS None
User.bio != None,
)
).subquery()
Consequences:
An easy fix can be implemented by changing the xf query's filter logic to look at the correct table attributes
# discovery-provider/src/queries/query_helpers.py
...
#L826 User.cover_photo_sizes != None,
#L827 User.profile_picture_sizes != None,
Additionally, the alembic migration creating the materialized view trending_params
can be updated in the same manner as well:
The search API seems broken.
A GET to https://discoveryprovider.audius4.prod-us-west-2.staked.cloud/v1/tracks/search?query=baauer%20b2b&app_name=EXAMPLEAPP
, or any other query, leads to 1 result where everything is null.
Downloaded the desktop app but it never connects. Every time I start it, I get the spinning triangle logo for a few seconds then a "Whoops... Something has gone wrong" page. Press the 'Take Me Back' button ends up in an endless loop of the two screens. The only message if I run in a terminal is:
Checking for update
Update for version 0.16.6 is not available (latest version: 0.16.6, downgrade is disallowed).
Checking for update
Update for version 0.16.6 is not available (latest version: 0.16.6, downgrade is disallowed).
Yes, twice on startup and twice every time I click the 'Take Me Back' button. Nowhere is there any indication of what the 'Something' is that went wrong. I've tried with and without my VPN active, and I have no firewall settings that would interfere.
Edit: Sorry, I forgot to mention I'm running on Linux.
Operating System: KDE neon 5.20
KDE Plasma Version: 5.20.2
KDE Frameworks Version: 5.75.0
Qt Version: 5.15.0
Kernel Version: 5.4.0-52-generic
OS Type: 64-bit
Processors: 16 × AMD Ryzen 7 3800X 8-Core Processor
Memory: 15.6 GiB of RAM
Graphics Processor: AMD Radeon RX 5600 XT
Good day Audius Devs and Staff. I would like to request an option to change an Account Email.
The reason why I am making this request is, my account is registered under an email that I deleted due to scam emails I have been receiving. It would make my life so much easier if I am able to change my account email.
Currently, the API only returns the IDs of these resources. In third-party apps, we would have a better user experience by adding a button to open the original track on the Audius web app.
A guide on formatting the URLs with the data given by the API would work too.
Hi, i'm using the Audius (client side) sdk for my portfolio. Unfortunately, since the last release, i got this error : Uncaught ReferenceError: process is not defined
. In browser, there no process
variable attach to window. I suppose this error is coming from the bundler. Hope, it will help.
However, thanks for your work guys !!!
Issue migrated from AudiusProject/audius-client#588
Currently, when trying to use the command in macOS to hide the application doesn't work.
cmd+h
cmd+m
(minimized)https://github.com/AudiusProject/audius-protocol/tree/master/solana-programs
When doing:
% cargo run create-signer-group
I get the following:
warning: processing debug info with `dsymutil` failed: signal: 10
|
= note:
warning: 1 warning emitted
Finished dev [unoptimized + debuginfo] target(s) in 0.23s
Running `target/debug/audius create-signer-group`
error: No such file or directory (os error 2)
Whenever you close and open up the browser again and hit Play Button, the volume will blast off at 100% no matter if it was set at any other percent. Issue is solved as you tweak the volume bar back to the actual displayed amount in the UI. Otherwise it'll remain at 100% even if the UI displays another value.
Using:
I'm seeing a lot of error in my discovery node due to
What is a proper value for this setting for a production deployment ? The wiki doesn't talk about this setting at all and the default value docker.for.mac.localhost
is also used in the distributed docker image.
There are so many features that could be provided and/or implemented by the developer community but we are treated as a last priority.
I hope Audius doesn't pay its employees as late as it does rewards.
Issue migrated from: AudiusProject/audius-client#602
It's in the loading screen for a bit, then leads to this error page.
I'm using Pop!_OS 21.04
I am trying to run a creator node local development instance for some experimental project and have been facing a few problems, the first being with getting the creator-node to access the ipfs container.
https://github.com/AudiusProject/audius-protocol/wiki/Service-Provider-Quickstart mentions that to start a creator-node you need to have an IPFS node running. ./libs/scripts/ipfs.sh up <container name>
starts the IPFS containers with the following ports forwarding:
8080-8081/tcp, 127.0.0.1:6002->4001/tcp, 127.0.0.1:6001->5001/tcp
The next step, according to the wiki, is to start the creator node container through docker-compose for local development. But since the network isn't shared between the creator node container and the ipfs container, I get a ECONNREFUSED
error in the initIPFS()
step.
There are 2 ways to solve this (I've tried both and they work to the extent that the creator node can now log the IPFS Peer IDs):
ipfs
in creator-node/docker-compose/docker-compose.full.yml
. In this case the ipfsHost
environment specified in development.env file should be set as ipfs
which is basically the service name being started by docker-compose. Also the creator-node service will then depend on ipfs too. Following diff shows the changes to the docker-compose.full.yml
file that might be required:diff --git a/creator-node/docker-compose/docker-compose.full.yml b/creator-node/docker-compose/docker-compose.full.yml
index 2ac8f3b..b9f1e2c 100644
--- a/creator-node/docker-compose/docker-compose.full.yml
+++ b/creator-node/docker-compose/docker-compose.full.yml
@@ -1,5 +1,10 @@
version: '3'
services:
+ ipfs:
+ image: ipfs/go-ipfs:release
+ ports:
+ - '6001:5001'
+ - '6002:4001'
db:
image: postgres:11.1
environment:
@@ -15,6 +20,7 @@ services:
env_file:
- ./development.env
depends_on:
+ - ipfs
- db
- redis
ports:
--network=<network-name>
flag to the docker run
command in libs/scripts/ipfs.sh
. The network name should be same as that used by the creator node container. For example, network name should be specified as audius-creator-node_default
. In this case as we can see that the creator node container is using that same network.$ docker network ls
NETWORK ID NAME DRIVER SCOPE
7804e34aa829 audius-creator-node_default bridge local
Both these solutions don't seem to be ideal since we might want to run a discovery provider container for example along with a creator node, thus requiring two different ipfs containers using two different networks?
Also solution 2 is even less ideal as we are hardcoding the network name as the network being used by the creator-node container. This can be solved by having one more argument passed to the ipfs.sh
script to take the required network name.
If there is no better way to resolve this, and either solution is acceptable, I could quickly send a pull request. Also if I'm missing something obvious, please let me know.
There are a lot of redundant jobs that make the current config hard to read.
Also, there are additional quirks such as mad-dog tests not being run on a hotfix branch.
The session expiration queue is responsible for deleting expired sessions for the content node.
Currently, the file is pure vanilla javascript
The desired state would be to have this be typescript including:
An important note, don't worry about import
ing config.js
or models.js
since, for now, those still need to be in vanilla javascript
This file is only ~130 lines of code so it should be a relatively easy lift
Hey there! I wonder how does search work within Audius? We are building an open-source, decentralized search protocol on web 3 (currently on ipfs is integrated) and I came across Audius.
Just wondering if our API's could be made of any use for Audius
AudiusProject/audius-client#952
Hi! Could it be possible to add Audius app to F-Droid? (https://f-droid.org/) It would be great to have it, especially for people who use free (as in freedom) and open source software.
Here are the instructions for submitting applications: https://f-droid.org/contribute/
A call to https://api.audius.co/ returns an empty array.
Hello, I recently started to deal with your API, and I had a questions.
Is it possible to connect your service to my own application (in my case it's WPF). I want to send login and password from my app, and get some response that will allow me to take all user info(Playlists, favorite tracks ...)?
All I have now is id, what i get from this https://discoveryprovider.audius4.prod-us-west-2.staked.cloud/v1/users/search?query=Brownies&app_name=EXAMPLEAPP, and basic user info from https://discoveryprovider.audius4.prod-us-west-2.staked.cloud/v1/users/nlGNe?app_name=EXAMPLEAPP.
Maybe there is some documentation, excluding https://audiusproject.github.io/api-docs/#audius-api-docs, where i can find more info abut API and how it use with .Net platform.
Thanks!
I use the /v1/users//tracks endpoint to retrieve track info. Tracks created since late October no longer include a release_date field. (in fact they include no timestamp info at all).
Tracks created prior to this continue to include their release_date.
Is this intentional?
I'm running npm run truffle-migrate inside the contracts directory. But I'm getting:
Error: Cannot find module 'babel-register'
Require stack:
- /Users/prikshetsharma/Desktop/audius-protocol-master/contracts/truffle-config.js
- /Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/original-require/index.js
- /Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/cli.bundled.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/truffle-config.js:8:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at Object.require (internal/modules/cjs/helpers.js:88:18)
at Function.load (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/config/dist/index.js:145:1)
at Function.detect (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/config/dist/index.js:134:1)
at Object.run (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/core/lib/commands/compile.js:53:1)
at Command.run (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/core/lib/command.js:136:1)
at Object.<anonymous> (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/packages/core/cli.js:52:1)
at __webpack_require__ (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/webpack/bootstrap d3abaec0ba5c4953076d:19:1)
at /Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/webpack:/webpack/bootstrap d3abaec0ba5c4953076d:65:1
at Object.<anonymous> (/Users/prikshetsharma/Desktop/audius-protocol-master/contracts/node_modules/truffle/build/cli.bundled.js:71:10)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
How to fix this?
Hi,
I followed the wiki to host both a creator node and a discovery provider.
I'm now trying to find out what I need to do this register those node and be part of the network.
I've try getting answer from discord, I emailed [email protected] but I can't get answers anywhere so far.
The wiki seem to indicate I must have some AUDIUS to be able to access the button that allows to register nodes on the audis dashboard. What is the exact process please?
when I follow https://github.com/AudiusProject/audius-protocol/tree/master/service-commands I come cross a error "Error: Failed health check - solana-validator-predeployed"
When I step into the Bringing up all services step , I Knock down node setup.js up command below, it show me error below, how to solve it thank you.
[root@iZ8vbb9gww22ktbg2khqjrZ scripts]# node setup.js up
Config dir: /root/.audius
/root/.audius/config.json
/root/.audius/eth-config.json
Bringing up services...
See /home/www/audius-protocol-master/service-commands/output.log and /home/www/audius-protocol-master/service-commands/error.log for troubleshooting.
network - up
network - up | executed in 0.17s
solana-validator-predeployed - up
Waiting 3 seconds...
solana-validator-predeployed - up | executed in 4.179s
solana-validator-predeployed - health-check-retry
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
Failed health check for service: solana-validator-predeployed, err: [connect ECONNREFUSED 127.0.0.1:8899]
Error: connect ECONNREFUSED 127.0.0.1:8899
Waiting 10s...
(node:1483905) UnhandledPromiseRejectionWarning: Error: Failed health check - solana-validator-predeployed
at performHealthCheckWithRetry (/home/www/audius-protocol-master/service-commands/src/setup.js:320:9)
at async runSetupCommand (/home/www/audius-protocol-master/service-commands/src/setup.js:216:5)
at async runInSequence (/home/www/audius-protocol-master/service-commands/src/setup.js:374:5)
at async allUp (/home/www/audius-protocol-master/service-commands/src/setup.js:790:3)
at async Command.<anonymous> (/home/www/audius-protocol-master/service-commands/scripts/setup.js:110:5)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:1483905) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 21)
(node:1483905) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Switch to using sysvar::instructions::load_instruction_at_checked
in solana-programs/reward-manager/program/src/utils/signs.rs to avoid the same issue that wormhole ran into.
In this issue I will use https://discoveryprovider.audius.co
as the endpoint.
https://discoveryprovider.audius.co/v1/tracks/VQb0N should be returning downloadable: false because it is deleted.
https://discoveryprovider.audius.co/v1/tracks/VQb0N returns downloadable: true
while https://discoveryprovider.audius.co/v1/tracks/VQb0N/stream redirects to https://creatornode2.audius.co/tracks/stream/VQb0N which returns a 403 code because the CID is blacklisted (likely because it is marked as deleted)
I am pretty sure this is unwanted behavior, because I have in the past encountered deleted tracks and they were marked as downloadable: false
couple examples as I'm trying to deploy to forked mainnet
in 3_goverance_migration.js
there is
const governanceRegKey = web3.utils.utf8ToHex('Governance');
and similarly in 4_token_migration.js
const tokenRegKey = web3.utils.utf8ToHex('Token')
but then these get past to registerContract
which uses the signature addContract(bytes32,address)
but this fails because utf8ToHex
only does that, it doesn't create a byte32 value, that is , something 32 bytes wide, aka doesn't pad appropriately
here is self contained example:
const ethers = require('ethers');
const web3 = require('web3-utils');
const abi = new ethers.utils.AbiCoder();
abi.encode(
['bytes32', 'address'],
[
ethers.utils.formatBytes32String('Goverance'),
'0x901C0Bd5f6bB72ac93A2339D730c182d7Dc91fFE',
]
);
abi.encode(
['bytes32', 'address'],
[web3.utf8ToHex('Governance'), '0x901C0Bd5f6bB72ac93A2339D730c182d7Dc91fFE']
);
the second one will explode
so either change migration files to use formatBytes32String
or change signature of addContract
to use bytes instead of bytes32
I can open PR for the former since anyway I'm changing these things to make the migrations work
The sync queue is what processes requests to synchronize data between content nodes.
Currently, the file is pure vanilla javascript
The desired state would be to have this be typescript including:
SyncQueue
classimport
syntax for imports instead of everything being require
dexport
syntax rather than modules.exports
This file is only ~150 lines of code so it should be a relatively easy lift
OpenZeppelinUpgradesAddress.isContract(address) (@openzeppelin/upgrades/contracts/utils/Address.sol#19-30) uses assembly
- INLINE ASM None (@openzeppelin/upgrades/contracts/utils/Address.sol#28)
Do not use evm assembly.
The API documentation doesn't showcase it.
This endpoint doesn't work: /v1/users//playlists
The client-call takes integer ids: https://audius-metadata-3.figment.io/playlists?limit=100&offset=0&user_id=18937&with_users=true
We are provided string ids.
We have artists on our Concordium blockchain (https://www.concordium.com/) who appreciate the privacy and security features of our public, permissionless, PoS blockchain. Is it possible to onboard new users to the Audius platform using a bi-directional bridge and use Concordium as a portal?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.