Skip to content

Commit 1c513eb

Browse files
committed
update now
1 parent 3e3db30 commit 1c513eb

File tree

7 files changed

+86
-212
lines changed

7 files changed

+86
-212
lines changed

.github/workflows/deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ env:
88
SPOTIFY_CLIENT_ID: ${{ secrets.SPOTIFY_CLIENT_ID }}
99
SPOTIFY_CLIENT_SECRET: ${{ secrets.SPOTIFY_CLIENT_SECRET }}
1010
ZM_API: ${{ secrets.ZM_API }}
11+
SUPABASE_USER_API_KEY: ${{ secrets.SUPABASE_USER_API_KEY }}
1112

1213
on:
1314
schedule:
@@ -38,4 +39,3 @@ jobs:
3839
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
3940
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
4041
command: pages deploy dist --project-name=zander-wtf
41-
# gitHubToken: ${{ secrets.GITHUB_TOKEN }}

src/fetching/apis.rest

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# This file can be used to test the API locally in conjunction with the REST Client VS Code extension.
2+
# https://marketplace.visualstudio.com/items?itemName=humao.rest-client
3+
4+
# Variables
5+
@otter_base_url = http://localhost:5678/api
6+
@token = {{$dotenv SUPABASE_USER_API_KEY}}
7+
8+
# Get media with per-status limit
9+
GET {{otter_base_url}}/media?limit=3
10+
Authorization: Bearer {{token}}

src/fetching/books.ts

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/fetching/media.ts

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import axios from 'axios';
2+
import urlJoin from 'proper-url-join';
3+
import type { NowMediaItem } from 'src/types';
4+
5+
type Enums = {
6+
media_rating:
7+
| '0'
8+
| '0.5'
9+
| '1'
10+
| '1.5'
11+
| '2'
12+
| '2.5'
13+
| '3'
14+
| '3.5'
15+
| '4'
16+
| '4.5'
17+
| '5';
18+
media_status: 'now' | 'skipped' | 'done' | 'wishlist';
19+
media_type: 'tv' | 'film' | 'game' | 'book' | 'podcast' | 'music' | 'other';
20+
};
21+
export interface Media {
22+
created_at: string;
23+
id: number;
24+
media_id: string | null;
25+
modified_at: string | null;
26+
name: string;
27+
platform: string | null;
28+
rating: Enums['media_rating'] | null;
29+
sort_order: number | null;
30+
status: Enums['media_status'] | null;
31+
type: Enums['media_type'] | null;
32+
image?: string;
33+
}
34+
35+
type MediaByStatus = Record<Enums['media_status'], Media[]>;
36+
type MediaResponse = Record<Enums['media_type'], MediaByStatus>;
37+
38+
export const fetchMedia = async (): Promise<MediaResponse> => {
39+
const path = urlJoin('https://otter3.zander.wtf/api/media', {
40+
query: {
41+
user: import.meta.env.SUPABASE_USER_ID || '',
42+
},
43+
});
44+
const mediaResponse = await axios.get<MediaResponse>(path, {
45+
headers: {
46+
Authorization: `Bearer ${import.meta.env.SUPABASE_USER_API_KEY}`,
47+
},
48+
});
49+
return mediaResponse.data;
50+
};
51+
52+
export const transformMediaToNow = (media: MediaByStatus): NowMediaItem[] => {
53+
let items = media.now ?? [];
54+
const doneItems = media.done;
55+
if (items.length < 5) {
56+
items.push(...doneItems.slice(0, 5 - items.length));
57+
}
58+
59+
return items.map((item) => ({
60+
title: item.name,
61+
image: item?.image ?? '',
62+
rating: item?.rating ?? undefined,
63+
}));
64+
};

src/fetching/podcasts.ts

Lines changed: 0 additions & 47 deletions
This file was deleted.

src/fetching/tv.ts

Lines changed: 0 additions & 85 deletions
This file was deleted.

src/pages/now.astro

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,29 @@ import NowMedia from '~/components/NowMedia.astro';
44
import { SITE_METADATA } from 'src/consts';
55
import { fetchMovies, transformMoviesToNow } from 'src/fetching/movies';
66
import { fetchMusic, transformMusicToNow } from 'src/fetching/music';
7-
import { fetchShows, transformShowsToNow } from 'src/fetching/tv';
8-
import { fetchPodcasts } from 'src/fetching/podcasts';
9-
import { fetchBooks, transformBooksToNow } from 'src/fetching/books';
7+
import { fetchMedia, transformMediaToNow } from 'src/fetching/media';
108
import type { NowMediaItem } from 'src/types';
119
1210
const slug = 'now';
1311
1412
let transformedMovies: NowMediaItem[] = [];
15-
let transformedShows: NowMediaItem[] = [];
13+
let tv: NowMediaItem[] = [];
1614
let transformedMusicArtists: NowMediaItem[] = [];
1715
let transformedMusicAlbums: NowMediaItem[] = [];
1816
let podcasts: NowMediaItem[] = [];
1917
let books: NowMediaItem[] = [];
2018
2119
try {
22-
const movies = await fetchMovies(5);
23-
transformedMovies = transformMoviesToNow(movies);
20+
const media = await fetchMedia();
21+
books = transformMediaToNow(media.book);
22+
tv = transformMediaToNow(media.tv);
23+
podcasts = transformMediaToNow(media.podcast);
2424
} catch (err) {
2525
console.error(err);
2626
}
2727
try {
28-
const shows = await fetchShows();
29-
transformedShows = transformShowsToNow(shows);
28+
const movies = await fetchMovies(5);
29+
transformedMovies = transformMoviesToNow(movies);
3030
} catch (err) {
3131
console.error(err);
3232
}
@@ -38,18 +38,6 @@ try {
3838
} catch (err) {
3939
console.error(err);
4040
}
41-
42-
try {
43-
podcasts = await fetchPodcasts(5);
44-
} catch (err) {
45-
console.error(err);
46-
}
47-
48-
try {
49-
books = await fetchBooks(5);
50-
} catch (err) {
51-
console.error(err);
52-
}
5341
---
5442

5543
<PageLayout
@@ -64,10 +52,10 @@ try {
6452
</p>
6553
<h2>Watching</h2>
6654
{transformedMovies?.length ? (<NowMedia title="Movies" items={transformedMovies} />) : null}
67-
{transformedShows?.length ? (<NowMedia title="TV Shows" items={transformedShows} />) : null}
55+
{tv?.length ? (<NowMedia title="TV Shows" items={tv} />) : null}
6856
<h2>Listening</h2>
69-
{transformedMusicAlbums?.length ? (<NowMedia title="Top albums" items={transformedMusicAlbums} showInfo square />) : null}
70-
{transformedMusicArtists?.length ? (<NowMedia title="Top artists" items={transformedMusicArtists} showInfo square />) : null}
57+
{transformedMusicAlbums?.length ? (<NowMedia title="Top albums" items={transformedMusicAlbums} square />) : null}
58+
{transformedMusicArtists?.length ? (<NowMedia title="Top artists" items={transformedMusicArtists} square />) : null}
7159
{podcasts?.length ? (<NowMedia title="Podcasts" items={podcasts} square />) : null}
7260
<h2>Reading</h2>
7361
{books?.length ? (<NowMedia title="Books" items={books} />) : null}

0 commit comments

Comments
 (0)