Skip to content

Commit

Permalink
Merge pull request #2 from Chenmo1212/develop
Browse files Browse the repository at this point in the history
Updated Version: Using Flask
  • Loading branch information
Chenmo1212 authored Apr 1, 2024
2 parents 55e980d + c12a4b6 commit 8842401
Show file tree
Hide file tree
Showing 1,907 changed files with 21,244 additions and 2 deletions.
45 changes: 45 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: FIKA Reading Deployment
run-name: ${{ github.actor }} is deploying ${{ github.repository }} 🚀
on: [push]
# pull_request:
# branches:
# - main
# types:
# - closed
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Step 1 - Check_out-code 🔎
uses: actions/checkout@v2

- name: Step 2 - Deploy to Server 🖥️
uses: easingthemes/[email protected]
env:
SSH_PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
ARGS: "-rltgoDzvO"
SOURCE: "/"
REMOTE_HOST: ${{ vars.REMOTE_HOST }}
REMOTE_USER: 'root'
TARGET: ${{ vars.TARGET }}

- name: SSH into Server and Start Flask App
uses: appleboy/ssh-action@master
with:
host: ${{ vars.REMOTE_HOST }}
username: root
key: ${{ secrets.PRIVATE_KEY }}
port: 22
script: |
# Use the lsof command to find the process occupying port 3002
PID=$(lsof -t -i :3002)
# # If the process is found, kill it
# if [ -n "$PID" ]; then
# kill -9 $PID
# fi
#
# cd ${{ vars.TARGET }}
# npm install
# npm run build
# nohup npm start > ai_resume.log 2>&1 &
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
venv/
.idea
__pycache__/
78 changes: 78 additions & 0 deletions app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import re

from flask import Flask, abort, render_template, redirect, url_for
import os
import json
import random

app = Flask(__name__)

# Define the directory where articles are stored
ARTICLES_DIR = 'articles'


def clean_filename(filename):
# Characters not allowed in Windows file names
invalid_chars = r'<>:"/\|?*'
for char in invalid_chars:
filename = filename.replace(char, '')
# Further remove non-printing characters and other possible problem characters
filename = re.sub(r'[^.\w\s-]', '', filename)
# Remove spaces from both sides and make sure the filename is not empty
filename = filename.strip()
# If the file name is empty (or contains only illegal characters), provide a default value
if not filename:
filename = "default_filename"
return filename


def load_random_article(articles_dir):
# Get all json files
json_files = [f for f in os.listdir(articles_dir) if f.endswith('.json')]
if not json_files:
return None

selected_file = random.choice(json_files)
file_path = os.path.join(articles_dir, selected_file)

with open(file_path, 'r', encoding='utf-8') as file:
article = json.load(file)
return article


def load_article(article_id):
file_path = os.path.join(ARTICLES_DIR, f"{article_id}.json")
if not os.path.exists(file_path):
return None
with open(file_path, 'r', encoding='utf-8') as file:
article = json.load(file)
return article


@app.route('/')
def random_article():
article = load_random_article(ARTICLES_DIR)
if article:
article_id = article['title']
return redirect(url_for('article', article_id=article_id))
else:
return "No articles found."


@app.route('/bookmark')
def bookmark():
return render_template('bookmark.html')


@app.route('/article/<article_id>')
def article(article_id):
clean_article_id = clean_filename(article_id)
article = load_article(clean_article_id)
if article:
return render_template('index.html', **article)
else:
abort(404) # If the article does not exist, a 404 error is returned


