Skip to content
This repository has been archived by the owner on Feb 8, 2023. It is now read-only.

Commit

Permalink
optimize pr (#8)
Browse files Browse the repository at this point in the history
* add swithc on option page tab

* add anime search view

* finish anime search view and req server api

* move anime search form AnimeSearch view to AnimeList view

* add anime detail page

* optimize anime datil view

* add option network connect and read timeout input

* 注释暂时不实现的菜单

* 添加用户订阅按钮并对服务端接口

* 添加特征资源页面

* 优化动漫详情页的订阅细节

* 对接后台简单特征资源查询接口

* config width for AnimeSubscribeModal

* optmize for issue ikaros-dev/ikaros#147

* fix tab data no key issue

* change anime list default page size from 8 to 16

* fix issue ikaros-dev/ikaros#152 that table not update after page size change

* 移除一些无关的内容

* optimize user avatar

* finish update user avatar

* finish user info update

* add ikaros logo

* add ikaros logo

* add system option notify mail tab

* remove some anime sub additional code

* add anime subscribe with batch
  • Loading branch information
chivehao authored Dec 13, 2022
1 parent 6005de1 commit a5a08db
Show file tree
Hide file tree
Showing 27 changed files with 1,493 additions and 240 deletions.
Binary file modified public/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 21 additions & 1 deletion src/api/anime.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import request from '@/utils/request'
import Base64 from 'crypto-js/enc-base64'
import Utf8 from 'crypto-js/enc-utf8'

const api = {
basic: '/anime',
seasonWithAnimeId: '/anime/season/animeId',
listDTOS: '/anime/dtos',
findDTOById: '/anime/dto/id'
findDTOById: '/anime/dto/id',
deleteAnimeById: '/anime/id',
deleteWithBatchByIds: 'anime/ids'
}

export function saveAnime (anime) {
Expand Down Expand Up @@ -36,3 +40,19 @@ export function findAnimeDTOById (animeId) {
method: 'get'
})
}

export function deleteAnimeById (animeId) {
return request({
url: api.deleteAnimeById + '/' + animeId,
method: 'delete'
})
}

export function deleteWithBatchByIds (animeIdArr) {
const animeIdJson = JSON.stringify(animeIdArr)
const animeIdArrJsonBase64 = Base64.stringify(Utf8.parse(animeIdJson))
return request({
url: api.deleteWithBatchByIds + '/' + animeIdArrJsonBase64,
method: 'delete'
})
}
8 changes: 8 additions & 0 deletions src/api/file.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const api = {
basic: '/file',
upload: '/file/data',
list: '/file/list',
listByName: '/file/list/name',
types: '/file/types',
places: '/file/places',
updateName: '/file/name'
Expand Down Expand Up @@ -31,6 +32,13 @@ export function listByPaging (params) {
})
}

export function listByName (name) {
return request({
url: api.listByName + '/' + name,
method: 'get'
})
}

