podverse-parser 5.0.0-beta.1 → 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.
Files changed (153) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/lib/chapters/chapters.d.ts +3 -0
  4. package/dist/lib/chapters/chapters.d.ts.map +1 -0
  5. package/dist/lib/chapters/chapters.js +59 -0
  6. package/dist/lib/compat/channel.d.ts +108 -0
  7. package/dist/lib/compat/channel.d.ts.map +1 -0
  8. package/dist/lib/compat/channel.js +279 -0
  9. package/dist/lib/compat/chapters/chapters.d.ts +11 -0
  10. package/dist/lib/compat/chapters/chapters.d.ts.map +1 -0
  11. package/dist/lib/compat/chapters/chapters.js +16 -0
  12. package/dist/lib/compat/partytime/channel.d.ts +110 -0
  13. package/dist/lib/compat/partytime/channel.d.ts.map +1 -0
  14. package/dist/lib/compat/partytime/channel.js +281 -0
  15. package/dist/lib/compat/partytime/compatFull.d.ts +6 -0
  16. package/dist/lib/compat/partytime/compatFull.d.ts.map +1 -0
  17. package/dist/lib/compat/partytime/compatFull.js +11 -0
  18. package/dist/lib/compat/partytime/funding.d.ts +6 -0
  19. package/dist/lib/compat/partytime/funding.d.ts.map +1 -0
  20. package/dist/lib/compat/partytime/funding.js +10 -0
  21. package/dist/lib/compat/partytime/item.d.ts +146 -0
  22. package/dist/lib/compat/partytime/item.d.ts.map +1 -0
  23. package/dist/lib/compat/partytime/item.js +264 -0
  24. package/dist/lib/compat/partytime/liveItem.d.ts +11 -0
  25. package/dist/lib/compat/partytime/liveItem.d.ts.map +1 -0
  26. package/dist/lib/compat/partytime/liveItem.js +20 -0
  27. package/dist/lib/compat/partytime/value.d.ts +62 -0
  28. package/dist/lib/compat/partytime/value.d.ts.map +1 -0
  29. package/dist/lib/compat/partytime/value.js +69 -0
  30. package/dist/lib/rss/base/handleParsedManyData.d.ts +7 -0
  31. package/dist/lib/rss/base/handleParsedManyData.d.ts.map +1 -0
  32. package/dist/lib/rss/base/handleParsedManyData.js +21 -0
  33. package/dist/lib/rss/base/handleParsedOneData.d.ts +7 -0
  34. package/dist/lib/rss/base/handleParsedOneData.d.ts.map +1 -0
  35. package/dist/lib/rss/base/handleParsedOneData.js +21 -0
  36. package/dist/lib/rss/channel/channel.d.ts +4 -0
  37. package/dist/lib/rss/channel/channel.d.ts.map +1 -0
  38. package/dist/lib/rss/channel/channel.js +61 -0
  39. package/dist/lib/rss/channel/channelAbout.d.ts +4 -0
  40. package/dist/lib/rss/channel/channelAbout.d.ts.map +1 -0
  41. package/dist/lib/rss/channel/channelAbout.js +20 -0
  42. package/dist/lib/rss/channel/channelChat.d.ts +4 -0
  43. package/dist/lib/rss/channel/channelChat.d.ts.map +1 -0
  44. package/dist/lib/rss/channel/channelChat.js +21 -0
  45. package/dist/lib/rss/channel/channelDescription.d.ts +4 -0
  46. package/dist/lib/rss/channel/channelDescription.d.ts.map +1 -0
  47. package/dist/lib/rss/channel/channelDescription.js +21 -0
  48. package/dist/lib/rss/channel/channelFunding.d.ts +4 -0
  49. package/dist/lib/rss/channel/channelFunding.d.ts.map +1 -0
  50. package/dist/lib/rss/channel/channelFunding.js +21 -0
  51. package/dist/lib/rss/channel/channelImage.d.ts +4 -0
  52. package/dist/lib/rss/channel/channelImage.d.ts.map +1 -0
  53. package/dist/lib/rss/channel/channelImage.js +21 -0
  54. package/dist/lib/rss/channel/channelLicense.d.ts +4 -0
  55. package/dist/lib/rss/channel/channelLicense.d.ts.map +1 -0
  56. package/dist/lib/rss/channel/channelLicense.js +21 -0
  57. package/dist/lib/rss/channel/channelLocation.d.ts +4 -0
  58. package/dist/lib/rss/channel/channelLocation.d.ts.map +1 -0
  59. package/dist/lib/rss/channel/channelLocation.js +21 -0
  60. package/dist/lib/rss/channel/channelPerson.d.ts +4 -0
  61. package/dist/lib/rss/channel/channelPerson.d.ts.map +1 -0
  62. package/dist/lib/rss/channel/channelPerson.js +21 -0
  63. package/dist/lib/rss/channel/channelPodroll.d.ts +4 -0
  64. package/dist/lib/rss/channel/channelPodroll.d.ts.map +1 -0
  65. package/dist/lib/rss/channel/channelPodroll.js +28 -0
  66. package/dist/lib/rss/channel/channelRemoteItem.d.ts +4 -0
  67. package/dist/lib/rss/channel/channelRemoteItem.d.ts.map +1 -0
  68. package/dist/lib/rss/channel/channelRemoteItem.js +21 -0
  69. package/dist/lib/rss/channel/channelSeason.d.ts +4 -0
  70. package/dist/lib/rss/channel/channelSeason.d.ts.map +1 -0
  71. package/dist/lib/rss/channel/channelSeason.js +25 -0
  72. package/dist/lib/rss/channel/channelSocialInteract.d.ts +4 -0
  73. package/dist/lib/rss/channel/channelSocialInteract.d.ts.map +1 -0
  74. package/dist/lib/rss/channel/channelSocialInteract.js +21 -0
  75. package/dist/lib/rss/channel/channelTrailer.d.ts +4 -0
  76. package/dist/lib/rss/channel/channelTrailer.d.ts.map +1 -0
  77. package/dist/lib/rss/channel/channelTrailer.js +36 -0
  78. package/dist/lib/rss/channel/channelTxt.d.ts +4 -0
  79. package/dist/lib/rss/channel/channelTxt.d.ts.map +1 -0
  80. package/dist/lib/rss/channel/channelTxt.js +21 -0
  81. package/dist/lib/rss/channel/channelValue.d.ts +4 -0
  82. package/dist/lib/rss/channel/channelValue.d.ts.map +1 -0
  83. package/dist/lib/rss/channel/channelValue.js +37 -0
  84. package/dist/lib/rss/feed/feed.d.ts +5 -0
  85. package/dist/lib/rss/feed/feed.d.ts.map +1 -0
  86. package/dist/lib/rss/feed/feed.js +80 -0
  87. package/dist/lib/rss/hash/parsedFeed.d.ts +3 -0
  88. package/dist/lib/rss/hash/parsedFeed.d.ts.map +1 -0
  89. package/dist/lib/rss/hash/parsedFeed.js +22 -0
  90. package/dist/lib/rss/item/item.d.ts +5 -0
  91. package/dist/lib/rss/item/item.d.ts.map +1 -0
  92. package/dist/lib/rss/item/item.js +80 -0
  93. package/dist/lib/rss/item/itemAbout.d.ts +4 -0
  94. package/dist/lib/rss/item/itemAbout.d.ts.map +1 -0
  95. package/dist/lib/rss/item/itemAbout.js +20 -0
  96. package/dist/lib/rss/item/itemChaptersFeed.d.ts +4 -0
  97. package/dist/lib/rss/item/itemChaptersFeed.d.ts.map +1 -0
  98. package/dist/lib/rss/item/itemChaptersFeed.js +21 -0
  99. package/dist/lib/rss/item/itemChat.d.ts +4 -0
  100. package/dist/lib/rss/item/itemChat.d.ts.map +1 -0
  101. package/dist/lib/rss/item/itemChat.js +21 -0
  102. package/dist/lib/rss/item/itemContentLink.d.ts +1 -0
  103. package/dist/lib/rss/item/itemContentLink.d.ts.map +1 -0
  104. package/dist/lib/rss/item/itemContentLink.js +1 -0
  105. package/dist/lib/rss/item/itemDescription.d.ts +4 -0
  106. package/dist/lib/rss/item/itemDescription.d.ts.map +1 -0
  107. package/dist/lib/rss/item/itemDescription.js +21 -0
  108. package/dist/lib/rss/item/itemEnclosure.d.ts +4 -0
  109. package/dist/lib/rss/item/itemEnclosure.d.ts.map +1 -0
  110. package/dist/lib/rss/item/itemEnclosure.js +40 -0
  111. package/dist/lib/rss/item/itemImage.d.ts +4 -0
  112. package/dist/lib/rss/item/itemImage.d.ts.map +1 -0
  113. package/dist/lib/rss/item/itemImage.js +21 -0
  114. package/dist/lib/rss/item/itemLicense.d.ts +4 -0
  115. package/dist/lib/rss/item/itemLicense.d.ts.map +1 -0
  116. package/dist/lib/rss/item/itemLicense.js +21 -0
  117. package/dist/lib/rss/item/itemLocation.d.ts +4 -0
  118. package/dist/lib/rss/item/itemLocation.d.ts.map +1 -0
  119. package/dist/lib/rss/item/itemLocation.js +21 -0
  120. package/dist/lib/rss/item/itemPerson.d.ts +4 -0
  121. package/dist/lib/rss/item/itemPerson.d.ts.map +1 -0
  122. package/dist/lib/rss/item/itemPerson.js +21 -0
  123. package/dist/lib/rss/item/itemSeason.d.ts +4 -0
  124. package/dist/lib/rss/item/itemSeason.d.ts.map +1 -0
  125. package/dist/lib/rss/item/itemSeason.js +30 -0
  126. package/dist/lib/rss/item/itemSeasonEpisode.d.ts +4 -0
  127. package/dist/lib/rss/item/itemSeasonEpisode.d.ts.map +1 -0
  128. package/dist/lib/rss/item/itemSeasonEpisode.js +21 -0
  129. package/dist/lib/rss/item/itemSocialInteract.d.ts +4 -0
  130. package/dist/lib/rss/item/itemSocialInteract.d.ts.map +1 -0
  131. package/dist/lib/rss/item/itemSocialInteract.js +21 -0
  132. package/dist/lib/rss/item/itemSoundbite.d.ts +4 -0
  133. package/dist/lib/rss/item/itemSoundbite.d.ts.map +1 -0
  134. package/dist/lib/rss/item/itemSoundbite.js +21 -0
  135. package/dist/lib/rss/item/itemTranscript.d.ts +4 -0
  136. package/dist/lib/rss/item/itemTranscript.d.ts.map +1 -0
  137. package/dist/lib/rss/item/itemTranscript.js +21 -0
  138. package/dist/lib/rss/item/itemTxt.d.ts +4 -0
  139. package/dist/lib/rss/item/itemTxt.d.ts.map +1 -0
  140. package/dist/lib/rss/item/itemTxt.js +21 -0
  141. package/dist/lib/rss/item/itemValue.d.ts +4 -0
  142. package/dist/lib/rss/item/itemValue.d.ts.map +1 -0
  143. package/dist/lib/rss/item/itemValue.js +65 -0
  144. package/dist/lib/rss/liveItem/liveItem.d.ts +4 -0
  145. package/dist/lib/rss/liveItem/liveItem.d.ts.map +1 -0
  146. package/dist/lib/rss/liveItem/liveItem.js +41 -0
  147. package/dist/lib/rss/parser.d.ts +4 -0
  148. package/dist/lib/rss/parser.d.ts.map +1 -0
  149. package/dist/lib/rss/parser.js +83 -0
  150. package/dist/module-alias-config.d.ts +2 -0
  151. package/dist/module-alias-config.d.ts.map +1 -0
  152. package/dist/module-alias-config.js +7 -0
  153. package/package.json +1 -1
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.handleParsedItemTxt = void 0;
13
+ const podverse_orm_1 = require("podverse-orm");
14
+ const item_1 = require("@parser/lib/compat/partytime/item");
15
+ const handleParsedManyData_1 = require("../base/handleParsedManyData");
16
+ const handleParsedItemTxt = (parsedItem, item, transactionalEntityManager) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const itemTxtService = new podverse_orm_1.ItemTxtService(transactionalEntityManager);
18
+ const itemTxtDtos = (0, item_1.compatItemTxtDtos)(parsedItem);
19
+ yield (0, handleParsedManyData_1.handleParsedManyData)(item, itemTxtService, itemTxtDtos);
20
+ });
21
+ exports.handleParsedItemTxt = handleParsedItemTxt;
@@ -0,0 +1,4 @@
1
+ import { Episode } from "podcast-partytime";
2
+ import { EntityManager, Item } from "podverse-orm";
3
+ export declare const handleParsedItemValue: (parsedItem: Episode, item: Item, transactionalEntityManager: EntityManager) => Promise<void>;
4
+ //# sourceMappingURL=itemValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemValue.d.ts","sourceRoot":"","sources":["../../../../src/lib/rss/item/itemValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,IAAI,EAE3B,MAAM,cAAc,CAAC;AAGtB,eAAO,MAAM,qBAAqB,eACpB,OAAO,QACb,IAAI,8BACkB,aAAa,kBAkD1C,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.handleParsedItemValue = void 0;
13
+ const podverse_orm_1 = require("podverse-orm");
14
+ const item_1 = require("@parser/lib/compat/partytime/item");
15
+ const handleParsedItemValue = (parsedItem, item, transactionalEntityManager) => __awaiter(void 0, void 0, void 0, function* () {
16
+ const itemValueService = new podverse_orm_1.ItemValueService(transactionalEntityManager);
17
+ const itemValueDtos = (0, item_1.compatItemValueDtos)(parsedItem);
18
+ const itemValueRecipientService = new podverse_orm_1.ItemValueRecipientService(transactionalEntityManager);
19
+ const itemValueTimeSplitService = new podverse_orm_1.ItemValueTimeSplitService(transactionalEntityManager);
20
+ const itemValueTimeSplitRecipientService = new podverse_orm_1.ItemValueTimeSplitRecipientService(transactionalEntityManager);
21
+ const itemValueTimeSplitRemoteItemService = new podverse_orm_1.ItemValueTimeSplitRemoteItemService(transactionalEntityManager);
22
+ if (itemValueDtos.length > 0) {
23
+ for (const itemValueDto of itemValueDtos) {
24
+ const item_value = yield itemValueService.update(item, itemValueDto.item_value);
25
+ const itemValueRecipientDtos = itemValueDto.item_value_recipients;
26
+ if (itemValueRecipientDtos.length > 0) {
27
+ for (const itemValueRecipientDto of itemValueRecipientDtos) {
28
+ yield itemValueRecipientService.update(item_value, itemValueRecipientDto);
29
+ }
30
+ }
31
+ else {
32
+ yield itemValueRecipientService.deleteAll(item_value);
33
+ }
34
+ const itemValueTimeSplitDtos = itemValueDto.item_value_time_splits;
35
+ if (itemValueTimeSplitDtos.length > 0) {
36
+ for (const itemValueTimeSplitDto of itemValueTimeSplitDtos) {
37
+ const item_value_time_split = yield itemValueTimeSplitService.update(item_value, itemValueTimeSplitDto.meta);
38
+ const itemValueTimeSplitRecipientDtos = itemValueTimeSplitDto.item_value_time_splits_recipients;
39
+ if (itemValueTimeSplitRecipientDtos.length > 0) {
40
+ for (const itemValueTimeSplitRecipientDto of itemValueTimeSplitRecipientDtos) {
41
+ yield itemValueTimeSplitRecipientService.update(item_value_time_split, itemValueTimeSplitRecipientDto);
42
+ }
43
+ }
44
+ else {
45
+ yield itemValueTimeSplitRecipientService.deleteAll(item_value_time_split);
46
+ }
47
+ const itemValueTimeSplitRemoteItemDto = itemValueTimeSplitDto.item_value_time_splits_remote_item;
48
+ if (itemValueTimeSplitRemoteItemDto) {
49
+ yield itemValueTimeSplitRemoteItemService.update(item_value_time_split, itemValueTimeSplitRemoteItemDto);
50
+ }
51
+ else {
52
+ yield itemValueTimeSplitRemoteItemService.deleteAll(item_value_time_split);
53
+ }
54
+ }
55
+ }
56
+ else {
57
+ yield itemValueTimeSplitService.deleteAll(item_value);
58
+ }
59
+ }
60
+ }
61
+ else {
62
+ yield itemValueService.deleteAll(item);
63
+ }
64
+ });
65
+ exports.handleParsedItemValue = handleParsedItemValue;
@@ -0,0 +1,4 @@
1
+ import { Phase4PodcastLiveItem } from "podcast-partytime/dist/parser/phase/phase-4";
2
+ import { Channel, ChannelSeasonIndex } from "podverse-orm";
3
+ export declare const handleParsedLiveItems: (parsedLiveItems: Phase4PodcastLiveItem[], channel: Channel, channelSeasonIndex: ChannelSeasonIndex) => Promise<void>;
4
+ //# sourceMappingURL=liveItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveItem.d.ts","sourceRoot":"","sources":["../../../../src/lib/rss/liveItem/liveItem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAiB,OAAO,EAAE,kBAAkB,EAAgC,MAAM,cAAc,CAAC;AAIxG,eAAO,MAAM,qBAAqB,oBAA2B,qBAAqB,EAAE,WAAW,OAAO,sBAAsB,kBAAkB,kBA2B7I,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.handleParsedLiveItems = void 0;
13
+ const podverse_helpers_1 = require("podverse-helpers");
14
+ const podverse_orm_1 = require("podverse-orm");
15
+ const liveItem_1 = require("@parser/lib/compat/partytime/liveItem");
16
+ const item_1 = require("../item/item");
17
+ const handleParsedLiveItems = (parsedLiveItems, channel, channelSeasonIndex) => __awaiter(void 0, void 0, void 0, function* () {
18
+ const itemService = new podverse_orm_1.ItemService();
19
+ const existingLiveItems = yield itemService.getAllItemsWithLiveItemByChannel(channel, { select: ['id'] });
20
+ const existingLiveItemIds = existingLiveItems.map(live_item => live_item.id);
21
+ const updatedLiveItemIds = [];
22
+ const liveItemObjDtos = (0, liveItem_1.compatLiveItemsDtos)(parsedLiveItems);
23
+ const liveItemObjDtosBatchs = (0, podverse_helpers_1.chunkArray)(liveItemObjDtos, 100);
24
+ for (const liveItemObjDtosBatch of liveItemObjDtosBatchs) {
25
+ yield podverse_orm_1.AppDataSource.manager.transaction((transactionalEntityManager) => __awaiter(void 0, void 0, void 0, function* () {
26
+ for (const liveItemObjDto of liveItemObjDtosBatch) {
27
+ // PTDO: how to make any unnecessary?
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ const itemDto = liveItemObjDto.item;
30
+ const item = yield (0, item_1.handleParsedItem)(itemDto, channel, channelSeasonIndex, transactionalEntityManager);
31
+ updatedLiveItemIds.push(item.id);
32
+ const liveItemService = new podverse_orm_1.LiveItemService();
33
+ const liveItemDto = liveItemObjDto.liveItem;
34
+ yield liveItemService.update(item, liveItemDto);
35
+ }
36
+ }));
37
+ }
38
+ const itemIdsToDelete = existingLiveItemIds.filter(id => !updatedLiveItemIds.includes(id));
39
+ yield itemService.deleteMany(itemIdsToDelete);
40
+ });
41
+ exports.handleParsedLiveItems = handleParsedLiveItems;
@@ -0,0 +1,4 @@
1
+ export declare const parseAllRSSFeeds: () => Promise<any>;
2
+ export declare const getAndParseRSSFeed: (url: string) => Promise<import("podcast-partytime").FeedObject>;
3
+ export declare const parseRSSFeedAndSaveToDatabase: (url: string, podcast_index_id: number) => Promise<any>;
4
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/lib/rss/parser.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB,oBAM5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAe,MAAM,oDASnD,CAAC;AAQF,eAAO,MAAM,6BAA6B,QAAe,MAAM,oBAAoB,MAAM,iBA4CxF,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.parseRSSFeedAndSaveToDatabase = exports.getAndParseRSSFeed = exports.parseAllRSSFeeds = void 0;
13
+ const podcast_partytime_1 = require("podcast-partytime");
14
+ const podverse_helpers_1 = require("podverse-helpers");
15
+ const podverse_orm_1 = require("podverse-orm");
16
+ const channel_1 = require("@parser/lib/rss/channel/channel");
17
+ const item_1 = require("./item/item");
18
+ const channelSeason_1 = require("./channel/channelSeason");
19
+ const liveItem_1 = require("./liveItem/liveItem");
20
+ const feed_1 = require("./feed/feed");
21
+ /*
22
+ NOTE: All RSS feeds that have a podcast_index_id will be saved to the database.
23
+ RSS feeds without podcast_index_id (Add By RSS feeds) will NOT be saved to the database.
24
+ */
25
+ // TEMP: exists for development purposes
26
+ const parseAllRSSFeeds = () => __awaiter(void 0, void 0, void 0, function* () {
27
+ var _a;
28
+ const feedService = new podverse_orm_1.FeedService();
29
+ const feeds = yield feedService.getAll();
30
+ for (const feed of feeds) {
31
+ return yield (0, exports.parseRSSFeedAndSaveToDatabase)(feed.url, (_a = feed === null || feed === void 0 ? void 0 : feed.channel) === null || _a === void 0 ? void 0 : _a.podcast_index_id);
32
+ }
33
+ });
34
+ exports.parseAllRSSFeeds = parseAllRSSFeeds;
35
+ const getAndParseRSSFeed = (url) => __awaiter(void 0, void 0, void 0, function* () {
36
+ const xml = yield (0, podverse_helpers_1.request)(url);
37
+ const parsedFeed = (0, podcast_partytime_1.parseFeed)(xml, { allowMissingGuid: true });
38
+ if (!parsedFeed) {
39
+ throw new Error(`getAndParseRSSFeed: parsedFeed not found for ${url}`);
40
+ }
41
+ return parsedFeed;
42
+ });
43
+ exports.getAndParseRSSFeed = getAndParseRSSFeed;
44
+ // export const parseRSSAddByRSSFeed = async (url: string) => {
45
+ // const parsedFeed = await getAndParseRSSFeed(url);
46
+ // const compatData = convertParsedRSSFeedToCompat(parsedFeed);
47
+ // return compatData;
48
+ // };
49
+ const parseRSSFeedAndSaveToDatabase = (url, podcast_index_id) => __awaiter(void 0, void 0, void 0, function* () {
50
+ const feedService = new podverse_orm_1.FeedService();
51
+ let feed = yield feedService.getBy({ url, podcast_index_id });
52
+ if (!feed) {
53
+ throw new Error(`parseRSSFeedAndSaveToDatabase: feed not found for ${url}`);
54
+ }
55
+ const parsedFeed = yield (0, feed_1.handleGetRSSFeed)(feed);
56
+ feed = yield (0, feed_1.handleParsedFeed)(parsedFeed, url, podcast_index_id);
57
+ try {
58
+ yield feedService.update(feed.id, { is_parsing: new Date() });
59
+ const channelService = new podverse_orm_1.ChannelService();
60
+ const channel = yield channelService.getOrCreateByPodcastIndexId({ feed, podcast_index_id });
61
+ // ChannelSeason must be parsed before anything else, because the channel season rows
62
+ // need to be created for other data to have a foreign key to them.
63
+ yield (0, channelSeason_1.handleParsedChannelSeasons)(parsedFeed, channel);
64
+ const channelSeasonService = new podverse_orm_1.ChannelSeasonService();
65
+ const channelSeasonIndex = yield channelSeasonService.getChannelSeasonIndex(channel);
66
+ yield (0, channel_1.handleParsedChannel)(parsedFeed, channel, channelSeasonIndex);
67
+ // PTDO: if publisher feed, handle publisher remote item data
68
+ // else handle parsed items
69
+ yield (0, item_1.handleParsedItems)(parsedFeed.items, channel, channelSeasonIndex);
70
+ if (parsedFeed.podcastLiveItems) {
71
+ yield (0, liveItem_1.handleParsedLiveItems)(parsedFeed.podcastLiveItems, channel, channelSeasonIndex);
72
+ }
73
+ // TODO: handle new item notifications
74
+ // TODO: handle new live_item notifications
75
+ const feedLogService = new podverse_orm_1.FeedLogService();
76
+ yield feedLogService.update(feed, { last_finished_parse_time: new Date() });
77
+ }
78
+ finally {
79
+ yield feedService.update(feed.id, { is_parsing: null });
80
+ }
81
+ return feed;
82
+ });
83
+ exports.parseRSSFeedAndSaveToDatabase = parseRSSFeedAndSaveToDatabase;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=module-alias-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-alias-config.d.ts","sourceRoot":"","sources":["../src/module-alias-config.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const moduleAlias = require('module-alias');
4
+ const path = require('path');
5
+ moduleAlias.addAliases({
6
+ '@parser': path.join(__dirname, '')
7
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "podverse-parser",
3
- "version": "5.0.0-beta.1",
3
+ "version": "5.0.0-beta.2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",