feat: update lastfm & weather to use internal API
This commit is contained in:
parent
c10d758474
commit
45fd1d23c4
5 changed files with 84 additions and 23 deletions
|
@ -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
|
||||
|
|
|
@ -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'),
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
@php
|
||||
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)];
|
||||
}
|
||||
$api_root = app('config')->get('app')['api_root'];
|
||||
|
||||
$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];
|
||||
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($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> {{ $data->wind_speed_last }} mph<br>
|
||||
<b>Wind Direction:</b> {{ $data->wind_dir_last }}°, {{ degreesToCompassDirection($data->wind_dir_last) }}<br>
|
||||
<b>Temperature:</b> {{ round(($data->temp-32)*(5/9), 1) }}°C<br>
|
||||
<b>Rain Rate:</b> {{ round($data->rain_rate_last*0.2, 2) }} mm/hr<br>
|
||||
<b>Humidity:</b> {{ round($data->hum) }}%<br>
|
||||
<b>Wind Speed:</b> {{ $data->wind->speed }} mph<br>
|
||||
<b>Wind Direction:</b> {{ $data->wind->direction->degrees }}°, {{ $data->wind->direction->cardinal }}<br>
|
||||
<b>Temperature:</b> {{ $data->temperature }}°C<br>
|
||||
<b>Rain Rate:</b> {{ $data->rain_rate }} mm/hr<br>
|
||||
<b>Humidity:</b> {{ $data->humidity }}%<br>
|
||||
|
|
58
resources/views/pages/misc/badapple.blade.php
Normal file
58
resources/views/pages/misc/badapple.blade.php
Normal 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
|
Loading…
Reference in a new issue