无数据线Kindle传书
·
all you need is 一台电脑,你家或者你的工位的wifi,一个Kindle,Python3.
1.确保你的kindle和电脑连接了同一个局域网(wifi)
2.把下面这段代码保存为文件server.py
from http.server import SimpleHTTPRequestHandler, HTTPServer
import os
import urllib
class KindleHandler(SimpleHTTPRequestHandler):
def guess_type(self, path):
if path.lower().endswith(".mobi"):
return "application/x-mobipocket-ebook"
elif path.lower().endswith(".prc"):
return "application/x-mobipocket-ebook"
elif path.lower().endswith(".azw"):
return "application/vnd.amazon.ebook"
elif path.lower().endswith(".txt"):
return "text/plain"
return super().guess_type(path)
def send_head(self):
path = self.translate_path(self.path)
f = None
if os.path.isdir(path):
return super().send_head()
ctype = self.guess_type(path)
try:
f = open(path, 'rb')
except OSError:
self.send_error(404, "File not found")
return None
self.send_response(200)
self.send_header("Content-Type", ctype)
filename = os.path.basename(path)
self.send_header("Content-Disposition", f'attachment; filename="{filename}"')
fs = os.fstat(f.fileno())
self.send_header("Content-Length", str(fs.st_size))
self.end_headers()
return f
if __name__ == "__main__":
os.chdir(r"这里改成你的需要分享的电子书文件夹路径") #
server_address = ("0.0.0.0", 8000)
httpd = HTTPServer(server_address, KindleHandler)
print("Serving on port 8000...")
httpd.serve_forever()
【注意!这个程序只支持英文文件名,文件扩展名mobi azw prc txt】
3.用你的电脑命令行运行这个程序。
python server.py
4.ipconfig找到你电脑的无线局域网ipv4地址。

5.用kindle网页浏览器访问http://你电脑的ipv4地址:8000
6.然后你就可以点击下载你的电子书了。再次提醒文件名改成英文的。

多解释一些:之所以要起一个HTTP服务是因为Kindle本身不支持直接用 Windows 网络共享(SMB) 协议访问局域网文件夹,而为什么不能只单纯起一个HTTP服务而是写了一个服务脚本是因为kindle本身会识别下载的文件类型,反正我的kindle是只支持上述几种文件类型,而Python 简易 HTTP 服务器默认返回的 MIME 类型可能是application/octet-stream或者被kindle识别为了plaintext,anyway,我们需要一个脚本明确告诉kindle我们提供的文件类型,这样就可以愉快无线传书了。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)