質問編集履歴
2
スクリプトの変更と確認したい内容を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,11 +4,17 @@
|
|
4
4
|
当方プログラム初心者のため、Python、JSONの理解が及んでいないです。(本プログラムも理解できていない部分が結構あります)
|
5
5
|
お手数ですが、お分かりになる方がおりましたら、ご教示いただけますと幸いです。
|
6
6
|
|
7
|
-
追記:
|
7
|
+
追記(2020/11/18):
|
8
8
|
追加でエラーが発生してしまったため、そちらも合わせてご教示いただけますと非常に助かります。
|
9
9
|
お手数ですがよろしくお願いいたします。
|
10
10
|
|
11
|
+
追記2(2020/11/19):
|
12
|
+
確認したい内容とご教示いただきましたスクリプトをスクリプト内に追記させていただきましたので、お手数ですが、
|
13
|
+
ご教示いただけますと幸いです。
|
14
|
+
※ご教示いただきましたスクリプトはそのまま記載しました。convert_url(url)のurlをJSONで定義したimg_urlやファイルのパスを直書きしたり試したのですが、
|
15
|
+
Image upload failedを解消することができませんでした。
|
11
16
|
|
17
|
+
|
12
18
|
### 実行環境
|
13
19
|
■Google Colaboratory
|
14
20
|
■JSON -ここにツイート内容、画像を定義
|
@@ -54,6 +60,7 @@
|
|
54
60
|
from requests_oauthlib import OAuth1Session
|
55
61
|
#urlを使用するためのモジュール
|
56
62
|
import urllib.request
|
63
|
+
import re # <-------追加
|
57
64
|
|
58
65
|
#下記TwitterのAPIキー、アクセスキーのため記載しておりません
|
59
66
|
CONSUMER_KEY = '****************************'
|
@@ -64,6 +71,9 @@
|
|
64
71
|
#Twitterアクセスキーを変数へ格納
|
65
72
|
twitter = OAuth1Session(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN,ACCESS_TOKEN_SECRET)
|
66
73
|
|
74
|
+
# url変換に使用する正規表現
|
75
|
+
pattern = re.compile(r".*/file/./(.*)/.*") # <-------追加
|
76
|
+
|
67
77
|
#メディアアップロードに使用するURL
|
68
78
|
url_media = "https://upload.twitter.com/1.1/media/upload.json"
|
69
79
|
|
@@ -71,6 +81,17 @@
|
|
71
81
|
url_text = "https://api.twitter.com/1.1/statuses/update.json"
|
72
82
|
|
73
83
|
|
84
|
+
# Googleドライブ上のリンクを、twitter API等で直接取得できるurlに変換する関数 <-------追加
|
85
|
+
def convert_url(url):
|
86
|
+
a = re.search(pattern, url)
|
87
|
+
try:
|
88
|
+
return "https://drive.google.com/uc?export=view&id=%s" % a.group(1)
|
89
|
+
except (AttributeError, IndexError) as e:
|
90
|
+
# パターンマッチしない場合はメッセージを出して、渡されたurlをそのまま返す。
|
91
|
+
print("[%s]はパターンにマッチしないため、そのまま返します。" % url)
|
92
|
+
return url
|
93
|
+
|
94
|
+
|
74
95
|
#jsonファイルからツイート本文と画像urlを取得
|
75
96
|
def get_tweet_content(json_file_path):
|
76
97
|
#テキストファイルを読み込む
|
@@ -190,5 +211,13 @@
|
|
190
211
|
|
191
212
|
|
192
213
|
|
214
|
+
### 確認したい内容
|
215
|
+
・convert_url(url)の引数urlはreturnされた「"https://drive.google.com/uc?export=view&id=%s" % a.group(1)」の値が記載されている認識でよろしいでしょうか。認識が間違っている場合、引数にはどの値(ファイルパス指定、JSONに記載したファイルパスの変数を指定など)を定義するべきでしょうか。
|
216
|
+
・main()関数にはconvert_url(url)を呼び出す関数がないようですが、こちらの関数はどのように呼び出せばよろしいでしょうか。
|
217
|
+
・main()関数に記載したjson_file_pathにjsonファイルのパスを直指定しているのですが、こちらはjsonファイル名を記載するのが正しいのでしょうか。
|
218
|
+
・Pythonの実行方法として、定義された関数をmainから実行していくという認識であっているのでしょうか。※初歩的な質問で申し訳ございません
|
193
219
|
|
220
|
+
|
221
|
+
|
222
|
+
|
194
223
|
長くなってしまい申し訳ございませんが、宜しくお願い致します。
|
1
元のエラーは解消され、新たに画像投稿が失敗してしまうエラーが発生したため、対所方法をご教示いただきたいです。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
PythonからJSONファイルで画像付きツイートを自動化する方法
|
1
|
+
sPythonからJSONファイルで画像付きツイートを自動化する方法
|
body
CHANGED
@@ -4,7 +4,11 @@
|
|
4
4
|
当方プログラム初心者のため、Python、JSONの理解が及んでいないです。(本プログラムも理解できていない部分が結構あります)
|
5
5
|
お手数ですが、お分かりになる方がおりましたら、ご教示いただけますと幸いです。
|
6
6
|
|
7
|
+
追記:
|
8
|
+
追加でエラーが発生してしまったため、そちらも合わせてご教示いただけますと非常に助かります。
|
9
|
+
お手数ですがよろしくお願いいたします。
|
7
10
|
|
11
|
+
|
8
12
|
### 実行環境
|
9
13
|
■Google Colaboratory
|
10
14
|
■JSON -ここにツイート内容、画像を定義
|
@@ -149,4 +153,42 @@
|
|
149
153
|
|
150
154
|
|
151
155
|
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
### 追加で発生したエラー
|
161
|
+
|
162
|
+
上記のエラーの「NameError: name 'random' is not defined」は解消でき、ツイートもテキストツイートは成功しました。
|
163
|
+
|
164
|
+
ですが、画像ツイートが下記のエラーにより、失敗してしまいます。
|
165
|
+
お手数ですが、引き続きご教示いただけますと幸いです。
|
166
|
+
宜しくお願い致します。
|
167
|
+
|
168
|
+
|
169
|
+
■一回目実行
|
170
|
+
画像投稿失敗ログ:
|
171
|
+
GoogleDriveをマウントしました→セッションがクラッシュしました
|
172
|
+
|
173
|
+
↓ 下記ログが出力
|
174
|
+
|
175
|
+
Image upload failed: %s {"request":"/1.1/media/upload.json","error":"media type unrecognized."}
|
176
|
+
Auto Tweet Succeeded.
|
177
|
+
|
178
|
+
|
179
|
+
■二回目実行
|
180
|
+
一回目実行後再実行すると下記のエラーが発生再発します。
|
181
|
+
|
182
|
+
---------------------------------------------------------------------------
|
183
|
+
NameError Traceback (most recent call last)
|
184
|
+
<ipython-input-1-0f1ead28e8c2> in <module>()
|
185
|
+
1 if __name__ == '__main__':
|
186
|
+
----> 2 main()
|
187
|
+
|
188
|
+
NameError: name 'main' is not defined
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
|
152
194
|
長くなってしまい申し訳ございませんが、宜しくお願い致します。
|