moved services from config.js into their own services.js

This commit is contained in:
dylan 2025-12-28 16:52:26 +00:00
parent 7e9be02de6
commit b3b8658b72
2 changed files with 149 additions and 57 deletions

View file

@ -1,60 +1,7 @@
import { import { services } from './services.js'
getJsonFeedItemContent,
getJsonFeedItemTitle,
getLetterboxdActivity,
getMalojaScrobble,
getMastodonPost,
getReadingBooklogr,
getRSSItemTitle,
getTraktEpisode,
getTraktMovie,
htmlLinkRegex,
} from './utils.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 linkFormat = 'html'
export const items = [ // filter to only active services - edit services.js to toggle isActive or customise
{ export const items = services.filter((s) => s.isActive)
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),
},
]

145
services.js Normal file
View file

@ -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',
},
]