diff --git a/config.js b/config.js index d5cd3f3..f440cca 100644 --- a/config.js +++ b/config.js @@ -1,60 +1,7 @@ -import { - getJsonFeedItemContent, - getJsonFeedItemTitle, - getLetterboxdActivity, - getMalojaScrobble, - getMastodonPost, - getReadingBooklogr, - getRSSItemTitle, - getTraktEpisode, - getTraktMovie, - htmlLinkRegex, -} from './utils.js' +import { services } from './services.js' -// Set to 'html' for HTML links or 'markdown' for markdown links +// set to 'html' for HTML links or 'markdown' for markdown links export const linkFormat = 'html' -export const items = [ - { - id: 'blog', - regex: htmlLinkRegex('dylan.weblog.lol'), - getLatest: async () => - getJsonFeedItemTitle('https://dylan.weblog.lol/feed.json'), - }, - { - id: 'pics', - regex: htmlLinkRegex('some.pics'), - getLatest: async () => - getRSSItemTitle('https://dylan.some.pics/rss'), - }, - { - id: 'lastfm', - regex: htmlLinkRegex('www.last.fm/music'), - getLatest: async () => - getRSSItemTitle('https://lfm.xiffy.nl/lookathimthere'), - }, - { - id: 'mastodon', - regex: htmlLinkRegex('social.lol/@dylan'), - getLatest: async () => - getMastodonPost('https://social.lol/@dylan.rss'), - }, - { - id: 'letterboxd', - regex: htmlLinkRegex('letterboxd.com/STFUDonny'), - getLatest: async () => - getLetterboxdActivity('stfudonny', false), - }, - { - id: 'trakt-episode', - regex: htmlLinkRegex('trakt.tv/episodes'), - getLatest: async () => - getTraktEpisode('crankle', '78e1e87b446901f7e4f0883dd4995cec', false), - }, - { - id: 'trakt-movie', - regex: htmlLinkRegex('trakt.tv/movies'), - getLatest: async () => - getTraktMovie('crankle', '78e1e87b446901f7e4f0883dd4995cec', false), - }, -] +// filter to only active services - edit services.js to toggle isActive or customise +export const items = services.filter((s) => s.isActive) diff --git a/services.js b/services.js new file mode 100644 index 0000000..34aab01 --- /dev/null +++ b/services.js @@ -0,0 +1,145 @@ +// just flip isActive to true/false to enable/disable services +// customise usernames/URLs/IDs for each service + +export const services = [ + // ======================================================================== + // omg.lol services + // ======================================================================== + { + id: 'weblog', + isActive: true, + userId: 'dylan', // your omg.lol username + feedUrlTemplate: 'https://{userId}.weblog.lol/feed.json', + feedType: 'json', + }, + { + id: 'some.pics', + isActive: true, + userId: 'dylan', // your omg.lol username + feedUrlTemplate: 'https://{userId}.some.pics/rss', + feedType: 'rss', + }, + + // ======================================================================== + // music + // ======================================================================== + { + id: 'lastfm', + isActive: true, + userId: 'lookathimthere', // your last.fm username + feedUrlTemplate: 'https://lfm.xiffy.nl/{userId}', + feedType: 'rss', + }, + { + id: 'listenbrainz', + isActive: false, + userId: 'your-username', // your listenbrainz username + feedUrlTemplate: 'https://api.listenbrainz.org/1/user/{userId}/listens?count=1', + feedType: 'listenbrainz', + }, + + // ======================================================================== + // social media + // ======================================================================== + { + id: 'mastodon', + isActive: true, + userId: 'dylan', // your mastodon username + instance: 'social.lol', // your mastodon instance + feedUrlTemplate: 'https://{instance}/@{userId}.rss', + feedType: 'mastodon', + }, + { + id: 'pixelfed', + isActive: false, + userId: 'your-username', // your pixelfed username + instance: 'pixelfed.instance', // your pixelfed instance + feedUrlTemplate: 'https://{instance}/@{userId}.atom', + feedType: 'atom', + }, + { + id: 'bluesky', + isActive: false, + userId: 'your-handle.bsky.social', // your bluesky handle + feedUrlTemplate: 'https://bsky.app/profile/{userId}/rss', + feedType: 'rss', + }, + + // ======================================================================== + // movies & tv + // ======================================================================== + { + id: 'letterboxd', + isActive: true, + userId: 'stfudonny', // your letterboxd username + feedUrlTemplate: 'https://letterboxd.com/{userId}/rss/', + feedType: 'letterboxd', + showImage: false, + }, + { + id: 'trakt-episode', + isActive: true, + userId: 'crankle', // your trakt username + traktId: '78e1e87b446901f7e4f0883dd4995cec', // your trakt ID + feedType: 'trakt-episode', + showImage: false, + }, + { + id: 'trakt-movie', + isActive: true, + userId: 'crankle', // your trakt username + traktId: '78e1e87b446901f7e4f0883dd4995cec', // your trakt ID + feedType: 'trakt-movie', + showImage: false, + }, + + // ======================================================================== + // books + // ======================================================================== + { + id: 'hardcover', + isActive: true, + userId: 'itsdylan', // your hardcover username + feedUrl: 'https://hardcover.app/api/graphql', + feedType: 'hardcover', + }, + + // ======================================================================== + // gaming + // ======================================================================== + { + id: 'steam', + isActive: true, + userId: '76561198022952207', // your steam ID 64 (not username) - convert at steamid.io + feedType: 'steam', + }, + + // ======================================================================== + // code & development + // ======================================================================== + { + id: 'source.tube', + isActive: true, + userId: 'dylan', // your source.tube username + feedUrlTemplate: 'https://source.tube/{userId}.rss', + feedType: 'source.tube', + }, + + // ======================================================================== + // content creation + // ======================================================================== + { + id: 'youtube', + isActive: false, + userId: 'UC_your_channel_id', // your youtube channel ID (starts with UC, not your username) + feedUrlTemplate: 'https://www.youtube.com/feeds/videos.xml?channel_id={userId}', + feedType: 'atom', + }, + { + id: 'twitch', + isActive: false, + userId: 'your-channel', // your twitch channel name + feedUrlTemplate: 'https://twitchrss.appspot.com/vod/{userId}', + feedType: 'rss', + }, +]