Skip to content

Commit

Permalink
请求条目同步前进行查询
Browse files Browse the repository at this point in the history
  • Loading branch information
chivehao committed Oct 19, 2024
1 parent 485b750 commit c9c214e
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 17 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.MD
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@

# 17.1.7

- 请求条目同步前进行查询

# 17.1.6

- 创建条目的时候添加个标签
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
group=run.ikaros.plugin
description=A mikan plugin for ikaros.
version=17.1.6
version=17.1.7
35 changes: 24 additions & 11 deletions src/main/java/run/ikaros/plugin/mikan/MikanSubHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@
import run.ikaros.api.core.attachment.AttachmentReferenceOperate;
import run.ikaros.api.core.subject.Subject;
import run.ikaros.api.core.subject.SubjectOperate;
import run.ikaros.api.core.subject.SubjectSync;
import run.ikaros.api.core.subject.SubjectSyncPlatformOperate;
import run.ikaros.api.core.tag.Tag;
import run.ikaros.api.core.tag.TagOperate;
import run.ikaros.api.infra.properties.IkarosProperties;
import run.ikaros.api.infra.utils.AssertUtils;
import run.ikaros.api.infra.utils.FileUtils;
import run.ikaros.api.store.enums.*;
import run.ikaros.plugin.mikan.qbittorrent.QbTorrentInfoFilter;
Expand Down Expand Up @@ -47,19 +50,22 @@ public class MikanSubHandler {
private final AttachmentOperate attachmentOperate;
private final AttachmentReferenceOperate attachmentReferenceOperate;
private final TagOperate tagOperate;
private final SubjectSyncPlatformOperate syncPlatformOperate;
private final IkarosProperties ikarosProperties;
private RuntimeMode pluginRuntimeMode;

public MikanSubHandler(MikanClient mikanClient, QbittorrentClient qbittorrentClient,
SubjectOperate subjectOperate, AttachmentOperate attachmentOperate,
AttachmentReferenceOperate attachmentReferenceOperate, TagOperate tagOperate,
AttachmentReferenceOperate attachmentReferenceOperate,
TagOperate tagOperate, SubjectSyncPlatformOperate syncPlatformOperate,
IkarosProperties ikarosProperties) {
this.mikanClient = mikanClient;
this.qbittorrentClient = qbittorrentClient;
this.subjectOperate = subjectOperate;
this.attachmentOperate = attachmentOperate;
this.attachmentReferenceOperate = attachmentReferenceOperate;
this.tagOperate = tagOperate;
this.syncPlatformOperate = syncPlatformOperate;
this.ikarosProperties = ikarosProperties;
}

Expand Down Expand Up @@ -157,8 +163,7 @@ public Mono<Void> parseMikanSubRssAndAddToQbittorrent() {
log.debug("add tag for torrent: {}", mikanRssItemTitle);
}
}
return subjectOperate.syncByPlatform(null, SubjectSyncPlatform.BGM_TV,
bgmTvSubjectId);
return syncSubject(bgmTvSubjectId);
})
.flatMap(this::saveSubjectFromTag)
.doOnError(throwable -> log.error("parse mikan sub rss item fail.", throwable))
Expand Down Expand Up @@ -193,15 +198,24 @@ private Mono<Subject> matchingSingleFile(Subject subject, String fileName, Long
private synchronized Mono<Subject> saveSubjectFromTag(Subject subject) {
final String tagName = "from:" + MikanPlugin.NAME;
return tagOperate.create(Tag.builder()
.createTime(LocalDateTime.now())
.type(TagType.SUBJECT)
.masterId(subject.getId())
.name(tagName)
.userId(-1L)
.build())
.createTime(LocalDateTime.now())
.type(TagType.SUBJECT)
.masterId(subject.getId())
.name(tagName)
.userId(-1L)
.build())
.map(tag -> subject);
}

private synchronized Mono<Subject> syncSubject(String bgmTvSubjectId) {
AssertUtils.notBlank(bgmTvSubjectId, "'bgmTvSubjectId' must not be blank.");
return syncPlatformOperate.findSubjectSyncBySubjectIdAndPlatform(
Long.parseLong(bgmTvSubjectId), SubjectSyncPlatform.BGM_TV)
.map(SubjectSync::getSubjectId)
.flatMap(subjectOperate::findById)
.switchIfEmpty(subjectOperate.syncByPlatform(null, SubjectSyncPlatform.BGM_TV, bgmTvSubjectId));
}

public Mono<Void> importQbittorrentFilesAndAddSubject() {
return Mono.just(qbittorrentClient)
.doOnNext(qc ->
Expand All @@ -221,8 +235,7 @@ public Mono<Void> importQbittorrentFilesAndAddSubject() {
.flatMap(torrentInfo -> Mono.just(
torrentInfo.getTags())
.filter(StringUtils::hasText)
.flatMap(bgmTvSubjectId -> subjectOperate.syncByPlatform(null,
SubjectSyncPlatform.BGM_TV, bgmTvSubjectId)
.flatMap(bgmTvSubjectId -> syncSubject(bgmTvSubjectId)
.flatMap(this::saveSubjectFromTag)
.flatMap(subject -> {
String contentPath = torrentInfo.getContentPath();
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ name: PluginMikan
# plugin entry class that extends BasePlugin
clazz: run.ikaros.plugin.mikan.MikanPlugin
# plugin 'version' is a valid semantic version string (see semver.org).
version: 17.1.6
version: 17.1.7
requires: ">=0.17.4"
author:
name: Ikaros OSS Team
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ void parseMikanSubRssAndAddToQbittorrent() {
qc.setBaseSavePath("C:\\Users\\chivehao\\Videos\\Tests");
qc.setConfig(config);

MikanSubHandler mikanSubHandler = new MikanSubHandler(mc, qc, null, null, null, null, null);

StepVerifier.create(mikanSubHandler.parseMikanSubRssAndAddToQbittorrent())
.verifyComplete();
// MikanSubHandler mikanSubHandler = new MikanSubHandler(mc, qc, null, null, null, null, null);
//
// StepVerifier.create(mikanSubHandler.parseMikanSubRssAndAddToQbittorrent())
// .verifyComplete();

}
}

0 comments on commit c9c214e

Please sign in to comment.