質問編集履歴
2
スクリプトの変更と確認したい内容を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
追記:
|
13
|
+
追記(2020/11/18):
|
14
14
|
|
15
15
|
追加でエラーが発生してしまったため、そちらも合わせてご教示いただけますと非常に助かります。
|
16
16
|
|
@@ -18,6 +18,18 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
+
追記2(2020/11/19):
|
22
|
+
|
23
|
+
確認したい内容とご教示いただきましたスクリプトをスクリプト内に追記させていただきましたので、お手数ですが、
|
24
|
+
|
25
|
+
ご教示いただけますと幸いです。
|
26
|
+
|
27
|
+
※ご教示いただきましたスクリプトはそのまま記載しました。convert_url(url)のurlをJSONで定義したimg_urlやファイルのパスを直書きしたり試したのですが、
|
28
|
+
|
29
|
+
Image upload failedを解消することができませんでした。
|
30
|
+
|
31
|
+
|
32
|
+
|
21
33
|
|
22
34
|
|
23
35
|
### 実行環境
|
@@ -110,6 +122,8 @@
|
|
110
122
|
|
111
123
|
import urllib.request
|
112
124
|
|
125
|
+
import re # <-------追加
|
126
|
+
|
113
127
|
|
114
128
|
|
115
129
|
#下記TwitterのAPIキー、アクセスキーのため記載しておりません
|
@@ -130,6 +144,12 @@
|
|
130
144
|
|
131
145
|
|
132
146
|
|
147
|
+
# url変換に使用する正規表現
|
148
|
+
|
149
|
+
pattern = re.compile(r".*/file/./(.*)/.*") # <-------追加
|
150
|
+
|
151
|
+
|
152
|
+
|
133
153
|
#メディアアップロードに使用するURL
|
134
154
|
|
135
155
|
url_media = "https://upload.twitter.com/1.1/media/upload.json"
|
@@ -144,6 +164,28 @@
|
|
144
164
|
|
145
165
|
|
146
166
|
|
167
|
+
# Googleドライブ上のリンクを、twitter API等で直接取得できるurlに変換する関数 <-------追加
|
168
|
+
|
169
|
+
def convert_url(url):
|
170
|
+
|
171
|
+
a = re.search(pattern, url)
|
172
|
+
|
173
|
+
try:
|
174
|
+
|
175
|
+
return "https://drive.google.com/uc?export=view&id=%s" % a.group(1)
|
176
|
+
|
177
|
+
except (AttributeError, IndexError) as e:
|
178
|
+
|
179
|
+
# パターンマッチしない場合はメッセージを出して、渡されたurlをそのまま返す。
|
180
|
+
|
181
|
+
print("[%s]はパターンにマッチしないため、そのまま返します。" % url)
|
182
|
+
|
183
|
+
return url
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
147
189
|
#jsonファイルからツイート本文と画像urlを取得
|
148
190
|
|
149
191
|
def get_tweet_content(json_file_path):
|
@@ -382,6 +424,22 @@
|
|
382
424
|
|
383
425
|
|
384
426
|
|
427
|
+
### 確認したい内容
|
428
|
+
|
429
|
+
・convert_url(url)の引数urlはreturnされた「"https://drive.google.com/uc?export=view&id=%s" % a.group(1)」の値が記載されている認識でよろしいでしょうか。認識が間違っている場合、引数にはどの値(ファイルパス指定、JSONに記載したファイルパスの変数を指定など)を定義するべきでしょうか。
|
430
|
+
|
431
|
+
・main()関数にはconvert_url(url)を呼び出す関数がないようですが、こちらの関数はどのように呼び出せばよろしいでしょうか。
|
432
|
+
|
433
|
+
・main()関数に記載したjson_file_pathにjsonファイルのパスを直指定しているのですが、こちらはjsonファイル名を記載するのが正しいのでしょうか。
|
434
|
+
|
435
|
+
・Pythonの実行方法として、定義された関数をmainから実行していくという認識であっているのでしょうか。※初歩的な質問で申し訳ございません
|
436
|
+
|
437
|
+
|
438
|
+
|
439
|
+
|
440
|
+
|
441
|
+
|
442
|
+
|
385
443
|
|
386
444
|
|
387
445
|
長くなってしまい申し訳ございませんが、宜しくお願い致します。
|
1
元のエラーは解消され、新たに画像投稿が失敗してしまうエラーが発生したため、対所方法をご教示いただきたいです。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
PythonからJSONファイルで画像付きツイートを自動化する方法
|
1
|
+
sPythonからJSONファイルで画像付きツイートを自動化する方法
|
test
CHANGED
@@ -10,6 +10,14 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
+
追記:
|
14
|
+
|
15
|
+
追加でエラーが発生してしまったため、そちらも合わせてご教示いただけますと非常に助かります。
|
16
|
+
|
17
|
+
お手数ですがよろしくお願いいたします。
|
18
|
+
|
19
|
+
|
20
|
+
|
13
21
|
|
14
22
|
|
15
23
|
### 実行環境
|
@@ -300,4 +308,80 @@
|
|
300
308
|
|
301
309
|
|
302
310
|
|
311
|
+
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
### 追加で発生したエラー
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
上記のエラーの「NameError: name 'random' is not defined」は解消でき、ツイートもテキストツイートは成功しました。
|
324
|
+
|
325
|
+
|
326
|
+
|
327
|
+
ですが、画像ツイートが下記のエラーにより、失敗してしまいます。
|
328
|
+
|
329
|
+
お手数ですが、引き続きご教示いただけますと幸いです。
|
330
|
+
|
331
|
+
宜しくお願い致します。
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
■一回目実行
|
338
|
+
|
339
|
+
画像投稿失敗ログ:
|
340
|
+
|
341
|
+
GoogleDriveをマウントしました→セッションがクラッシュしました
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
↓ 下記ログが出力
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
Image upload failed: %s {"request":"/1.1/media/upload.json","error":"media type unrecognized."}
|
350
|
+
|
351
|
+
Auto Tweet Succeeded.
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
■二回目実行
|
358
|
+
|
359
|
+
一回目実行後再実行すると下記のエラーが発生再発します。
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
---------------------------------------------------------------------------
|
364
|
+
|
365
|
+
NameError Traceback (most recent call last)
|
366
|
+
|
367
|
+
<ipython-input-1-0f1ead28e8c2> in <module>()
|
368
|
+
|
369
|
+
1 if __name__ == '__main__':
|
370
|
+
|
371
|
+
----> 2 main()
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
NameError: name 'main' is not defined
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
|
386
|
+
|
303
387
|
長くなってしまい申し訳ございませんが、宜しくお願い致します。
|