diff --git a/src/main/java/me/kavin/piped/utils/VideoHelpers.java b/src/main/java/me/kavin/piped/utils/VideoHelpers.java index a305aa0d..fef7add6 100644 --- a/src/main/java/me/kavin/piped/utils/VideoHelpers.java +++ b/src/main/java/me/kavin/piped/utils/VideoHelpers.java @@ -6,7 +6,6 @@ import me.kavin.piped.utils.obj.db.Video; import org.apache.commons.lang3.StringUtils; import org.hibernate.StatelessSession; -import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.stream.StreamExtractor; import org.schabi.newpipe.extractor.stream.StreamInfo; import org.schabi.newpipe.extractor.stream.StreamInfoItem; @@ -49,14 +48,7 @@ public static void handleNewVideo(StreamInfo info, long time, me.kavin.piped.uti Video video = new Video(info.getId(), info.getName(), info.getViewCount(), info.getDuration(), Math.max(infoTime, time), info.getThumbnailUrl(), info.isShortFormContent(), channel); - var tr = s.beginTransaction(); - try { - s.insert(video); - tr.commit(); - } catch (Exception e) { - tr.rollback(); - ExceptionHandler.handle(e); - } + insertVideo(video); return; } } @@ -87,14 +79,7 @@ public static void handleNewVideo(StreamExtractor extractor, long time, me.kavin Video video = new Video(extractor.getId(), extractor.getName(), extractor.getViewCount(), extractor.getLength(), Math.max(infoTime, time), extractor.getThumbnailUrl(), isShort, channel); - var tr = s.beginTransaction(); - try { - s.insert(video); - tr.commit(); - } catch (Exception e) { - tr.rollback(); - ExceptionHandler.handle(e); - } + insertVideo(video); } } @@ -169,4 +154,26 @@ public static boolean updateVideo(String id, long views, long duration, String t return updated > 0; } } + + public static void insertVideo(Video video) { + try (StatelessSession s = DatabaseSessionFactory.createStatelessSession()) { + var tr = s.beginTransaction(); + try { + s.createNativeMutationQuery("INSERT INTO videos (uploader_id,duration,is_short,thumbnail,title,uploaded,views,id) values " + + "(:uploader_id,:duration,:is_short,:thumbnail,:title,:uploaded,:views,:id) ON CONFLICT DO NOTHING") + .setParameter("uploader_id", video.getChannel()) + .setParameter("duration", video.getDuration()) + .setParameter("is_short", video.isShort()) + .setParameter("thumbnail", video.getThumbnail()) + .setParameter("title", video.getTitle()) + .setParameter("uploaded", video.getUploaded()) + .setParameter("views", video.getViews()) + .setParameter("id", video.getId()).executeUpdate(); + tr.commit(); + } catch (Exception e) { + tr.rollback(); + ExceptionHandler.handle(e); + } + } + } }