+77
-4
Cargo.lock
+77
-4
Cargo.lock
·························································
+1
crates/analytics/Cargo.toml
+1
crates/analytics/Cargo.toml
+2
-2
crates/analytics/src/cmd/serve.rs
+2
-2
crates/analytics/src/cmd/serve.rs
······
+37
-84
crates/analytics/src/core.rs
+37
-84
crates/analytics/src/core.rs
···························+tracing::info!(scrobble = i, uri = %scrobble.uri.clone().unwrap_or_else(|| "None".to_string()).bright_green());······+tracing::info!(album_track = i, album_id = %album_track.album_id.bright_green(), track_id = %album_track.track_id);······+tracing::info!(loved_track = i, user_id = %loved_track.user_id.bright_green(), track_id = %loved_track.track_id);······+tracing::info!(artist_track = i, artist_id = %artist_track.artist_id.bright_green(), track_id = %artist_track.track_id);······+tracing::info!(artist_album = i, artist_id = %artist_album.artist_id.bright_green(), album_id = %artist_album.album_id);······+tracing::info!(user_album = i, user_id = %user_album.user_id.bright_green(), album_id = %user_album.album_id);······+tracing::info!(user_artist = i, user_id = %user_artist.user_id.bright_green(), artist_id = %user_artist.artist_id);······+tracing::info!(user_track = i, user_id = %user_track.user_id.bright_green(), track_id = %user_track.track_id);···
+4
crates/analytics/src/handlers/albums.rs
+4
crates/analytics/src/handlers/albums.rs
·········
+2
crates/analytics/src/handlers/artists.rs
+2
crates/analytics/src/handlers/artists.rs
······
+2
crates/analytics/src/handlers/scrobbles.rs
+2
crates/analytics/src/handlers/scrobbles.rs
······
+8
crates/analytics/src/handlers/stats.rs
+8
crates/analytics/src/handlers/stats.rs
···let mut stmt = conn.prepare("SELECT COUNT(*) FROM scrobbles s LEFT JOIN users u ON s.user_id = u.id WHERE u.did = ? OR u.handle = ?")?;············+tracing::info!(album_id = %params.album_id, start = %start, end = %end, "Get album scrobbles");···+tracing::info!(artist_id = %params.artist_id, start = %start, end = %end, "Get artist scrobbles");···+tracing::info!(track_id = %params.track_id, start = %start, end = %end, "Get track scrobbles");
+3
crates/analytics/src/handlers/tracks.rs
+3
crates/analytics/src/handlers/tracks.rs
·········
+1
crates/dropbox/Cargo.toml
+1
crates/dropbox/Cargo.toml
+1
crates/googledrive/Cargo.toml
+1
crates/googledrive/Cargo.toml
+1
crates/jetstream/Cargo.toml
+1
crates/jetstream/Cargo.toml
+1
crates/playlists/Cargo.toml
+1
crates/playlists/Cargo.toml
+4
crates/rockskyd/Cargo.toml
+4
crates/rockskyd/Cargo.toml
+12
crates/rockskyd/src/main.rs
+12
crates/rockskyd/src/main.rs
······
+1
crates/spotify/Cargo.toml
+1
crates/spotify/Cargo.toml
+1
crates/storage/Cargo.toml
+1
crates/storage/Cargo.toml
+1
crates/tracklist/Cargo.toml
+1
crates/tracklist/Cargo.toml
+2
-2
crates/dropbox/src/cmd/serve.rs
+2
-2
crates/dropbox/src/cmd/serve.rs
······
+8
crates/dropbox/src/handlers/files.rs
+8
crates/dropbox/src/handlers/files.rs
············+tracing::info!(did = %params.did.bright_green(), path = %params.path.bright_green(), "dropbox.getFilesAt");···+tracing::info!(did = %params.did.bright_green(), path = %params.path.bright_green(), "dropbox.downloadFile");···+tracing::info!(did = %params.did.bright_green(), path = %params.path.bright_green(), "dropbox.getTemporaryLink");···+tracing::info!(did = %params.did.bright_green(), path = %params.path.bright_green(), "dropbox.getMetadata");···+tracing::info!(did = %params.did.bright_green(), path = %params.path.bright_green(), "dropbox.scanFolder");
+60
-74
crates/dropbox/src/scan.rs
+60
-74
crates/dropbox/src/scan.rs
·········+tracing::error!(path = %tmppath.clone().display().to_string().bright_red(), "Error reading file: {}", e);···+tracing::error!(path = %tmppath.clone().display().to_string().bright_red(), "No tag found in file");···············+tracing::error!(path = %path.display().to_string().bright_red(), "Error probing file: {}", e);
+2
-2
crates/googledrive/src/cmd/serve.rs
+2
-2
crates/googledrive/src/cmd/serve.rs
······
+6
-1
crates/googledrive/src/repo/google_drive_path.rs
+6
-1
crates/googledrive/src/repo/google_drive_path.rs
······
+27
-79
crates/googledrive/src/scan.rs
+27
-79
crates/googledrive/src/scan.rs
·········+tracing::warn!(file = %file.name.bright_green(), error = %e, "Failed to open file with lofty");···+tracing::info!(title = %tag.get_string(&lofty::tag::ItemKey::TrackTitle).unwrap_or_default(), "Title");+tracing::info!(artist = %tag.get_string(&lofty::tag::ItemKey::TrackArtist).unwrap_or_default(), "Artist");+tracing::info!(album_artist = %tag.get_string(&lofty::tag::ItemKey::AlbumArtist).unwrap_or_default(), "Album artist");+tracing::info!(album = %tag.get_string(&lofty::tag::ItemKey::AlbumTitle).unwrap_or_default(), "Album");+tracing::info!(lyrics = %tag.get_string(&lofty::tag::ItemKey::Lyrics).unwrap_or_default(), "Lyrics");+tracing::info!(release_date = %tag.get_string(&lofty::tag::ItemKey::OriginalReleaseDate).unwrap_or_default(), "Release date");+tracing::info!(recording_date = %tag.get_string(&lofty::tag::ItemKey::RecordingDate).unwrap_or_default(), "Recording date");+tracing::info!(copyright = %tag.get_string(&lofty::tag::ItemKey::CopyrightMessage).unwrap_or_default(), "Copyright message");··················
+6
-9
crates/jetstream/src/subscriber.rs
+6
-9
crates/jetstream/src/subscriber.rs
······
+2
-2
crates/jetstream/src/webhook/discord/mod.rs
+2
-2
crates/jetstream/src/webhook/discord/mod.rs
······
+2
-2
crates/jetstream/src/webhook_worker.rs
+2
-2
crates/jetstream/src/webhook_worker.rs
······
+1
-1
crates/scrobbler/src/auth.rs
+1
-1
crates/scrobbler/src/auth.rs
···
+1
-1
crates/scrobbler/src/handlers/v1/nowplaying.rs
+1
-1
crates/scrobbler/src/handlers/v1/nowplaying.rs
···
+1
-4
crates/scrobbler/src/lib.rs
+1
-4
crates/scrobbler/src/lib.rs
···+tracing::info!(url = %format!("http://{}:{}", host, port).bright_green(), "Starting Scrobble server @");
+2
-8
crates/scrobbler/src/listenbrainz/core/submit.rs
+2
-8
crates/scrobbler/src/listenbrainz/core/submit.rs
······+tracing::error!(error = %e, attempt = attempt, "Retryable error submitting listens for {} - {} (attempt {}/{})", artist, track, attempt, RETRIES);
+1
-1
crates/scrobbler/src/listenbrainz/core/validate_token.rs
+1
-1
crates/scrobbler/src/listenbrainz/core/validate_token.rs
+12
-13
crates/scrobbler/src/listenbrainz/handlers.rs
+12
-13
crates/scrobbler/src/listenbrainz/handlers.rs
·································
+3
-4
crates/scrobbler/src/rocksky.rs
+3
-4
crates/scrobbler/src/rocksky.rs
······+tracing::info!(did = %did, artist = %track.artist, track = %track.title, status = %status, "Scrobble response");
+2
-10
crates/scrobbler/src/spotify/client.rs
+2
-10
crates/scrobbler/src/spotify/client.rs
···+tracing::info!(retry_after = %headers.get("retry-after").unwrap().to_str().unwrap(), data = %data, "Rate limited on get_album");···+tracing::info!(retry_after = %headers.get("retry-after").unwrap().to_str().unwrap(), data = %data, "Rate limited on get_artist");
+7
-14
crates/webscrobbler/src/handlers.rs
+7
-14
crates/webscrobbler/src/handlers.rs
············+tracing::error!(artist = %artist, track = %track, error = %cached.unwrap_err(), "Failed to check cache for Emby scrobble");
+1
-4
crates/webscrobbler/src/lib.rs
+1
-4
crates/webscrobbler/src/lib.rs
···+tracing::info!(url = %format!("http://{}:{}", host, port).bright_green(), "Starting WebScrobbler server @");
+4
-8
crates/webscrobbler/src/rocksky.rs
+4
-8
crates/webscrobbler/src/rocksky.rs
·········+tracing::error!(did = %did, artist = %track.artist, track = %track.title, status = %response.status(), "Failed to scrobble track");
+4
-9
crates/webscrobbler/src/scrobbler.rs
+4
-9
crates/webscrobbler/src/scrobbler.rs
···+tracing::info!(artist = %scrobble.data.song.parsed.artist, track = %scrobble.data.song.parsed.track, "Using cached track");······+tracing::warn!(artist = %scrobble.data.song.parsed.artist, track = %scrobble.data.song.parsed.track, "Track not found, skipping");
+2
-10
crates/webscrobbler/src/spotify/client.rs
+2
-10
crates/webscrobbler/src/spotify/client.rs
···+tracing::info!(retry_after = %headers.get("retry-after").unwrap().to_str().unwrap(), data = %data, "Rate limited on get_album");···+tracing::info!(retry_after = %headers.get("retry-after").unwrap().to_str().unwrap(), data = %data, "Rate limited on get_artist");
-50
crates/analytics/src/main.rs
-50
crates/analytics/src/main.rs
···
-37
crates/dropbox/src/main.rs
-37
crates/dropbox/src/main.rs
···
-37
crates/googledrive/src/main.rs
-37
crates/googledrive/src/main.rs
···
-37
crates/jetstream/src/main.rs
-37
crates/jetstream/src/main.rs
···-let redis_url = env::var("REDIS_URL").unwrap_or_else(|_| "redis://127.0.0.1:6379".to_string());
-65
crates/playlists/src/main.rs
-65
crates/playlists/src/main.rs
···-CREATE UNIQUE INDEX IF NOT EXISTS user_playlists_unique_index ON user_playlists (user_id, playlist_id)