first commit

This commit is contained in:
2018-09-02 10:26:34 +02:00
commit a62ea0fa19
53 changed files with 3823 additions and 0 deletions

50
twitter/likebot/robot.php Normal file
View File

@@ -0,0 +1,50 @@
<?php
// ---
// --- Get last R. Topisto 's tweet
// --- Send a LIKE or ReTweet it.
// ---
// ---
// --- La config globale
// ---
require_once '../../global/inc/config.php';
// ---
// --- External dependances
// ---
require TOPISTO_PATH.'/ressources/vendor/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
// Twitter OAuth Settings:
/* TOPISTO
define('CONSUMER_KEY', 'HBInbm93bM80z86XVJ34rtjxO');
define('CONSUMER_SECRET', 'zpdSp8yv9R2VODgPRA0RZbiO7VE8vSPNLVNg9zI0HjWnJKADO8');
define('ACCESS_TOKEN', '315679287-EjINhav5VbJPscb4h9pw3WwveeeX0ShpnIjcawDe');
define('ACCESS_TOKEN_SECRET', 'SIFKfPYEoIdlAyeQKVS3y067uNFuLpy013wRycJ8VxNcd');
*/
/* R. Topisto */
define('CONSUMER_KEY', '9Ie6CjwM5eZSQu5Xnbel4PBqm');
define('CONSUMER_SECRET', 'pI4ha5gW7Lft6Lg5xP7nH49Yqbm8PwLn1EP8D1qKg1q0SYd5t2');
define('ACCESS_TOKEN', '840479603143630849-c3xFLJFvo77ubP1njoXHpFu9LQqKLR8');
define('ACCESS_TOKEN_SECRET', 'EW4Zi10cQnNfoOunnEF1svJ3omz223U57G6KuYo5ZZ2Ls');
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$content = $twitter->get('account/verify_credentials');
if ($twitter->getLastHttpCode() !== 200) return FALSE;
$theSearch = [
'screen_name' => 'r_topisto',
'count' => 1
];
// ---
// --- envoi d'un LIKE
// ---
$results = $twitter->get('users/show', $theSearch);
$twitter->post('favorites/create', ['id' => $results->status->id_str]);
?>

19
twitter/likebot/robot.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
flag=$TMP_PATH/topisto_bot.flag
if [ -f $flag ];
then
echo "likebot_bot is already running !"
exit 0
fi
touch $flag
cd $APPS_PATH/twitter/likebot
if [ 4 -gt $((RANDOM % 100)) ]
then
php topisto.php
fi
rm -f $flag

View File

@@ -0,0 +1 @@
["topisto42","UnnaxPayments","aureliusdrusus","solacedotcom","omgbtc","ohiobitcoin","LogicScience","redunisproject","Cryptocracy2020","fullstache","callblockapp","marketranger","TheCryptodamus","crypt0co","CryptoassetsUSA","Nadeem_nadi797","cryptomoneyz","BaseCyberSec","Tweetsintoabyss","anthkell98","grattonboy","mac_a_dam","devnullius","123wolfArmy","03018333860","JeffinkoGuru","BitJob_Team","rugigana","Crypto_info321","cointopic_","Chef_JeanPierre","Cienencom","btcltcdigger","AdzCoin_Gift","treyptrsn","n2yolo","SHL0M0ABADD0N","EdwardCulligan","promote_crypto","TheFutureShift","ErickCoval","RIMCorpPK","arhiezvanhoute1","ttoff85","actu_fintech","BeautyBubble","PDX_Trader","Yasirperdesi","cre8hyperledger","Thurse8","cre8capital","icobountyprogs","rob67803423","AphexTwin4ever"]

View File

