https://coinmarketcap.com/ sitesine belli bir filtreye uygun olan bütün coin isimlerini çekmem lazım.
Nasıl yapabilirim?
Bir sitedeki filtrelenmiş verileri çekmem lazım
7
●134
- 05-06-2022, 21:33:08botluk bir ihtiyaç yok hocam. teşekkürler.keremyagan adlı üyeden alıntı: mesajı görüntüle
1 defa lazım. - 05-06-2022, 21:34:59Filtreledikten sonra kaç tane coin kalır bilmiyorum ama az sayıda ise elle yapılabilir , bot dışında aklıma bir çözüm gelmedi
- 05-06-2022, 21:35:54ortalama 20 sayfa her sayafa 100 verikeremyagan adlı üyeden alıntı: mesajı görüntüle

basit bir eklenti filan varsa filan yardımcı olabilecek
- 05-06-2022, 23:23:33jsde bir sınıf hazırladım filtrelemeyi böyle yapabilirsiniz
class CustomFilterize{ constructor(maxPage = 1) { this.start = 1; this.totalCount = 0; this.maxPage = maxPage; this.limit = 100; this.sortBy = 'market_cap'; this.sortType = 'desc'; this.convert = 'USD,BTC,ETH'; this.cryptoType = 'all'; this.tagType = 'all'; this.audited = 'false'; this.aux = 'ath,atl,high24h,low24h,num_market_pairs,cmc_rank,date_added,max_supply,circulating_supply,total_supply,volume_7d,volume_30d,self_reported_circulating_supply,self_reported_market_cap'; this.data = []; this.filters = []; this.completeData = null; } async page(limit = 3,start = 0){ if(this.totalCount != 0){ const maxPage = Math.round( this.totalCount / this.limit); if(limit > maxPage) limit = maxPage; } for(let i = 1 ; i <= limit; i++){ this.start = ((i-1) * this.limit) + 1 + start; const data = await this.get(); this.totalCount = parseInt(data.data.totalCount); this.data.push(data); } return this.data; } filter(attribute,value , equal = '='){ this.filters.push({ key:attribute,value:value,condition:equal,status: false }) return this; } async searchPage(page = 1){ if(this.completeData == null){ this.completeData = await this.page(page); }else if(this.completeData.length < page){ let start = this.completeData.length * this.limit; let pages = page - this.completeData.length; const p = await this.page(pages,start); this.completeData = [...this.completeData,...p]; }else if(this.completeData.length > page){ return this.process(this.completeData.slice(0,page)) } return this.process(this.completeData); } process(data){ let filterList = []; for(let i = 0; i < data.length;i++){ const list = data[i].data.cryptoCurrencyList; for(let k = 0; k < list.length;k++ ){ if(this.equal(list[k])){ /* şarrtları karşılıyosa*/ filterList.push(list[k]) } } } this.filters = []; console.table(filterList); return filterList; } equal(item){ if(this.filters.length == 0) return true; for(let i = 0; i < this.filters.length;i++){ let filter = this.filters[i]; filter.status = false; if(item[filter.key]){ if(filter.condition == 'between'){ if(Array.isArray(filter.value) && filter.value.length == 2){ filter.status = item[filter.key] >= filter.value[0] && item[filter.key] <= filter.value[1]; }else{ console.error(`${filter.key} elamanı between için en az 2 elaman bulunmadığından kaldırıldı.`); delete this.filters[i]; i--; } }else if(filter.condition == '<'){ filter.status = item[filter.key] < filter.value; }else if(filter.condition == '<='){ filter.status = item[filter.key] <= filter.value; }else if(filter.condition == '>'){ filter.status = item[filter.key] > filter.value; }else if(filter.condition == '>='){ filter.status = item[filter.key] >= filter.value; }else if(filter.condition == '='){ filter.status = item[filter.key] == filter.value; }else if(filter.condition == '=!' || filter.condition == '<>'){ filter.status = item[filter.key] != filter.value; }else{ console.error(`${filter.condition} bu koşullar için uyarlanmamıştır ve sorguya dahil edilmedi.`); delete this.filters[i]; i--; } }else{ console.error(`${filter.key} adında bir elaman bulunamadığı için arama kriterlerinden kaldırıldıi.`); delete this.filters[i]; i--; } } if(this.filters.length == 0) return true; return this.filters.every(item => item.status); } async get(){ return await fetch(`https://api.coinmarketcap.com/data-api/v3/cryptocurrency/listing?start=${this.start}&limit=${this.limit}&sortBy=${this.sortBy}&sortType=${this.sortType}&convert=${this.convert}&cryptoType=${this.cryptoType}&tagType=${this.tagType}&audited=${this.audited}&aux=${this.aux}`, { "headers": { "accept": "application/json, text/plain, */*", "accept-language": "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7", "platform": "web", "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"102\", \"Google Chrome\";v=\"102\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", "x-request-id": "06b9969b3ada4f3ca7ef99af3145af84" }, "referrer": "https://coinmarketcap.com/", "referrerPolicy": "origin-when-cross-origin", "body": null, "method": "GET", "mode": "cors", "credentials": "omit" }).then(response => response.json()) } } /* ELAMAN DEĞERLERİ BUNLAR ELAMAN ADI : ELAMAN DEĞERİ ath: 68789.62593892214 atl: 65.5260009765625 circulatingSupply: 19059018 cmcRank: 1 dateAdded: "2013-04-28T00:00:00.000Z" high24h: 30117.743447499455 id: 1 isActive: 1 isAudited: false lastUpdated: "2022-06-05T18:58:00.000Z" low24h: 29574.44953148884 marketPairCount: 9478 maxSupply: 21000000 name: "Bitcoin" quotes: (3) [{ }, { }, { }] selfReportedCirculatingSupply: 0 slug: "bitcoin" symbol: "BTC" totalSupply: 19059018 */ const custom = new CustomFilterize();Kullanımı ;
// ath değeri 68789 den küçük ve isActive değeri 1 olanları 1 sayfa boyuncu filtere
// 1 sayfa değeri limit 100 olarak belirlenmiştir 10 sayfa 10 * 100 değer
customFilter.filter("ath",68789 ,"<").filter("isActive","1").searchPage(1)// ath değeri 1000 ile 5000 arasında ve isActive değeri 1 olanlarır 1 sayfada filtrele
customFilter .filter("ath",[1000,5000],"between") .filter("isActive","1") .searchPage(1)// arama kriterleri eşittir,küçüktür , büyüktür , büyük eşit , küçük eşit ,eşit değil , arasında
// = ,< , <= ,> , >= , between , !=
.filter("maxSupply ",[1000,5000],"between").searchPage(1)Sonuc tablo olarak listelenir.
iyi forumlar.. - 06-06-2022, 08:19:11çok teşekkürler hocam.darness adlı üyeden alıntı: mesajı görüntüle
Ben şarkı açarak bütün sonuçları elle aldım.
İlerleyen zamanlarda kullanmak nasip olur büyük ihtimalle.
Elinize sağlık.
- 06-06-2022, 08:24:46darness adlı üyeden alıntı: mesajı görüntüle
Forumda ücretsiz yardımlaşma bitti diyenler bu postları görmüyor herhalde. Elinize sağlık.
