From daadcb2d8276e4ff4050cb40c5b13deb53f27ee6 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Sat, 9 Sep 2023 19:27:11 +0800 Subject: [PATCH] fix: - ui problem. - return rss link of searcher --- backend/src/module/rss/searcher.py | 14 ------------- backend/src/module/searcher/searcher.py | 20 +++++++++---------- .../{ab-add-bangumi.vue => ab-add-rss.vue} | 8 ++------ webui/src/components/ab-rss-item.vue | 3 ++- webui/src/components/ab-search-bar.vue | 3 --- webui/src/components/layout/ab-topbar.vue | 19 ++++++++++++++---- webui/src/pages/index/rss.vue | 12 +++++++++-- webui/src/store/rss.ts | 10 ---------- webui/types/dts/components.d.ts | 2 +- 9 files changed, 39 insertions(+), 52 deletions(-) delete mode 100644 backend/src/module/rss/searcher.py rename webui/src/components/{ab-add-bangumi.vue => ab-add-rss.vue} (94%) diff --git a/backend/src/module/rss/searcher.py b/backend/src/module/rss/searcher.py deleted file mode 100644 index de83ef13..00000000 --- a/backend/src/module/rss/searcher.py +++ /dev/null @@ -1,14 +0,0 @@ -from module.conf import settings -from module.network import RequestContent - - -class RSSSearcher(RequestContent): - def __search_url(self, keywords: str) -> str: - keywords.replace(" ", "+") - url = f"{settings.rss_parser.custom_url}/RSS/Search?keyword={keywords}" - return url - - def search_keywords(self, keywords: str) -> list[dict]: - url = self.__search_url(keywords) - torrents = self.get_torrents(url) - return torrents diff --git a/backend/src/module/searcher/searcher.py b/backend/src/module/searcher/searcher.py index de5233e0..e38b7402 100644 --- a/backend/src/module/searcher/searcher.py +++ b/backend/src/module/searcher/searcher.py @@ -35,18 +35,16 @@ def analyse_keyword(self, keywords: list[str], site: str = "mikan") -> BangumiJS bangumi = self.torrent_to_data(torrent=torrent, rss=rss_item) if bangumi and bangumi not in exist_list: exist_list.append(bangumi) + bangumi.rss_link = self.special_url(bangumi, site).url yield json.dumps(bangumi.dict(), separators=(',', ':')) - def search_season(self, data: Bangumi): + @staticmethod + def special_url(data: Bangumi, site: str) -> RSSItem: keywords = [getattr(data, key) for key in SEARCH_KEY if getattr(data, key)] - url = search_url("mikan", keywords) - torrents = self.search_torrents(url) - return [torrent for torrent in torrents if data.title_raw in torrent.name] + url = search_url(site, keywords) + return url - -if __name__ == "__main__": - with SearchTorrent() as st: - keywords = ["无职转生", "第二季"] - bangumis = st.analyse_keyword(keywords) - for bangumi in bangumis: - print(bangumi) + def search_season(self, data: Bangumi, site: str = "mikan") -> list[Torrent]: + rss_item = self.special_url(data, site) + torrents = self.search_torrents(rss_item) + return [torrent for torrent in torrents if data.title_raw in torrent.name] \ No newline at end of file diff --git a/webui/src/components/ab-add-bangumi.vue b/webui/src/components/ab-add-rss.vue similarity index 94% rename from webui/src/components/ab-add-bangumi.vue rename to webui/src/components/ab-add-rss.vue index 00b3dba1..67925e87 100644 --- a/webui/src/components/ab-add-bangumi.vue +++ b/webui/src/components/ab-add-rss.vue @@ -13,8 +13,7 @@ const message = useMessage(); const { getAll } = useBangumiStore(); const rss = ref(rssTemplate); -const searchRule = defineModel('searchRule', { default: null }); -const rule = ref(ruleTemplate); +const rule = defineModel('rule', { default: ruleTemplate }) const parserType = ['mikan', 'tmdb', 'parser']; const window = reactive({ @@ -33,10 +32,9 @@ watch(show, (val) => { setTimeout(() => { window.next = false; }, 300); - } else if (val || searchRule.value) { + } else if (val && rule.value.official_title !== '') { window.next = true; window.rule = true; - rule.value = searchRule.value; } }); @@ -48,7 +46,6 @@ async function addRss() { window.loading = true; const data = await apiRSS.add(rss.value); window.loading = false; - window.next = true; message.success(data.msg_en); show.value = false; console.log('rss', data); @@ -161,7 +158,6 @@ async function subscribe() {
-
Collect
{{ name }}
{{ url }}
diff --git a/webui/src/components/ab-search-bar.vue b/webui/src/components/ab-search-bar.vue index 70b0e9d4..01f884f7 100644 --- a/webui/src/components/ab-search-bar.vue +++ b/webui/src/components/ab-search-bar.vue @@ -84,8 +84,5 @@ function onSelect(site: string) { \ No newline at end of file diff --git a/webui/src/components/layout/ab-topbar.vue b/webui/src/components/layout/ab-topbar.vue index c3d0230f..7b6146c6 100644 --- a/webui/src/components/layout/ab-topbar.vue +++ b/webui/src/components/layout/ab-topbar.vue @@ -7,13 +7,14 @@ import { Power, Refresh, } from '@icon-park/vue-next'; +import { ruleTemplate } from "#/bangumi"; import type {BangumiRule} from "#/bangumi"; const {t, changeLocale} = useMyI18n(); const {running, onUpdate, offUpdate} = useAppInfo(); const showAccount = ref(false); -const showAdd = ref(false); +const showAddRSS = ref(false); const searchRule = ref() const {start, pause, shutdown, restart, resetRule} = useProgramStore(); @@ -62,11 +63,20 @@ const items = [ const onSearchFocus = ref(false); function addSearchResult(bangumi: BangumiRule) { - showAdd.value = true; + showAddRSS.value = true; searchRule.value = bangumi; console.log('searchRule', searchRule.value); } +watch(showAddRSS, (val) => { + if (!val) { + searchRule.value = ruleTemplate; + setTimeout(() => { + onSearchFocus.value = false; + }, 300); + } +}); + onBeforeMount(() => { onUpdate(); }); @@ -85,19 +95,20 @@ onUnmounted(() => {
+
{{ showAddRSS }}
- + diff --git a/webui/src/pages/index/rss.vue b/webui/src/pages/index/rss.vue index 5d2ecc5e..0e332185 100644 --- a/webui/src/pages/index/rss.vue +++ b/webui/src/pages/index/rss.vue @@ -1,6 +1,6 @@ @@ -31,13 +38,14 @@ definePage({
diff --git a/webui/src/store/rss.ts b/webui/src/store/rss.ts index d4448a51..72a2c0ca 100644 --- a/webui/src/store/rss.ts +++ b/webui/src/store/rss.ts @@ -56,15 +56,6 @@ export const useRSSStore = defineStore('rss', () => { refresh(); } - function handleCheckboxClicked(id: number) { - if (selectedRSS.value.includes(id)) { - // delete id in list - selectedRSS.value = selectedRSS.value.filter((e) => e !== id); - } else { - selectedRSS.value.push(id) - } - } - onUpdateRSSResult(actionSuccess); onDeleteRSSResult(actionSuccess); onDisableRSSResult(actionSuccess); @@ -78,6 +69,5 @@ export const useRSSStore = defineStore('rss', () => { disableSelected, deleteSelected, enableSelected, - handleCheckboxClicked, }; }); diff --git a/webui/types/dts/components.d.ts b/webui/types/dts/components.d.ts index 681c039a..cc313003 100644 --- a/webui/types/dts/components.d.ts +++ b/webui/types/dts/components.d.ts @@ -10,7 +10,7 @@ export {} declare module '@vue/runtime-core' { export interface GlobalComponents { AbAdd: typeof import('./../../src/components/basic/ab-add.vue')['default'] - AbAddBangumi: typeof import('./../../src/components/ab-add-bangumi.vue')['default'] + AbAddRss: typeof import('./../../src/components/ab-add-rss.vue')['default'] AbBangumiCard: typeof import('./../../src/components/ab-bangumi-card.vue')['default'] AbButton: typeof import('./../../src/components/basic/ab-button.vue')['default'] AbChangeAccount: typeof import('./../../src/components/ab-change-account.vue')['default']