mirror of
https://github.com/maciejpedzich/spotifyplaylistarchive.com.git
synced 2024-09-19 18:16:19 +02:00
35 lines
1014 B
TypeScript
35 lines
1014 B
TypeScript
import { $fetch } from 'ohmyfetch';
|
|
import { Searcher } from 'fast-fuzzy';
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const query = useQuery(event);
|
|
const searchName = query.name as string;
|
|
|
|
if (!searchName || searchName.length < 3) return [];
|
|
|
|
const readmeFileContent = await $fetch<string>(
|
|
'https://raw.githubusercontent.com/mackorone/spotify-playlist-archive/main/playlists/index.md'
|
|
);
|
|
const [, playlistLinksMdList] = readmeFileContent.split(
|
|
/## Playlists \\\([0-9]*\\\)\n\n/gm
|
|
);
|
|
const archiveEntries = playlistLinksMdList
|
|
.replaceAll('- [', '')
|
|
.replaceAll('\\', '')
|
|
.replaceAll('](', ' ')
|
|
.replaceAll('.md)', '')
|
|
.split('\n')
|
|
.map((textEntry) => {
|
|
const [name, id] = textEntry.split(' /playlists/pretty/');
|
|
|
|
return { name, id };
|
|
});
|
|
|
|
const fuzzySearcher = new Searcher(archiveEntries, {
|
|
keySelector: (obj) => obj.name
|
|
});
|
|
const searchResults = fuzzySearcher.search(searchName).slice(0, 10);
|
|
|
|
return searchResults;
|
|
});
|