Twitter API V2では画像ツイートが出来ないと流れてきたので対処方法

2023.06.02

Logging

おはようございます。先日、Twitter API V2では画像ツイートが出来ないと流れてきたので対処方法を載せときます。Qiitaにも掲載していますが、こちらでも記載します。コードはいつまで使用出来るかは不明ですね、イーロン・マスクのサジカゲンで無料プランでは出来なくなる可能性を秘めています。今のところ、使用できるコードです。PHP8系では動きますがPHP7系は:mixedの部分を退けてあげないと動かないかもです。因みにPythonのサンプルコードが公式にはあったような気がします。

<?php

require_once "tw-config-v2.php";
require_once "vendor/autoload.php";

use Abraham\TwitterOAuth\TwitterOAuth;

class tw
{
    public $connection = null;
    public $media = null;
    public function __construct()
    {
        $this->connection = new TwitterOAuth(APIKEY, APISECRET, ACCESSTOKEN, ACCESSTOKENSECRET);
    }

    /**
     * イメージのエンドポイントを取得する v1.1 そのうち廃止されそう。
     * @param $imageName
     * @return boolean
     */
    public function getImage($imageName = null): bool
    {
        if (empty($imageName)) {
            return false;
        }
        $this->media = $this->connection->upload('media/upload', ['media' => "/var/www/html/tw/tmp/images/$imageName"]);
        return true;
    }

    /**
     * イメージ付きでツイート。
     * @param $text
     * @return mixed
     */
    public function tweet($text = null): mixed
    {
        if (!empty($text) && isset($this->media->media_id_string)) {
            $param = [
                'text' => $text,
                'media' => [
                    'media_ids' => [
                        $this->media->media_id_string
                    ]
                ]
            ];
            $this->connection->setApiVersion('2');
            return $this->connection->post('tweets', $param, true);
        }
        return false;
    }
}

if($argv[0]){
    $tw = new tw();
    if($tw->getImage("php2023.png"))
    {
        $tw->tweet("これはテストです");
    }    
}

タグ

argv, bool, connection, construct, empty, getImage, isset, media', mixed, PARAM, qiita, quot, quot;vendor, return, tmp, tw, Tweet, use AbrahamTwitterOAuthTwitterOAuth, イーロン, サジカゲン,

センスがいいONE Media{ワンメディア}:動画2.0。

2020.05.04

Logging

動画クリエイターのためのメディアカンパニーONE MEDIAは伝え方凄くセンスがいい。尺が短い動画でも何を伝えたいのかがよく分かります。これって凄く大事な要素だと思います。動画に関してはズブの素人だけど映像コンテンツは結構見てきているのである程度善し悪しは感覚的に分かっている。つもり(* ̄(エ) ̄*)

スティーブジョブズは「成功者」ではなく「反逆者」だった?

動画で表現できる人は凄いなと。自分は全然。自分が撮った動画は無編集動画が殆どです。動画編集とか最初の頃は時間がかかると思います。動画は撮影力と編集力がなければ中々だと感じています。因みにワンメディア代表の明石ガクト氏が本を出版されています。この本には明石ガクト氏のヒストリーも書かれていますが、基本となる撮影技術も記載されている。

これからYOUTUBEで発信を行いたい人はこの本とYOUTUBER取り扱い説明書のような2冊の本を読んでみると動画愛や闘争心が湧くかもしれない。YOUTUBEで今後生き残れるのはほんの一握りです。殆どの人はゆめ砕けてしまいます。夢に挑むことは大事かと思います、なぜなら人生一度きりだから。

NBAバスケ選手ロッドマンの「世間の評価」の裏側とは?

最後にチャンネル登録はこちらです。
https://www.youtube.com/user/spotwright/featured

https://onemedia.jp/ WEBサイトもセンスが良いので合わせて貼っときます。

タグ

2, 2.0, media', one, youtube, YOUTUBER, ガクト, カンパニー, クリエイター, これ, コンテンツ, センス, ため, つもり, ヒストリー, メディア, ワン, 中々, , 代表, , 出版, 動画, 善し悪し, 基本, 大事, , , 技術, 撮影, 明石, 映像, 時間, 最初, , 殆ど, 発信, 程度, 素人, 編集, 自分, 表現, 要素, 記載, 説明書, 闘争心, ,

WordPressのメディアライブラリについて愚痴る。

2020.01.08

Logging

過去のデータベースを引き継いでいればメディアライブラリのデータは
壊れないが、途中でXMLなどデータをインポートすると
メディアライブラリでは管理出来なくなってしまう。

これを呼び戻すには Add From Server やmedia from ftpなどのプラグインを
使用して呼び戻すしか無いようだと思っていたが、唯これをしてしまうと
いささか問題があるので使えない。
このプラグインは基本的に新規で構築する際に
画像をFTPで一先ず一括アップロードして使用する場合などに対しての
プラグインである物なのでいささか違う。

なので今回、自分で自作しようと思っていたが、、、
特に過去の画像を編集するつもりもないので辞めた。
ちなみにメディアライブラリの画像はwp_postsとwp_postmetaに
保存されている。

下記のURLを見て昔、これでトラブルになった事を思い出した。
WordPressで画像はどのようにデータベースに記録されているか

