mirror of
https://github.com/TeamPiped/Piped-Backend.git
synced 2024-12-13 22:00:29 +05:30
Merge pull request #689 from TeamPiped/channel-save-video
Fix channel save new video handling
This commit is contained in:
commit
27350d2a47
@ -210,6 +210,57 @@ public class ChannelHandlers {
|
|||||||
|
|
||||||
List<ContentItem> items = collectRelatedItems(info.getRelatedItems());
|
List<ContentItem> items = collectRelatedItems(info.getRelatedItems());
|
||||||
|
|
||||||
|
Multithreading.runAsync(() -> {
|
||||||
|
|
||||||
|
var channel = DatabaseHelper.getChannelFromId(info.getId());
|
||||||
|
|
||||||
|
if (channel != null) {
|
||||||
|
try (StatelessSession s = DatabaseSessionFactory.createStatelessSession()) {
|
||||||
|
var streamInfoItems = info.getRelatedItems()
|
||||||
|
.stream()
|
||||||
|
.parallel()
|
||||||
|
.filter(StreamInfoItem.class::isInstance)
|
||||||
|
.map(StreamInfoItem.class::cast)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
var channelIds = streamInfoItems
|
||||||
|
.stream()
|
||||||
|
.map(item -> {
|
||||||
|
try {
|
||||||
|
return YOUTUBE_SERVICE.getStreamLHFactory().getId(item.getUrl());
|
||||||
|
} catch (ParsingException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}).collect(Collectors.toUnmodifiableSet());
|
||||||
|
|
||||||
|
List<String> videoIdsPresent = DatabaseHelper.getVideosFromIds(s, channelIds)
|
||||||
|
.stream()
|
||||||
|
.map(Video::getId)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
streamInfoItems
|
||||||
|
.stream()
|
||||||
|
.parallel()
|
||||||
|
.forEach(item -> {
|
||||||
|
try {
|
||||||
|
String id = YOUTUBE_SERVICE.getStreamLHFactory().getId(item.getUrl());
|
||||||
|
if (videoIdsPresent.contains(id))
|
||||||
|
VideoHelpers.updateVideo(id, item);
|
||||||
|
else if (item.getUploadDate() != null) {
|
||||||
|
// shorts tab doesn't have upload date
|
||||||
|
// we don't want to fetch each video's upload date
|
||||||
|
long time = item.getUploadDate().offsetDateTime().toInstant().toEpochMilli();
|
||||||
|
if ((System.currentTimeMillis() - time) < TimeUnit.DAYS.toMillis(Constants.FEED_RETENTION))
|
||||||
|
VideoHelpers.handleNewVideo(item.getUrl(), time, channel);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
String nextpage = null;
|
String nextpage = null;
|
||||||
if (info.hasNextPage()) {
|
if (info.hasNextPage()) {
|
||||||
Page page = info.getNextPage();
|
Page page = info.getNextPage();
|
||||||
|
@ -214,9 +214,11 @@ public class DatabaseHelper {
|
|||||||
CollectionUtils.collectPreloadedTabs(info.getTabs())
|
CollectionUtils.collectPreloadedTabs(info.getTabs())
|
||||||
.stream()
|
.stream()
|
||||||
.parallel()
|
.parallel()
|
||||||
.map(tab -> {
|
.mapMulti((tab, consumer) -> {
|
||||||
try {
|
try {
|
||||||
return ChannelTabInfo.getInfo(YOUTUBE_SERVICE, tab).getRelatedItems();
|
ChannelTabInfo.getInfo(YOUTUBE_SERVICE, tab)
|
||||||
|
.getRelatedItems()
|
||||||
|
.forEach(consumer);
|
||||||
} catch (ExtractionException | IOException e) {
|
} catch (ExtractionException | IOException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@ -224,11 +226,11 @@ public class DatabaseHelper {
|
|||||||
.filter(StreamInfoItem.class::isInstance)
|
.filter(StreamInfoItem.class::isInstance)
|
||||||
.map(StreamInfoItem.class::cast)
|
.map(StreamInfoItem.class::cast)
|
||||||
.forEach(item -> {
|
.forEach(item -> {
|
||||||
long time = item.getUploadDate() != null
|
long time = item.getUploadDate() != null
|
||||||
? item.getUploadDate().offsetDateTime().toInstant().toEpochMilli()
|
? item.getUploadDate().offsetDateTime().toInstant().toEpochMilli()
|
||||||
: System.currentTimeMillis();
|
: System.currentTimeMillis();
|
||||||
if ((System.currentTimeMillis() - time) < TimeUnit.DAYS.toMillis(Constants.FEED_RETENTION))
|
if ((System.currentTimeMillis() - time) < TimeUnit.DAYS.toMillis(Constants.FEED_RETENTION))
|
||||||
VideoHelpers.handleNewVideo(item.getUrl(), time, channel);
|
VideoHelpers.handleNewVideo(item.getUrl(), time, channel);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user