 0f52d80ca6
			
		
	
	
	
	
	0f52d80ca6* Just commit it all * Require auth * crap * Update homepage * Block AI scrapers * Update cache update script * Add dummy file * Remove unnecessary lastfm config var * Use withQueryParameters for LastFM API * Fix embeds * Update example env * Smard
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers;
 | |
| 
 | |
| use Illuminate\Support\Facades\Cache;
 | |
| use Illuminate\Support\Facades\Config;
 | |
| use Illuminate\Support\Facades\Http;
 | |
| use Illuminate\View\View;
 | |
| 
 | |
| class MusicController extends Controller
 | |
| {
 | |
|     public function getCurrentTrack() {
 | |
|         // If it's already cached just return that
 | |
|         if (Cache::has('current_track')) {
 | |
|             return Cache::get('current_track');
 | |
|         }
 | |
| 
 | |
|         $response = Http::withQueryParameters([
 | |
|             'method' => 'user.getrecenttracks',
 | |
|             'user' => Config::get('services.lastfm.user'),
 | |
|             'format' => 'json',
 | |
|             'nowplaying' => 'true',
 | |
|             'api_key' => Config::get('services.lastfm.key')
 | |
|         ])->get('https://ws.audioscrobbler.com/2.0/');
 | |
|         $data = $response->json();
 | |
|         error_log($response->body());
 | |
|         $track_data = $data["recenttracks"]["track"][0];
 | |
|         $current_track = [
 | |
|             'title' => $track_data["name"],
 | |
|             'artist' => $track_data["artist"]["#text"],
 | |
|             'url' => $track_data["url"],
 | |
|         ];
 | |
|         Cache::put('current_track', $current_track, now()->addSeconds(15));
 | |
|         return $current_track;
 | |
|     }
 | |
| 
 | |
|     public function getTopTracks() {
 | |
|         // If it's already cached just return that
 | |
|         if (Cache::has('top_tracks')) {
 | |
|             return Cache::get('top_tracks');
 | |
|         }
 | |
| 
 | |
|         $response = Http::withQueryParameters([
 | |
|             'method' => 'user.gettoptracks',
 | |
|             'user' => Config::get('services.lastfm.user'),
 | |
|             'format' => 'json',
 | |
|             'period' => '1month',
 | |
|             'limit' => 10,
 | |
|             'api_key' => Config::get('services.lastfm.key')
 | |
|         ])->get('https://ws.audioscrobbler.com/2.0/');
 | |
|         $data = $response->json();
 | |
|         $topTracks = [];
 | |
|         foreach ($data["toptracks"]["track"] as $track) {
 | |
|             $topTracks[] = [
 | |
|                 'title' => $track["name"],
 | |
|                 'artist' => $track["artist"]["name"],
 | |
|                 'url' => $track["url"],
 | |
|                 'plays' => $track["playcount"],
 | |
|             ];
 | |
|         }
 | |
|         Cache::put('top_tracks', $topTracks, now()->addSeconds(15));
 | |
|         return $topTracks;
 | |
|     }
 | |
|     public function show() : View {
 | |
|         return view('music')
 | |
|             ->with('current_track', $this->getCurrentTrack())
 | |
|             ->with('top_tracks', $this->getTopTracks());
 | |
|     }
 | |
| }
 |