Bereits habe ich ein Skript, das die ersten 5000 Benutzer von Freunden/IDs sammelt. Ich möchte alle Freunde sammeln, also muss ich durch Cursor bewegen, um sie zu bekommen. Ich denke, ich verstehe, wie der Cursor funktioniert, aber ich kann es immer noch nicht funktionieren lassen. Ich versuche next_cursor zu erreichen, weiß aber nicht, was ich falsch mache.Twitter API Cursor PHP
Es scheint, dass der Cursor, den ich versuche zu bekommen, nicht richtig aufgerufen wird.
Möchte ein Feedback mit diesen, weil Twitter-API kein reales Beispiel gibt.
<?php
header("Content-Type: text/html;charset=utf-8");
ini_set('display_errors', 1);
require_once('TwitterAPIExchange.php');
session_start();
$user = $_POST['nombre'];
$_SESSION['user']=$_POST['nombre'];
$usuario = $user;
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "twitter";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
'oauth_access_token' => "k1",
'oauth_access_token_secret' => "k2",
'consumer_key' => "k3",
'consumer_secret' => "k4"
);
//https://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=microsoft
$cursor = "cursor=".-1;
$url = 'https://api.twitter.com/1.1/friends/ids.json';
$getfield = '?'.$cursor.'screen_name='.$usuario;
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$json = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(true, array(CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem'));
$arrayFriends = json_decode($json, true,512,JSON_BIGINT_AS_STRING);
echo 'Usuario' .";". 'Nombre'.";".'Location'.";".'Numero Amigos'.";".'Numero followers'.";".'Descripcion'."\n";
foreach($arrayFriends['next_cursor'] as $curs){
foreach($arrayFriends['ids'] as $obj){
while($cursor != 0){
//$cursor->$arrayFriends['ids']->next_cursor;
$cursor = $curs;
//$cursor = "&cursor=" + $cursor;
$sql = "INSERT INTO friends (user, id) VALUES ('$usuario','$obj')";
if ($conn->query($sql) === TRUE) {
//echo "New record created successfully";
header("Location:logic.php");
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
}
$conn->close();
?>
Hey Leute, kann mir jemand ein bisschen Feedback geben. Ich versuche das zu lösen, verliere aber viel Zeit darauf. – seyroku
yo Leute, immer noch nicht funktioniert und brauche einen Rat oder etwas! – seyroku
Ich teile den Code zum Abrufen aller Freunde mit dem Cursor. Dies ist jedoch eine gute Übung, um alle Freunde auf einmal zu holen. Sie werden weiterhin nur 3000 Freunde als Twitter crawlen, die 15 Anfragen/15 Minuten Fenster und maximal 200 Ergebnisse pro Anfrage erlauben. Bevor Sie next_cursor in der Datenbank speichern und eine neue Anfrage stellen, indem Sie den Cursorwert aus der Datenbank abrufen. Sie können cron-job dafür verwenden. – prograshid