@@ -0,0 +1,88 @@
<?php
use Abraham\TwitterOAuth\TwitterOAuth;
// Twitter OAuth Settings:
/* TOPISTO
define('CONSUMER_KEY', 'HBInbm93bM80z86XVJ34rtjxO');
define('CONSUMER_SECRET', 'zpdSp8yv9R2VODgPRA0RZbiO7VE8vSPNLVNg9zI0HjWnJKADO8');
define('ACCESS_TOKEN', '315679287-EjINhav5VbJPscb4h9pw3WwveeeX0ShpnIjcawDe');
define('ACCESS_TOKEN_SECRET', 'SIFKfPYEoIdlAyeQKVS3y067uNFuLpy013wRycJ8VxNcd');
*/
/* R. Topisto */
define('CONSUMER_KEY', '9Ie6CjwM5eZSQu5Xnbel4PBqm');
define('CONSUMER_SECRET', 'pI4ha5gW7Lft6Lg5xP7nH49Yqbm8PwLn1EP8D1qKg1q0SYd5t2');
define('ACCESS_TOKEN', '840479603143630849-c3xFLJFvo77ubP1njoXHpFu9LQqKLR8');
define('ACCESS_TOKEN_SECRET', 'EW4Zi10cQnNfoOunnEF1svJ3omz223U57G6KuYo5ZZ2Ls');
define('TWITTER_WIDTH', 880);
define('TWITTER_HEIGHT', 440);
class twitter
{
public static function tweet($message, $media='')
{
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$content = $twitter->get('account/verify_credentials');
if ($twitter->getLastHttpCode() !== 200) return FALSE;
$parameters = array("status" => $message);
if (($media != NULL)&&($media != ''))
{
$imageMedia = $twitter->upload('media/upload', array('media' => $media));
if ($twitter->getLastHttpCode() !== 200) return FALSE;
$parameters = array(
"status" => $message,
"media_ids" => $imageMedia->media_id_string);
}
$statuses = $twitter->post("statuses/update", $parameters);
if ($twitter->getLastHttpCode() !== 200) return FALSE;
return TRUE;
}
public static function thanksRetweet()
{
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$content = $twitter->get('account/verify_credentials');
if ($twitter->getLastHttpCode() !== 200) return FALSE;
$results = $twitter->get('statuses/retweets_of_me');
if ($twitter->getLastHttpCode() !== 200) return FALSE;
/* TO DO */
return TRUE;
}
public static function thanksFollowers()
{
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$content = $twitter->get('account/verify_credentials');
if ($twitter->getLastHttpCode() !== 200) return FALSE;
$results = $twitter->get('followers/list');
if ($twitter->getLastHttpCode() !== 200) return FALSE;
$followers = json_decode(file_get_contents('followers.json'));
foreach($results->users as $user)
if (!in_array($user->screen_name, $followers))
{
$parameters = array("status" => '@'.$user->screen_name.' thanks following me !');
$followers[] = $user->screen_name;
$statuses = $twitter->post("statuses/update", $parameters);
if ($twitter->getLastHttpCode() !== 200) return FALSE;
break; // Un à la fois ...
}
file_put_contents('followers.json', json_encode($followers));
return TRUE;
}
}
?>

View File

