feat: update lastfm & weather to use internal API

This commit is contained in:
floppydiskette 2023-07-02 02:01:54 +01:00
parent c10d758474
commit 45fd1d23c4
Signed by: fwoppydwisk
SSH key fingerprint: SHA256:yXxSuswzElTluzXjKgvZK0bDGhTaj/XbArybRDr+Mfs
5 changed files with 84 additions and 23 deletions

View file

@ -29,3 +29,4 @@ MEMCACHED_HOST=127.0.0.1
LASTFM_KEY=
LASTFM_USER=
LASTFM_TOP_TRACKS=10
API_ROOT=http://127.0.0.1:3000

View file

@ -56,6 +56,7 @@
*/
'url' => env('APP_URL', 'http://localhost'),
'api_root' => env('API_ROOT', 'http://127.0.0.1:3000'),
'asset_url' => env('ASSET_URL'),

View file

@ -1,26 +1,25 @@
@php
$cfg = app('config')->get('services')['lastfm'];
$api_root = app('config')->get('app')['api_root'];
$current_response = json_decode(file_get_contents("https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=".$cfg['user']."&nowplaying=true&format=json&api_key=".$cfg['key']));
$nowplaying = $current_response->recenttracks->track[0];
$toptracks = json_decode(file_get_contents("https://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=".$cfg['user']."&format=json&period=7day&api_key=".$cfg['key']));
$tracks = $toptracks->toptracks->track;
$current_track = json_decode(file_get_contents($api_root.'/lastfm/current'));
$toptracks = json_decode(file_get_contents($api_root.'/lastfm/top'));
$count = 0;
@endphp
<h1>Last.fm <small>(<a href="https://www.last.fm/user/{{ $cfg['user']}}">Profile</a>)</small></h1>
<b>Last/Current Track:</b> <a href="{{ $nowplaying->url }}">{{ $nowplaying->name }} {{ $nowplaying->artist->{"#text"} }}</a>
<b>Last/Current Track:</b> <a href="{{ $current_track->url }}">{{ $current_track->name }} {{ $current_track->artist }}</a>
<h2>Top {{ $cfg['toptracks'] }} Tracks (Last 7 days)</h2>
<ol>
@foreach ($tracks as $track)
@foreach ($toptracks as $track)
@if ($count >= $cfg['toptracks'])
</ol>
@break
@endif
<li>
<a href="{{ $track->url }}">{{ $track->name }} {{ $track->artist->name }}</a>
<small>({{ $track->playcount }} plays)</small>
<a href="{{ $track->url }}">{{ $track->name }} {{ $track->artist }}</a>
<small>({{ $track->plays }} plays)</small>
</li>
@php $count++ @endphp
@endforeach

View file

@ -1,20 +1,22 @@
@php
function degreesToCompassDirection($degrees) {
$api_root = app('config')->get('app')['api_root'];
function degreesToCompassDirection($degrees) {
$cardinalDirections = [
'N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE',
'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N'
];
return $cardinalDirections[round($degrees*16/360)];
}
}
$data = json_decode(file_get_contents('http://weather.diskfloppy.me/data/weatherData.json'));
$updated = gmdate('H:i Y-m-d', intval(rtrim(file_get_contents('http://weather.diskfloppy.me/data/got.txt'))));
$data = $data->data->conditions[0];
$data = json_decode(file_get_contents($api_root.'/weather'));
$updated = gmdate('H:i Y-m-d', $data->updated);
$data = $data->data;
@endphp
<h1>Local Weather <small>(Last Update: {{ $updated }})</small></h1>
<b>Wind Speed:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ $data->wind_speed_last }} mph<br>
<b>Wind Direction:</b>&nbsp;{{ $data->wind_dir_last }}°, {{ degreesToCompassDirection($data->wind_dir_last) }}<br>
<b>Temperature:</b>&nbsp;&nbsp;&nbsp;&nbsp;{{ round(($data->temp-32)*(5/9), 1) }}°C<br>
<b>Rain Rate:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ round($data->rain_rate_last*0.2, 2) }} mm/hr<br>
<b>Humidity:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ round($data->hum) }}%<br>
<b>Wind Speed:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ $data->wind->speed }} mph<br>
<b>Wind Direction:</b>&nbsp;{{ $data->wind->direction->degrees }}°, {{ $data->wind->direction->cardinal }}<br>
<b>Temperature:</b>&nbsp;&nbsp;&nbsp;&nbsp;{{ $data->temperature }}°C<br>
<b>Rain Rate:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ $data->rain_rate }} mm/hr<br>
<b>Humidity:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ $data->humidity }}%<br>

View file

@ -0,0 +1,58 @@
@extends('layouts.default')
@section('title', 'misc / bad apple')
@section('description', '')
@section('content')
<h1>Bad Apple Ports</h1>
<h2>Apple II</h2>
- <a href="https://www.youtube.com/watch?v=X8osEgYzPNo">ekslong</a><br/>
<h2>Vectrex</h2>
<h2>Atari 2600</h2>
<h2>Windows 3.1</h2>
<h2>Gameboy</h2>
<h2>Windows XP</h2>
<h2>Ubuntu</h2>
<h2>IRL</h2>
<h2>TI-84+ SE</h2>
<h2>Sega Megadrive</h2>
<h2>DOS</h2>
<h2>IBM PC/XT</h2>
<h2>Gameboy Color</h2>
<h2>CASIO fx-9750GII</h2>
<h2>Ti-nspire</h2>
<h2>Pokemon Mini</h2>
<h2>IBM PC/AT</h2>
<h2>NEC PC-6601</h2>
<h2>Toshiba T3200</h2>
<h2>BBC Micro (Teletext)</h2>
<h2>Nintendo 64</h2>
<h2>Commodore 64</h2>
<h2>NES</h2>
<h2>Impulse Tracker</h2>
<h2>Neo Geo</h2>
<h2>iPod mini</h2>
<h2>Factorio</h2>
<h2>KY-01L</h2>
<h2>Launchpad</h2>
<h2>ILDA Laser Projector</h2>
<h2>896-core Processor</h2>
<h2>Threadripper 3990X</h2>
<h2>Desmos</h2>
<h2>MS Word 1.x</h2>
<h2>Apple Watch</h2>
<h2>Intellivision</h2>
<h2>Minecraft Sheep</h2>
<h2>VSCode Auto-formatter</h2>
<h2>ZX Spectrum</h2>
<h2>Oscilloscopes</h2>
<h2>HTML Checkboxes</h2>
<h2>Phosphor Screen</h2>
<h2>CS:GO</h2>
<h2>Hand-drawn RISC-V CPU</h2>
<h2>3D Printer</h2>
<h2>E-paper display</h2>
<h2>32K EEPROM</h2>
<h2>UVB-76</h2>
<h2>OS/400 (IBM i)</h2>
<h2>plan9 (rio)</h2>
@stop