From 0afa9479220b73a46b2f9ea8996821ac9fb260ef Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Wed, 29 Oct 2025 05:08:17 +0530 Subject: [PATCH 1/5] Add crypto_price_tracker.py to fetch live crypto prices --- web_programming/crypto_price_tracker.py | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 web_programming/crypto_price_tracker.py diff --git a/web_programming/crypto_price_tracker.py b/web_programming/crypto_price_tracker.py new file mode 100644 index 000000000000..d40b5c5fb5a4 --- /dev/null +++ b/web_programming/crypto_price_tracker.py @@ -0,0 +1,27 @@ +""" +Fetch the current price of a cryptocurrency in USD using CoinGecko API. +""" + +import httpx + + +def crypto_price(coin: str = "bitcoin") -> float: + """ + Return the current price of a cryptocurrency in USD using CoinGecko API. + + >>> isinstance(crypto_price("bitcoin"), float) + True + >>> isinstance(crypto_price("ethereum"), float) + True + """ + url = f"https://api.coingecko.com/api/v3/simple/price?ids={coin}&vs_currencies=usd" + try: + response = httpx.get(url, timeout=10) + response.raise_for_status() + return float(response.json().get(coin, {}).get("usd", 0.0)) + except (httpx.RequestError, ValueError, KeyError): + return 0.0 + + +if __name__ == "__main__": + print(crypto_price("bitcoin")) From 4dff7d22a20a4e4adbc7a14cbce89ebe7d2df4e6 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 16 Sep 2026 10:15:22 +0200 Subject: [PATCH 2/5] Update crypto_price_tracker to use httpx2 --- web_programming/crypto_price_tracker.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/web_programming/crypto_price_tracker.py b/web_programming/crypto_price_tracker.py index d40b5c5fb5a4..493fc2fd2c55 100644 --- a/web_programming/crypto_price_tracker.py +++ b/web_programming/crypto_price_tracker.py @@ -2,7 +2,14 @@ Fetch the current price of a cryptocurrency in USD using CoinGecko API. """ -import httpx +# /// script +# requires-python = ">=3.11" +# dependencies = [ +# "httpx2", +# ] +# /// + +import httpx2 def crypto_price(coin: str = "bitcoin") -> float: @@ -16,12 +23,12 @@ def crypto_price(coin: str = "bitcoin") -> float: """ url = f"https://api.coingecko.com/api/v3/simple/price?ids={coin}&vs_currencies=usd" try: - response = httpx.get(url, timeout=10) - response.raise_for_status() + json_response = httpx2.get(url, timeout=10).raise_for_status().json() return float(response.json().get(coin, {}).get("usd", 0.0)) - except (httpx.RequestError, ValueError, KeyError): + except (httpx2.RequestError, ValueError, KeyError): return 0.0 + return float(json_response.get(coin, {}).get("usd", 0.0)) if __name__ == "__main__": - print(crypto_price("bitcoin")) + print(f"{crypto_price('bitcoin') = }") From 68ae418a7dd8846dd6d384ad326bec488a68b84b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 16 Sep 2026 08:15:36 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- web_programming/crypto_price_tracker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_programming/crypto_price_tracker.py b/web_programming/crypto_price_tracker.py index 493fc2fd2c55..866f8ebb0aa9 100644 --- a/web_programming/crypto_price_tracker.py +++ b/web_programming/crypto_price_tracker.py @@ -25,7 +25,7 @@ def crypto_price(coin: str = "bitcoin") -> float: try: json_response = httpx2.get(url, timeout=10).raise_for_status().json() return float(response.json().get(coin, {}).get("usd", 0.0)) - except (httpx2.RequestError, ValueError, KeyError): + except httpx2.RequestError, ValueError, KeyError: return 0.0 return float(json_response.get(coin, {}).get("usd", 0.0)) From 2218d84907c1ab809c71b16a8dd4b7e8f52d5373 Mon Sep 17 00:00:00 2001 From: cclauss Date: Wed, 16 Sep 2026 08:20:54 +0000 Subject: [PATCH 4/5] updating DIRECTORY.md --- DIRECTORY.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index eaa48b893c66..0e3dd66a6bc6 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -219,9 +219,11 @@ * [Excel Title To Column](conversions/excel_title_to_column.py) * [Hex To Bin](conversions/hex_to_bin.py) * [Hexadecimal To Decimal](conversions/hexadecimal_to_decimal.py) + * [Int To Negative Binary Base](conversions/int_to_negative_binary_base.py) * [Ipv4 Conversion](conversions/ipv4_conversion.py) * [Length Conversion](conversions/length_conversion.py) * [Molecular Chemistry](conversions/molecular_chemistry.py) + * [Negative Binary Base To Int](conversions/negative_binary_base_to_int.py) * [Octal To Binary](conversions/octal_to_binary.py) * [Octal To Decimal](conversions/octal_to_decimal.py) * [Octal To Hexadecimal](conversions/octal_to_hexadecimal.py) @@ -1570,6 +1572,8 @@ * [Covid Stats Via Xpath](web_programming/covid_stats_via_xpath.py) * [Crawl Google Results](web_programming/crawl_google_results.py) * [Crawl Google Scholar Citation](web_programming/crawl_google_scholar_citation.py) + * [Crypto Price](web_programming/crypto_price.py) + * [Crypto Price Tracker](web_programming/crypto_price_tracker.py) * [Currency Converter](web_programming/currency_converter.py) * [Current Stock Price](web_programming/current_stock_price.py) * [Current Weather](web_programming/current_weather.py) From 0511a828f42aed446f597191cd2dd064c3395bb2 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 16 Sep 2026 10:21:14 +0200 Subject: [PATCH 5/5] Correct JSON response handling in price tracker Fix incorrect variable reference for JSON response. --- web_programming/crypto_price_tracker.py | 1 - 1 file changed, 1 deletion(-) diff --git a/web_programming/crypto_price_tracker.py b/web_programming/crypto_price_tracker.py index 866f8ebb0aa9..514f352b5e6c 100644 --- a/web_programming/crypto_price_tracker.py +++ b/web_programming/crypto_price_tracker.py @@ -24,7 +24,6 @@ def crypto_price(coin: str = "bitcoin") -> float: url = f"https://api.coingecko.com/api/v3/simple/price?ids={coin}&vs_currencies=usd" try: json_response = httpx2.get(url, timeout=10).raise_for_status().json() - return float(response.json().get(coin, {}).get("usd", 0.0)) except httpx2.RequestError, ValueError, KeyError: return 0.0 return float(json_response.get(coin, {}).get("usd", 0.0))