@@ -0,0 +1,78 @@
<?php
// ---
// --- Listening to blockchain.info to get the last block
// --- Drawing the block as a Treemap
// --- Tweet it
// ---
// ---
// --- La config globale
// ---
require_once '../../global/inc/config.php';
// ---
// --- External dependances
// ---
require TOPISTO_PATH.'/ressources/vendor/autoload.php';
// ---
// --- Internal dependances
// ---
require_once APP_PATH.'/blockchain/inc/block.php';
require 'inc/twitter.php';
$methode='spline';
if (isset($argv[3])) $methode=$argv[3];
$block_hash = $argv[1];
$the_block = blockchain::getBlockWithHash($block_hash);
if ($the_block === FALSE) die();
// ---
// --- Remercier les followers
// ---
twitter::thanksFollowers();
$image_file=DATA_PATH."/$methode/".$argv[1].'.png';
if (file_exists($image_file))
{
$image_origine = imagecreatefrompng($image_file);
$image_twitter = imagecreatetruecolor(TWITTER_WIDTH, TWITTER_HEIGHT);
$fond = imagecolorallocate($image_twitter, 255, 255, 255);
//imagecolortransparent($image_twitter, $fond);
imagefilledrectangle($image_twitter, 0, 0, TWITTER_WIDTH, TWITTER_HEIGHT, $fond);
$ratio = TWITTER_HEIGHT / imagesy($image_origine);
$new_width = $ratio * imagesx($image_origine);
$xpos = floor((TWITTER_WIDTH - $new_width) / 2);
$ypos = 0;
imagecopyresized($image_twitter, $image_origine, $xpos, $ypos, 0, 0, $new_width, TWITTER_HEIGHT, imagesx($image_origine), imagesy($image_origine));
$image_file = DATA_PATH."/twitterbot/".$argv[1].'.png';
imagepng($image_twitter,$image_file);
// ---
// --- Un petit peu de stéganographie ...
// ---
/* Ca fait des fichiers trop gros !
$processor = new KzykHys\Steganography\Processor();
$image = $processor->encode($image_file, 'TOPISTO is making art with block '.$the_block->height);
$image->write($image_file);
*/
// ---
// --- Tweet
// ---
$tweet = "#bitcoin #blockchain 's".PHP_EOL;
$tweet .= $argv[2]." Block, Height : ".$the_block->height.PHP_EOL;
$tweet .= "[ See more on www.topisto.net ]";
$success = twitter::tweet($tweet, $image_file);
}
?>

67
twitter/twitterbot/robot.sh Executable file
View File

@@ -0,0 +1,67 @@
#!/bin/bash
flag=$TMP_PATH/twitterbot_bot.flag
if [ -f $flag ];
then
echo "twitter_bot is already running !"
exit 0
fi
touch $flag
cd $APPS_PATH/twitter/twitterbot
#
# Tweet pour un assemblage de hash
#
for fichier in `ls $DATA_PATH/hashes2hashes/*.png`
do
BLOCK=`basename $fichier .png`
if [ ! -f $DATA_PATH/twitterbot/assemblage_$BLOCK ]
then
php robot.php $BLOCK CONFIRMED hashes2hashes
touch $DATA_PATH/twitterbot/assemblage_$BLOCK
rm -f $flag
exit 0
fi
done
#
# Se lancer pour un tweet sur un block unique
#
BLOCK_LINE=`tail -n 1 $DATA_PATH/block_list.txt`
BLOCK_HASH=`echo ${BLOCK_LINE} | awk '{print $2}'`
BLOCK_NAME=`echo ${BLOCK_LINE} | awk '{print $1}'`
BLOCK_HEIGHT=`echo ${BLOCK_LINE} | awk '{print $3}'`
#
# Dans 5% des cas, on tweet un bloc remarquable
# à la place du LAST
#
if [ 5 -gt $((RANDOM % 100)) ]
then
BLOCK_LINE=`grep -v $BLOCK_NAME $DATA_PATH/block_list.txt | shuf | head -n 1`
BLOCK_HASH=`echo ${BLOCK_LINE} | awk '{print $2}'`
BLOCK_NAME=`echo ${BLOCK_LINE} | awk '{print $1}'`
BLOCK_HEIGHT=`echo ${BLOCK_LINE} | awk '{print $3}'`
fi
if [ -f $DATA_PATH/hasard/$BLOCK_HASH.png ]
then
if [ ! -f $DATA_PATH/twitterbot/$BLOCK_HASH ]
then
echo Tweet for $BLOCK_HASH $BLOCK_NAME
php robot.php $BLOCK_HASH $BLOCK_NAME hasard $BLOCK_HEIGHT
#
# On met un marqueur pour ne pas retweeter
# plusieurs fois le LAST
#
if [[ "$BLOCK_NAME" == "LAST" ]]
then
touch $DATA_PATH/twitterbot/$BLOCK_HASH
fi
fi
fi
rm -f $flag