podverse-parser 1.0.0 → 5.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nvmrc +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -81
- package/dist/lib/chapters/chapters.d.ts +3 -0
- package/dist/lib/chapters/chapters.d.ts.map +1 -0
- package/dist/lib/chapters/chapters.js +59 -0
- package/dist/lib/compat/channel.d.ts +108 -0
- package/dist/lib/compat/channel.d.ts.map +1 -0
- package/dist/lib/compat/channel.js +279 -0
- package/dist/lib/compat/chapters/chapters.d.ts +11 -0
- package/dist/lib/compat/chapters/chapters.d.ts.map +1 -0
- package/dist/lib/compat/chapters/chapters.js +16 -0
- package/dist/lib/compat/partytime/channel.d.ts +110 -0
- package/dist/lib/compat/partytime/channel.d.ts.map +1 -0
- package/dist/lib/compat/partytime/channel.js +281 -0
- package/dist/lib/compat/partytime/compatFull.d.ts +6 -0
- package/dist/lib/compat/partytime/compatFull.d.ts.map +1 -0
- package/dist/lib/compat/partytime/compatFull.js +11 -0
- package/dist/lib/compat/partytime/funding.d.ts +6 -0
- package/dist/lib/compat/partytime/funding.d.ts.map +1 -0
- package/dist/lib/compat/partytime/funding.js +10 -0
- package/dist/lib/compat/partytime/item.d.ts +146 -0
- package/dist/lib/compat/partytime/item.d.ts.map +1 -0
- package/dist/lib/compat/partytime/item.js +264 -0
- package/dist/lib/compat/partytime/liveItem.d.ts +11 -0
- package/dist/lib/compat/partytime/liveItem.d.ts.map +1 -0
- package/dist/lib/compat/partytime/liveItem.js +20 -0
- package/dist/lib/compat/partytime/value.d.ts +62 -0
- package/dist/lib/compat/partytime/value.d.ts.map +1 -0
- package/dist/lib/compat/partytime/value.js +69 -0
- package/dist/lib/rss/base/handleParsedManyData.d.ts +7 -0
- package/dist/lib/rss/base/handleParsedManyData.d.ts.map +1 -0
- package/dist/lib/rss/base/handleParsedManyData.js +21 -0
- package/dist/lib/rss/base/handleParsedOneData.d.ts +7 -0
- package/dist/lib/rss/base/handleParsedOneData.d.ts.map +1 -0
- package/dist/lib/rss/base/handleParsedOneData.js +21 -0
- package/dist/lib/rss/channel/channel.d.ts +4 -0
- package/dist/lib/rss/channel/channel.d.ts.map +1 -0
- package/dist/lib/rss/channel/channel.js +61 -0
- package/dist/lib/rss/channel/channelAbout.d.ts +4 -0
- package/dist/lib/rss/channel/channelAbout.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelAbout.js +20 -0
- package/dist/lib/rss/channel/channelChat.d.ts +4 -0
- package/dist/lib/rss/channel/channelChat.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelChat.js +21 -0
- package/dist/lib/rss/channel/channelDescription.d.ts +4 -0
- package/dist/lib/rss/channel/channelDescription.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelDescription.js +21 -0
- package/dist/lib/rss/channel/channelFunding.d.ts +4 -0
- package/dist/lib/rss/channel/channelFunding.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelFunding.js +21 -0
- package/dist/lib/rss/channel/channelImage.d.ts +4 -0
- package/dist/lib/rss/channel/channelImage.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelImage.js +21 -0
- package/dist/lib/rss/channel/channelLicense.d.ts +4 -0
- package/dist/lib/rss/channel/channelLicense.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelLicense.js +21 -0
- package/dist/lib/rss/channel/channelLocation.d.ts +4 -0
- package/dist/lib/rss/channel/channelLocation.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelLocation.js +21 -0
- package/dist/lib/rss/channel/channelPerson.d.ts +4 -0
- package/dist/lib/rss/channel/channelPerson.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelPerson.js +21 -0
- package/dist/lib/rss/channel/channelPodroll.d.ts +4 -0
- package/dist/lib/rss/channel/channelPodroll.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelPodroll.js +28 -0
- package/dist/lib/rss/channel/channelRemoteItem.d.ts +4 -0
- package/dist/lib/rss/channel/channelRemoteItem.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelRemoteItem.js +21 -0
- package/dist/lib/rss/channel/channelSeason.d.ts +4 -0
- package/dist/lib/rss/channel/channelSeason.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelSeason.js +25 -0
- package/dist/lib/rss/channel/channelSocialInteract.d.ts +4 -0
- package/dist/lib/rss/channel/channelSocialInteract.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelSocialInteract.js +21 -0
- package/dist/lib/rss/channel/channelTrailer.d.ts +4 -0
- package/dist/lib/rss/channel/channelTrailer.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelTrailer.js +36 -0
- package/dist/lib/rss/channel/channelTxt.d.ts +4 -0
- package/dist/lib/rss/channel/channelTxt.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelTxt.js +21 -0
- package/dist/lib/rss/channel/channelValue.d.ts +4 -0
- package/dist/lib/rss/channel/channelValue.d.ts.map +1 -0
- package/dist/lib/rss/channel/channelValue.js +37 -0
- package/dist/lib/rss/feed/feed.d.ts +5 -0
- package/dist/lib/rss/feed/feed.d.ts.map +1 -0
- package/dist/lib/rss/feed/feed.js +80 -0
- package/dist/lib/rss/hash/parsedFeed.d.ts +3 -0
- package/dist/lib/rss/hash/parsedFeed.d.ts.map +1 -0
- package/dist/lib/rss/hash/parsedFeed.js +22 -0
- package/dist/lib/rss/item/item.d.ts +5 -0
- package/dist/lib/rss/item/item.d.ts.map +1 -0
- package/dist/lib/rss/item/item.js +80 -0
- package/dist/lib/rss/item/itemAbout.d.ts +4 -0
- package/dist/lib/rss/item/itemAbout.d.ts.map +1 -0
- package/dist/lib/rss/item/itemAbout.js +20 -0
- package/dist/lib/rss/item/itemChaptersFeed.d.ts +4 -0
- package/dist/lib/rss/item/itemChaptersFeed.d.ts.map +1 -0
- package/dist/lib/rss/item/itemChaptersFeed.js +21 -0
- package/dist/lib/rss/item/itemChat.d.ts +4 -0
- package/dist/lib/rss/item/itemChat.d.ts.map +1 -0
- package/dist/lib/rss/item/itemChat.js +21 -0
- package/dist/lib/rss/item/itemContentLink.d.ts +1 -0
- package/dist/lib/rss/item/itemContentLink.d.ts.map +1 -0
- package/dist/lib/rss/item/itemContentLink.js +1 -0
- package/dist/lib/rss/item/itemDescription.d.ts +4 -0
- package/dist/lib/rss/item/itemDescription.d.ts.map +1 -0
- package/dist/lib/rss/item/itemDescription.js +21 -0
- package/dist/lib/rss/item/itemEnclosure.d.ts +4 -0
- package/dist/lib/rss/item/itemEnclosure.d.ts.map +1 -0
- package/dist/lib/rss/item/itemEnclosure.js +40 -0
- package/dist/lib/rss/item/itemImage.d.ts +4 -0
- package/dist/lib/rss/item/itemImage.d.ts.map +1 -0
- package/dist/lib/rss/item/itemImage.js +21 -0
- package/dist/lib/rss/item/itemLicense.d.ts +4 -0
- package/dist/lib/rss/item/itemLicense.d.ts.map +1 -0
- package/dist/lib/rss/item/itemLicense.js +21 -0
- package/dist/lib/rss/item/itemLocation.d.ts +4 -0
- package/dist/lib/rss/item/itemLocation.d.ts.map +1 -0
- package/dist/lib/rss/item/itemLocation.js +21 -0
- package/dist/lib/rss/item/itemPerson.d.ts +4 -0
- package/dist/lib/rss/item/itemPerson.d.ts.map +1 -0
- package/dist/lib/rss/item/itemPerson.js +21 -0
- package/dist/lib/rss/item/itemSeason.d.ts +4 -0
- package/dist/lib/rss/item/itemSeason.d.ts.map +1 -0
- package/dist/lib/rss/item/itemSeason.js +30 -0
- package/dist/lib/rss/item/itemSeasonEpisode.d.ts +4 -0
- package/dist/lib/rss/item/itemSeasonEpisode.d.ts.map +1 -0
- package/dist/lib/rss/item/itemSeasonEpisode.js +21 -0
- package/dist/lib/rss/item/itemSocialInteract.d.ts +4 -0
- package/dist/lib/rss/item/itemSocialInteract.d.ts.map +1 -0
- package/dist/lib/rss/item/itemSocialInteract.js +21 -0
- package/dist/lib/rss/item/itemSoundbite.d.ts +4 -0
- package/dist/lib/rss/item/itemSoundbite.d.ts.map +1 -0
- package/dist/lib/rss/item/itemSoundbite.js +21 -0
- package/dist/lib/rss/item/itemTranscript.d.ts +4 -0
- package/dist/lib/rss/item/itemTranscript.d.ts.map +1 -0
- package/dist/lib/rss/item/itemTranscript.js +21 -0
- package/dist/lib/rss/item/itemTxt.d.ts +4 -0
- package/dist/lib/rss/item/itemTxt.d.ts.map +1 -0
- package/dist/lib/rss/item/itemTxt.js +21 -0
- package/dist/lib/rss/item/itemValue.d.ts +4 -0
- package/dist/lib/rss/item/itemValue.d.ts.map +1 -0
- package/dist/lib/rss/item/itemValue.js +65 -0
- package/dist/lib/rss/liveItem/liveItem.d.ts +4 -0
- package/dist/lib/rss/liveItem/liveItem.d.ts.map +1 -0
- package/dist/lib/rss/liveItem/liveItem.js +41 -0
- package/dist/lib/rss/parser.d.ts +4 -0
- package/dist/lib/rss/parser.d.ts.map +1 -0
- package/dist/lib/rss/parser.js +83 -0
- package/dist/module-alias-config.d.ts +2 -0
- package/dist/module-alias-config.d.ts.map +1 -0
- package/dist/module-alias-config.js +7 -0
- package/eslint.config.mjs +38 -0
- package/package.json +20 -29
- package/src/index.ts +3 -0
- package/src/lib/chapters/chapters.ts +54 -0
- package/src/lib/compat/channel.ts +287 -0
- package/src/lib/compat/chapters/chapters.ts +23 -0
- package/src/lib/compat/partytime/channel.ts +289 -0
- package/src/lib/compat/partytime/compatFull.ts +7 -0
- package/src/lib/compat/partytime/funding.ts +8 -0
- package/src/lib/compat/partytime/item.ts +273 -0
- package/src/lib/compat/partytime/liveItem.ts +18 -0
- package/src/lib/compat/partytime/value.ts +64 -0
- package/src/lib/rss/base/handleParsedManyData.ts +16 -0
- package/src/lib/rss/base/handleParsedOneData.ts +17 -0
- package/src/lib/rss/channel/channel.ts +55 -0
- package/src/lib/rss/channel/channelAbout.ts +13 -0
- package/src/lib/rss/channel/channelChat.ts +14 -0
- package/src/lib/rss/channel/channelDescription.ts +14 -0
- package/src/lib/rss/channel/channelFunding.ts +14 -0
- package/src/lib/rss/channel/channelImage.ts +14 -0
- package/src/lib/rss/channel/channelLicense.ts +14 -0
- package/src/lib/rss/channel/channelLocation.ts +14 -0
- package/src/lib/rss/channel/channelPerson.ts +14 -0
- package/src/lib/rss/channel/channelPodroll.ts +21 -0
- package/src/lib/rss/channel/channelRemoteItem.ts +14 -0
- package/src/lib/rss/channel/channelSeason.ts +14 -0
- package/src/lib/rss/channel/channelSocialInteract.ts +14 -0
- package/src/lib/rss/channel/channelTrailer.ts +31 -0
- package/src/lib/rss/channel/channelTxt.ts +14 -0
- package/src/lib/rss/channel/channelValue.ts +30 -0
- package/src/lib/rss/feed/feed.ts +79 -0
- package/src/lib/rss/hash/parsedFeed.ts +9 -0
- package/src/lib/rss/item/item.ts +85 -0
- package/src/lib/rss/item/itemAbout.ts +13 -0
- package/src/lib/rss/item/itemChaptersFeed.ts +14 -0
- package/src/lib/rss/item/itemChat.ts +14 -0
- package/src/lib/rss/item/itemContentLink.ts +0 -0
- package/src/lib/rss/item/itemDescription.ts +14 -0
- package/src/lib/rss/item/itemEnclosure.ts +35 -0
- package/src/lib/rss/item/itemImage.ts +14 -0
- package/src/lib/rss/item/itemLicense.ts +14 -0
- package/src/lib/rss/item/itemLocation.ts +14 -0
- package/src/lib/rss/item/itemPerson.ts +14 -0
- package/src/lib/rss/item/itemSeason.ts +26 -0
- package/src/lib/rss/item/itemSeasonEpisode.ts +14 -0
- package/src/lib/rss/item/itemSocialInteract.ts +14 -0
- package/src/lib/rss/item/itemSoundbite.ts +14 -0
- package/src/lib/rss/item/itemTranscript.ts +14 -0
- package/src/lib/rss/item/itemTxt.ts +14 -0
- package/src/lib/rss/item/itemValue.ts +60 -0
- package/src/lib/rss/liveItem/liveItem.ts +34 -0
- package/src/lib/rss/parser.ts +85 -0
- package/src/module-alias-config.ts +8 -0
- package/tsconfig.json +25 -0
- package/LICENSE +0 -674
- package/README.md +0 -2
- package/dist/index.js.map +0 -7
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { parseFeed } from 'podcast-partytime';
|
|
2
|
+
import { request } from 'podverse-helpers';
|
|
3
|
+
import { ChannelService, ChannelSeasonService, FeedLogService, FeedService } from 'podverse-orm';
|
|
4
|
+
import { handleParsedChannel } from "@parser/lib/rss/channel/channel";
|
|
5
|
+
import { handleParsedItems } from './item/item';
|
|
6
|
+
import { handleParsedChannelSeasons } from './channel/channelSeason';
|
|
7
|
+
import { handleParsedLiveItems } from './liveItem/liveItem';
|
|
8
|
+
import { handleGetRSSFeed, handleParsedFeed } from './feed/feed';
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
NOTE: All RSS feeds that have a podcast_index_id will be saved to the database.
|
|
12
|
+
RSS feeds without podcast_index_id (Add By RSS feeds) will NOT be saved to the database.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
// TEMP: exists for development purposes
|
|
16
|
+
export const parseAllRSSFeeds = async () => {
|
|
17
|
+
const feedService = new FeedService();
|
|
18
|
+
const feeds = await feedService.getAll();
|
|
19
|
+
for (const feed of feeds) {
|
|
20
|
+
return await parseRSSFeedAndSaveToDatabase(feed.url, feed?.channel?.podcast_index_id);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const getAndParseRSSFeed = async (url: string) => {
|
|
25
|
+
const xml: string = await request(url);
|
|
26
|
+
const parsedFeed = parseFeed(xml, { allowMissingGuid: true });
|
|
27
|
+
|
|
28
|
+
if (!parsedFeed) {
|
|
29
|
+
throw new Error(`getAndParseRSSFeed: parsedFeed not found for ${url}`);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return parsedFeed;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// export const parseRSSAddByRSSFeed = async (url: string) => {
|
|
36
|
+
// const parsedFeed = await getAndParseRSSFeed(url);
|
|
37
|
+
// const compatData = convertParsedRSSFeedToCompat(parsedFeed);
|
|
38
|
+
// return compatData;
|
|
39
|
+
// };
|
|
40
|
+
|
|
41
|
+
export const parseRSSFeedAndSaveToDatabase = async (url: string, podcast_index_id: number) => {
|
|
42
|
+
const feedService = new FeedService();
|
|
43
|
+
|
|
44
|
+
let feed = await feedService.getBy({ url, podcast_index_id });
|
|
45
|
+
if (!feed) {
|
|
46
|
+
throw new Error(`parseRSSFeedAndSaveToDatabase: feed not found for ${url}`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const parsedFeed = await handleGetRSSFeed(feed);
|
|
50
|
+
feed = await handleParsedFeed(parsedFeed, url, podcast_index_id);
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
await feedService.update(feed.id, { is_parsing: new Date() });
|
|
54
|
+
|
|
55
|
+
const channelService = new ChannelService();
|
|
56
|
+
const channel = await channelService.getOrCreateByPodcastIndexId({ feed, podcast_index_id });
|
|
57
|
+
|
|
58
|
+
// ChannelSeason must be parsed before anything else, because the channel season rows
|
|
59
|
+
// need to be created for other data to have a foreign key to them.
|
|
60
|
+
await handleParsedChannelSeasons(parsedFeed, channel);
|
|
61
|
+
const channelSeasonService = new ChannelSeasonService();
|
|
62
|
+
const channelSeasonIndex = await channelSeasonService.getChannelSeasonIndex(channel);
|
|
63
|
+
|
|
64
|
+
await handleParsedChannel(parsedFeed, channel, channelSeasonIndex);
|
|
65
|
+
|
|
66
|
+
// PTDO: if publisher feed, handle publisher remote item data
|
|
67
|
+
// else handle parsed items
|
|
68
|
+
await handleParsedItems(parsedFeed.items, channel, channelSeasonIndex);
|
|
69
|
+
|
|
70
|
+
if (parsedFeed.podcastLiveItems) {
|
|
71
|
+
await handleParsedLiveItems(parsedFeed.podcastLiveItems, channel, channelSeasonIndex);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// TODO: handle new item notifications
|
|
75
|
+
|
|
76
|
+
// TODO: handle new live_item notifications
|
|
77
|
+
|
|
78
|
+
const feedLogService = new FeedLogService();
|
|
79
|
+
await feedLogService.update(feed, { last_finished_parse_time: new Date() });
|
|
80
|
+
} finally {
|
|
81
|
+
await feedService.update(feed.id, { is_parsing: null });
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return feed;
|
|
85
|
+
};
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES6",
|
|
4
|
+
"module": "commonjs",
|
|
5
|
+
"strict": true,
|
|
6
|
+
"noImplicitAny": true,
|
|
7
|
+
"esModuleInterop": true,
|
|
8
|
+
"experimentalDecorators": true,
|
|
9
|
+
"emitDecoratorMetadata": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"declaration": true,
|
|
12
|
+
"declarationMap": true,
|
|
13
|
+
"forceConsistentCasingInFileNames": true,
|
|
14
|
+
"outDir": "./dist",
|
|
15
|
+
"rootDir": "./src",
|
|
16
|
+
"baseUrl": "./",
|
|
17
|
+
"paths": {
|
|
18
|
+
"@parser/*": ["src/*"]
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"include": [
|
|
22
|
+
"./src/**/*.ts"
|
|
23
|
+
],
|
|
24
|
+
"exclude": ["node_modules"]
|
|
25
|
+
}
|