@nger/fk-upload 1.0.202 → 1.0.203

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. package/dist/{templates → controllers}/code.d.ts +0 -0
  2. package/dist/{templates → controllers}/code.js +2 -1
  3. package/dist/controllers/relogin.d.ts +8 -0
  4. package/dist/controllers/relogin.js +42 -0
  5. package/dist/{templates → controllers}/verify.d.ts +0 -0
  6. package/dist/{templates → controllers}/verify.js +0 -0
  7. package/dist/entities/check-task.d.ts +13 -0
  8. package/dist/entities/check-task.js +221 -0
  9. package/dist/entities/download-task.d.ts +23 -0
  10. package/dist/entities/download-task.js +445 -0
  11. package/dist/entities/effect-task.d.ts +12 -0
  12. package/dist/entities/effect-task.js +207 -0
  13. package/dist/entities/fk-account.d.ts +16 -0
  14. package/dist/entities/fk-account.js +295 -0
  15. package/dist/entities/fk-jiqun.d.ts +5 -0
  16. package/dist/entities/fk-jiqun.js +56 -0
  17. package/dist/entities/upload-task.d.ts +15 -0
  18. package/dist/entities/upload-task.js +333 -0
  19. package/dist/entities/w7-account.d.ts +11 -0
  20. package/dist/entities/w7-account.js +126 -0
  21. package/dist/entities/w7.d.ts +10 -0
  22. package/dist/entities/w7.js +107 -0
  23. package/dist/entities/w7_chat_topic.d.ts +9 -0
  24. package/dist/entities/w7_chat_topic.js +58 -0
  25. package/dist/entities/w7_uni_account.d.ts +4 -0
  26. package/dist/entities/w7_uni_account.js +23 -0
  27. package/dist/fk-upload.module.d.ts +5 -0
  28. package/dist/fk-upload.module.js +76 -43
  29. package/dist/main.d.ts +1 -0
  30. package/dist/main.js +18 -29
  31. package/dist/services/check.service.d.ts +6 -0
  32. package/dist/services/check.service.js +32 -0
  33. package/dist/services/client.service.d.ts +6 -0
  34. package/dist/services/client.service.js +29 -0
  35. package/dist/services/download.service.d.ts +15 -0
  36. package/dist/services/download.service.js +139 -0
  37. package/dist/services/effect.service.d.ts +7 -0
  38. package/dist/services/effect.service.js +34 -0
  39. package/dist/services/fk.service.d.ts +24 -0
  40. package/dist/services/fk.service.js +323 -0
  41. package/dist/services/login.service.d.ts +17 -0
  42. package/dist/services/login.service.js +95 -0
  43. package/dist/services/upload.service.d.ts +13 -0
  44. package/dist/services/upload.service.js +100 -0
  45. package/dist/tasks/actions.d.ts +28 -0
  46. package/dist/tasks/actions.js +12 -0
  47. package/dist/{templates/tasks/schedule-task.d.ts → tasks/check-task.d.ts} +3 -5
  48. package/dist/tasks/check-task.js +205 -0
  49. package/dist/tasks/download-continue-task.d.ts +9 -0
  50. package/dist/tasks/download-continue-task.js +127 -0
  51. package/dist/{templates/tasks → tasks}/download-task.d.ts +0 -1
  52. package/dist/tasks/download-task.js +128 -0
  53. package/dist/{templates/tasks → tasks}/effect-task.d.ts +1 -1
  54. package/dist/tasks/effect-task.js +111 -0
  55. package/dist/{templates/tasks → tasks}/providers.d.ts +0 -0
  56. package/dist/{templates/tasks → tasks}/providers.js +11 -5
  57. package/dist/tasks/upload-continue-task.d.ts +8 -0
  58. package/dist/tasks/upload-continue-task.js +114 -0
  59. package/dist/{templates/tasks → tasks}/upload-task.d.ts +0 -0
  60. package/dist/tasks/upload-task.js +114 -0
  61. package/package.json +17 -14
  62. package/pnpm-lock.yaml +34 -1435
  63. package/dist/electon.d.ts +0 -3
  64. package/dist/electon.js +0 -80
  65. package/dist/entities/fk-download-task.entity.d.ts +0 -18
  66. package/dist/entities/fk-download-task.entity.js +0 -142
  67. package/dist/entities/fk-login-cookie.entity.d.ts +0 -7
  68. package/dist/entities/fk-login-cookie.entity.js +0 -46
  69. package/dist/entities/fk-login.entity.d.ts +0 -12
  70. package/dist/entities/fk-login.entity.js +0 -80
  71. package/dist/entities/index.d.ts +0 -3
  72. package/dist/entities/index.js +0 -6
  73. package/dist/login.controller.d.ts +0 -14
  74. package/dist/login.controller.js +0 -197
  75. package/dist/mq-runner.d.ts +0 -5
  76. package/dist/mq-runner.js +0 -19
  77. package/dist/static/task-manage.d.ts +0 -6
  78. package/dist/static/task-manage.js +0 -34
  79. package/dist/templates/add-fk-login.d.ts +0 -12
  80. package/dist/templates/add-fk-login.js +0 -93
  81. package/dist/templates/add-task.d.ts +0 -13
  82. package/dist/templates/add-task.js +0 -78
  83. package/dist/templates/check-upload.d.ts +0 -38
  84. package/dist/templates/check-upload.js +0 -195
  85. package/dist/templates/component.d.ts +0 -10
  86. package/dist/templates/component.js +0 -39
  87. package/dist/templates/error.d.ts +0 -4
  88. package/dist/templates/error.js +0 -27
  89. package/dist/templates/help.d.ts +0 -7
  90. package/dist/templates/help.js +0 -52
  91. package/dist/templates/player.d.ts +0 -4
  92. package/dist/templates/player.js +0 -23
  93. package/dist/templates/setting.d.ts +0 -13
  94. package/dist/templates/setting.js +0 -65
  95. package/dist/templates/task-manage.d.ts +0 -21
  96. package/dist/templates/task-manage.js +0 -314
  97. package/dist/templates/tasks/actions.d.ts +0 -44
  98. package/dist/templates/tasks/actions.js +0 -9
  99. package/dist/templates/tasks/check-task.d.ts +0 -8
  100. package/dist/templates/tasks/check-task.js +0 -89
  101. package/dist/templates/tasks/download-task.js +0 -130
  102. package/dist/templates/tasks/effect-task.js +0 -76
  103. package/dist/templates/tasks/fk.service.d.ts +0 -28
  104. package/dist/templates/tasks/fk.service.js +0 -256
  105. package/dist/templates/tasks/schedule-task.js +0 -94
  106. package/dist/templates/tasks/task.service.d.ts +0 -11
  107. package/dist/templates/tasks/task.service.js +0 -114
  108. package/dist/templates/tasks/upload-task.js +0 -97
  109. package/dist/templates/tasks/yasuo-task.d.ts +0 -0
  110. package/dist/templates/tasks/yasuo-task.js +0 -0
  111. package/dist/templates/upload-task.d.ts +0 -9
  112. package/dist/templates/upload-task.js +0 -141
  113. package/dist/templates/upload.d.ts +0 -16
  114. package/dist/templates/upload.js +0 -232
  115. package/dist/urlSafeBase64Decode.d.ts +0 -3
  116. package/dist/urlSafeBase64Decode.js +0 -32
  117. package/electron/.env +0 -32
  118. package/electron/package.json +0 -31
  119. package/electron/pnpm-lock.yaml +0 -2878
  120. package/fk-upload-pc/.vscode/extensions.json +0 -3
  121. package/fk-upload-pc/README.md +0 -16
  122. package/fk-upload-pc/index.html +0 -13
  123. package/fk-upload-pc/package.json +0 -19
  124. package/fk-upload-pc/pnpm-lock.yaml +0 -489
  125. package/fk-upload-pc/public/favicon.ico +0 -0
  126. package/fk-upload-pc/tsconfig.json +0 -18
  127. package/fk-upload-pc/tsconfig.node.json +0 -8
  128. package/fk-upload-pc/vite.config.ts +0 -7
