X



pythonの5chのdat取得するプログラム改善したんだけどこれよりよくできるやついる?
■ このスレッドは過去ログ倉庫に格納されています
0001以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:03:29.806ID:/PBpQ/D+d
Before

import hmac
import hashlib
import urllib
import urllib2

AppKey = 'xxfvFQcOzpTBvwuwPMwwzLZxiCSaGb'
HMKey = 'DgQ3aNpoluV1cl3GFJAqitBg5xKiXZ'

def authenticate():
CT = '1234567890'
message = AppKey + CT
HB = hmac.new(HMKey, message, hashlib.sha256).hexdigest()
url = 'https://api.2ch.net/v1/auth/'
values = {'ID' : '', 'PW' : '', 'KY' : AppKey, 'CT' : CT, 'HB' : HB }
headers = { 'User-Agent' : '', 'X-2ch-UA': 'JaneStyle/3.80'}
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
sid = response.read()
sid = sid.split(':')[1]
return sid

def getDAT(serverName, boardName, threadId, sid):
message = "/v1/" + serverName + "/" + boardName + "/" + threadId + sid + AppKey
hobo = hmac.new(HMKey, message, hashlib.sha256).hexdigest()
url = 'https://api.2ch.net/v1/' + serverName + "/" + boardName + "/" + threadId
values = { 'sid' : sid, 'hobo' : hobo, 'appkey': AppKey }
headers = { 'User-Agent' : 'Mozilla/3.0 (compatible; JaneStyle/3.80..)'}
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
return response.read()

sid = authenticate()
dat = getDAT('anago', 'software', '1424327586', sid)
print dat
0002以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:04:21.253ID:v8EknP+P0
key公開しててワロタ
0003以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:06:22.572ID:/PBpQ/D+d
# 暗号ハッシュ関数でメッセージ認証する標準ライブラリ
import hmac
# ハッシュ化する標準ライブラリ
import hashlib
# http通信ライブラリ
import httpx
# 文字化け対策ライブラリ
import cchardet

class authenticate_5chAPI:


def __init__(

self,
AppKey,
HMKey,
# この値は何でもいいらしいけど変更したいならインスタンス作成時に引数からどうぞ
CT="1234567890",
AppUrl = 'https://api.5ch.net/v1/auth/',
# User-AgentとX-2ch-UAはAppKeyとHMKeyと対応するものを使用。変更したいならインスタンス作成時に引数からどうぞ
headers = { 'User-Agent' : 'Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000', 'X-2ch-UA': 'JaneStyle/4.23'},

):

# インスタンス変数(作成するインスタンス毎に変数の中身が変わる)
self.AppKey = AppKey
self.HMKey = HMKey
self.CT = CT
self.App_Url = AppUrl
self.headers = headers

# セッションIDを作ってreturn
def sessionIdentifier_Create(self):

message = self.AppKey + self.CT
# python3系統ではhmac.newの引数はbytearrayで変換すること
HB = hmac.new(bytearray(self.HMKey,"ASCII"), bytearray(message,"ASCII"), hashlib.sha256).hexdigest()
values = {'ID' : '', 'PW' : '', 'KY' : self.AppKey, 'CT' : self.CT, 'HB' : HB }

response = httpx.post(self.App_Url,data=values,headers=self.headers)

#邪魔な文字列あるからsessionIDだけ上手い感じで抽出
sid = response.text
sid_split_num = len(sid.split(':')[0])+1
sid = sid[sid_split_num:]
sid = sid.split('\'')[0]

return sid


class use_5chAPI(authenticate_5chAPI):

def getDAT(

self,
serverName,
boardName,
threadId,
sid

):

message = "/v1/" + serverName + "/" + boardName + "/" + threadId + sid + self.AppKey
hobo = hmac.new(bytearray(self.HMKey,"ASCII"), bytearray(message,"ASCII"), hashlib.sha256).hexdigest()
url = self.App_Url[:-5] + serverName + "/" + boardName + "/" + threadId
values = { 'sid' : sid, 'hobo' : hobo, 'appkey': self.AppKey }
response = httpx.post(url,data=values,headers=self.headers,timeout=None)
# 文字コードにISO-8859-1が使われていて文字化けする場合は以下の1行を入れる
response.encoding = cchardet.detect(response.content)["encoding"]
return response.text

# 処理テスト用

def main():

instance = use_5chAPI(

AppKey = ',
HMKey = '',
CT = '',
AppUrl = '',
headers = { ''}

)
dat = instance.getDAT('mi', 'news4vip', '1670646031', sid=instance.sessionIdentifier_Create())
print(dat)
if __name__ == '__main__':
main()
0004以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:07:03.718ID:/PBpQ/D+d
>>2
いや元から公開されてるし
このサンプル終わってるからこのkeyは使えんぞ
0005以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:07:15.794ID:/PBpQ/D+d
>>3
afterね
0006以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:12:18.533ID:reM7yIqI0
いないの?俺が頂点か
0007以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:12:47.691ID:reM7yIqI0
あん?なんでID変わったと思ったら
携帯回線から書き込んでたわwifiオンにしてたのに
0009以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:17:52.790ID:Nthcdvsd0
シンタクスエラーあるぞ
あとフォーマッタくらいかけて
0010以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:18:34.319ID:reM7yIqI0
>>8
まじで終わってるよな?このサンプル
だかは俺が3系統に対応してかつ改善してやった
0011以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:21:54.342ID:reM7yIqI0
>>9
NGワードとか言われたから雑に消したから
変になったとこあるかも

フォーマッタね検索したらこれがでた
https://qiita.com/sin9270/items/85e2dab4c0144c79987d

検討するわ 

でもさぁ、==じゃなくてis使うのって正しいの?isだと==より遅いみたいなん見たことあるけど
0012以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:22:23.213ID:reM7yIqI0
あとisとかpython知らん人が見たらなにこれ?ってなるし
==のが無難では
0013以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:28:12.051ID:reM7yIqI0
isについて調べた
==より早いのか
javascriptでいうところの===と同じ働きもするらしい
https://i.imgur.com/wEiiUaG.png
0014以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/12/10(土) 23:54:34.323ID:C39fYkdmM
そんな細いところ気にする必要ないだろ
何兆回と処理するならまだしもリンターに従えとしか
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況