実現したいこと
正常動作が行われ、APPENDが完了し、FINALIZEまで行きたい。
発生している問題・分からないこと
GASでtwitterに動画アップを行いたいのですが、base64化した動画が、ちゃんとFINALIZEで格納されない。
エラーメッセージ
error
1movieFinalize_json:{"request":"/1.1/media/upload.json","error":"Segments do not add up to provided total file size."}
該当のソースコード
GAS
1 //APPEND 2 const segment_index = 0; 3 const bytes_sent = 0; 4 const chunk_size = 1000000; 5 const chunk_num = Math.ceil(base64filesize / chunk_size); 6 for (let index = 0; index < chunk_num; index++) { 7 console.log("chunk_size*index:"+chunk_size*index) 8 const chunk = base64Data.slice(chunk_size * index, chunk_size * (index + 1)); 9 console.log("base64filesize:"+base64filesize) 10 console.log("chunk.length:"+chunk.length); 11 const movieAppendOption = { 12 'method' : "post", 13 'payload': { 14 'command':'APPEND', 15 'media_id':movieInit['media_id_string'], 16 'segment_index':index, 17 'media_data':chunk 18 } 19 }; 20 console.log("movieAppendOption:"+JSON.stringify(movieAppendOption)); 21 makeRequest2(uploadUrl, movieAppendOption) 22 .then(appendResult => { 23 console.log('appendResult:', appendResult); 24 }); 25 26 } 27 28 //FINALIZE 29 const movieFinalizeOption = { 30 'method' : "post", 31 "muteHttpExceptions" : true, 32 'payload': { 33 'command':'FINALIZE', 34 'media_id':movieInit['media_id_string'] 35 } 36 }; 37 console.log("movie_finalize_option_json:"+JSON.stringify(movieFinalizeOption)); 38 console.log("movie_finalize_option:"+movieFinalizeOption); 39 const movieFinalize = makeRequest(uploadUrl, movieFinalizeOption); 40 console.log("movieFinalize_json:"+JSON.stringify(movieFinalize)); 41 console.log("movieFinalize:"+movieFinalize); 42 43
GAS
1// API リクエストを送信するための関数(jsonパースしない) 2async function makeRequest2(url, options) { 3 const service = getService(); 4 const res = await service.fetch(url, options); // fetch() メソッドを待機 5 const result = res.getContentText(); 6 7 //console.log(JSON.stringify(result)); 8 return result; 9}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
参考サイトがあまり多くなく、いろいろと試行錯誤して一つずつ見てみたが、FINALIZEでエラーが出てるのは、うまくAPPENDできていないのではないかと思った。
補足
特になし
INITで設定したファイルサイズ(total_bytes)と
APPENDするファイルのサイズ(base64エンコード前?)が合致しているか確認されましたか?
または、
アップロードできる動画サイズ等の上限を超えてはいませんか?
コメントありがとうございます。
init側のファイルサイズを64base後のものを配置していたのが原因だったようです。
ありがとうございました。
ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
私は、質問しただけですから、
解決方法を見つけたのは質問者様ですので、
自己解決としていただけたらと思います。
承知いたしました。きっかけはYellowGreenさんの投稿でした。ありがとうございました。
回答1件
あなたの回答
tips
プレビュー