Public
Edited
Dec 22, 2023
1 fork
1 star
Insert cell
Insert cell
url = new URL(
"https://arweave.net/5TJWFFoRndfDc_rHYr2W8zzIxS4iselQ7pvt8HmOnvo/index.html?&a=0x000000000000000000000000f5f710f8bec4114f134d16f4b4c560dbb5836548&c=1&tid=4&h=0x55972e11dbe2ab9bfaa459e409c74e3ad9f81095d9b210d20960efbc3c224b5c&bh=0x3aa30c40e2c9ab768e8c7baa853651616e944d0d81595dab008816b81ea6463e&bn=18793857&t=1702671683&wa=0xfe69f0ee1c95acc9c02902dee4038702b461e8f6&ms=1&mi=1&s=256&gp=49&gu=0"
)
Insert cell
params1 = url.searchParams.get("h")
Insert cell
img("0x83c6dAB0BDCf6D0177A1C3718C52BEf34DA2E71B", 4)
Insert cell
function img(contract, tokenId) {
const img = new Image();

getImgData(contract, tokenId).then((r) => {
img.src =
"https://f8n-production-collection-assets.imgix.net/" +
r.artworks[0].assetPath;
});
/*
img.onload = (e) => {
return img;
};*/

return img;
}
Insert cell
getImgData("0xA715A383Cde75B46051A553cDd35846B3a9c95d5", 37)
Insert cell
getImgData = (contractAddress, tokenId) =>
graph // find anaglyphic anaver.se tokens (they don't go through the anaglyphism pipeline)
.request(
"https://hasura2.foundation.app/v1/graphql/",
graph.gql`

query ArtworkByContractTokenId($contractAddress: String!, $tokenId: numeric!) {
artworks: artwork(
where: {tokenId: {_eq: $tokenId}, collection: {contractAddress: {_eq: $contractAddress}}}
) {
...ArtworkFragmentExtended
}
}
fragment ArtworkFragmentExtended on artwork {
...ArtworkFragment
...LatestArtworkEventFragment
...ArtworkMintEventFragment
...ArtworkSplitRecipientsFragment
...MostRecentAuctionFragment
...MostRecentOfferFragment
...MostRecentBuyNowFragment
...MostRecentPrivateSaleFragment
owner {
...UserFragment
}
creator: user {
...UserFragment
}
collection {
symbol
contractAddress
slug
name
collectionImageUrl
coverImageUrl
contractType
moderationStatus
maxTokenId
isRevealed
collectionSale: collection_sales(limit: 1) {
mintPrice
saleType
clearingPrice
}
attributes
}
}
fragment ArtworkFragment on artwork {
id
name
description
assetScheme
assetHost
assetPath
assetIPFSPath
metadataScheme
metadataHost
metadataPath
metadataIPFSPath
duration
mimeType
mintTxHash
assetId
assetStatus
tokenId
status
hiddenAt
deletedAt
moderationStatus
moderationFrom
latestTxDate
assetVersion
ownerPublicKey
publicKey
contractAddress
activeSalePriceInETH
lastSalePriceInETH
isIndexed
}

fragment LatestArtworkEventFragment on artwork {
latestEvents: event(
where: {eventType: {_nin: ["MIGRATE_CREATOR", "MIGRATE_CREATOR_PAYMENT_ADDRESS", "MIGRATE_OWNER", "MIGRATE_SELLER", "SELL", "PRICE_CHANGE"]}}
limit: 1
order_by: {blockTimestamp: desc_nulls_last}
) {
id
eventType
data
}
}

fragment ArtworkMintEventFragment on artwork {
mintEvents: event(where: {eventType: {_eq: "MINT"}}, limit: 1) {
...ArtworkEventFragment
}
}
fragment ArtworkEventFragment on event {
id
eventType
data
blockTimestamp
publicKey
tokenId
tokenCreator
}

fragment ArtworkSplitRecipientsFragment on artwork {
splitRecipients: splitRecipients_aggregate {
aggregate {
count
}
}
}

fragment MostRecentAuctionFragment on artwork {
auctions(
where: {status: {_in: ["OPEN", "FINALIZED", "ENDED"]}}
order_by: {endsAt: desc_nulls_first}
limit: 5
) {
auctionId
canceledAt
createdAt
duration
endsAt
finalizedAt
highestBidAmount
highestBidder
id
isPrimarySale
reservePriceInETH
seller
startsAt
status
tokenId
updatedAt
highestBidderUser {
publicKey
username
profileImageUrl
coverImageUrl
name
}
}
}

fragment MostRecentOfferFragment on artwork {
offers(
where: {status: {_in: ["ACCEPTED", "HIGHEST"]}}
order_by: {placedAt: desc}
limit: 5
) {
id
status
amountInETH
acceptedAt
expiresAt
seller
buyer
userBuyer {
name
profileImageUrl
publicKey
username
}
}
}

fragment MostRecentBuyNowFragment on artwork {
buyNows(
where: {status: {_in: ["ACCEPTED", "OPEN"]}}
order_by: {createdAt: desc}
limit: 5
) {
id
status
amountInETH
acceptedAt
seller
buyer
}
}

fragment MostRecentPrivateSaleFragment on artwork {
mostRecentPrivateSales: privateSales(
where: {soldAt: {_is_null: false}}
limit: 1
) {
id
ipfsPath
deadlineAt
soldAt
saleAmountInETH
seller
buyer
}
}

fragment UserFragment on user {
bio
coverImageUrl
createdAt
isAdmin
links
moderationStatus
name
profileImageUrl
publicKey
username
}
`,
{ tokenId, contractAddress }
)
.then((r) => r)
Insert cell
graph // find anaglyphic anaver.se tokens (they don't go through the anaglyphism pipeline)
.request(
"https://api.highlight.xyz:8080/",
graph.gql`
query BrowseTokens($collectionId: String!, $limit: Float!, $cursor: String, $minted: Boolean, $attributes: [NftAttribute!]) {
getPublicCollection(collectionId: $collectionId) {
id
seriesTokens(
first: $limit
after: $cursor
minted: $minted
attributes: $attributes
) {
edges {
id
tokenId
name
imageUrl
animationUrl
minted
__typename
}
pageInfo {
endCursor
totalCount
__typename
}
__typename
}
__typename
}
}
`,
{
collectionId: "65758391a3f6264849af43a7",
limit: 256,
cursor: null,
minted: true,
attributes: [
{
traitType: "anaverse",
values: ["anaverse"]
},
{
traitType: "IPFS",
values: ["ipfs://QmaoH8NjJi2ZhMUqCUkLMzUbjrBHH1hRC1q2FRsQyArd7o"]
}
]
}
)
.then((r) => r)
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more