Skip to main content

Library for fetching coin/token historical data, trends and more.

Project description

https://raw.githubusercontent.com/im-n1/karpet/master/assets/logo.png
PyPI PyPI - License PyPI - Downloads

Description

Karpet is a tiny library with just a few dependencies for fetching coins/tokens metrics data from the internet.

It can provide following data:

  • coin/token historical price data (no limits)

  • google trends for the given list of keywords (longer period than official API)

  • twitter scraping for the given keywords (no limits)

  • much more info about crypto coins/tokens (no rate limits)

What is upcoming?

  • Reddit metrics

  • Have a request? Open an issue ;)

Usage

  1. Install the library via pip.

pip install karpet

In case you don’t use uv you need to install the newerest cloudscraper manually

pip install git+https://github.com/VeNoMouS/cloudscraper.git@3.0.0
  1. Import the library class first.

from karpet import Karpet

fetch_crypto_historical_data()

Retrieves historical data.

k = Karpet(date(2019, 1, 1), date(2019, 5, 1))
df = k.fetch_crypto_historical_data(id="ethereum")  # Dataframe with historical data.
df.head()

                 price   market_cap total_volume
2019-01-01  131.458725  1.36773e+10  1.36773e+10
2019-01-02  138.144802  1.43923e+10  1.43923e+10
2019-01-03  152.860453  1.59222e+10  1.59222e+10
2019-01-04  146.730599  1.52777e+10  1.52777e+10
2019-01-05  153.056567  1.59408e+10  1.59408e+10

fetch_crypto_exchanges()

Retrieves exchange list.

k = Karpet()
k.fetch_crypto_exchanges("nrg")
['DigiFinex', 'KuCoin', 'CryptoBridge', 'Bitbns', 'CoinExchange']

fetch_news()

Retrieves crypto news.

k = Karpet()
news = k.fetch_news("btc")  # Gets 10 news.
print(news[0])
{
   'url': 'https://cointelegraph.com/ ....',  # Truncated.
   'title': 'Shell Invests in Blockchain-Based Energy Startup',
   'description': 'The world’s fifth top oil and gas firm, Shell, has...',  # Truncated.
   'date': datetime.datetime(2019, 7, 28, 9, 24, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600)))
   'image': 'https://images.cointelegraph.com/....jpg'  # Truncated.
}
news = k.fetch_news("btc", limit=30)  # Gets 30 news.

fetch_top_news()

Retrieves top crypto news in 2 categories:

  • Editor’s choices - articles picked by editors

  • Hot stories - articles with most views

k = Karpet()
editors_choices, top_stories = k.fetch_top_news()
print(len(editors_choices))
5
print(len(top_stories))
5
print(editors_choices[0])
{
   'url': 'https://cointelegraph.com/...',  # Truncated.
   'title': 'Bank of China’s New Infographic Shows Why Bitcoin Price Is Going Up',
   'date': datetime.datetime(2019, 7, 27, 10, 7, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))),
   'image': 'https://images.cointelegraph.com/images/740_aHR...', # Truncated.
   'description': 'The Chinese central bank released on its website an ...'  # Truncated.
}
print(top_stories[0])
{
   'url': 'https://cointelegraph.com/...',  # Truncated.
   'title': 'Bitcoin Price Shuns Volatility as Analysts Warn of Potential Drop to $7,000',
   'date': datetime.datetime(2019, 7, 27, 10, 7, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))),
   'image': 'https://images.cointelegraph.com/images/740_aHR0c...'  # Truncated.
   'description': 'Stability around $10,600 for Bitcoin price is ...'  # Truncated.
}

get_coin_ids()

Resolves coin ID’s based on the given symbol (there are coins out there with identical symbol).

Use this to get distinctive coin ID which can be used as id param for method fetch_crypto_historical_data().

k = Karpet()
print(k.get_coin_ids("sta"))
['statera']

get_basic_data()

Fetches coin/token basic data like:

open_issues is only provided if total_issues and closed_issues are available.

k = Karpet()
print(k.get_basic_data(id="ethereum"))
{
    'closed_issues': 5530,
    'commit_count_4_weeks': 40,
    'current_price': 3167.67,
    'forks': 11635,
    'market_cap': 371964284548,
    'name': 'Ethereum',
    'open_issues': 230,
    'pull_request_contributors': 552,
    'rank': 2,
    'reddit_accounts_active_48h': 2881.0,
    'reddit_average_comments_48h': 417.083,
    'reddit_average_posts_48h': 417.083,
    'reddit_subscribers': 1057875,
    'stars': 31680,
    'total_issues': 5760,
    'year_high': 4182.790285752286,
    'year_low': 321.0774351739628,
    'yoy_change': 695.9225871929757,  # growth/drop in percents
    'price_change_24': 120.1,
    'price_change_24_percents': 1.23
}

get_quick_search_data()

Lists all coins/tokes with some basic info.

k = Karpet()
print(k.get_quick_search_data()[0])
{
    "name": "Bitcoin",
    "symbol": "BTC",
    "rank": 1,
    "slug": "bitcoin",
    "tokens": [
        "Bitcoin",
        "bitcoin",
        "BTC"
    ],
    "id": 1,
}

fetch_crypto_live_data()

Retrieves live market data.

k = Karpet()
df = k.fetch_crypto_live_data(id="ethereum")  # Dataframe with live data.
df.head()

                        open     high      low    close
2023-01-16 20:00:00  1593.01  1595.05  1593.01  1594.28
2023-01-16 20:30:00  1593.37  1593.37  1589.03  1589.35
2023-01-16 21:00:00  1592.68  1593.66  1584.71  1587.87
2023-01-16 21:30:00  1587.28  1587.28  1583.13  1583.13
2023-01-16 22:00:00  1573.99  1580.11  1573.99  1579.97

Changelog

here

Credits

This is my personal library I use in my long-term project. I can pretty much guarantee it will live for a long time then. I will add new features over time and I more than welcome any help or bug reports. Feel free to open an issue or merge request.

The code is is licensed under MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

karpet-0.5.6.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

karpet-0.5.6-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file karpet-0.5.6.tar.gz.

File metadata

  • Download URL: karpet-0.5.6.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.12 {"installer":{"name":"uv","version":"0.9.12"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":null,"id":"forky","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for karpet-0.5.6.tar.gz
Algorithm Hash digest
SHA256 e21fc8820ed6aea4ff52734bf28cb37c1be144d6495c24eedba9e2773db86447
MD5 7eada6bb8b107e191461255b02967bfb
BLAKE2b-256 41924ace572992c8a664eaf41484e35fb4f77bdae365793ebe535459fc2085d5

See more details on using hashes here.

File details

Details for the file karpet-0.5.6-py3-none-any.whl.

File metadata

  • Download URL: karpet-0.5.6-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.12 {"installer":{"name":"uv","version":"0.9.12"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":null,"id":"forky","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for karpet-0.5.6-py3-none-any.whl
Algorithm Hash digest
SHA256 668d12ac3f159322ea4d1ae165c843c45bf7a8d1c3e511ef0c2769e62d7bccd8
MD5 d200590bd8d312015ad7e91e59b6ecce
BLAKE2b-256 c48f1b5186eb0cbabdf82e3e361f955a54f813abf6df65ea6e5203cb0b3c5d35

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page