dcts / opensea-scraper

Scrapes nft floor prices and additional information from opensea. Used for https://nftfloorprice.info
MIT License
184 stars 73 forks source link

[BUG] Cannot get price #61

Closed 0xMarsRover closed 2 years ago

0xMarsRover commented 2 years ago

Hi,

I used two scripts below for getting prices of nfts, but all failed. I remembered that I can get prices by using function "offers" or "offersByUrl" before, but they do not work now. Script 1: let result_testnet = await OpenseaScraper.offersByUrl("https://testnets.opensea.io/collection/doodles-officias", options); console.dir(result_testnet, {depth: null}); // result object contains keys stats and offers image

Script 2: let result = await OpenseaScraper.offers(nft, options); console.dir(result, {depth: null}); // result object contains keys stats and offers image

Any suggestions for that? Thanks.

dcts commented 2 years ago

thanks a lot, its a bug, working on it.

0xMarsRover commented 2 years ago

Thanks for your response. I think opensea website Could have updates somewhere.

dcts commented 2 years ago

So opensea changed some variable names in their __wired__ variable (we get the prices from that variable).

I noticed that quantityInEth is not longer availible. Instead only quantity seems to exist.

// doesnt work anymore
Object.values(__wired__.records)
    .filter(o => o.__typename === "AssetQuantityType")
    .filter(o => o.quantityInEth) // ❌ this breaks

// seems to work 
Object.values(__wired__.records)
    .filter(o => o.__typename === "AssetQuantityType")
    .filter(o => o.quantity) // returns something but with wrong mapping

Unfortunately simply chaning this does NOT fix the issue, because the mapping is off. This needs more investigation. Leaving my findings here for now.

0xMarsRover commented 2 years ago

So opensea changed some variable names in their __wired__ variable (we get the prices from that variable).

I noticed that quantityInEth is not longer availible. Instead only quantity seems to exist.

// doesnt work anymore
Object.values(__wired__.records)
    .filter(o => o.__typename === "AssetQuantityType")
    .filter(o => o.quantityInEth) // ❌ this breaks

// seems to work 
Object.values(__wired__.records)
    .filter(o => o.__typename === "AssetQuantityType")
    .filter(o => o.quantity) // returns something but with wrong mapping

Unfortunately simply chaning this does NOT fix the issue, because the mapping is off. This needs more investigation. Leaving my findings here for now.

Is there any updates on this issue? Thanks

dcts commented 2 years ago

I currently don't have time to fix this. I have it on my todo list, but I cannot promise nor predict any timeline.

0xMarsRover commented 2 years ago

Thnaks for your reply.

I currently don't have time to fix this. I have it on my todo list, but I cannot promise nor predict any timeline.

0xMarsRover commented 2 years ago

I did some investigations on Opensea website abnd made some changes on source code. Now it seems work.

const floorPrices = Object.values(__wired__.records)
  .filter(o => o.__typename === "PriceType" && o.eth && o.unit && o.usd)
  .filter(o => o.eth)
  .map(o => {
    return {
      amount: o.eth,
      currency: 'ETH',
    }
  });
ankerbachryhl commented 2 years ago

I did some investigations on Opensea website abnd made some changes on source code. Now it seems work.

const floorPrices = Object.values(__wired__.records) .filter(o => o.__typename === "PriceType" && o.eth && o.unit && o.usd) .filter(o => o.eth) .map(o => { return { amount: o.eth, currency: 'ETH', } }); image

this works!! thank you!

dcts commented 2 years ago

thanks @kaiqiangh for the fix! I adapted it in the new version 6.5.2. To adapt please use version 6.5.2:

npm install opensea-scraper@6.5.2

or alternatively if you have it already installed upgrade to latest version

npm upgrade

Thank you! ♥️

0xMarsRover commented 2 years ago

thanks @kaiqiangh for the fix! I adapted it in the new version 6.5.2. To adapt please use version 6.5.2:

npm install opensea-scraper@6.5.2

or alternatively if you have it already installed upgrade to latest version

npm upgrade

Thank you! ♥️

All good! Thanks!