asfag654 commited on
Commit
5062583
1 Parent(s): 8015e5a

Upload 4 files

Browse files
Files changed (4) hide show
  1. Dockerfile +13 -0
  2. README.md +10 -10
  3. index.js +93 -0
  4. package.json +21 -0
Dockerfile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:alpine
2
+
3
+ WORKDIR /app
4
+
5
+ COPY . .
6
+
7
+ EXPOSE 7860
8
+
9
+ RUN apk update && apk add --no-cache openssl curl &&\
10
+ chmod +x index.js &&\
11
+ npm install
12
+
13
+ CMD ["node", "index.js"]
README.md CHANGED
@@ -1,10 +1,10 @@
1
- ---
2
- title: Kk
3
- emoji: 🌖
4
- colorFrom: green
5
- colorTo: blue
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: Keep Alive
3
+ emoji: 📊
4
+ colorFrom: green
5
+ colorTo: gray
6
+ sdk: docker
7
+ pinned: false
8
+ ---
9
+
10
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.js ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const axios = require('axios');
2
+ const moment = require('moment-timezone');
3
+ const http = require('http');
4
+ const cron = require('node-cron');
5
+ const port = process.env.PORT || 7860;
6
+
7
+ // 添加24小时是不间断访问的url数组
8
+ const webpages = [
9
+ // ... 添加更多url
10
+ ];
11
+
12
+ // 添加1:00-6:00暂停,其他时间正常访问的url数组
13
+ const urls = [
14
+ 'https://new-bing-next-chat.hf.space',
15
+ 'https://asfag654-t.hf.space',
16
+ 'https://asfag654-kk.hf.space',
17
+ 'https://asfag654-t.hf.space/guoba',
18
+ 'https://asfag654-sss.hf.space'
19
+
20
+
21
+ ];
22
+
23
+ // 遍历网页数组并发请求访问网页
24
+ const visit = async (url) => {
25
+ try {
26
+ const response = await axios.get(url);
27
+ console.log(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')} Visited web successfully: ${url} --- Status: ${response.status}\n`);
28
+ } catch (error) {
29
+ console.error(`Failed to visit ${url}: ${error.message}\n`);
30
+ }
31
+ };
32
+ const visitAll = async () => {
33
+ for (let url of urls) {
34
+ await visit(url);
35
+ }
36
+ };
37
+
38
+ // 定判断是否在访问时间段内
39
+ const isWithinTime = () => {
40
+ const now = moment().tz('Asia/Hong_Kong');
41
+ const hour = now.hour();
42
+ if (hour >= 1 && hour < 6) {
43
+ return false;
44
+ }
45
+ return true;
46
+ };
47
+
48
+ // 创建http服务
49
+ const createServer = () => {
50
+ const server = http.createServer((req, res) => {
51
+ if (req.url === '/') {
52
+ res.writeHead(200, {'Content-Type': 'text/plain'});
53
+ res.end('Hello world!');
54
+ } else {
55
+ res.writeHead(404, {'Content-Type': 'text/plain'});
56
+ res.end('404 Not Found');
57
+ }
58
+ });
59
+ server.listen(port, () => {
60
+ console.log(`Server started on port ${port}`);
61
+ });
62
+ };
63
+
64
+ // 执行访问逻辑
65
+ const main = async () => {
66
+ createServer();
67
+ setInterval(async () => {
68
+ if (isWithinTime()) {
69
+ await visitAll();
70
+ } else {
71
+ console.log(`Stop visiting at ${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')}`);
72
+ }
73
+ }, 2 * 60 * 1000); // 指定时间段访问的间隔2分钟
74
+ };
75
+ main();
76
+
77
+ //24小时不间断访问部分
78
+ async function access(url) {
79
+ try {
80
+ const response = await axios.get(url);
81
+ console.log(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')} Web visited successfully: ${url} --- status:${response.status}`);
82
+ } catch (error) {
83
+ console.error(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')} Failed to visit ${url}, Error ${error.message}`);
84
+ }
85
+ }
86
+
87
+ async function batchVisit() {
88
+
89
+ for (let url of webpages) {
90
+ await access(url);
91
+ }
92
+ }
93
+ cron.schedule('*/2 * * * *', batchVisit); // 24小时访问任务间隔周期,默认2分钟
package.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "keep-alive",
3
+ "version": "1.0.0",
4
+ "description": "keep-web-alive",
5
+ "main": "index.js",
6
+ "author": "eoovve",
7
+ "repository": "",
8
+ "license": "MIT",
9
+ "private": false,
10
+ "scripts": {
11
+ "start": "node index.js"
12
+ },
13
+ "dependencies": {
14
+ "axios": "^1.6.2",
15
+ "node-cron": "^2.0.1",
16
+ "moment-timezone": "latest"
17
+ },
18
+ "engines": {
19
+ "node": ">=14"
20
+ }
21
+ }