diff --git a/scripts/watch-crypto-rates.ps1 b/scripts/watch-crypto-rates.ps1 new file mode 100644 index 00000000..d5ef291e --- /dev/null +++ b/scripts/watch-crypto-rates.ps1 @@ -0,0 +1,61 @@ +<# +.SYNOPSIS + Watches crypto rates +.DESCRIPTION + This PowerShell script queries the current crypto exchange rates from cryptocompare.com and lists it in USD/EUR/CNY/JPY. +.EXAMPLE + PS> ./watch-crypto-rates.ps1 + + CRYPTOCURRENCY USD EUR CNY JPY + -------------- --- --- --- --- + 1 Bitcoin (BTC) = 97309.81 94385.57 38800 14798679.56 + ... +.LINK + https://github.com/fleschutz/PowerShell +.NOTES + Author: Markus Fleschutz | License: CC0 +#> + +function ListCryptoRate { param([string]$Symbol, [string]$Name) + $rates = (Invoke-WebRequest -URI "https://min-api.cryptocompare.com/data/price?fsym=$Symbol&tsyms=USD,EUR,CNY,JPY" -userAgent "curl" -useBasicParsing).Content | ConvertFrom-Json + New-Object PSObject -property @{ 'CRYPTOCURRENCY' = "1 $Symbol ($Name) ="; 'USD' = "$($rates.USD)"; 'EUR' = "$($rates.EUR)"; 'CNY' = "$($rates.CNY)"; 'JPY' = "$($rates.JPY)" } +} + +function ListCryptoRates { + ListCryptoRate ADA "Cardano" + ListCryptoRate AVAX "Avalanche" + ListCryptoRate BCH "Bitcoin Cash" + ListCryptoRate BNB "Binance Coin" + ListCryptoRate BTC "Bitcoin" + ListCryptoRate BUSD "Binance USD" + ListCryptoRate DOGE "Dogecoin" + ListCryptoRate DOT "Polkadot" + ListCryptoRate GALA "Gala" + ListCryptoRate ETH "Ethereum" + ListCryptoRate LINK "Chainlink" + ListCryptoRate LTC "Litecoin" + ListCryptoRate LUNA "Terra" + ListCryptoRate MATIC "Polygon" + ListCryptoRate SOL "Solana" + ListCryptoRate SUI "Sui" + ListCryptoRate TRUMP "Official Trump" + ListCryptoRate WBTC "Wrapped Bitcoin" + ListCryptoRate XLM "Stellar" + ListCryptoRate XRP "XRP" + ListCryptoRate UNI "Uniswap" + ListCryptoRate USDC "USD Coin" + ListCryptoRate USDT "Tether" +} + +try { + do { + Clear-Host + ListCryptoRates | Format-Table -property @{e='CRYPTOCURRENCY';width=28},USD,EUR,CNY,JPY + Write-Host "(by https://www.cryptocompare.com • Crypto is volatile and unregulated • Capital at risk • Taxes may apply)" + Start-Sleep -milliseconds 20000 + } while ($true) + exit 0 # success +} catch { + "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" + exit 1 +}