if __name__ == '__main__':
app.run(debug=True)
8 changes: 8 additions & 0 deletions articles/18本画册的爱恋.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"title": "18本画册的爱恋",
"author": "汤小小",
"content": "<p>这是一对平凡夫妻的故事,如童话一般美好,却让人忍不住潸然泪下。 </p>\n<p>初次相见时,他是一位血气方刚的年轻军人,她是活泼俏皮的时髦女子。他回家探亲,父母着急他的终身大事,便“押”着他去相亲。远远地,看见一个年轻女子站在窗前对镜梳妆,波浪卷,红嘴唇,那一刻,他的心里生出细细的喜悦。 </p>\n<p>有父母和媒婆在场,他和她从始至终也没有说上几句话,临走时,她娇羞地送给他几张照片,含情脉脉地对视一眼,他便知道,她心里也是欢喜的。 </p>\n<p>他们顺理成章地结婚,约好一生相守。只是,婚后的日子却是聚少离多,他长年呆在部队,她一个人操持家务、抚育孩子,一个南,一个北,像两个毫无关联的人。改变却是显而易见的,以前在战场上他从不惧怕死亡,流弹从身边打过也毫不在意,可是现在,他忽然害怕了,如果自己死了,妻子和孩子怎么办?他们指靠谁啊?而她,也迅速从一个时髦女子变成地道的家庭妇女,学会了省吃俭用,连两元钱一包的中药都舍不得买,还像男人婆一样,跑到建筑工地上去挑水泥,赚取家用。 </p>\n<p>他们唯一的联系就是写信。她写的都是些家长里短、鸡毛蒜皮,偶尔,还有一些小抱怨小气恼。无论她写什么,他都笑呵呵地看,然后,把它们好好地收藏起来,哪里有破损,也会拿胶水小心翼翼地粘好。 </p>\n<p>这样的日子一过就是二十年,他先在部队当兵,然后到工厂“劳动改造”,她始终坚守着他们小小的家,等待他归来。 </p>\n<p>终于还是团聚了,只是,隔着二十年的时光,连孩子都要恋爱结婚了,他已不再年轻英俊,她亦不再容颜俏丽,而且生活习惯大相径庭,矛盾总是在所难免。她抱怨他太笨,饭做不好,衣服洗不干净,有时候还会打冷战,好几天不理他,说狠话气他。他从不生气,总是笑呵呵地哄她, </p>\n<p>时光就这样静静地流淌,一日日,一年年,把他们变成白发苍苍的老人。她的脾气越来越古怪,像个喜怒无常的小孩。有时候心情不好,老是莫名其妙地掉眼泪,他看了以为是抑郁症,火急火燎地去拿药,吃了没几天,她马上喜笑颜开,啥事儿都没有了。有时候毫无来由地大吵大闹,搅得一家人不得安宁,个个躲得远远地,而他总是陪在她身边,看着她别被桌角玻璃什么的碰伤。 </p>\n<p>儿孙们知道她是病了,把她送到医院,她却常常拔掉身上的管子,还老说昏话。她说想吃糕点,他就会跑很远的路,穿过好几个街道,为她买来老字号的糕点,可是递到她面前,她又完全忘了这回事。有时候她忽然嘟噜着说,自己那件黑底红花的衣裳到哪儿去了?其实,她根本就没这么件衣服,他听了,却赶紧买布,找裁缝,紧赶慢赶地给她做出来,送到床边…… </p>\n<p>儿孙们都劝他,她已经糊涂了,脑子不好使了,干吗还把她的话当真呢?又花钱又费事,还徒增伤悲。他却不听劝,下回,只要她开口要什么,他还是想方设法给她弄来。即使她已经糊涂了,可是她提的任何要求,他都不忍心拒绝,因为他不糊涂,他知道,他能为她做的已经不多了。 </p>\n<p>她果然闭上眼睛,永远地离开了,她是笑着走的,紧紧拉着他的手。 </p>\n<p>她走了,他觉得自己的心也被掏空了,终于知道,什么叫生离死别。那就是,无论你多么想念一个人,都永远再也见不到了。 </p>\n<p>思念将他牢牢吞噬,60年来相处的点点滴滴,在脑海里不停浮现,她对镜梳妆的模样,她趴在桌前写信的模样,她发脾气的模样,她生气的模样……他找来纸笔,想把她的模样画出来,这样,它们就永远不会从记忆里跑掉,这样,就仿佛看到真实的她,仿佛她还在他面前巧笑嫣然。 </p>\n<p>谁知,这一画就再也无法停下来,原来他和她,竟有那么多的故事可讲啊。从相见,到结婚,到婚后的每一个日日夜夜,居然都有讲不完的故事。 </p>\n<p>他没有学过美术,他的画简单明了,可是寥寥数笔,却把她画得丝毫不差,和真实的人儿一模一样,一样的眉眼,一样的笑容,一样的神情。 </p>\n<p>画他们相处的点滴,他觉得还不够,在没有遇见他之前,她是什么模样?她会干些什么?他的笔,蘸着满腔的爱和思念,居然描绘出了她童年和少女时代的影像。 </p>\n<p>儿孙们怕他一大把年纪,天天俯着身子画画,对健康不好,想要带他出去旅游,他却只到一个地方,那是他和她当初结婚的旅行社,他独自一人,站在当年两个人一起站过的地方,留下一张“旧地重游”的照片。他甚至不上网,不碰电脑,他怕被别的事情牵绊,就没有时间画画了。 </p>\n<p>如今,他已年过九旬,他的画册也已经有了18本之多,他为它们取名《我俩的故事》。每天,他都在画画中倾诉对她的思念,在画画中与她进行灵魂交谈。他枕着这些画入眠,同时伴着他的,还有她的一缕白发,以及她的骨灰。 </p>\n<p>他有一个普通的名字,饶平如,她的名字很美,叫美棠。他说,等他死了,就和她的骨灰装在一个盒子里,多余的撒向大海,这将是他最完美的结局。</p>",
"text_num": 1870,
"date": "2022-07-26 08:00",
"content_hash": "ffbe6ce56a1d2f51ebcd6029d2356cc544f4e51995cd96acd413e06afb908823"
}
8 changes: 8 additions & 0 deletions articles/1905年5月3日.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"title": "1905年5月3日",
"author": "阿兰·莱特曼",
"content": "<p>设想一个因果错乱的世界。有时一先于二,有时二先于一。也许,因总在过去,果长在将来,但将来和过去却纠缠不清。 </p>\n<p>从蓬特斯高台望去,景色壮丽:阿尔卑斯山直插入天,阿勒河行于地。此刻有位男子站在那儿,茫茫然掏空衣袋,伤心哭着。朋友们无缘无故地抛弃了他。再没人约他吃晚饭下酒馆,邀他来家里作客。二十年来他一直都是个理想的朋友:大方,有情趣,有爱心,和颜悦色。究竟发生了什么?距此一个星期在这高台上,同一个人开始乱来,逢人便得罪,一毛不拔,乱头粗服,劳喷大街他的公寓谁都不让去。哪个是将来,哪个是过去?哪个是因,哪个是果? </p>\n<p>在苏黎世议会最近通过了严格的法令,禁止向公众出售枪支。银行商号都要定期查账。来访者,无论走利马特的水路,还是走塞尔拿的铁道,都要搜一搜看是否在偷运军火。保安力量增加了一倍。严打之后一个月,苏黎世发生了空前的恶性犯罪,青天白日下瓦因广场人被杀,空斯特艺术馆画被盗,缪斯托教堂里觥筹交错。没准这些罪行时间上错了位?或许新法令反倒是肇事者? </p>\n<p>一位年轻女子坐在植物园的喷泉附近。她每星期天都来这儿亲近白色紫罗兰、麝香野蔷薇、粉色桂竹香。忽然间,她的心儿飘,脸儿烧,步履浮躁,无由地欢喜。数日后,她遇见一位小伙子,爱得死去活来。两件事难道无关?要是有,又是凭的哪种奇怪关系、错乱时序、颠倒因缘? </p>\n<p>在这个无因果的世界里,科学家算是无望了。他们的预报都成了马后炮,他们的推导公式也只起点儿解释说明的作用。合乎逻辑落得个悖乎事理。科学家像上了瘾的赌棍一样信口雌黄,喋喋不休。科学家成了小丑,倒不是因为他们理性,而是因为宇宙不理性。也许不是因为宇宙不理性,而是因为他们理性。谁又能说谁是谁不是,在这无因果的世界里? </p>\n<p>在这个世界里,艺术家可乐了。他们绘画、音乐和小说的生命就在于出其不意。他们喜欢预测不到、解释不了的事情,喜欢怀旧梦寻。 </p>\n<p>多数人都学会了如何生活在此刻。既然过去对现在的影响根本说不准,那就别管过去。既然现在对于将来没多大要紧,那就用不着三思而后行。每一行动都是时间的岛屿,评说全在乎本身。亲人体贴快死的舅舅,不是预备回头接收遗产,而是因为如今爱他。一个人找到份差事,凭的不是好履历,而是求职谈话时的好表现。老板踩一脚伙计便回一拳,因为不必担心将来。这是个心血来潮的世界,是个率情率性的世界。在这个世界里,每个字只就此刻说,每个眼神只一层含意,每回触摸无过去也无将来,每次亲吻除了亲吻还是亲吻。 </p>\n<p>节选自《爱因斯坦的梦》,访问每日一文书架板块可以查看本书。</p>",
"text_num": 1037,
"date": "2022-12-18 08:10",
"content_hash": "704d7b944552f600bff65173b1ae97db7f12884aed9f93e9d40d0425028f68a8"
}
8 changes: 8 additions & 0 deletions articles/1905年6月9日.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"title": "1905年6月9日",
"author": "阿兰.莱特曼",
"content": "<p>设想人长生不死。 </p>\n<p>听着挺怪,所有城市的人都分成“这会儿”、“待会儿”两类。 </p>\n<p>“待会儿”认为不用急着上大学念二外,牛顿伏尔泰,也不忙晋升恋爱成家养孩儿。这些事情有的是功夫去做。岁月悠悠,什么都能完成,什么都可以等待。再说了,忙中必出乱子。他们的道理谁能说不是?“待会儿”在任何商店路边都能见到。他们步履悠闲,穿戴松垮。他们乐得一阅已翻开的杂志,将家具摆去摆来,聊起天就像树叶飘下地。“待会儿”坐在咖啡馆细品慢尝,议论着生活的各种可能性。 </p>\n<p>“这会儿”以为既然岁月无穷,凡能想到的都不妨做一做。他们要干无数的事业,他们要结无数次婚,改变无数次立场。每个人都将成为律师、瓦匠、作家、会计、画家、大夫、庄稼汉。“这会儿”老是在读新书,琢磨新行当,学习新语种。为了把无限的生活都品尝一遍,他们抓紧时间、从不懈怠。谁又能说他们没道理?“这会儿”也不难找到。他们是咖啡店主、大学教授、医生、护士、政治家以及一坐下便要摇晃腿的角色。他们把各样人生一一经历,唯恐有什么遗漏。两位“这会儿”相遇在采令梅尔喷泉的六边形壁柱前,便要切磋生活,交流信息,偷眼看表。两位“待会儿”在同样的地方邂逅,便沉思明天,遐想后天,眼睛随着水波荡漾。 </p>\n<p>“这会儿”和“待会儿”有一共同之处。因为生命无穷,亲戚也就无数。不独祖父母健在,那曾祖父母、太姨婆婆、高曾伯祖父、老太姑祖母,上溯祖祖辈辈,都活得好好的,等着献计献策。儿子永远逃不出爹的影子,女儿也躲不开娘的荫护。没有一个人独立自主。 </p>\n<p>一个人要干件事儿,先得征询父母、祖父母、列祖列宗的意见,以免走弯路。新事不新鲜。老辈子什么没试过,而且什么都做成了。不过代价是有的。在这样一个世界里,增大的成就多少被缩小的抱负所分割。 </p>\n<p>女儿从妈那儿得到的,只能是稀释了的教导。因为妈上有妈,逐级请教上去,便是无穷无尽。儿女固然自做不了主张,父母又何尝能说出肯定的意见。父母不是信心的源泉。源泉有千千万。 </p>\n<p>如果每一举措都要论证千万次,生活便成了实验。桥架到河心断然截住,楼盖了九层从此露天。食品店一会儿卖鳕鱼牛肉,过会儿卖生姜咸盐,心眼儿一动就改,提个建议便换,话没有说完整的,婚约维持到婚礼头两天。人在街上三步一反顾,看是不是被人瞧见。 </p>\n<p>长生不老是如此代价。谁都不完整,谁也不自在。到后来,有些人想通了,要想活,唯有死。人一死,便卸下过去的重担。这一小伙人由亲人目送,投人康斯坦茨湖,或是跳下莱马峰,一了那没完没了的生命。就这样,有限战胜了无限,千万年输给一闭眼,千万场雪输给没雪天,千万声教诲输给无言。 </p>\n<p>摘自《爱因斯坦的梦》</p>",
"text_num": 1070,
"date": "2020-09-22 09:10",
"content_hash": "6b4091260aa17a68f53e7550ce3d1eea1c595458e2a543e142b1d6ef5cbe7586"
}
Loading

0 comments on commit 8842401

Please sign in to comment.