diff --git a/komga-webui/src/components/LibraryActionsMenu.vue b/komga-webui/src/components/LibraryActionsMenu.vue
index ebe6592ea..b344b1673 100644
--- a/komga-webui/src/components/LibraryActionsMenu.vue
+++ b/komga-webui/src/components/LibraryActionsMenu.vue
@@ -13,6 +13,9 @@
Analyze
+
+ Refresh metadata
+
Delete
@@ -56,6 +59,9 @@ export default Vue.extend({
analyze () {
this.$komgaLibraries.analyzeLibrary(this.library)
},
+ refreshMetadata () {
+ this.$komgaLibraries.refreshMetadata(this.library)
+ },
promptDeleteLibrary () {
this.modalDeleteLibrary = true
},
diff --git a/komga-webui/src/services/komga-books.service.ts b/komga-webui/src/services/komga-books.service.ts
index 219875139..be7bae54e 100644
--- a/komga-webui/src/services/komga-books.service.ts
+++ b/komga-webui/src/services/komga-books.service.ts
@@ -96,6 +96,18 @@ export default class KomgaBooksService {
}
}
+ async refreshMetadata (book: BookDto) {
+ try {
+ await this.http.post(`${API_BOOKS}/${book.id}/metadata/refresh`)
+ } catch (e) {
+ let msg = `An error occurred while trying to refresh metadata for book '${book.name}'`
+ if (e.response.data.message) {
+ msg += `: ${e.response.data.message}`
+ }
+ throw new Error(msg)
+ }
+ }
+
async updateMetadata (bookId: number, metadata: BookMetadataUpdateDto): Promise {
try {
return (await this.http.patch(`${API_BOOKS}/${bookId}/metadata`, metadata)).data
diff --git a/komga-webui/src/services/komga-libraries.service.ts b/komga-webui/src/services/komga-libraries.service.ts
index 637c74d5d..4cd2f8532 100644
--- a/komga-webui/src/services/komga-libraries.service.ts
+++ b/komga-webui/src/services/komga-libraries.service.ts
@@ -80,4 +80,16 @@ export default class KomgaLibrariesService {
throw new Error(msg)
}
}
+
+ async refreshMetadata (library: LibraryDto) {
+ try {
+ await this.http.post(`${API_LIBRARIES}/${library.id}/metadata/refresh`)
+ } catch (e) {
+ let msg = `An error occurred while trying to refresh metadata for library '${library.name}'`
+ if (e.response.data.message) {
+ msg += `: ${e.response.data.message}`
+ }
+ throw new Error(msg)
+ }
+ }
}
diff --git a/komga-webui/src/services/komga-series.service.ts b/komga-webui/src/services/komga-series.service.ts
index c9c068acb..c9a6dcf5a 100644
--- a/komga-webui/src/services/komga-series.service.ts
+++ b/komga-webui/src/services/komga-series.service.ts
@@ -105,6 +105,18 @@ export default class KomgaSeriesService {
}
}
+ async refreshMetadata (series: SeriesDto) {
+ try {
+ await this.http.post(`${API_SERIES}/${series.id}/metadata/refresh`)
+ } catch (e) {
+ let msg = `An error occurred while trying to refresh metadata for series '${series.name}'`
+ if (e.response.data.message) {
+ msg += `: ${e.response.data.message}`
+ }
+ throw new Error(msg)
+ }
+ }
+
async updateMetadata (seriesId: number, metadata: SeriesMetadataUpdateDto): Promise {
try {
return (await this.http.patch(`${API_SERIES}/${seriesId}/metadata`, metadata)).data
diff --git a/komga-webui/src/views/BrowseBook.vue b/komga-webui/src/views/BrowseBook.vue
index 556f3f650..ed1048fda 100644
--- a/komga-webui/src/views/BrowseBook.vue
+++ b/komga-webui/src/views/BrowseBook.vue
@@ -26,6 +26,9 @@
Analyze
+
+ Refresh metadata
+
@@ -236,6 +239,9 @@ export default Vue.extend({
analyze () {
this.$komgaBooks.analyzeBook(this.book)
},
+ refreshMetadata () {
+ this.$komgaBooks.refreshMetadata(this.book)
+ },
},
})
diff --git a/komga-webui/src/views/BrowseSeries.vue b/komga-webui/src/views/BrowseSeries.vue
index 7f8015a47..231a670a6 100644
--- a/komga-webui/src/views/BrowseSeries.vue
+++ b/komga-webui/src/views/BrowseSeries.vue
@@ -20,6 +20,9 @@
Analyze
+
+ Refresh metadata
+
@@ -330,6 +333,9 @@ export default mixins(VisibleElements).extend({
analyze () {
this.$komgaSeries.analyzeSeries(this.series)
},
+ refreshMetadata () {
+ this.$komgaSeries.refreshMetadata(this.series)
+ },
singleEdit (book: BookDto) {
this.editBookSingle = book
this.dialogEditBookSingle = true