質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1011閲覧

Python TwitterAPI使用 取得速度UP方法

WaltonTeresi

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/03 09:44

編集2021/02/03 10:50

Python

1コードimport notification , clipboard , keyboard , datetime 2import tweepy 3import base64 , json 4import time , glob 5import os , sys , re 6import random , console , sound 7 8""" 9            ---初期設定--- 10    11 ① 本体コードの貼り付けができたら、右上にある再生マーク ▷ を押して下さい 12  13 ② 通知または表示された数字を DMで伝えて下さい 14  15 ③それと引き換えにこちらがIDを渡しますので、受け取ったAutoIDを19行目 00000 を消して貼り付けてください。 16 17""" 18# ⤵︎の00000 を消した後 貰ったIDを = の後にそのまま貼り付けてください 19Auto_ID = 00000 20""" 21 22pass_tweet_time = "00" 23room_id = "0000" 24 25""" 26 27flag = 0 28flag_S = 0 29password = "" 30 31 32CK = "" 33CKS = "" 34AT = "" 35ATS = "" 36 37basenumber = "0123456789" 38 39font_item = ["⓪①②③④⑤⑥⑦⑧⑨", 40 "⓿❶❷❸❹❺❻❼❽❾", 41 "0123456789", 42 "????????????????????????????????????????",] 43 44itemlist1 = ["@[a-zA-Z0-9_]+", 45 "[0-9]{1,2}:[0-5][0-9]", 46 "[0-9]{1,2}時[0-59]分", 47 "([0-9]|[0-2][0-9])時", 48 "[0-5][0-9]分", 49 "[1-9]{1,2}/[0-9]{1,2}", 50 "[0-9]{1,2}月([1-3][0-9]|[0-9])日",] 51 52 53itemlist2 = [" "," ",] 54 55message = { 56 "no_update":"パスツイ取得中", 57 "code_notification":"この数字をDMで伝えてください:", 58 "copy_error":"Twitterリンクのコピー又はフルアクセスの許可をしてください", 59 "pass_notfound":"パスワードが取得できませんでした", 60 "waiting_passtweet":"からのパスツイ待機中...", 61 "stop":"動作可能時間内にパスツイが見つかりませんでした。", 62 "repush":"パスツイ予定時間の数秒前にもう一度ボタンを押して下さい", 63} 64 65 66""" 67  関数 68""" 69 70def AutoID(i): 71 Auto_ID_key = b'' 72 Auto_ID_key_mode = 0 73 Auto_ID_generate = ['0001','0010','0100','1000','0000',] 74 Xcode = ["\x207\x204\x208\x209\x400\x102", 75 "207\x200\x208\x209\x400\x109" , 76 "207\x204\x208\x209\x400\x102" , 77 "207\x204\x208\x209\x400\x102" ,] 78 main_key = 3*3*1024 79 return str(main_key)+Auto_ID_generate[i] 80 81def login(CK,CKS,AT,ATS): 82 auth = tweepy.OAuthHandler(CK,CKS) 83 auth.set_access_token(AT,ATS) 84 API = tweepy.API(auth) 85 return API 86 87def get_username(): 88 user_name = clipboard.get() 89 if("https" in user_name): 90 user_name = user_name.split("/") 91 user_name = user_name[3].split("?") 92 user_name = user_name[0] 93 return user_name 94 else: 95 print(message["copy_error"]) 96 sys.exit() 97 98def ACencrtrpt(a): 99 c = str(a) 100 c = base64.b64encode(c.encode()) 101 return c 102 103def Test(c,d): 104 if c == d: 105 return True 106 else: 107 key = glob.glob("*.pwd") 108 key = key[0].split(".")[0] 109 print(message["code_notification"]+key) 110 sys.exit() 111 112def check(): 113 file = glob.glob("*.pwd") 114 i = 0 115 if not file: 116 key = int(random.uniform(1,99))*int(random.uniform(99,999))*int(random.uniform(1,9)) 117 key = str(key) 118 with open(key+".pwd" , mode="w") as f: 119 f.write("") 120 notification.schedule(message["code_notification"]+key) 121 print(message["code_notification"]+key) 122 sys.exit() 123 else: 124 code = file[0].split(".")[0] 125 return code,i 126 127def tweet_filter(Tweettext): 128 for i in range(10): 129 if(font_item[0][i] in Tweettext): 130 Tweettext = Tweettext.replace(font_item[0][i],basenumber[i]) 131 for j in range(10): 132 if(font_item[1][j] in Tweettext): 133 Tweettext = Tweettext.replace(font_item[1][j],basenumber[j]) 134 for k in range(10): 135 if(font_item[2][k] in Tweettext): 136 Tweettext = Tweettext.replace(font_item[2][k],basenumber[k]) 137 for l in range(10): 138 if(font_item[3][l] in Tweettext): 139 Tweettext = Tweettext.replace(font_item[3][l],basenumber[l]) 140 return Tweettext 141 142def tweet_trim(tweet): 143 tweet = tweet_filter(tweet) 144 for i in itemlist1: 145 tweet = re.sub(i,"",tweet) 146 for j in itemlist2: 147 tweet = tweet.replace(j,"") 148 tweet = re.findall(r"\d+",tweet) 149 return tweet 150 151def get_time_now(): 152 now_time = datetime.datetime.now() 153 now_time = str(now_time).split(" ")[1] 154 now_time = now_time.split(":") 155 now_time_minute = now_time[1] 156 now_time_seconds = now_time[2].split(".")[0] 157 return now_time_minute,now_time_seconds 158 159 160API = login(CK,CKS,AT,ATS) 161 162Check , Check2 = check() 163Check = ACencrtrpt(Check) 164Test(Auto_ID,Check) 165 166 167order = API.user_timeline("auto_test_",count=1) 168 169for i in order: 170 order = i.text 171 172if("del" in order): 173 order = order.split(",")[1] 174 order = order+".pwd" 175 if(os.path.isfile(order)): 176 os.remove(order) 177 sys.exit() 178elif("mes" in order): 179 order_ = order.split(",")[1] 180 order_mes = order.split(",")[2] 181 order_ = order_+".pwd" 182 if(os.path.isfile(order_)): 183 print(order_mes) 184 sys.exit() 185 186 187num = glob.glob("*.pwd") 188num = num[0].split(".")[0] 189print(num) 190user_name = get_username() 191 192 193j,k = get_time_now() 194if(pass_tweet_time == "00"): 195 times = "59" 196else: 197 times = str(int(pass_tweet_time)-1) 198 199if(j == pass_tweet_time): 200 s = 0 201elif(j == times and int(k) < 40): 202 print(message["repush"]) 203 sys.exit() 204elif not j == times and not j == pass_tweet_time: 205 print(message["repush"]) 206 sys.exit() 207 208print("@"+user_name+message["waiting_passtweet"]) 209 210if(pass_tweet_time == "00"): 211 passTb = "59" 212else: 213 passTb = str(int(pass_tweet_time)-1) 214 215while True: 216 now_time_minute , now_time_seconds = get_time_now() 217 if(now_time_minute == passTb and now_time_seconds == "58"): 218 break 219 elif(now_time_minute == passTb and now_time_seconds == "59"): 220 break 221 elif(now_time_minute == pass_tweet_time): 222 c , d = get_time_now() 223 flag_S = 0 224 break 225 time.sleep(0.01) 226 227while True: 228 229 a , b = get_time_now() 230 231 if(flag_S == 0): 232 if(b == "12"): 233 print(message["stop"]) 234 sys.exit() 235 else: 236 if(int(d) >= 50): 237 if(b == "59"): 238 print(message["stop"]) 239 sys.exit() 240 else: 241 if(int(b) == int(d)+12): 242 print(message["stop"]) 243 sys.exit() 244 245 tweet = API.user_timeline(user_name,count = 1) 246 for i in tweet: 247 tweet = i.text 248 tweet_time = i.created_at 249 250 tweet_time = re.findall(r"\d+",str(tweet_time)) 251 tweet_time_minute = tweet_time[4] 252 tweet_time_second = tweet_time[5] 253 254 if(pass_tweet_time == "00"): 255 pass_tweet_time_ = "59" 256 else: 257 pass_tweet_time_ = str(int(pass_tweet_time)-1) 258 if(len(pass_tweet_time_) == 1): 259 pass_tweet_time_ = "0" + pass_tweet_time_ 260 for i in range(57,60): 261 if(pass_tweet_time_ == tweet_time_minute and str(i) == tweet_time_second): 262 flag = 1 263 if(pass_tweet_time == tweet_time_minute): 264 flag = 1 265 266 if(flag == 1): 267 break 268 else: 269 console.clear() 270 print(message["no_update"]+" ["+str(datetime.datetime.now()).split(" ")[1]+"]") 271 time.sleep(0.01) 272 273tweet = tweet_trim(tweet) 274 275if(room_id in tweet): 276 room_id_index = tweet.index(room_id) 277 if(room_id_index == 0): 278 password = tweet[1] 279 elif(room_id_index == 1): 280 password = tweet[0] 281 elif(len(tweet) >= 1): 282 password = tweet[0] 283else: 284 password = tweet[0] 285 286sound.play_effect(name="arcade:Coin_3",volume=0.025) 287keyboard.insert_text(password) 288keyboard.insert_text("\n") 289notification.schedule(password) 290print(password) 291sys.exit()
現在こちらのコードを使用し、ツイートされた数字を他アプリにペーストする。といった物を使用しているのですが、取得速度が遅く、色々コードに無駄があると思われるのですが、自分では色々調べてもforを使用すると遅くなる。事くらいしか理解できませんでした。他にも無駄な場所とかがあれば教えて頂きたいです。 ### 試したこと プログラマーでは無いため素人目線で調べ、並列だから~とかForループ?がこうで、みたいなのは分かったのですが、じゃあどうすればいいのか。というのが分からないのでアドバイスでもいいので教えて頂きたいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takutakuya

2021/02/04 00:08

0.2秒が遅いと思うのはなぜでしょうか???
WaltonTeresi

2021/02/05 15:09

遅れました。 他の方が作成したコードだとこれより早く、これだと負けてしまう。という感じですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問