Page up▲

Naoten、FC2のツイッターまとめ機能をGoogleAppsScriptに置き換える

現在、このブログではFC2の機能を用いて
ツイッターでの1日分の呟きを収集して自動投稿している。

しかしこの自動投稿機能には不満があった。

・画像が短縮URLで取得される。
・ツイート上での改行が消去される。
・記事の件名が変更できない。
・レイアウトが細かく変更できない。


1つ目の問題が特に不満である。

魔法少女まどか★マギカ
不満であり悲しみである。

直天堂のカステラでは画像を多く表示したいのである。


(以下、専門的な内容が多いので追記へ。)

 


こちらがFC2の機能により自動的に投稿された記事のスクリーンショットである。

ツイートまとめ画像なし
上記の3つのツイートには全て画像が存在するが、
FC2の自動収集では短縮URLに置き換えられている。


ブログを閲覧した際に自動的に短縮URLを展開するスクリプトも書いたが、
そもそも1PV毎に発生させる自動処理としては負荷が大きい事と
苦労して短縮URLから展開するも、入手したURLはまた別のURLであり
直接画像のURLが取得できないと言う問題にぶち当たって頓挫した。

ちなみに短縮URLを展開して得られるのは
expanded_urlと呼ばれるTwitter固有のURLで以下の様なものになる。

https://twitter.com/NaotenBlog/status/738214300649590784/photo/1


これをimgタグで囲っても、当然ながら画像は表示されない。

そこでTwitterAPIを用いて個別のツイートを直接調べて、
内部に格納されているmedia_url(画像の実際のURL)を取得して
ブログを書き換える外部スクリプトを作成しようと画策するも

そこまでやるなら自分でツイートを収集して自動投稿すれば?

と天啓を得る。


──それから数日。

Twitterからのツイート収集はTwitterが用意してくれているTwitterAPIを使う。
FC2へのブログ投稿はXML-RPC APIを使う。スクリプトはPHPで書く。

と言うおおよその方針が定まったので作業開始。

半日かけてようやくドラフト版が完成するが
レンタルサーバーにスクリプトをおいても上手く動作しない。
具体的に言えばTwitterAPIでのデータ取得はできるのだけれど、
XML-RPC APIを用いたFC2への投稿が出来ないのである。

そこらはこの辺りのツイートで苦悩を撒き散らしている。


どうもPHPが使用できる無料のレンタルサーバーでは大体、fsockopen使えない様で、
かと言って有料サーバーをレンタルする気にもならず、
ここで1度、自動投稿プログラムの作成を諦めたNaotenだったのである。

しかし悔しかった。
寝ても覚めても思い出しては悔しくなった。

gigigi.gif
イメージ

そこで数日考えて閃いた。

そもそも、スクリプトを書いた後に自動実行させるのは
Google Apps Scriptのトリガー機能を用いて行う予定だった訳だけれど、
これでどうにかならんもんか?と。
(本来であれば自動実行もCron等で行う所なのでしょうけれど、
 これに関しても無料サーバーでは余り機能提供していない。)

Google Apps ScriptはほとんどJavaScriptであり、
JavaScriptでできる事はほぼできる。それなら要求仕様も満たせるハズ!

よっしゃやってみるか!とPHPからの移植を開始し、
ようやく先ほど、一定の成果を確認した。

FC2の自動投稿により作成された記事
ツイートまとめ画像なし


自前の自動投稿により作成された記事
ツイートまとめ画像あり
記事のタイトルが変更されている他、
画像が置き換わっている事と3つ目のツイートで改行が生きている事が判る。
デザインは現時点でFC2の自動投稿を踏襲しているが今後調整予定。


とは言え色々と一筋縄では行かなかった。

・mt.setPostCategoriesで公開状態の記事のカテゴリーは変更できない。
 (下書き状態であれば変更可能。)
・下書き状態の記事を公開するハズのmt.publishPostが現在のFC2では動作しない?
 (様々な記事を見るに昔は動いていた模様。)
・記事の公開時にTwitter連携が動作してしまう。

上記は多く時間を取られた問題で、
特に1つ目と2つ目の問題が相反していて悔しさが半端なかった。






無表情
イメージ

結局、"公開"でも"下書き"でもなく
現在の1分後を指定した"予約投稿"で新規投稿。
その予約投稿待機中の記事に対してカテゴリー変更を行う事で
1つ目と2つ目の問題を解消した。

3つ目の問題に関しては結局解消できず。
予約投稿待機中の記事を開くと
Twitterとの連携のチェックボックスはOFFになっているのだけれど勝手に通知される。
(ブログの環境設定でTwitterとの連携を解除すれば連携は機能しなくなるが
 それでは通常投稿によるTwitterへの通知が行かなくなってしまう。)

この辺りは何か解決方法があれば、自動スクリプトを改造したい。

という訳で色々有りましたが
明日から自動投稿機能はFC2のモノから自作のモノに切り替わる予定です。

(今回のノウハウを使えば様々な所から情報収集して
 自動的にブログ投稿できるのだから色々と遊べそうね。)




参考URL

GoogleAppsScript関連
無料でお手軽Cron!Google Apps Scriptを使ってみる(きじとら様)
Google Apps ScriptからWordPressのAPIにアクセス(ServerWorksエンジニアブログ様)

TwitterAPI関連
GoogleAppsScript + Twitterで、OAuthConfigからOAuth2のApplication-only authenticationへと移行した(メモ的な思考的な様)
Twitter APIの使い方まとめ(Syncer様)

XML-RPC関連
FC2ブログへXML-RPCとPHPで外部投稿(猫力様)
XML-RPC client on Google Apps Script を作りましたよ(@ikikko のはてなブログ様)
Movable Type で使える XML-RPC API(Tsuporone's Program Library様)

JavaScript関連
HTML5互換の、ISO-8601日付フォーマットライブラリ書いた。(IT-Walker on hatena様)

 

Page up▲

LOGO1

Post a Comment

comments

Page up▲

Post a Commentpac

Private message

Page up▲

Designed by mi104c.
Copyright © 2016 直天堂のカステラ, all rights reserved.
11 | 2016/12 | 01

sun

mon

tue

wed

thu

fri

sat

- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Page up▲

  • 最新記事のRSS
  • 最新コメントのRSS
  • 最新トラックバックのRSS