// 文件类型
export function listTypes () {
return request({
Expand Down
15 changes: 15 additions & 0 deletions src/api/metadata.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import request from '@/utils/request'

const api = {
search: '/metadata/search'
}

export function searchAnime (keyword) {
return request({
url: api.search,
method: 'get',
params: {
'keyword': keyword
}
})
}
13 changes: 13 additions & 0 deletions src/api/notify.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import request from '@/utils/request'

const api = {
mailTest: '/notify/mail/test'
}

export function mailTest (notify) {
return request({
url: api.mailTest,
method: 'post',
data: notify
})
}
22 changes: 17 additions & 5 deletions src/api/season.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import request from '@/utils/request'
const api = {
basic: '/season',
types: '/season/types',
matchingEpisodeUrlByFileIds: '/season/matching/episodes'
matchingEpisodesUrlByFileIds: '/season/matching/episodes',
matchingEpisodeUrlByFileId: '/season/matching/episode'
}

export function removeSeason (seasonId) {
Expand Down Expand Up @@ -31,13 +32,24 @@ export function findSeasonTypes () {
})
}

export function matchingEpisodeUrlByFileIds (seasonId, fileIdList) {
export function matchingEpisodesUrlByFileIds (seasonId, fileIdList) {
return request({
url: api.matchingEpisodeUrlByFileIds,
url: api.matchingEpisodesUrlByFileIds,
method: 'put',
data: {
'season_id': seasonId,
'file_id_list': fileIdList
'seasonId': seasonId,
'fileIdList': fileIdList
}
})
}

export function matchingEpisodeUrlByFileId (episodeId, fileId) {
return request({
url: api.matchingEpisodeUrlByFileId,
method: 'put',
data: {
'episodeId': episodeId,
'fileId': fileId
}
})
}
23 changes: 22 additions & 1 deletion src/api/tripartite.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ import request from '@/utils/request'

const api = {
testQbittorrentConnect: '/tripartite/qbittorrent/connect/test',
getBgmTvMe: '/tripartite/bgmtv/token/user/me'
getBgmTvMe: '/tripartite/bgmtv/token/user/me',
findDmhyRssItemsByAnimeId: '/tripartite/dmhy/rss/items/anime',
findDmhyRssItems: '/tripartite/dmhy/rss/items'
}

export function testQbittorrentConnect () {
Expand All @@ -18,3 +20,22 @@ export function getBgmTvMe () {
method: 'get'
})
}
export function findDmhyRssItemsByAnimeId (animeId, seq) {
return request({
url: api.findDmhyRssItemsByAnimeId + '/' + animeId,
method: 'get',
params: {
'seq': seq
}
})
}

export function findDmhyRssItems (keyword) {
return request({
url: api.findDmhyRssItems,
method: 'get',
params: {
'keyword': keyword
}
})
}
55 changes: 54 additions & 1 deletion src/api/user.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
import request from '@/utils/request'
import Base64 from 'crypto-js/enc-base64'
import Utf8 from 'crypto-js/enc-utf8'

const userApi = {
Login: '/user/login',
ForgePassword: '/user/forge-password',
Register: '/user/register',
UserInfo: '/user/info'
UserInfo: '/user/info',
userSubscribeByAnimeId: '/user/subscribe/anime',
basic: '/user',
userPassword: '/user/password',
userSubscribeWithBatchByAnimeIdArrBase64Json: '/user/subscribe/anime/ids'
}

/**
Expand Down Expand Up @@ -42,3 +48,50 @@ export function getInfo () {
}
})
}

export function saveUserSubscribeByAnimeId (animeId, progress) {
// const word = Utf8.parse(additional)
// additional = Base64.stringify(word)
return request({
url: userApi.userSubscribeByAnimeId + '/' + animeId,
method: 'put',
params: {
'progress': progress
// , 'additional': additional
}
})
}

export function saveUserSubscribeWithBatchByAnimeIdArr (animeIdArr) {
const animeIdArrBase64Json = Base64.stringify(Utf8.parse(JSON.stringify(animeIdArr)))
return request({
url: userApi.userSubscribeWithBatchByAnimeIdArrBase64Json + '/' + animeIdArrBase64Json,
method: 'put'
})
}

export function deleteUserSubscribeByAnimeId (animeId) {
return request({
url: userApi.userSubscribeByAnimeId + '/' + animeId,
method: 'delete'
})
}

export function updateUser (userInfo) {
return request({
url: userApi.basic,
method: 'put',
data: userInfo
})
}

export function updateUserPassword (oldPassword, newPassword) {
return request({
url: userApi.userPassword,
method: 'put',
params: {
oldPassword,
newPassword
}
})
}
Binary file added src/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 14 additions & 7 deletions src/components/Anime/AnimeEpisode.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</a-form-model-item>
<a-form-model-item label="URL" >
<a-input v-model="episode.url" placeholder="点击右边按钮,可快速获取已存在文件URL或者上传新的文件">
<a-icon slot="addonAfter" type="search" @click="openFileSelectModal"/>
<a-icon slot="addonAfter" type="search" @click="fileMatchingModalVisible = true"/>
</a-input>
</a-form-model-item>
<a-form-model-item label="中文标题" >
Expand Down Expand Up @@ -45,22 +45,28 @@
:visible.sync="fileSelectModalVisible"
@sendSelectedFileFieldValue="handSelectedFileFieldValue"
:disableCopySelectedFileIdButton="true" />

<FileMatchingModal
:copy-field-url="true"
:visible.sync="fileMatchingModalVisible"
@sendSelectedFileFieldValue="handSelectedFileFieldValue"/>
</a-form-model>
</template>

<script>
import { saveEpisode } from '@/api/episode'
import FileSelectModal from '@/components/File/FileSelectModal.vue'
import FileMatchingModal from '@/components/File/FileMatchingModal.vue'
import moment from 'moment'
export default {
components: { FileSelectModal },
components: { FileSelectModal, FileMatchingModal },
props: {
receiveSeasonId: {
type: String,
default: -1
},
receiveEepisode: {
receiveEpisode: {
type: Object,
default: () => ({})
}
Expand All @@ -70,9 +76,9 @@ export default {
this.seasonId = this.receiveSeasonId
}
if (this.receiveEepisode) {
this.receiveEepisode.airTime = moment(this.receiveEepisode.airTime)
this.episode = this.receiveEepisode
if (this.receiveEpisode) {
this.receiveEpisode.airTime = moment(this.receiveEpisode.airTime)
this.episode = this.receiveEpisode
}
},
mounted () {
Expand Down Expand Up @@ -107,7 +113,8 @@ export default {
},
fileSelectModalVisible: false,
seasonId: -1,
episode: {}
episode: {},
fileMatchingModalVisible: false
}
},
Expand Down
19 changes: 3 additions & 16 deletions src/components/Anime/AnimeSeason.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
<a-button type="primary" @click="handleSaveClick">
保存季度信息
</a-button>
<a-button style="margin-left: 4px;" type="primary" @click="handleResourceMatchingClick">
匹配资源
<a-button style="margin-left: 4px;" type="primary" @click="fileMatchingModalVisible = true">
批量匹配资源
</a-button>
</a-form-model-item>
<!-- 剧集信息 -->
Expand Down Expand Up @@ -56,7 +56,7 @@
<a-tab-pane :closable="tabClosable" v-for="(episode, index) in episodes" :key="index" :tab="`第${ episode.seq === undefined ? '' : episode.seq }集`">
<AnimeEpisode
:receiveSeasonId="new String(season.id)"
:receiveEepisode="episode"
:receiveEpisode="episode"
@updateEpisode="newEpisode => episode = newEpisode"/>
</a-tab-pane>

Expand All @@ -72,7 +72,6 @@
</template>

<script>
import { ANIME_SEASON_TYPE_MAP } from '@/store/mutation-types'
import AnimeEpisode from '@/components/Anime/AnimeEpisode.vue'
import { findSeasonTypes, saveSeason } from '@/api/season'
import { removeEpisode } from '@/api/episode'
Expand All @@ -91,15 +90,6 @@ export default {
default: () => ({})
}
},
filters: {
seasonTypeFilter (value) {
if (ANIME_SEASON_TYPE_MAP.get(value)) {
return ANIME_SEASON_TYPE_MAP.get(value)
} else {
return value
}
}
},
beforeMount () {
if (this.receiveSeason) {
this.$set(this, 'season', this.receiveSeason)
Expand Down Expand Up @@ -223,9 +213,6 @@ export default {
},
onCancel () {}
})
},
handleResourceMatchingClick () {
this.fileMatchingModalVisible = true
}
}
}
Expand Down
Loading

0 comments on commit a5a08db

Please sign in to comment.