fugary / simple-boot-douban-api Goto Github PK
View Code? Open in Web Editor NEWSimple douban book api
License: Apache License 2.0
Simple douban book api
License: Apache License 2.0
好用!谢谢!不过,似乎是不能下载封面图片。我是挂载了本地服务,直接修改calibre中的豆瓣插件,然后发现可以下载元数据,但是封面不能下载。是不是?还是我用得不对?
2021-08-24 15:49:31,stdout, at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_212]
2021-08-24 15:49:31,stdout, at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_212]
2021-08-24 15:49:31,stdout, at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.50.jar!/:na]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1064) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212]
2021-08-24 15:49:31,stdout, at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212]
2021-08-24 15:49:31,stdout, at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source) ~[na:na]
2021-08-24 15:49:31,stdout, at com.fugary.simple.douban.controller.DoubanApiController.searchBook(DoubanApiController.java:73) ~[classes!/:0.0.1-SNAPSHOT]
2021-08-24 15:49:31,stdout, at com.fugary.simple.douban.controller.DoubanApiController.searchBookElementsNew(DoubanApiController.java:120) ~[classes!/:0.0.1-SNAPSHOT]
2021-08-24 15:49:31,stdout, at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:602) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:125) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:186) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:109) ~[spring-web-5.3.9.jar!/:5.3.9]
2021-08-24 15:49:31,stdout, <style... (1210 bytes)]
2021-08-24 15:49:31,stdout, <title>豆瓣 - 登录跳转页</title>
2021-08-24 15:49:31,stdout," <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
"
2021-08-24 15:49:31,stdout, <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
2021-08-24 15:49:31,stdout,<head>
2021-08-24 15:49:31,stdout,org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: [<html>
您好,已经按照您的说明配置了docker,并且在浏览器通过nas的ip地址及端口可以搜索都书籍在豆瓣上的资料。
但是我在calibre-web上更改了var douban的内容后,calibre-web的页面还是没法搜索到内容,能否设想下可能的问题出在哪里?
ps:我和您说的calibre-web不是同一个docker,我装的时 johngong-calibre-web,并且我的get_meta.js的地址是 /usr/local/calibre-web/cps/static/js/get_meta.js
会不会是这上面出现的问题?
望能答复,谢谢。
我今天docker刚刚布放,测试了一下http://localip:8085/v2/book/search?q=深入理解计算机系统
返回的结果是
{"success":false,"message":null,"books":[]}
例如获取到的封面图片地址为:
https://img2.doubanio.com/view/subject/l/public/s1470003.jpg
可改写为:
https://images.weserv.nl/?url=http://img2.doubanio.com/view/subject/l/public/s1470003.jpg
就是把原封面图地址的 https 换成 http ,然后在前面加上:https://images.weserv.nl/?url=
get_meta获取书籍简介的时候,由于文本内容过长,最后会出现展开全部的按钮,目前是直接拷贝了展开全部,是否可以完善以获取全部简介内容
浏览器可以,但是calibre-web依然搜索不到douban. get_meta.js修改成了NAS的IP。
怎么回事呢?docker也开启了该容器。
新版的calibre-web已经修改了元数据的配置,能弄个教程吗,我加进去的都是搜索错误
路径在 calibre-web/app/cps/metadate_provider
import requests
from cps.services.Metadata import Metadata
class Douban(Metadata):
name = "Douban"
id = "douban"
def search(self, query, __):
if self.active:
val = list()
result = requests.get("http://192.168.2.16:8085/v2/book/search?q="+query.replace(" ","+"))
for r in result.json()['books']:
v = dict()
v['id'] = r['id']
v['title'] = r['title']
v['authors'] = r.get('author', [])
v['description'] = r['summary']
v['publisher'] = r['publisher']
v['publishedDate'] = r['pubdate']
v['tags'] = r['series'].get('title', "")
v['rating'] = r['rating'].get('average', 0)
v['cover'] = r['image']
v['source'] = {
"id": self.__id__,
"description": "Douban Books",
"link": "http://192.168.2.16:8085/v2/book/"}
v['url'] = "https://book.douban.com/subject/" + r['id']+"/"
val.append(v)
return val
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.