@@ -1,130 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DownloadTask = void 0;
4
- const tslib_1 = require("tslib");
5
- const rabbitmq_1 = require("@nger/rabbitmq");
6
- const core_1 = require("@nger/core");
7
- const actions_1 = require("./actions");
8
- const request_1 = require("request");
9
- const fs_1 = require("fs");
10
- const fk_service_1 = require("./fk.service");
11
- const md5_file_1 = tslib_1.__importDefault(require("md5-file"));
12
- const fs_extra_1 = require("fs-extra");
13
- const path_1 = require("path");
14
- const typeorm_1 = require("@nger/typeorm");
15
- const entities_1 = require("../../entities");
16
- const rxjs_1 = require("rxjs");
17
- const operators_1 = require("rxjs/operators");
18
- const path_2 = require("path");
19
- /**
20
- * upload and task
21
- */
22
- class DownloadTask extends rabbitmq_1.Task {
23
- constructor() {
24
- super(actions_1.DOWNLOAD_ACTION);
25
- }
26
- async handle(injector, next) {
27
- const db = injector.get(typeorm_1.Db);
28
- const task = injector.get(rabbitmq_1.DATA);
29
- const complete = injector.get(rabbitmq_1.COMPLETE);
30
- const root = injector.get(core_1.APP_ROOT);
31
- const fail = injector.get(rabbitmq_1.FAIL);
32
- const download = await db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: task.filename } });
33
- if (!download || (download && download.status !== 0)) {
34
- await complete();
35
- return next && next();
36
- }
37
- const filePath = (0, path_2.join)(root, task.path);
38
- (0, fs_extra_1.ensureDir)((0, path_1.dirname)(filePath));
39
- const writeStream = (0, fs_1.createWriteStream)(filePath);
40
- const manager = injector.get(rabbitmq_1.TaskManager);
41
- const url = task.url.startsWith('http') ? task.url : `https://${task.url}`;
42
- const req = (0, request_1.get)(url, {
43
- headers: {
44
- 'Content-Type': 'application/octet-stream'
45
- }
46
- });
47
- let total = 0;
48
- let length = 0;
49
- const sub = new rxjs_1.Subject();
50
- sub.pipe((0, operators_1.throttleTime)(1000), (0, operators_1.switchMap)((size) => {
51
- return db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { totalSize: total, size });
52
- })).subscribe({
53
- next: () => { },
54
- complete: () => {
55
- }
56
- });
57
- // get split size
58
- req.on('data', (buf) => {
59
- length += buf.length;
60
- sub.next(length);
61
- writeStream.write(buf, (err) => {
62
- if (err)
63
- fail();
64
- });
65
- });
66
- req.on('end', async () => {
67
- writeStream.end();
68
- sub.complete();
69
- const fileMd5 = await (0, md5_file_1.default)(filePath);
70
- console.log(`file download success ${task.filename}: ${fileMd5}`);
71
- await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { totalSize: total, fileMd5: fileMd5, status: 1, size: total });
72
- const fk = injector.get(fk_service_1.FkService);
73
- const shouldSize = await fk.getSize(task.url);
74
- const localSize = await fk.getLocalSize(filePath);
75
- if (shouldSize != localSize) {
76
- // re download
77
- await fail();
78
- return next && next();
79
- }
80
- const uploadTask = await this.createUploadTask(task, total, fileMd5, injector);
81
- await manager.send(uploadTask);
82
- await complete();
83
- });
84
- req.on('error', async () => {
85
- await fail();
86
- });
87
- req.on('response', async (resp) => {
88
- const headers = resp.headers;
89
- total = Number(headers["content-length"]);
90
- console.log(`${task.filename} total is ${total}b`);
91
- if (total > 1024 * 1024 * 1024) {
92
- await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { isBigFile: true });
93
- req.destroy();
94
- await complete();
95
- }
96
- });
97
- if (next)
98
- await next();
99
- }
100
- async createUploadTask(download, total, md5, injector) {
101
- const fk = injector.get(fk_service_1.FkService);
102
- const info = await fk.getUploadInfo(download.loginId, download.filename, md5, total);
103
- if (info) {
104
- const totalChunks = Math.ceil(total / info.splitSize) - 1;
105
- const uploadTask = new rabbitmq_1.TaskEntity();
106
- uploadTask.topic = actions_1.UPLOAD_ACTION;
107
- const data = {
108
- filename: download.filename,
109
- path: download.path,
110
- total: total,
111
- splitSize: info.splitSize,
112
- totalChunks,
113
- uploadUrl: info.uploadUrl,
114
- cookies: info.cookies,
115
- topicId: download.topicId,
116
- token: info.token,
117
- aid: info.aid,
118
- folderId: info.uploadGroupId,
119
- fileMd5: md5,
120
- start: info.uploadedSize,
121
- loginId: download.loginId,
122
- index: Math.ceil(info.uploadedSize / info.splitSize)
123
- };
124
- uploadTask.data = data;
125
- return uploadTask;
126
- }
127
- throw new Error(`get upload info fail`);
128
- }
129
- }
130
- exports.DownloadTask = DownloadTask;
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EffectTask = void 0;
4
- const rabbitmq_1 = require("@nger/rabbitmq");
5
- const core_1 = require("@nger/core");
6
- const actions_1 = require("./actions");
7
- const typeorm_1 = require("@nger/typeorm");
8
- const w7_1 = require("@nger/w7");
9
- const entities_1 = require("../../entities");
10
- const fs_extra_1 = require("fs-extra");
11
- const path_1 = require("path");
12
- class EffectTask extends rabbitmq_1.Task {
13
- constructor() {
14
- super(actions_1.EFFECT_ACTION);
15
- }
16
- async handle(injector, next) {
17
- const db = injector.get(typeorm_1.Db);
18
- const task = injector.get(rabbitmq_1.DATA);
19
- const complete = injector.get(rabbitmq_1.COMPLETE);
20
- const manager = injector.get(rabbitmq_1.TaskManager);
21
- const root = injector.get(core_1.APP_ROOT);
22
- console.log(`effect`, task.filename);
23
- try {
24
- const item = await db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: task.filename } });
25
- if (task.uploadUrl.startsWith('https://site')) {
26
- // redownload
27
- if (item) {
28
- const download = {
29
- filename: item.filename,
30
- path: item.path,
31
- url: item.url,
32
- topicId: item.topicId,
33
- loginId: item.loginId
34
- };
35
- const downloadTask = new rabbitmq_1.TaskEntity();
36
- downloadTask.topic = actions_1.DOWNLOAD_ACTION;
37
- downloadTask.data = download;
38
- await manager.send(downloadTask);
39
- }
40
- await complete();
41
- return next && next();
42
- }
43
- const w7 = injector.get(w7_1.W7DataSource);
44
- let uploadUrl = task.uploadUrl;
45
- if (!(uploadUrl && uploadUrl.length > 0)) {
46
- await complete();
47
- return next && next();
48
- }
49
- if (uploadUrl.includes('s21i.faiusr.com')) {
50
- uploadUrl = uploadUrl.replace('s21i.faiusr.com', 's21v.faiusr.com');
51
- }
52
- if (uploadUrl.includes('s21d.faiusrd.com')) {
53
- uploadUrl = uploadUrl.replace('s21d.faiusrd.com', 's21v.faiusr.com');
54
- }
55
- await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { status: 3, uploadUrl });
56
- if (task.topicId) {
57
- try {
58
- const filePath = (0, path_1.join)(root, task.path);
59
- await (0, fs_extra_1.unlink)(filePath);
60
- }
61
- catch (e) { }
62
- await w7.manager.update(w7_1.W7ChatTopicEntity, task.topicId, { topicStyle: 7, thirdUrl: item.url, foreverUrl: uploadUrl });
63
- await complete();
64
- }
65
- else {
66
- await complete();
67
- }
68
- }
69
- catch (e) {
70
- console.log(`effect error`, e.message);
71
- }
72
- if (next)
73
- await next();
74
- }
75
- }
76
- exports.EffectTask = EffectTask;
@@ -1,28 +0,0 @@
1
- import { Db } from "@nger/typeorm";
2
- import { FkLoginCookieEntity, FkLoginEntity } from "../../entities";
3
- import { IUploadTask } from "./actions";
4
- export declare class FkService {
5
- private db;
6
- constructor(db: Db);
7
- getLocalSize(path: string): number;
8
- getFkLogin(loginId: number): Promise<FkLoginEntity>;
9
- getFkLoginCookie(loginId: number): Promise<FkLoginCookieEntity[]>;
10
- createCookieStr(cookies: FkLoginCookieEntity[]): string;
11
- getCookieStr(loginId: number): Promise<string>;
12
- getToken(cookie: string): Promise<string>;
13
- getAccessToken(token: string): Promise<any>;
14
- private encodeURIComponent;
15
- getUploadUrl(token: any, forceDirect?: boolean): string;
16
- getUploadInfo(loginId: number, filename: string, fileMd5: string, totalSize: number): Promise<any>;
17
- startUploadFile(task: IUploadTask): Promise<IUploadTask>;
18
- getSize(url: string): Promise<number>;
19
- uploadFile(task: IUploadTask): Promise<IUploadTask>;
20
- getBssInfo(): {
21
- fromSite: boolean;
22
- siteId: number;
23
- groupId: number;
24
- fileSizeLimit: number;
25
- };
26
- getUploadInfourl(accessToken: any): string;
27
- private decode;
28
- }
@@ -1,256 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FkService = void 0;
4
- const tslib_1 = require("tslib");
5
- const typeorm_1 = require("@nger/typeorm");
6
- const entities_1 = require("../../entities");
7
- const axios_1 = tslib_1.__importDefault(require("axios"));
8
- const core_1 = require("@nger/core");
9
- const fs_extra_1 = require("fs-extra");
10
- const form_data_1 = tslib_1.__importDefault(require("form-data"));
11
- const request_1 = require("request");
12
- let FkService = class FkService {
13
- db;
14
- constructor(db) {
15
- this.db = db;
16
- }
17
- getLocalSize(path) {
18
- try {
19
- const stat = (0, fs_extra_1.statSync)(path);
20
- return stat.size;
21
- }
22
- catch (e) {
23
- return 0;
24
- }
25
- }
26
- async getFkLogin(loginId) {
27
- return await this.db.manager.findOneOrFail(entities_1.FkLoginEntity, { where: { fkLoginId: loginId } });
28
- }
29
- async getFkLoginCookie(loginId) {
30
- return await this.db.manager.find(entities_1.FkLoginCookieEntity, { where: { fkLoginId: loginId } });
31
- }
32
- createCookieStr(cookies) {
33
- return cookies.map(cookie => `${cookie.key}=${cookie.value}`).join(';');
34
- }
35
- async getCookieStr(loginId) {
36
- const cookies = await this.getFkLoginCookie(loginId);
37
- const cookie = this.createCookieStr(cookies);
38
- return cookie;
39
- }
40
- async getToken(cookie) {
41
- const url = `https://i.vip.webportal.top/`;
42
- const iVipWebPortal = await axios_1.default.get(url, {
43
- headers: {
44
- Cookie: cookie
45
- }
46
- }).then(res => res.data);
47
- const items = iVipWebPortal.match(/<meta id='_TOKEN' value='(.*?)'\/>/);
48
- let token = ``;
49
- if (items && items.length === 2) {
50
- token = items[1];
51
- }
52
- return token;
53
- }
54
- async getAccessToken(token) {
55
- const url = `https://smr00.vip.webportal.top/cn/api/manage/advanceUpload/genAccessKey?_v=${new Date().getTime()}&_TOKEN=${token}`;
56
- const accessKey = await axios_1.default.get(url).then(res => res.data);
57
- if (accessKey.success) {
58
- const accessTokenString = this.decode(accessKey.accessKey);
59
- if (accessTokenString) {
60
- const accessToken = JSON.parse(accessTokenString);
61
- return accessToken;
62
- }
63
- }
64
- }
65
- encodeURIComponent(data) {
66
- if ((0, core_1.isPrimitive)(data)) {
67
- return encodeURIComponent(data);
68
- }
69
- return Object.keys(data).map(key => {
70
- const value = Reflect.get(data, key);
71
- return `${key}=${encodeURIComponent(value)}`;
72
- }).join('&');
73
- }
74
- getUploadUrl(token, forceDirect = true) {
75
- if (forceDirect) {
76
- return `https://${token.url}/${token.visitType}/${token.app}/upload?cmd=${token.cmd}&token=${token.token}`;
77
- }
78
- else {
79
- return `https://${token.url}/${token.visitType}/${token.app}/advance?cmd=${token.cmd}&token=${token.token}`;
80
- }
81
- }
82
- async getUploadInfo(loginId, filename, fileMd5, totalSize) {
83
- // TODO: from redis cache
84
- const login = await this.getFkLogin(loginId);
85
- const cookies = await this.getCookieStr(loginId);
86
- const bssInfo = this.getBssInfo();
87
- const token = await this.getToken(cookies);
88
- const accessToken = await this.getAccessToken(token);
89
- const uploadInfoUrl = this.getUploadInfourl(accessToken);
90
- const uploadUrl = this.getUploadUrl(accessToken, false);
91
- const info = await axios_1.default.post(uploadInfoUrl, this.encodeURIComponent({
92
- fileMd5: fileMd5,
93
- fileSize: totalSize,
94
- isFreeVer: false,
95
- aid: login.aid,
96
- folderId: login.uploadGroupId,
97
- bssInfo: JSON.stringify(bssInfo),
98
- fileName: filename
99
- }), { headers: { cookie: cookies } }).then(res => res.data);
100
- if (info.code === 200) {
101
- return { ...info.data, uploadUrl, cookies, token, aid: login.aid, uploadGroupId: login.uploadGroupId };
102
- }
103
- }
104
- async startUploadFile(task) {
105
- const info = await this.getUploadInfo(task.loginId, task.filename, task.fileMd5, task.total);
106
- if (info) {
107
- task.cookies = info.cookies;
108
- task.splitSize = info.splitSize;
109
- task.start = info.uploadedSize;
110
- task.uploadUrl = info.uploadUrl;
111
- task.index = Math.ceil(info.uploadedSize / info.splitSize);
112
- return await this.uploadFile(task);
113
- }
114
- }
115
- async getSize(url) {
116
- const size = (0, core_1.defer)();
117
- const req = (0, request_1.get)(url, {
118
- headers: {
119
- 'Content-Type': 'application/octet-stream'
120
- }
121
- });
122
- req.on('response', async (resp) => {
123
- const headers = resp.headers;
124
- size.resolve(Number(headers["content-length"]));
125
- req.destroy();
126
- });
127
- return size;
128
- }
129
- async uploadFile(task) {
130
- const upload = async () => {
131
- const info = await this.getUploadInfo(task.loginId, task.filename, task.fileMd5, task.total);
132
- task.cookies = info.cookies;
133
- task.splitSize = info.splitSize;
134
- task.start = info.uploadedSize;
135
- task.uploadUrl = info.uploadUrl;
136
- task.index = Math.ceil(info.uploadedSize / info.splitSize);
137
- let complete = false;
138
- const max = task.total - 1;
139
- let index = task.index || 0;
140
- let uploadResult;
141
- do {
142
- let start = index * task.splitSize;
143
- let _end = start + task.splitSize - 1;
144
- let end = _end > max ? max : _end;
145
- if (end >= max) {
146
- complete = true;
147
- }
148
- const fileStream = (0, fs_extra_1.createReadStream)(task.path, { start: start, end: end });
149
- const formdata = new form_data_1.default();
150
- formdata.append('ctrl', fileStream);
151
- formdata.append('isFreeVer', this.encodeURIComponent(false));
152
- formdata.append('aid', this.encodeURIComponent(task.aid));
153
- formdata.append('folderId', this.encodeURIComponent(task.folderId));
154
- formdata.append('fileName', task.filename);
155
- formdata.append(`totalSize`, this.encodeURIComponent(task.total));
156
- formdata.append(`fileMd5`, task.fileMd5);
157
- formdata.append('index', this.encodeURIComponent(index));
158
- formdata.append('chunkSize', this.encodeURIComponent(task.splitSize));
159
- formdata.append('totalChunks', this.encodeURIComponent(task.totalChunks));
160
- formdata.append(`complete`, this.encodeURIComponent(complete));
161
- const bssInfo = {
162
- fromSite: true, siteId: 0, groupId: 0, fileSizeLimit: 1024
163
- };
164
- formdata.append('bssInfo', JSON.stringify(bssInfo));
165
- const headers = formdata.getHeaders();
166
- uploadResult = await axios_1.default.post(task.uploadUrl, formdata, {
167
- headers: {
168
- ...headers,
169
- Cookie: task.cookies
170
- },
171
- timeout: 18000
172
- }).then(res => {
173
- return res.data;
174
- }).catch((e) => {
175
- console.log(`upload error`, e.message);
176
- return upload();
177
- });
178
- if (uploadResult.code !== 200) {
179
- if (uploadResult.data) {
180
- const data = uploadResult.data;
181
- if (data.limit) {
182
- // to big
183
- throw new Error(`to big`);
184
- }
185
- }
186
- throw new Error(`${task.filename}--${uploadResult.msg}`);
187
- }
188
- console.log(`upload ----- `, { index, max, start, end });
189
- if (uploadResult) {
190
- const data = uploadResult.data;
191
- const downUrl = data.fullDownUrl;
192
- if (downUrl) {
193
- if (downUrl.startsWith('https://site-upload')) {
194
- console.log(`upload fail`);
195
- throw new Error(`need re bind`);
196
- }
197
- const fullUrl = downUrl.startsWith('http') ? downUrl : `https:` + downUrl;
198
- task.uploadUrl = fullUrl;
199
- }
200
- }
201
- index = index + 1;
202
- } while (!complete);
203
- return uploadResult;
204
- };
205
- const result = await upload();
206
- console.log(`upload result: -----> `, result);
207
- // upload complete
208
- axios_1.default.post(`https://smr00.vip.webportal.top/ajax/advanceUpload.jsp?cmd=_report&_TOKEN=${task.token}`, this.encodeURIComponent({
209
- type: 1,
210
- size: task.total,
211
- time: NaN,
212
- flag: true,
213
- name: task.filename
214
- }), {
215
- headers: {
216
- [`Content-Type`]: `application/x-www-form-urlencoded; charset=UTF-8`,
217
- Cookie: task.cookies
218
- }
219
- });
220
- return task;
221
- }
222
- getBssInfo() {
223
- return {
224
- fromSite: true, siteId: 0, groupId: 0, fileSizeLimit: 1024
225
- };
226
- }
227
- getUploadInfourl(accessToken) {
228
- return `https://${accessToken.url}/${accessToken.visitType}/${accessToken.app}/advance/info?cmd=${accessToken.cmd}&token=${accessToken.token}`;
229
- }
230
- decode(base64Str) {
231
- if (!base64Str)
232
- return;
233
- const t = base64Str.replace(/_/g, "/").replace(/-/g, "+");
234
- const f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
235
- let l = 0;
236
- let p = 0;
237
- let h = [];
238
- do {
239
- const o = f.indexOf(t.charAt(l++));
240
- const u = f.indexOf(t.charAt(l++));
241
- const a = f.indexOf(t.charAt(l++));
242
- const c = f.indexOf(t.charAt(l++));
243
- const s = o << 18 | u << 12 | a << 6 | c;
244
- const e = s >> 16 & 255;
245
- const r = s >> 8 & 255;
246
- const n = 255 & s;
247
- h[p++] = 64 === a ? String.fromCharCode(e) : 64 === c ? String.fromCharCode(e, r) : String.fromCharCode(e, r, n);
248
- } while (l < t.length);
249
- return h.join('');
250
- }
251
- };
252
- FkService = tslib_1.__decorate([
253
- (0, core_1.Injectable)(),
254
- tslib_1.__metadata("design:paramtypes", [typeorm_1.Db])
255
- ], FkService);
256
- exports.FkService = FkService;
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ScheduleTask = void 0;
4
- const rabbitmq_1 = require("@nger/rabbitmq");
5
- const actions_1 = require("./actions");
6
- const schedule_1 = require("@nger/schedule");
7
- const typeorm_1 = require("@nger/typeorm");
8
- const entities_1 = require("../../entities");
9
- const w7_1 = require("@nger/w7");
10
- const typeorm_2 = require("typeorm");
11
- const task_service_1 = require("./task.service");
12
- /**
13
- * finish
14
- */
15
- class ScheduleTask extends rabbitmq_1.Task {
16
- constructor() {
17
- super(actions_1.SCHEDULE_ACTION);
18
- }
19
- async handle(injector, next) {
20
- const task = injector.get(rabbitmq_1.DATA);
21
- const schedule = injector.get(schedule_1.ScheduleService);
22
- const db = injector.get(typeorm_1.Db);
23
- const w7 = injector.get(w7_1.W7DataSource);
24
- const manager = injector.get(rabbitmq_1.TaskManager);
25
- const taskService = injector.get(task_service_1.TaskService);
26
- const run = async () => {
27
- const accounts = await db.manager.find(entities_1.FkLoginEntity, {});
28
- const w7Usernames = accounts.map(account => account.w7Username);
29
- const users = await w7.manager.find(w7_1.W7UsersEntity, { where: { username: (0, typeorm_2.In)(w7Usernames) } });
30
- const uids = users.map(user => user.uid);
31
- const uniAccounts = await w7.manager.find(w7_1.W7UniAccountEntity, { where: { createUid: (0, typeorm_2.In)(uids) } });
32
- const uniacids = uniAccounts.map(a => a.uniacid);
33
- const tasks = await db.manager.find(entities_1.FkDownloadTaskEntity, { select: ['topicId'] });
34
- const ids = tasks.map(task => task.topicId);
35
- const now = new Date().getTime() - 1000 * 60 * 60 * 24;
36
- const nowTime = Math.floor(now / 1000);
37
- const where = {
38
- uniacid: (0, typeorm_2.In)(uniacids),
39
- createTime: (0, typeorm_2.MoreThan)(nowTime)
40
- };
41
- if (ids && ids.length > 0) {
42
- where.id = (0, typeorm_2.Not)((0, typeorm_2.In)(ids));
43
- }
44
- const topics = await w7.manager.find(w7_1.W7ChatTopicEntity, { where });
45
- console.log(`topics`, topics.length);
46
- topics.filter(it => it.thirdUrl && it.thirdUrl.length > 0 && it.thirdUrl.endsWith('.mp4')).map(async (topic) => {
47
- if (topic.thirdUrl) {
48
- const uniacid = topic.uniacid;
49
- const account = uniAccounts.find(a => a.uniacid === uniacid);
50
- const user = users.find(u => u.uid === account.createUid);
51
- const login = accounts.find(a => a.w7Username === user.username);
52
- const task = await taskService.createDownLoadTask(topic.thirdUrl, login.fkLoginId, topic.id);
53
- const download = task.data;
54
- // cha
55
- const item = await db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: download.filename } });
56
- if (!item) {
57
- const fkdownloadTask = new entities_1.FkDownloadTaskEntity();
58
- fkdownloadTask.filename = download.filename;
59
- fkdownloadTask.loginId = download.loginId;
60
- fkdownloadTask.path = download.path;
61
- fkdownloadTask.url = download.url;
62
- fkdownloadTask.topicId = download.topicId;
63
- fkdownloadTask.topicName = topic.topicName;
64
- await db.manager.save(entities_1.FkDownloadTaskEntity, fkdownloadTask);
65
- await manager.send(task);
66
- }
67
- else {
68
- if (item.status === 0) {
69
- }
70
- else if (item.status === 1) {
71
- }
72
- else if (item.status === 2) {
73
- }
74
- else if (item.status === 3) {
75
- }
76
- }
77
- }
78
- });
79
- // check status = 1
80
- const waitUploadTask = await db.manager.find(entities_1.FkDownloadTaskEntity, { where: { status: 1 } });
81
- // waitUploadTask.map(task => {
82
- // taskService.createUploadTask()
83
- // })
84
- };
85
- await run();
86
- schedule.scheduleJob(task.name, task.rule, async (time) => {
87
- console.log(`schedule run at ${time}`);
88
- await run();
89
- });
90
- if (next)
91
- await next();
92
- }
93
- }
94
- exports.ScheduleTask = ScheduleTask;
@@ -1,11 +0,0 @@
1
- import { Injector } from "@nger/core";
2
- import { IDownloadTask, IUploadTask } from "./actions";
3
- import { TaskEntity } from "@nger/rabbitmq";
4
- export declare class TaskService {
5
- private injector;
6
- constructor(injector: Injector);
7
- createEffectTask(filename: string, uploadUrl: string, topicId: number, path: string): Promise<TaskEntity<any>>;
8
- createScheduleTask(name: string, rule: string, id?: number): Promise<TaskEntity<any>>;
9
- createUploadTask(download: IDownloadTask, total: number, md5: string, injector: Injector): Promise<TaskEntity<IUploadTask>>;
10
- createDownLoadTask(url: string, loginId: number, topicId: number): Promise<TaskEntity<IDownloadTask>>;
11
- }