Twitter: Image descriptions and multiple picture posts #874
|
@ -621,19 +621,15 @@ function twitter_post_hook(App $a, array &$b)
|
||||||
$msg = Plaintext::shorten($msgarr["title"], $max_char - 50);
|
$msg = Plaintext::shorten($msgarr["title"], $max_char - 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
$image = "";
|
if (($msgarr['url'] == $b['plink']) && !empty($msgarr['images']) && (count($msgarr['images']) <= 4)) {
|
||||||
|
$url_added = false;
|
||||||
if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) {
|
} elseif (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) {
|
||||||
$msg .= "\n" . $msgarr["url"];
|
$msg .= "\n" . $msgarr["url"];
|
||||||
$url_added = true;
|
$url_added = true;
|
||||||
} else {
|
} else {
|
||||||
$url_added = false;
|
$url_added = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($msgarr["image"]) && ($msgarr["type"] != "video")) {
|
|
||||||
$image = $msgarr["image"];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($msg)) {
|
if (empty($msg)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -641,33 +637,43 @@ function twitter_post_hook(App $a, array &$b)
|
||||||
// and now tweet it :-)
|
// and now tweet it :-)
|
||||||
$post = [];
|
$post = [];
|
||||||
|
|
||||||
if (!empty($image)) {
|
if (!empty($msgarr['images'])) {
|
||||||
try {
|
try {
|
||||||
$img_str = Network::fetchUrl($image);
|
$post['media_ids'] = '';
|
||||||
|
$counter = 0;
|
||||||
|
foreach ($msgarr['images'] as $image) {
|
||||||
|
if (++$counter > 4) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$tempfile = tempnam(get_temppath(), 'cache');
|
$img_str = Network::fetchUrl($image['url']);
|
||||||
file_put_contents($tempfile, $img_str);
|
|
||||||
|
|
||||||
$media = $connection->upload('media/upload', ['media' => $tempfile]);
|
$tempfile = tempnam(get_temppath(), 'cache');
|
||||||
|
file_put_contents($tempfile, $img_str);
|
||||||
|
|
||||||
unlink($tempfile);
|
$media = $connection->upload('media/upload', ['media' => $tempfile]);
|
||||||
|
|
||||||
if (isset($media->media_id_string)) {
|
unlink($tempfile);
|
||||||
$post['media_ids'] = $media->media_id_string;
|
|
||||||
//$details = $cb->account_verifyCredentials();
|
if (isset($media->media_id_string)) {
|
||||||
} else {
|
$post['media_ids'] .= $media->media_id_string . ',';
|
||||||
throw new Exception('Failed upload of ' . $image);
|
|
||||||
|
if (!empty($image['description'])) {
|
||||||
|
$data = ['media_id' => $media->media_id_string,
|
||||||
|
'alt_text' => ['text' => substr($image['description'], 0, 420)]];
|
||||||
|
$ret = $cb->media_metadata_create($data);
|
||||||
|
Logger::info('Metadata create', ['data' => $data, 'return' => json_encode($ret)]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new Exception('Failed upload of ' . $image['url']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$post['media_ids'] = rtrim($post['media_ids'], ',');
|
||||||
|
if (empty($post['media_ids'])) {
|
||||||
|
unset($post['media_ids']);
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Logger::log('Exception when trying to send to Twitter: ' . $e->getMessage());
|
Logger::log('Exception when trying to send to Twitter: ' . $e->getMessage());
|
||||||
|
|
||||||
// Workaround: Remove the picture link so that the post can be reposted without it
|
|
||||||
// When there is another url already added, a second url would be superfluous.
|
|
||||||
if (!$url_added) {
|
|
||||||
$msg .= "\n" . $image;
|
|
||||||
}
|
|
||||||
|
|
||||||
$image = "";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue