GithubHelp home page GithubHelp logo

sydneyowl / kindle-calendar Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 38.33 MB

Calendar for kv

License: The Unlicense

Dockerfile 3.59% JavaScript 42.96% Python 12.11% Shell 11.61% CSS 17.67% HTML 12.06%

kindle-calendar's Introduction

KINDLE_CALENDAR

简介

将吃灰已久的kindle改造为台历的项目。目前仅适配 kindle voyage(仅在5.12.x版本测试通过)。如果需要在其他型号的kindle上运行,请参考下文。经过测试,在关闭冗余进程并持续联网的情况下,一台购买于2018年并吃灰已久的kv,两小时内的耗电量约为8%-10%。考虑到存在的电池损耗,这是相当理想的功耗了。

项目灵感来源自lankybutmacho/web-to-kindle-heroku以及Your next smart home device is a $30 used Kindle,作者利用node实现自动化的网页截图,并利用已越狱的kindle从部署好的服务端定时自动拉取截图显示在屏幕上。

代码可能有点丑陋,哈哈

开始...

警告:kindle越狱有风险!因为使用本项目带来的后果笔者不承担责任!

准备工作

  • 一台已经越狱的kindle voyage,步骤不难,下文不再赘述
  • 能24h运行的x86架构linux服务器,不要求公网ip
  • 几个API key:
    • 和风天气需申请key以及小组件。 对于手动部署,注意开通标准版天气插件,将得到的配置填入frontend的html中,申请的key填入backend/fetch.py的HEFENG_KEY中。注意同时替换CURR_POS为你当前的位置。具体请查看和风天气api
    • 天行api需要申请key,并开通ONE一个、**老黄历,对于手动部署,填入fetch.py的APIKEY中

服务器端

DOCKER

示例代码:

sudo docker pull sydneymrcat/kindle-calendar:latest

sudo docker run --init -d -p 3000:3000 -e TIANAPI=<TIANAPI> -e HEFENGAPI=<HEFENGAPI> -e CURRPOS=<CURRPOS> -e CITY=<CITY> -e WIDGETKEY=<WIDGETKEY> -e WIDGETID=<WIDGETID> -e WIDGETIDS=<WIDGETIDS> sydneymrcat/kindle-calendar

替换尖括号里的内容即可。请先安装docker!

<TIANAPI>: www.tianapi.com

<HEFENGAPI>: console.qweather.com

<CURRPOS>: LocationList/China-City-List-latest.csv at master · qwd/LocationList (github.com)中的location id

<CITY><WIDGETKEY>:https://widget.qweather.com/create-standard 生成的json对应city和key

<WIDGETID><WIDGETIDS>分别对应免费天气插件 (weatherwidget.org)生成json的id和a.ids[0]

手动部署

首先,请将frontend内的相关文件复制到服务器内,开通天行api以及和风天气的相关服务,获取key后填写入fetch.py中,并运行:

python3 fetch.py

这一py文件的目的是缓存从第三方服务请求来的信息,避免重复请求造成损失。

请提前申请api key,并替换前端文件html中标识为【请替换】的部分

请记得修改js文件的api请求路径。js会请求fetch.py启动的后端,确保ip正确。

使用nginx或其他webserver代理这一html,并确保能够curl到,且请求到的css样式和页面数据正常。笔者偷懒,这里不再赘述。

之后,将backend文件夹内所有文件放入服务器内,修改app.json和index.js内对应配置。需修改的是需要截图的地址,即访问上文经代理的网页地址。

index.js内请修改截图尺寸。可以参考linux convert命令参数填写args. 如果你也是kindle voyage就不用管了

如果需要适配其它型号的kindle,请注意自行适配前端部分并修改截图尺寸。

首先复制fonts文件夹里的字体到/usr/share/fonts内,避免后序截图中文乱码。

接下来请确保具有node12+环境。

如没有,请运行如下指令(debian系,仅在ubuntu 22.04测试通过,但其他发行版应该大致相同):

sudo apt update 
sudo apt install nodejs npm

接下来安装puppeteer(自动化截图工具)所需依赖:

注意,服务器只能是x86!

sudo apt install libnss3-dev libgdk-pixbuf2.0-dev libgtk-3-dev libxss-dev libasound2 -y

进入backend/app后,使用npm运行:

npm install
npm start

试着访问服务器ip:3000,并观察日志,检验截图是否正常。

kindle端

请先利用 kual安装nsbnetwork(参考USBNetwork Hack 安装教程)。ssh到kindle后:

运行 eips -c并观察屏幕。如果屏幕没有清空,请停止以下步骤,因为该方法与你的kindle不兼容

接下来挂载kindle的文件系统:先运行 mntroot rw使文件系统可写,将configs文件夹复制到你的kindle中,修改displaySaver.sh中对应地址到你的截图服务地址

首先运行文件夹内的disableServices.sh尝试关闭冗余服务,如果出现任何异常,请不要继续。

如果没有出现异常,请继续运行displaySaver.sh。注意把脚本中的地址改为你的服务器地址。如果屏幕没有按预期显示截图,也请停止执行。

如果均未出现异常,恭喜你的kindle能够正常运行日历啦!接下来我们只需要加入开机启动项和crontab即可。

将两个脚本文件复制到 /mnt/us内,再将conf文件复制到 /etc/upstart内,最后 nano /etc/crontab/root,加入一行 * * * * * /mnt/us/displaySaver.sh,最后reboot下,你的日历大概就ok了。

适配其他kindle

懂前端的同学可以自己写html,注意尺寸要适配kindle的屏幕尺寸。再把node里截图尺寸改了

最后...

玩腻了想把它变回kindle?很简单,ssh到kindle,把 /etc/crontab/root复原,再把 /etc/upstart里之前复制进去的conf删掉就行

估计这个教程有挺多问题...有任何问题欢迎提issue!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.