上記のようなことから、データベースの画像の欠損を復元するのは
正直なところ面倒。投稿データには大体、データは残っているのだが
メタデータが欠損していてメディアライブラリに表示されないということが
殆どだと思うが、このメタデータを復元するのは至難、なぜなら
投稿データって使っているIDとメタデータのIDのリンクを上手く結びつける
事ができないからとてもエンジニア泣かせである。

要するにメタデータIDの方が以前使っていたIDを別の要素のIDが
使っていたりして…。
これを整理しながら元に戻すのは非常に至難だと言うこと。

なので、結論を言えばちゃんとデータベースのバックアップ取りましょう?

タグ

Add, from, FTP, media', postmeta, posts, SERVER, url, WordPress, wp, xml, アップロード, インポート, これ, つもり, データ, データベース, トラブル, プラグイン, メディア, ライブラリ, 一括, 下記, , 今回, 使用, 保存, 問題, 場合, 新規, , 構築, , 画像, 管理, 編集, 自作, 自分, 記録, 途中, 過去, ,

ちょっとした物。InstagramのAPI取得する

2019.10.05

Logging

Instagram(インスタグラム)の画像などが取得することが出来ます。アクセストークンの取得の方法がわからない場合はぐぐってください。尚、APIのバージョンが、今後上がった場合は下記のコードは使用できなくなる可能性があります。ちなみにこのコード動作確認はしておりません。このコードを理解して使用できる人のみお使いください。
尚、画像取得数はデフォルト10にしています。プログラムではアクセストークンと20を渡しています。
画像URLはコメントアウトのところに入ってきます。※プログラムを可変してお使いください。

<?php
//Instagram
//https://api.instagram.com/v1/users/self/media/recent/?access_token=&count=
class instagram_api{
    public const url ="https://api.instagram.com/v1/users/self/media/recent/?access_token=";
    public function api ($access_token= "",$img_count =10){
        $url = self::url;
        return (object)json_decode(@file_get_contents($url . $access_token."&count=".$img_count));
    }
    public function obj_img($obj=Null){
        if(!is_object($obj))return false;
        if(!$obj->data)return false;
        foreach ($obj->data as $key => $item) {
            var_dump($item);
            // $item->images->standard_resolution->url
            // $item->images->low_resolution->url
        }
        return true;
    }
}
$obj = instagram_api::api("access_token",20);
instagram_api::obj_img($obj);

タグ

, 10, 20, access, API, class, com, const, count, https, instagr, Instagram, lt, media', php, public, quot, recent, self, token, url, users, アウト, アクセス, インスタグラム, コード, こと, コメント, デフォルト, トークン, ところ, バージョン, プログラム, 下記, , 今後, 使用, 動作, 取得, 可能性, 場合, 方法, , 理解, 画像, 確認,

Twitterの画像を抽出、非API

2018.11.07

Logging

Twitterの画像を抽出、非API
Goutteライブラリを使用してTwitterのメディアを抽出するだけで
APIを使用せずに17枚の画像が抽出することが可能。
これを改良してスクロールさせながらってのは出来ないのではないかな
特にVPSじゃないレンタルサーバーなどでは不可能じゃないのかと思います。

require_once './vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET','https://twitter.com/xxxx/media');
$img = $crawler->filter(".AdaptiveMedia-photoContainer.js-adaptive-photo img")->each(function ($node){
return $node->attr('src');
});

タグ

'src', 17, AdaptiveMedia-photoContainer, API, APITwitter, attr, autoload, Client, com, crawler, each, filter, function, GET, Goutte, gt, img, js-adaptive-photo, media', new, node, once, php, request, require, return, Twitter, use, vendor, VPS, xxxx, こと, これ, サーバー, スクロール, ない, メディア, ライブラリ, レンタル, 不可能, 使用, 出来, 可能, 思い, 抽出, 改良, , 特に, 画像, ,

Windows10のコンピューターが毎日特定の時刻にスリープ状態から復帰するよ!?なぜ

2016.03.12

Logging

Windows10のコンピューターが毎日特定の時刻にスリープ状態から復帰するよ!?なぜ
ANSWER

Windows Media Center の更新機能が自動的に開始されるときに発生します。ということです。

この問題を解決するには下記のURLをクリックして、手順に従ってスケジューラから変更等を行ってください。

https://support.microsoft.com/ja-jp/kb/979878

このようにスリープ状態から勝手に起動するようなソフトがインストールされている場合があるので注意してください。今回は、マイクロソフト社のソフトでしたが他のソフトでもこのような設定になっている場合があるので、気をつけてください。また、スケジュールに設定する事によって起動時にソフトを起動することや曜日によってソフトを起動するなどの設定するなどの設定を追加することも可能です。

タグ

10, 979878, ANSWER, Center, com, https, ja-jp, kb, media', microsoft, support, url, Windows, インストール, クリック, こと, コンピューター, スケジューラ, スケジュール, スリープ, ソフト, とき, マイクロソフト社, 下記, , 今回, , 勝手, 可能, 問題, 場合, 変更等, 復帰, 手順, 時刻, 曜日, 更新, 機能, 毎日, , 注意, 特定, 状態, 発生, 解決, 設定, 起動, 追加, 開始,