• 05-06-2022, 21:30:42
    #1
    https://coinmarketcap.com/ sitesine belli bir filtreye uygun olan bütün coin isimlerini çekmem lazım.

    Nasıl yapabilirim?
  • 05-06-2022, 21:32:15
    #2
    Python Coder
    Size özel bot yapabilirim hocam isterseniz
  • 05-06-2022, 21:33:08
    #3
    keremyagan adlı üyeden alıntı: mesajı görüntüle
    Size özel bot yapabilirim hocam isterseniz
    botluk bir ihtiyaç yok hocam. teşekkürler.

    1 defa lazım.
  • 05-06-2022, 21:34:59
    #4
    Python Coder
    Filtreledikten 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:54
    #5
    keremyagan adlı üyeden alıntı: mesajı görüntüle
    Filtreledikten sonra kaç tane coin kalır bilmiyorum ama az sayıda ise elle yapılabilir , bot dışında aklıma bir çözüm gelmedi
    ortalama 20 sayfa her sayafa 100 veri
    basit bir eklenti filan varsa filan yardımcı olabilecek
  • 05-06-2022, 23:23:33
    #6
    jsde 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
    #7
    darness adlı üyeden alıntı: mesajı görüntüle
    jsde 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..
    çok teşekkürler hocam.
    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:46
    #8
    darness adlı üyeden alıntı: mesajı görüntüle
    jsde 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..

    Forumda ücretsiz yardımlaşma bitti diyenler bu postları görmüyor herhalde. Elinize sağlık.