Auto create csdn post
来源:互联网 发布:windows me u盘安装 编辑:程序博客网 时间:2024/05/20 17:28
1. Problem
I want to create a script to put native blog file to csdn site.
2. Analysis
- Try to use csdn api, but meet error. I can not get access_token.
- Use selenium.
3. Requirement
- PyUserInput
- selenium
- pyperclip
- geckodriver
git clone https://github.com/PyUserInput/PyUserInputcd PyUserInputsudo python setup.py installsudo pip install seleniumsudo pip install pyperclipwget https://github.com/mozilla/geckodriver/releases/download/v0.14.0/geckodriver-v0.14.0-linux64.tar.gztar -zxvf geckodriver-v0.14.0-linux64.tar.gzsudo mv geckodriver /usr/local/bin/
4. Code
write.py
#!/usr/bin/env python# -*- coding: utf-8 -*-from pymouse import PyMousefrom pykeyboard import PyKeyboardimport pyperclipimport timem = PyMouse()k = PyKeyboard()def writeContent(title, content): m.click(300, 180, 1, 3) time.sleep(1) k.type_string(title) m.click(300, 300, 1, 2) time.sleep(1) k.press_key(k.alt_key) k.tap_key('a') k.release_key(k.alt_key) k.tap_key(k.delete_key) #k.type_string(content) pyperclip.copy(content) m.click(300, 300, 1, 2) time.sleep(0.5) k.press_key(k.control_key) k.tap_key('v') k.release_key(k.control_key)def writeAbstract(abstract): m.click(m.screen_size()[0]/2, m.screen_size()[1]/2, 1, 3) time.sleep(1) k.press_key(k.alt_key) k.tap_key('a') k.release_key(k.alt_key) k.tap_key('space') k.type_string(abstract)def addSetting(groups): assert len(groups) < 5 and len(groups) > 0 # set 原创 pos = [621, 346] m.click(pos[0], pos[1], 1, 3) time.sleep(1) pos = [621, 411] m.click(pos[0], pos[1], 1, 1) time.sleep(1) # set article type pos = [621, 390] m.click(pos[0], pos[1], 1, 2) time.sleep(0.5) for g in groups: k.type_string(g) k.tap_key(k.enter_key) time.sleep(1) # set 综合 pos = [621, 674] m.click(pos[0], pos[1], 1, 1) time.sleep(1) pos = [621, 640] m.click(pos[0], pos[1], 1, 1) time.sleep(1)if __name__ == "__main__": #title="hello, csdn" #content="test" #writeContent(title, content) addSetting(['linux','apple'])
addPost.py
#!/usr/bin/env python# -*- coding: utf-8 -*-from selenium import webdriverimport timeimport writeimport sysdef pause(length=1): time.sleep(length)def addPost(title, content, abstract, groups): b = webdriver.Firefox() pause(1) b.get("http://blog.csdn.net/duinodu") pause(2) b.find_element_by_link_text('登录').click() pause(5) b.find_element_by_id('username').send_keys('username') pause(1) b.find_element_by_id('password').send_keys('password') pause(1) b.find_element_by_class_name('logging').click() pause(5) b.find_element_by_link_text('写新文章').click() pause(5) write.writeContent(title, content) b.find_element_by_link_text('发表博客').click() pause(3) write.writeAbstract(abstract) b.find_element_by_link_text('下一步').click() pause(3) write.addSetting(groups) b.find_element_by_link_text('发布').click() pause(3)def readBlog(filename): with open(filename, 'r') as fid: lines = fid.readlines() title = lines[0].split('\n')[0] groups = lines[1].split('\n')[0].split(' ') abstract = lines[2].split('\n')[0] content = "" for line in lines[4:]: content += line return title, groups, abstract, contentdef main(argv): assert(len(argv) == 2) title, groups, abstract, content = readBlog(argv[1]) #print content addPost(title, content, abstract, groups)if __name__ == "__main__": print(__doc__) import sys main(sys.argv)
5. Usage
python addPost.py newblog.md
P.S: This post is created by addPost.py automatically.
newblog.md
New blog (title)linux vim (type)It is a blog (abstraction)LaLaLa...(Content)
1 0
- Auto create csdn post
- auto create Makefile
- auto create head file use varaible
- <property name="hbm2ddl.auto">create</property>
- create new post for jekyll
- wp-auto post pro插件【自动采集】
- Eclipse Hangs in DDMS post-create init
- Eclipse Hangs in DDMS post-create init
- eclipse 一直停在DDMS post-create init...
- eclipse 一直停在DDMS post-create init
- eclipse 一直停在DDMS post-create init...
- Rhyme/ hibernate.cfg.xml hbm2ddl.auto 属性 create、create-drop、validation、update选项解释
- My first post in CSDN
- "auto"
- auto
- auto
- auto
- auto
- CentOS安装vsftpd提供ftp服务
- 算法训练 出现次数最多的整数
- 1032. 挖掘机技术哪家强(20)
- 使用prometheus + Hawkular 监控你的应用
- idea日志配置
- Auto create csdn post
- KMP算法next数组详解
- 1033. 旧键盘打字(20)
- Python:在网页中查找字符串的一般方法--in
- JavaScript运动中级
- ROS IDE —— RoboWare Studio
- Android Studio Attach source code
- 如何解决GitHub冲突<一>:GitHubDesktop同步你的分支
- 第四十三讲项目1.2—由键盘到文件