Fix bandcamp source and images on about.

This commit is contained in:
Bradley Shellnut 2023-04-09 14:03:13 -07:00
parent dead3073f5
commit 1ef2acba4b
2 changed files with 26 additions and 29 deletions

View file

@ -1,6 +1,6 @@
import { BANDCAMP_USERNAME, USE_REDIS_CACHE } from '$env/static/private'; import { BANDCAMP_USERNAME, USE_REDIS_CACHE } from '$env/static/private';
import scrapeIt from 'scrape-it'; import scrapeIt from 'scrape-it';
import type { ScrapeResult, ScrapeOptions } from 'scrape-it'; import type { ScrapeResult } from 'scrape-it';
import { redis } from '../server/redis'; import { redis } from '../server/redis';
import type { Album } from '../types/album'; import type { Album } from '../types/album';
@ -14,36 +14,33 @@ export async function fetchBandcampAlbums() {
console.log(`Cache hit!`); console.log(`Cache hit!`);
const ttl = await redis.ttl('bandcampAlbums'); const ttl = await redis.ttl('bandcampAlbums');
return { ttl, response }; return response;
} }
} }
const scrapeItOptions: ScrapeOptions = { const { data }: ScrapeResult<Album[]> = await scrapeIt(
collectionItems: { `https://bandcamp.com/${BANDCAMP_USERNAME}`,
listItem: '.collection-item-container', {
data: { collectionItems: {
url: { listItem: '.collection-item-container',
selector: '.collection-title-details > a.item-link', data: {
attr: 'href' url: {
}, selector: '.collection-title-details > a.item-link',
artwork: { attr: 'href'
selector: 'div.collection-item-art-container a img', },
attr: 'src' artwork: {
}, selector: 'div.collection-item-art-container a img',
title: { attr: 'src'
selector: 'span.item-link-alt > div.collection-item-title' },
}, title: {
artist: { selector: 'span.item-link-alt > div.collection-item-title'
selector: 'span.item-link-alt > div.collection-item-artist' },
artist: {
selector: 'span.item-link-alt > div.collection-item-artist'
}
} }
} }
} }
};
// TODO: Add cache for results
const { data }: ScrapeResult<Album[]> = await scrapeIt(
`https://bandcamp.com/${BANDCAMP_USERNAME}`,
scrapeItOptions
); );
const albums: Album[] = data?.collectionItems || []; const albums: Album[] = data?.collectionItems || [];
@ -55,7 +52,7 @@ export async function fetchBandcampAlbums() {
} }
return albums; return albums;
} else { } else {
return []; // TODO: Add ttl for cache return [];
} }
} catch (error) { } catch (error) {
console.error(error); console.error(error);

View file

@ -9,9 +9,9 @@
import Remix from '@iconify-icons/simple-icons/remix'; import Remix from '@iconify-icons/simple-icons/remix';
import Svelte from '@iconify-icons/simple-icons/svelte'; import Svelte from '@iconify-icons/simple-icons/svelte';
import TypeScript from '@iconify-icons/simple-icons/typescript'; import TypeScript from '@iconify-icons/simple-icons/typescript';
import space_needle from '$lib/assets/images/space-needle.png?format=webp;avif;png&metadata?run'; import space_needle from '$lib/assets/images/space-needle.png?run';
import tortie_derp from '$lib/assets/images/tortie_derp.jpg?format=webp;avif;jpg&metadata?run'; import tortie_derp from '$lib/assets/images/tortie_derp.jpg?run';
import orange_derp from '$lib/assets/images/orange_derp.jpg?format=webp;avif;jpg&metadata?run'; import orange_derp from '$lib/assets/images/orange_derp.jpg?run';
import Tag from '$root/lib/components/Tag.svelte'; import Tag from '$root/lib/components/Tag.svelte';
import ExternalLink from '$root/lib/components/ExternalLink.svelte'; import ExternalLink from '$root/lib/components/ExternalLink.svelte';
</script> </script>