Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
利小寳
jdBuyMask
提交
6fafdaa5
J
jdBuyMask
项目概览
利小寳
/
jdBuyMask
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jdBuyMask
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6fafdaa5
编写于
2月 07, 2020
作者:
C
cycz
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
windows 路径问题
上级
0964c583
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
162 addition
and
10 deletion
+162
-10
AreaTool.py
AreaTool.py
+2
-2
README.md
README.md
+2
-0
config.py
config.py
+23
-0
jdBuyMask.py
jdBuyMask.py
+2
-2
jdBuyMask_V2.py
jdBuyMask_V2.py
+3
-3
jdBuyMask_V3.py
jdBuyMask_V3.py
+3
-3
jdEmail.py
jdEmail.py
+41
-0
jdlogger.py
jdlogger.py
+26
-0
message.py
message.py
+29
-0
wechat_ftqq.py
wechat_ftqq.py
+31
-0
未找到文件。
AreaTool.py
浏览文件 @
6fafdaa5
# -*- coding=utf-8 -*-
from
log.
jdlogger
import
logger
from
jdlogger
import
logger
'''
找一条第一个版本的url
'''
url
=
'https://c0.3.cn/stock?skuId=1
336984&area=19_1607_4773_0&venderId=1000078145&buyNum=1&choseSuitSkuIds=&cat=9192,12190,1517&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=jd_7c3992aa27d1a&pduid=1580535906442142991701&ch=1&callback=jQuery6715489
'
url
=
'https://c0.3.cn/stock?skuId=1
00003406321&area=19_1607_4773_0&venderId=1000000946&buyNum=1&choseSuitSkuIds=&cat=9192,9197,12588&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=jd_7c3992aa27d1a&pduid=1580535906442142991701&ch=1&callback=jQuery4291064
'
skuId
=
url
.
split
(
'skuId='
)[
1
].
split
(
'&'
)[
0
]
area
=
url
.
split
(
'area='
)[
1
].
split
(
'&'
)[
0
]
logger
.
info
(
'你的area是[ %s ],链接的商品id是[ %s ]'
,
area
,
skuId
)
README.md
浏览文件 @
6fafdaa5
...
...
@@ -10,6 +10,8 @@
有人说贪多嚼不烂,v3版本下单更快(V3没完整测试过,个人账号下单过多,需要验证码了),测试过的同学可以反馈一下
有人反馈windows有路径问题,把代码都放在一级目录下了。
避免抢购,程序自动一次只买一件
V2版本 不需要添加url,只需要加入商品id、地区id。刷新更加频繁更快。
...
...
config.py
0 → 100644
浏览文件 @
6fafdaa5
# -*- coding: utf-8 -*-
import
os
import
configparser
class
Config
(
object
):
def
__init__
(
self
,
config_file
=
'configDemo.ini'
):
self
.
_path
=
os
.
path
.
join
(
os
.
getcwd
(),
config_file
)
if
not
os
.
path
.
exists
(
self
.
_path
):
raise
FileNotFoundError
(
"No such file: config.ini"
)
self
.
_config
=
configparser
.
ConfigParser
()
self
.
_config
.
read
(
self
.
_path
,
encoding
=
'utf-8-sig'
)
self
.
_configRaw
=
configparser
.
RawConfigParser
()
self
.
_configRaw
.
read
(
self
.
_path
,
encoding
=
'utf-8-sig'
)
def
get
(
self
,
section
,
name
):
return
self
.
_config
.
get
(
section
,
name
)
def
getRaw
(
self
,
section
,
name
):
return
self
.
_configRaw
.
get
(
section
,
name
)
global_config
=
Config
()
jdBuyMask.py
浏览文件 @
6fafdaa5
...
...
@@ -8,8 +8,8 @@ import json
import
sys
import
random
from
bs4
import
BeautifulSoup
from
log.
jdlogger
import
logger
from
message
.message
import
message
from
jdlogger
import
logger
from
message
import
message
import
traceback
'''
...
...
jdBuyMask_V2.py
浏览文件 @
6fafdaa5
...
...
@@ -9,9 +9,9 @@ import json
import
sys
import
random
from
bs4
import
BeautifulSoup
from
log.
jdlogger
import
logger
from
config
.config
import
global_config
from
message
.message
import
message
from
jdlogger
import
logger
from
config
import
global_config
from
message
import
message
import
traceback
'''
...
...
jdBuyMask_V3.py
浏览文件 @
6fafdaa5
...
...
@@ -9,9 +9,9 @@ import json
import
sys
import
random
from
bs4
import
BeautifulSoup
from
log.
jdlogger
import
logger
from
config
.config
import
global_config
from
message
.message
import
message
from
jdlogger
import
logger
from
config
import
global_config
from
message
import
message
'''
需要修改
...
...
jdEmail.py
0 → 100644
浏览文件 @
6fafdaa5
# -*- coding=utf-8 -*-
'''
发送邮件模块
'''
import
traceback
def
sendMail
(
mail
,
msgtext
):
try
:
import
smtplib
from
email.mime.text
import
MIMEText
# email 用于构建邮件内容
from
email.header
import
Header
# 用于构建邮件头
# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr
=
'jdbuymask@163.com'
password
=
'alpsneahcyz123'
# 收信方邮箱
to_addr
=
mail
# 发信服务器
smtp_server
=
'smtp.163.com'
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg
=
MIMEText
(
msgtext
,
'plain'
,
'utf-8'
)
# 邮件头信息
# msg['From'] = Header(from_addr)
msg
[
'From'
]
=
Header
(
u
'from Mark<{}>'
.
format
(
from_addr
),
'utf-8'
)
msg
[
'To'
]
=
Header
(
to_addr
)
msg
[
'Subject'
]
=
Header
(
'京东口罩监控'
,
'utf-8'
)
# 开启发信服务,这里使用的是加密传输
server
=
smtplib
.
SMTP_SSL
(
host
=
smtp_server
)
server
.
connect
(
smtp_server
,
465
)
# 登录发信邮箱
server
.
login
(
from_addr
,
password
)
# 发送邮件
server
.
sendmail
(
from_addr
,
to_addr
,
msg
.
as_string
())
# 关闭服务器
server
.
quit
()
except
Exception
as
e
:
print
(
traceback
.
format_exc
())
jdlogger.py
0 → 100644
浏览文件 @
6fafdaa5
# -*- coding=utf-8 -*-
import
logging
import
logging.handlers
'''
日志模块
'''
LOG_FILENAME
=
'jdBuyMask.log'
logger
=
logging
.
getLogger
()
def
set_logger
():
logger
.
setLevel
(
logging
.
INFO
)
formatter
=
logging
.
Formatter
(
'%(asctime)s %(levelname)s: %(message)s'
)
console_handler
=
logging
.
StreamHandler
()
console_handler
.
setFormatter
(
formatter
)
logger
.
addHandler
(
console_handler
)
file_handler
=
logging
.
handlers
.
RotatingFileHandler
(
LOG_FILENAME
,
maxBytes
=
10485760
,
backupCount
=
5
,
encoding
=
"utf-8"
)
file_handler
.
setFormatter
(
formatter
)
logger
.
addHandler
(
file_handler
)
set_logger
()
message.py
0 → 100644
浏览文件 @
6fafdaa5
# -*- encoding=utf8 -*-
from
jdEmail
import
sendMail
from
wechat_ftqq
import
sendWechat
class
message
(
object
):
"""消息推送类"""
def
__init__
(
self
,
messageTtpe
,
sc_key
,
mail
):
if
messageTtpe
==
'2'
:
if
not
sc_key
:
raise
Exception
(
'sc_key can not be empty'
)
self
.
sc_key
=
sc_key
elif
messageTtpe
==
'1'
:
if
not
mail
:
raise
Exception
(
'mail can not be empty'
)
self
.
mail
=
mail
self
.
messageTtpe
=
messageTtpe
def
send
(
self
,
desp
=
''
,
isOrder
=
False
):
desp
=
str
(
desp
)
if
isOrder
:
msg
=
desp
+
' 类型口罩,已经下单了。24小时内付款'
else
:
msg
=
desp
+
' 类型口罩,下单失败了,快去抢购!'
if
self
.
messageTtpe
==
'1'
:
sendMail
(
self
.
mail
,
msg
)
if
self
.
messageTtpe
==
'2'
:
sendWechat
(
sc_key
=
self
.
sc_key
,
desp
=
msg
)
wechat_ftqq.py
0 → 100644
浏览文件 @
6fafdaa5
#!/usr/bin/env python
# -*- encoding=utf8 -*-
import
datetime
import
json
import
requests
from
jdlogger
import
logger
def
sendWechat
(
sc_key
,
text
=
'京东商品监控'
,
desp
=
''
):
if
not
text
.
strip
():
logger
.
error
(
'Text of message is empty!'
)
return
now_time
=
str
(
datetime
.
datetime
.
now
())
desp
=
'[{0}]'
.
format
(
now_time
)
if
not
desp
else
'{0} [{1}]'
.
format
(
desp
,
now_time
)
try
:
resp
=
requests
.
get
(
'https://sc.ftqq.com/{}.send?text={}&desp={}'
.
format
(
sc_key
,
text
,
desp
)
)
resp_json
=
json
.
loads
(
resp
.
text
)
if
resp_json
.
get
(
'errno'
)
==
0
:
logger
.
info
(
'Message sent successfully [text: %s, desp: %s]'
,
text
,
desp
)
else
:
logger
.
error
(
'Fail to send message, reason: %s'
,
resp
.
text
)
except
requests
.
exceptions
.
RequestException
as
req_error
:
logger
.
error
(
'Request error: %s'
,
req_error
)
except
Exception
as
e
:
logger
.
error
(
'Fail to send message [text: %s, desp: %s]: %s'
,
text
,
desp
,
e
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录