一、連通的網絡php
二、已安裝Python2並配置環境變量html
三、Python腳本源碼python
網絡就不用我說了(〃'▽'〃) 那麼下面咱們來安裝python吧。web
Python官網有2個版本2和3,咱們選擇2,由於語法等方面會有所不一樣。sql
Python2下載:https://www.python.org/downloads/windows/json
具體安裝教學可百度,或參考 教程:https://www.runoob.com/python/python-install.htmlwindows
記得要配置環境變量。api
環境變量配置方法: 「計算機」右鍵-> 「屬性」->「高級系統設置」->「環境變量」-> 系統變量中找到「Path」->「編輯」->「新建」-> 將你python安裝的路徑粘貼進去-> 所有「確認」。網絡
測試python是否配置完成。dom
按Win+R 鍵,輸入「cmd」,「確認」。
成功運行python命令即表示成功。
桌面右鍵 -> 「新建」-> 「文本文檔」 -> 取名爲 「抽獎.py」(不要隱藏文件擴展名)
修改正確後的圖標是,而不是
。
補充 取消隱藏文件擴展名的方法(win10):
一、打開 「計算機」
二、點擊這個箭頭
三、選擇 「查看」
四、勾上 「文件擴展名」
五、回到「桌面」,再次修改文件名。
感謝 Hack Inn大佬的腳本,下載網址:https://www.hackinn.com/index.php/archives/112/
文件建好後,咱們貼入已經寫好的代碼:
以上就是源碼部分。
貼入文件後 「保存」 退出。
按Win+R 鍵,輸入 「cmd」,進入命令提示符,咱們默認路徑不在桌面,因此須要修改路徑。輸入「cd Desktop」,來到桌面,輸入「chcp 65001」,再輸入
「set PYTHONIOENCODING=utf-8」。而後輸入「python 抽獎.py」運行程序。
而後貼入你的動態頁面的網址。進入「b站」-> 「動態」 -> 找到本身要抽獎的那條動態
-> 複製網址 -> 粘貼到命令行中 -> 「回車」便可
運行效果以下:
可能會碰到以下錯誤,是由於中文字符的緣由,可使用英文版。
提供下解決思路,將中文字符串先後都加個英文空格。
而後命令行依然須要輸入
「chcp 65001」
「set PYTHONIOENCODING=utf-8」
而後運行程序 「python 文件名.py」
英文版源碼:
#!/usr/bin/env python # -*- encoding: utf-8 -*- """ Bilibili動態轉發抽獎腳本 V1.1 Auteur:Poc Sir Bilibili:鳥雲廠商 Mon site Internet:https://www.hackinn.com Weibo:Poc-Sir Twitter:@rtcatc 更新內容:1.增長了對畫冊類型動態的支持。 """ import os import urllib2 import json import sqlite3 import random import webbrowser import re import time from urlparse import * def GetMiddleStr(content,startStr,endStr): startIndex = content.index(startStr) if startIndex>=0: startIndex += len(startStr) endIndex = content.index(endStr) return content[startIndex:endIndex] def GetUsers(): global Bilibili_Key GetTotalRepost() Tmp_count = 0 Bilibili_Key = 0 DynamicAPI = "https://api.live.bilibili.com/dynamic_repost/v1/dynamic_repost/view_repost?dynamic_id="+ Dynamic_id + "&offset=" conn = sqlite3.connect('Bilibili_TMP.db') c = conn.cursor() while Tmp_count<Total_count: Tmp_DynamicAPI = DynamicAPI + str(Tmp_count) try: BiliJson = json.loads(GetMiddleStr(urllib2.urlopen(Tmp_DynamicAPI).read(),"comments\":",",\"total")) for BiliJson_dict in BiliJson: Bilibili_UID = str(BiliJson_dict['uid']) Bilibili_Uname = BiliJson_dict['uname'] Bilibili_Comment = BiliJson_dict['comment'] Bilibili_Sql = "INSERT or REPLACE into Bilibili (UID,Uname,Comment,ID) VALUES (" + Bilibili_UID + ", '" + Bilibili_Uname + "', '" + Bilibili_Comment + "', " + str(Bilibili_Key) + ")" c.execute(Bilibili_Sql) conn.commit() Bilibili_Key = Bilibili_Key + 1 except: break Tmp_count = Tmp_count + 20 else: Tmp_count = 0 conn.close() def GetTotalRepost(): global Total_count global UP_UID DynamicAPI = "https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/get_dynamic_detail?dynamic_id=" + Dynamic_id BiliJson = json.loads(urllib2.urlopen(DynamicAPI).read()) Total_count = BiliJson['data']['card']['desc']['repost'] UP_UID = BiliJson['data']['card']['desc']['user_profile']['info']['uid'] def GetLuckyDog(): Bilibili_Doge = random.randint(0,Bilibili_Key) conn = sqlite3.connect('Bilibili_TMP.db') c = conn.cursor() cursor = c.execute("SELECT UID from Bilibili where ID=" + str(Bilibili_Doge)) res = cursor.fetchall() suc = True if len(res) > 0 : suc = True cursor.close() conn.close() conn2 = sqlite3.connect('Bilibili_TMP.db') c2 = conn2.cursor() info_cursor = c2.execute("SELECT UID,Uname,Comment from Bilibili where ID=" + str(Bilibili_Doge)) for row in info_cursor: print "user ID:", row[0] print "user name:", row[1], "\n" bilibili_open = raw_input(TellTime() + "Do you want to open a web page to send private messages to the winning users?:(Y/N)"); if bilibili_open == "Y": webbrowser.open("https://message.bilibili.com/#/whisper/mid" + str(row[0])) elif bilibili_open == "y": webbrowser.open("https://message.bilibili.com/#/whisper/mid" + str(row[0])) elif bilibili_open == "Yes": webbrowser.open("https://message.bilibili.com/#/whisper/mid" + str(row[0])) elif bilibili_open == "yes": webbrowser.open("https://message.bilibili.com/#/whisper/mid" + str(row[0])) elif bilibili_open == "是": webbrowser.open("https://message.bilibili.com/#/whisper/mid" + str(row[0])) elif bilibili_open == "是的": webbrowser.open("https://message.bilibili.com/#/whisper/mid" + str(row[0])) conn2.close() else: suc = False cursor.close() conn.close() GetLuckyDog() def DeleteDatabase(): DB_path = os.getcwd() + os.sep + "Bilibili_TMP.db" try: os.remove(DB_path) print TellTime() + "Cleaning up cache..." except: print TellTime() + "Cleaning up cache..." def CreateDatabase(): conn = sqlite3.connect('Bilibili_TMP.db') c = conn.cursor() c.execute('''CREATE TABLE Bilibili (UID INT PRIMARY KEY NOT NULL, Uname TEXT NOT NULL, Comment TEXT NOT NULL, ID INT NOT NULL);''') conn.commit() conn.close() def GetDynamicid(): s = raw_input("Please paste the website you get:") nums = re.findall(r'\d+', s) try: bilibili_domain = urlparse(s)[1] if bilibili_domain == "t.bilibili.com": print TellTime() + "Dynamic for plain text type" return str(nums[0]) elif bilibili_domain == "h.bilibili.com": bilibili_docid = "https://api.vc.bilibili.com/link_draw/v2/doc/dynamic_id?doc_id=" + str(nums[0]) Dynamic_id = GetMiddleStr(urllib2.urlopen(bilibili_docid).read(),"dynamic_id\":\"","\"}}") print TellTime() + "Dynamic for album type" return str(Dynamic_id) except: print TellTime() + "The URL you entered is incorrect!" exit() def TellTime(): localtime = "[" + str(time.strftime('%H:%M:%S',time.localtime(time.time()))) + "]" return localtime if __name__ == '__main__': DeleteDatabase() print "+---------------------------------------------------------------------------------------+" print "|PC login Bilibli,in home page,Click on the news again,Enter the dynamic page |" print "|Click the corresponding dynamic content, copy and paste the obtained URL below: |" print "+---------------------------------------------------------------------------------------+\n" Dynamic_id = str(GetDynamicid()) TellTime() print TellTime() + "Get dynamic success with ID:" + Dynamic_id print TellTime() + "Getting forwarding data......" CreateDatabase() GetUsers() print TellTime() + "Data acquisition successful!" print TellTime() + "Winning user information:\n" GetLuckyDog() DeleteDatabase()
使用操做是不須要修改編碼,直接win+R,運行cmd,而後cd到桌面,運行python文件,粘貼入你的動態頁面網址,就能夠完成抽獎了。以後能夠選擇是否私信,很方便。再次感謝Hack Inn大佬提供的源碼。