Compare commits

..
4 Commits
Author SHA1 Message Date
shanmiteko d676a10e56 feat: 可间隔插入随机动态(#33) 2021-10-05 18:13:00 +08:00
shanmiteko 88d3e97595 feat: 修改转发验重逻辑
直接根据是否点赞判断
2021-10-05 17:04:47 +08:00
shanmiteko 88ad8ecfcc fix(lib/data/env): [23:9] 2021-09-27 19:04:39 +08:00
shanmiteko 478d10d27e feat: 设置支持热更新(#29) 2021-09-27 18:40:11 +08:00
14 changed files with 122 additions and 517 deletions
+2 -2
View File
@@ -2,5 +2,5 @@ node_modules/
dyids/
dist/
package-lock.json
./env.js
./my_config.js
env.js
my_config.js
+6 -3
View File
@@ -87,8 +87,6 @@ Chrome浏览器:
~/nlts-linux-x64
=> tree
.
├── dyids (自动生成的dyid存储)
│   └── dyid.txt
├── env.js (便捷设置环境变量和多账号参数)
├── lottery (可执行文件)
├── my_config.js (自定义设置文件) (!使用前必读)
@@ -215,7 +213,12 @@ rm -rf lottery/
----------------------------------------
## 防重复转发
脚本将转发过的动态和被过滤的动态都写入`dyids/dyid*.txt`文件中
~~存储在专栏草稿~~
~~脚本将转发过的动态和被过滤的动态都写入`dyids/dyid*.txt`文件中~~
是否点赞
----------------------------------------
+1 -1
View File
@@ -30,7 +30,7 @@ module.exports = Object.freeze({
/**
* 为防止环境变量过长, 请将多账号填在此处
* 以大括号内容为模板依次复制,逗号分割
* 以大括号内容为模板依次复制(包含大括号),逗号分割
*/
multiple_account_parm: [
{
-70
View File
@@ -1,70 +0,0 @@
module.exports = Object.freeze({
/**
* ## 账号相关
* - `COOKIE` 是必填项
* - `NUMBER` 表示是第几个账号
* - `CLEAR` 是否启用清理功能
* - `ENABLE_MULTIPLE_ACCOUNT` 是否启用多账号
* - `MULTIPLE_ACCOUNT_PARM` 多账号参数(JSON格式)
* ## 调试相关
* - `LOTTERY_LOG_LEVEL` 输出日志等级 Error<Warn<Info<Debug 1<2<3<4
* - `NOT_GO_LOTTERY` 关闭抽奖行为
* ## 多账号
* 1. 将 ENABLE_MULTIPLE_ACCOUNT 的值改为true
* 2. 将账号信息依次填写于 multiple_account_parm 中, 参考例子类推
* - `WAIT` 表示下一个账号运行等待时间(毫秒)
*
* **按顺序依次执行, 防止访问频繁封禁IP**
*/
account_parm: {
COOKIE: "SESSDATA=6f9def8b%2C1643037950%2Cf2b95%2A71; bili_jct=9c7241c80ab38f3a788317fd6cd33e31; DedeUserID=1113895660",
NUMBER: 1,
CLEAR: true,
ENABLE_MULTIPLE_ACCOUNT: false,
MULTIPLE_ACCOUNT_PARM: "",
LOTTERY_LOG_LEVEL: 3,
NOT_GO_LOTTERY: ""
},
/**
* 为防止环境变量过长, 请将多账号填在此处
* 以大括号内容为模板依次复制,逗号分割
*/
multiple_account_parm: [
{
COOKIE: "",
NUMBER: 1,
CLEAR: true,
WAIT: 60 * 1000
}
],
/**
* 推送相关参数
*/
push_parm: {
SCKEY: "",
SENDKEY: "",
QQ_SKEY: "",
QQ_MODE: "",
BARK_PUSH: "",
BARK_SOUND: "",
TG_BOT_TOKEN: "",
TG_USER_ID: "",
TG_PROXY_HOST: "",
TG_PROXY_PORT: "",
DD_BOT_TOKEN: "",
DD_BOT_SECRET: "",
QYWX_KEY: "",
IGOT_PUSH_KEY: "",
PUSH_PLUS_TOKEN: "",
PUSH_PLUS_USER: "",
SMTP_HOST: "",
SMTP_PORT: "",
SMTP_USER: "",
SMTP_PASS: "",
SMTP_TO_USER: ""
}
})
+21 -20
View File
@@ -5,7 +5,6 @@ const event_bus = require('../helper/event_bus');
const { Searcher } = require('./searcher');
const global_var = require("../data/global_var");
const config = require("../data/config");
const d_storage = require('../helper/d_storage');
const { log, hasEnv } = utils;
/**
@@ -82,14 +81,16 @@ class Monitor extends Searcher {
*/
async startLottery() {
const allLottery = await this.filterLotteryInfo()
, len = allLottery.length;
, len = allLottery.length
, { dy_contents, create_dy, create_dy_mode, wait } = config;
log.info('筛选动态', `筛选完毕(${len})`);
if (len) {
let is_exception = false;
for (const Lottery of utils.shuffle(allLottery)) {
for (const [index, Lottery] of utils.shuffle(allLottery).entries()) {
let status = 0;
if (Lottery.isOfficialLottery) {
let { ts } = await bili.getLotteryNotice(Lottery.dyid);
const ts_10 = Date.now() / 1000;
@@ -98,12 +99,10 @@ class Monitor extends Searcher {
}
if (ts < ts_10) {
log.info('过滤', '已过开奖时间')
d_storage.updateDyid(Lottery.dyid)
continue
}
if (ts > ts_10 + config.maxday * 86400) {
log.info('过滤', '超过指定开奖时间')
d_storage.updateDyid(Lottery.dyid)
continue
}
} else if (Lottery.uid[0]) {
@@ -113,10 +112,20 @@ class Monitor extends Searcher {
}
if (followerNum < config.minfollower) {
log.info('过滤', `粉丝数(${followerNum})小于指定数量`)
d_storage.updateDyid(Lottery.dyid)
continue
}
}
if (create_dy
&& create_dy_mode instanceof Array
&& index > 0
&& index % create_dy_mode[0] === 0) {
for (let i = 0; i < create_dy_mode[1]; i++) {
await bili.createDynamic(utils.getRandomOne(dy_contents));
await utils.delay(2000);
}
}
status = await this.go(Lottery)
switch (status) {
case 0:
@@ -127,8 +136,8 @@ class Monitor extends Searcher {
default:
return status
}
d_storage.updateDyid(Lottery.dyid)
await utils.delay(config.wait * (Math.random() + 0.5));
await utils.delay(wait * (Math.random() + 0.5));
}
log.info('抽奖', '开始转发下一组动态');
if (is_exception) {
@@ -170,6 +179,7 @@ class Monitor extends Searcher {
/** 所有抽奖信息 */
let alllotteryinfo = [];
const { key_words, model, chatmodel, is_imitator, only_followed, at_users, blockword, blacklist } = config;
/**Map<String, Boolean> */
let dyids_map = new Map();
@@ -182,24 +192,15 @@ class Monitor extends Searcher {
return true
});
/**并发查询dyid */
await Promise.all(
[...dyids_map.keys()]
.map(it => d_storage
.searchDyid(it)
.then(hasIt => dyids_map.set(it, hasIt))
)
)
/* 检查动态是否满足要求 */
await utils.try_for_each(protoLotteryInfo, async function ({
lottery_info_type, uids,
uname, dyid,
lottery_info_type, is_liked,
uids, uname, dyid,
ctrl, rid, des, type,
hasOfficialLottery
}) {
/* 遇到转发过就退出 */
if (dyids_map.get(dyid)) return false;
if (is_liked) return false;
const
/**判断是转发源动态还是现动态 */
+80 -41
View File
@@ -1,7 +1,6 @@
const utils = require('../utils');
const bili = require('../net/bili');
const config = require("../data/config");
const d_storage = require('../helper/d_storage');
const { log } = utils
@@ -11,6 +10,7 @@ const { log } = utils
* @typedef {object} UsefulDynamicInfo
* @property {number} uid
* @property {string} uname
* @property {boolean} is_liked
* @property {number} createtime 10
* @property {string} rid_str
* @property {string} dynamic_id
@@ -35,13 +35,16 @@ function parseDynamicCard(dynamic_detail_card) {
/**临时储存单个动态中的信息 */
let obj = {};
const { desc, card, extension, extend_json } = dynamic_detail_card
, { info } = desc.user_profile
, { is_liked, user_profile } = desc
, { info } = user_profile
, cardToJson = strToJson(card)
, { item } = cardToJson;
/* 转发者的UID */
obj.uid = info.uid;
obj.uid = info.uid
/* 转发者的name */
obj.uname = info.uname;
obj.uname = info.uname
/* 动态是否点过赞 */
obj.is_liked = is_liked > 0
/* 动态的ts10 */
obj.createtime = desc.timestamp
/* 动态类型 */
@@ -132,6 +135,7 @@ class Searcher {
* 整理后的抽奖信息
* @typedef {object} LotteryInfo
* @property {string} lottery_info_type
* @property {boolean} is_liked
* @property {number[]} uids `[uid,ouid]`
* @property {string} uname
* @property {Array<{}>} ctrl
@@ -213,21 +217,52 @@ class Searcher {
log.info('获取动态', `开始获取用户${UID}的动态信息`);
const { allModifyDynamicResArray } = await Searcher.checkAllDynamic(UID, config.uid_scan_page, config.search_wait);
if (!allModifyDynamicResArray.length) return null;
let { length } = allModifyDynamicResArray
if (!length) return null;
const fomatdata = await allModifyDynamicResArray
.filter(d => {
if (d.type === 1) {
return true
} else {
length--
return false
}
})
.reduce(async (pre, cur) => {
const results = await pre
, { origin_dynamic_id } = cur;
log.info('获取动态', `查看源动态(${origin_dynamic_id})的细节 (${length--})`)
const res = await bili.getOneDynamicByDyid(origin_dynamic_id)
, { code, data } = utils.strToJson(res)
, { card } = data || {};
if (code !== 0) {
log.error('获取动态', '获取动态数据出错,可能是访问太频繁 \n' + res)
return results
}
await utils.delay(2000)
const { is_liked } = parseDynamicCard(card)
return [...results, {
lottery_info_type: 'uid',
is_liked,
uids: [cur.uid, cur.origin_uid],
uname: cur.origin_uname,
ctrl: [],
dyid: cur.origin_dynamic_id,
rid: cur.origin_rid_str,
des: cur.origin_description,
type: cur.orig_type,
hasOfficialLottery: cur.origin_hasOfficialLottery
}]
}, Promise.resolve([]))
const fomatdata = allModifyDynamicResArray.map(o => {
return {
lottery_info_type: 'uid',
uids: [o.uid, o.origin_uid],
uname: o.origin_uname,
ctrl: [],
dyid: o.origin_dynamic_id,
rid: o.origin_rid_str,
des: o.origin_description,
type: o.orig_type,
hasOfficialLottery: o.origin_hasOfficialLottery
}
}).filter(a => a.type != 0)
log.info('获取动态', `成功获取用户${UID}的动态信息`);
return fomatdata;
@@ -271,6 +306,7 @@ class Searcher {
const fomatdata = mDRdata.map(o => {
return {
lottery_info_type: 'tag',
is_liked: o.is_liked,
uids: [o.uid, o.origin_uid],
uname: o.uname,
ctrl: o.ctrl,
@@ -311,36 +347,38 @@ class Searcher {
/**单个专栏中的dyid */
_dyinfos = [];
log.info('获取动态', `提取专栏(${cv})中提及的dyid(${length})`)
/**遍历某专栏中的dyids */
for (const dyid of dyids_set) {
const isRelayed = await d_storage.searchDyid(dyid);
if (isRelayed) {
_weight += 1;
}
if (_weight >= weight && !config.not_check_article) {
log.warn('获取动态', `1/2动态曾经转过,该专栏或已查看,故中止`)
_dyinfos = []
break
}
if (dyid.length === utils.dyid_length) {
if (!isRelayed) {
log.info('获取动态', `查看动态(${dyid})的细节 (${length--})`)
const res = await bili.getOneDynamicByDyid(dyid)
, { code, data } = utils.strToJson(res)
, { card } = data || {};
log.info('获取动态', `查看专栏中所提及动态(${dyid})的细节 (${length--})`)
const res = await bili.getOneDynamicByDyid(dyid)
, { code, data } = utils.strToJson(res)
, { card } = data || {};
if (code !== 0) {
log.error('获取动态', '获取动态数据出错,可能是访问太频繁 \n' + res)
if (code !== 0) {
log.error('获取动态', '获取动态数据出错,可能是访问太频繁 \n' + res)
break
}
await utils.delay(2000)
if (card) {
const parsed_card = parseDynamicCard(card)
, { is_liked } = parsed_card;
if (is_liked) {
log.info('获取动态', `动态(${dyid})已转发过`)
_weight += 1;
}
if (_weight >= weight && !config.not_check_article) {
log.warn('获取动态', `1/2动态曾经转过,该专栏或已查看,故中止`)
_dyinfos = []
break
}
await utils.delay(2000)
if (card) {
_dyinfos.push(parseDynamicCard(card));
}
} else {
log.info('获取动态', `动态(${dyid})已转发过 (${length--})`)
_dyinfos.push(parsed_card);
}
} else {
log.warn('获取动态', `动态(${dyid})无效 (${length--})`)
@@ -351,6 +389,7 @@ class Searcher {
const fomatdata = dyinfos.map(o => {
return {
lottery_info_type: 'article',
is_liked: o.is_liked,
uids: [o.uid, o.origin_uid],
uname: o.uname,
ctrl: o.ctrl,
+1 -1
View File
@@ -20,7 +20,7 @@ const env = {
* @returns {Object[]}
*/
get_multiple_account() {
this.raw_env()["multiple_account_parm"]
return this.raw_env()["multiple_account_parm"]
},
setEnv(o) {
process.env = {
-2
View File
@@ -37,8 +37,6 @@ let global_var = {
]);
this.set('remoteconfig', await getRemoteConfig());
}
await createDir('dyids');
await createFile(n < 2 ? 'dyid.txt' : `dyid${n}.txt`, '', 'a')
}
};
-52
View File
@@ -1,52 +0,0 @@
const { log, readDyidFile, writeDyidFile, dyid_length } = require("../utils");
const d_storage = {
/**
* 搜索dyid
* @param {string} dyid
* @returns {Promise<boolean>}
*/
searchDyid: (dyid) => {
return new Promise((resolve) => {
const Rdyid = new RegExp(dyid);
const rs = readDyidFile(Number(process.env.NUMBER));
let status = false;
rs.on('data', chunk => {
if (Rdyid.test(chunk)) {
status = true
}
})
rs.on('end', () => {
resolve(status)
})
rs.on('error', err => {
log.error('搜索dyid', err)
resolve(status)
})
})
},
/**
* 更新dyid
* @param {string} dyid
*/
updateDyid: (dyid) => {
log.info('更新dyid', `写入${dyid}`);
if (dyid.length !== dyid_length) {
log.error('更新dyid', `dyid(${dyid})长度不为18 若出现此问题请即时通知开发者`)
}
return new Promise((resolve) => {
const ws = writeDyidFile(Number(process.env.NUMBER));
ws.write(dyid + ',', () => {
ws.destroy();
resolve()
})
ws.on('error', err => {
log.error('更新dyid', err)
resolve()
})
});
}
}
module.exports = d_storage;
-46
View File
@@ -13,8 +13,6 @@ const utils = {
env_file: path.join(process.cwd(), "env.js"),
/**配置文件 */
config_file: path.join(process.cwd(), "my_config.js"),
/**dyid存储文件 */
dyids_dir: path.join(process.cwd(), "dyids"),
/**dyid长度 */
dyid_length: 18,
/**
@@ -294,50 +292,6 @@ const utils = {
resolve()
})
});
},
/**
* CreateFile
* @param {string} filepath 相对于dyids的文件路径
* @param {string} [defaultValue] 写入默认值
* @param {string} flag
* @returns {Promise<void>}
*/
createFile(filepath, defaultValue, flag) {
const fpath = path.join(utils.dyids_dir, filepath);
const buffer = Buffer.from(defaultValue);
return new Promise((resolve, rejects) => {
fs.open(fpath, flag, (err, fd) => {
if (err) {
rejects(err)
} else {
fs.write(fd, buffer, 0, buffer.length, 0, err => {
if (err) {
rejects(err)
} else {
resolve();
}
})
}
})
});
},
/**
* 读取dyid文件
* @param {number} num
* @returns {fs.ReadStream}
*/
readDyidFile(num) {
const fpath = num < 2 ? path.join(utils.dyids_dir, 'dyid.txt') : path.join(utils.dyids_dir, `dyid${num}.txt`);
return fs.createReadStream(fpath, { encoding: 'utf8', highWaterMark: (utils.dyid_length + 1) * 1000 })
},
/**
* 追加dyid
* @param {number} num
* @returns {fs.WriteStream}
*/
writeDyidFile(num) {
const fpath = num < 2 ? path.join(utils.dyids_dir, 'dyid.txt') : path.join(utils.dyids_dir, `dyid${num}.txt`);
return fs.createWriteStream(fpath, { flags: 'a' })
}
};
+10 -7
View File
@@ -1,4 +1,4 @@
module.exports = {
module.exports = Object.freeze({
/**
* 默认设置(公用)
*/
@@ -7,7 +7,6 @@ module.exports = {
* 监视更转的用户uid
*/
UIDs: [
31252386,
689277291,
241675899
],
@@ -73,7 +72,7 @@ module.exports = {
* - 获取专栏数量
*/
article_scan_page: 3,
/**
* - 不检查专栏是否看过,若选择检查可以提高检测效率
* - 默认false(检查)
@@ -124,15 +123,19 @@ module.exports = {
create_dy: false,
/**
* - 发送随机动态的数量
* - 结束运行时发送随机动态的数量
*/
create_dy_num: 1,
/**
* - 每转发x条抽奖动态就发送x条随机动态
* - @example [6,1] 每转发6条抽奖动态就发送1条随机动态
*/
create_dy_mode: [0, 0],
/**
* - 随机动态内容
* - 类型 `content[]`
*/
/**
* @typedef Picture
* @property {string} img_src 站内源
* @property {number} img_width
@@ -255,4 +258,4 @@ module.exports = {
config_1: {},
config_2: {},
config_3: {}
}
})
-258
View File
@@ -1,258 +0,0 @@
module.exports = Object.freeze({
/**
* 默认设置(公用)
*/
default_config: {
/**
* 监视更转的用户uid
*/
UIDs: [
31252386,
689277291,
241675899
],
/**
* 监视的专栏关键词
*/
Articles: [
'抽奖合集'
],
/**
* 监视的tag
*/
TAGs: [
'互动抽奖',
'转发抽奖',
'动态抽奖',
'抽奖',
],
/**
* 动态中的关键词(表示须同时满足以下条件)
* 符合js正则表达式的字符串
*/
key_words: [
"[抽奖]",
"[转关].*[转关]"
],
/**
* - '00' 关闭自动抽奖
* - '10' 只转发官方抽奖
* - '01' 只转发非官方抽奖
* - '11' 都转
*/
model: '11',
/**
* - '00'关闭自动评论
* - '10'只评论官抽
* - '01'只评论非官抽
* - '11'都评论
*/
chatmodel: '01',
/**
* 不加判断的转发所监视的uid转发的动态
*/
is_imitator: false,
/**
* - 在uid里检索的页数
*/
uid_scan_page: 3,
/**
* - 在tag里检索的页数
*/
tag_scan_page: 3,
/**
* - 获取专栏数量
*/
article_scan_page: 3,
/**
* - 不检查专栏是否看过,若选择检查可以提高检测效率
* - 默认false(检查)
*/
not_check_article: false,
/**
* - 开奖时间距离现在的最大天数
* - 默认不限制
*/
maxday: Infinity,
/**
* - 循环等待时间(指所有操作完毕后的休眠时间)
* - 单位毫秒
*/
lottery_loop_wait: 0,
check_loop_wait: 5000,
clear_loop_wait: 0,
update_loop_wait: 0,
/**
* - 转发间隔时间
* - 单位毫秒
* - 上下浮动50%
*/
wait: 30 * 1000,
/**
* - 检索动态间隔
* - 单位毫秒
*/
search_wait: 1000,
/**
* - up主粉丝数限制
*/
minfollower: 1000,
/**
* - 只转发已关注的
*/
only_followed: false,
/**
* - 是否发送随机动态(防止被开奖机过滤)
*/
create_dy: false,
/**
* - 发送随机动态的数量
*/
create_dy_num: 1,
/**
* - 随机动态内容
* - 类型 `content[]`
*/
/**
* @typedef Picture
* @property {string} img_src 站内源
* @property {number} img_width
* @property {number} img_height
* @param { string | Picture[] } content
*/
dy_contents: ['[doge]', '[doge][doge]'],
/**
* 转发时[at]的用户
*/
at_users: [['转发抽奖娘', 294887687], ['你的工具人老公', 100680137]],
/**
* - 自动同步 https://gitee.com/shanmite/lottery-notice/raw/master/notice.json
* - 英文逗号分隔 如: 1,2,3
*/
blacklist: '',
/**
* 屏蔽词
*/
blockword: ["脚本抽奖", "恭喜", "结果", "抽奖号", "钓鱼", "涨粉"],
/**
* 转发评语
*/
relay: ['转发动态'],
/**
* 评论内容
*/
chat: [
'[OK]', '[星星眼]', '[歪嘴]', '[喜欢]', '[偷笑]', '[笑]', '[喜极而泣]', '[辣眼睛]', '[吃瓜]', '[奋斗]',
'永不缺席 永不中奖 永不放弃!', '万一呢', '在', '冲吖~', '来了', '万一', '[保佑][保佑]', '从未中,从未停', '[吃瓜]', '[抠鼻][抠鼻]',
'来力', '秋梨膏', '[呲牙]', '从不缺席', '分子', '可以', '恰', '不会吧', '1', '好',
'rush', '来来来', 'ok', '冲', '凑热闹', '我要我要[打call]', '我还能中!让我中!!!', '大家都散了吧,已经抽完了,是我的', '我是天选之子', '给我中一次吧!',
'坚持不懈,迎难而上,开拓创新!', '[OK][OK]', '我来抽个奖', '中中中中中中', '[doge][doge][doge]', '我我我',
],
/**
* - 抽奖UP用户分组id(网页端点击分区后地址栏中的tagid)
* - 自动获取
*/
partition_id: 0,
/**
* 是否关注异常
*/
is_exception: false,
/**
* - 中奖通知关键词(满足一个就推送)
* - 符合js正则表达式的字符串
* - 若以 ~ 开头则表示为黑名单规则
*/
notice_key_words: [
"中奖|获得|填写|写上|提供|收货地址|支付宝账号|码|大会员",
"~有奖预约通知"
],
/**
* - 清理白名单uid或dyid
* - 英文逗号分隔 如: 1,2,3
*/
clear_white_list: '',
/**
* - 取关分区
* - 默认为: 此处存放因抽奖临时关注的up
*/
clear_partition: '',
/**
* 清理多少天之前的动态或关注
*/
clear_max_day: 30,
/**
* - 快速移除关注
* - 不加判断只去除关注
*/
clear_quick_remove_attention: false,
/**
* 是否移除动态
*/
clear_remove_dynamic: true,
/**
* 是否移除关注
*/
clear_remove_attention: true,
/**
* 清除动态延时(毫秒)
*/
clear_remove_delay: 8000,
/**
* 清除动态类型
*
* | 动态类型 | type值 |
* | :------- |:----- |
* | 无 | `0` |
* | 转发 | `1` |
* | 含图片 | `2` |
* | 无图纯文字 | `4` |
* | 视频 | `8` |
* | 活动 | `2048` |
* | 专栏 | `64` |
*/
clear_dynamic_type: 1
},
/**
* 针对某一账号的特别设置
* config_[数字] 依次类推
*/
config_1: {},
config_2: {},
config_3: {}
})
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "lottery-auto-script",
"version": "2.1.7",
"version": "2.2.0",
"description": "自动参与B站动态抽奖",
"main": "main.js",
"scripts": {
-13
View File
@@ -3,8 +3,6 @@ set -e
# 脚本根目录
SCRIPT_FOLDER=lottery
# dyid存放目录
DYID_FOLDER=dyids
# 设置环境变量文件
ENV_FILE=env.js
# 自定义设置文件
@@ -26,14 +24,6 @@ fi
cd $SCRIPT_FOLDER/
# 新建dyid储存目录
if [ ! -d "$DYID_FOLDER" ]; then
echo "create $DYID_FOLDER/"
mkdir $DYID_FOLDER
else
echo "$DYID_FOLDER/ exists"
fi
# 新建环境变量设置文件
if [ ! -f "$ENV_FILE" ]; then
echo "create $ENV_FILE"
@@ -58,7 +48,6 @@ echo -e "#!/bin/bash\n\
docker run \
-v $PWD/$ENV_FILE:/lottery/$ENV_FILE \
-v $PWD/$CONFIG_FILE:/lottery/$CONFIG_FILE \
-v $PWD/$DYID_FOLDER/:/lottery/$DYID_FOLDER/ \
$DOCKER_REPO \
start" \
> start.sh
@@ -69,7 +58,6 @@ echo -e "#!/bin/bash\n\
docker run \
-v $PWD/$ENV_FILE:/lottery/$ENV_FILE \
-v $PWD/$CONFIG_FILE:/lottery/$CONFIG_FILE \
-v $PWD/$DYID_FOLDER/:/lottery/$DYID_FOLDER/ \
$DOCKER_REPO \
check" \
> check.sh
@@ -80,7 +68,6 @@ echo -e "#!/bin/bash\n\
docker run \
-v $PWD/$ENV_FILE:/lottery/$ENV_FILE \
-v $PWD/$CONFIG_FILE:/lottery/$CONFIG_FILE \
-v $PWD/$DYID_FOLDER/:/lottery/$DYID_FOLDER/ \
$DOCKER_REPO \
clear" \
> clear.sh