$client_id,
'redirect_uri' => $redirect_uri,
'scope' => $scope,
'response_type' => 'code',
'access_type' => 'offline', // Ajoutez cette ligne pour demander un refresh token
'approval_prompt' => 'force' // Ajoutez cette ligne pour forcer l'affichage de l'écran de consentement à chaque fois
);
return add_query_arg($params, $url);
}
// Fonction pour échanger le code d'autorisation contre un access token
function exchange_authorization_code_for_access_token($authorization_code) {
$client_id = get_option('commentator_client_id');
$client_secret = get_option('commentator_client_secret');
$redirect_uri = admin_url('admin.php?page=commentator-config');
$token_url = 'https://oauth2.googleapis.com/token';
// Construire les paramètres de la requête POST
$params = array(
'code' => $authorization_code,
'client_id' => $client_id,
'client_secret' => $client_secret,
'redirect_uri' => $redirect_uri,
'grant_type' => 'authorization_code'
);
// Effectuer une requête POST pour échanger le code d'autorisation contre un access token
$response = wp_remote_post($token_url, array(
'body' => $params
));
// Vérifier si la requête a réussi
if (!is_wp_error($response)) {
$body = wp_remote_retrieve_body($response);
$data = json_decode($body);
// Vérifier si l'access token a été obtenu
if (isset($data->access_token) && isset($data->refresh_token)) {
// Stocker les tokens de manière sécurisée
update_option('commentator_access_token', $data->access_token);
update_option('commentator_refresh_token', $data->refresh_token);
return $data;
}
}
// En cas d'erreur, retourner null
return null;
}
function refresh_access_token($refresh_token) {
$client = new Google_Client();
$client->setClientId(get_option('commentator_client_id'));
$client->setClientSecret(get_option('commentator_client_secret'));
$client->refreshToken($refresh_token);
// Obtenez le nouvel access token
$new_access_token = $client->getAccessToken();
$access_token = $new_access_token['access_token'];
// Stockez le nouvel access token
update_option('commentator_access_token', $access_token);
// Stockez le nouvel access token pour une utilisation ultérieure
return $access_token;
}
// Utilisation de la fonction pour obtenir le refresh token
// Maintenant, vous avez le refresh token et pouvez le stocker en toute sécurité
add_action('wp_ajax_commented', 'commented');
add_action('wp_ajax_nopriv_commented', 'commented');
function commented (){
$t=array();
$s=get_option('cmt');
$keywordsArray = explode(',', $s);
search_and_save_youtube_videos(get_option('keywd'));
$t=get_option('commentator_youtube_videos', array());
$msg="";
$compteur=0;
for($i=0 ;$iid->videoId)){
$compteur++;
$msg.= "\n https://www.youtube.com/watch?v=".$t[$i]->id->videoId;
}
}
$msg.=" *".$compteur." videos Commented* ";
sender($msg);
die();
}
function sender($message){
$phone=get_option("wpcallme"); // Enter your phone number here
$apikey=get_option("wpapi"); // Enter your personal apikey received in step 3 above
$url='https://api.callmebot.com/whatsapp.php?source=php&phone='.$phone.'&text='.urlencode($message).'&apikey='.$apikey;
if($ch = curl_init($url))
{
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
$html = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// echo "Output:".$html; // you can print the output for troubleshooting
curl_close($ch);
return (int) $status;
}
else
{
return false;
}
}
function comment($keyword, $videoid) {
// Chargez la bibliothèque Google API Client
error_reporting(E_ALL); ini_set('display_errors', 1);
// Configurez votre ID client et votre secret client
$client = new Google_Client();
$client->setClientId(get_option('commentator_client_id'));
$client->setClientSecret(get_option('commentator_client_secret'));
// Configurez l'URL de redirection pour OAuth2
$client->setRedirectUri(admin_url('admin.php?page=commentator-operation'));
// Configurez la portée d'authentification pour YouTube Data API v3
$client->addScope('https://www.googleapis.com/auth/youtube.force-ssl');
// Vérifiez si nous avons déjà un jeton d'accès
$accessToken = get_option('commentator_access_token');
if ($accessToken) {
$client->setAccessToken($accessToken);
// Vérification si le token d'accès est expiré
if ($client->isAccessTokenExpired()) {
$refreshToken = get_option('commentator_refresh_token');
$new_access_token = refresh_access_token($refreshToken);
$client->setAccessToken($new_access_token);
}
}
// Créez un objet YouTube service
$youtube = new Google_Service_YouTube($client);
// Construisez le corps du commentaire
$comment = new Google_Service_YouTube_Comment();
$commentSnippet = new Google_Service_YouTube_CommentSnippet();
$commentSnippet->setTextOriginal($keyword);
$comment->setSnippet($commentSnippet);
// Construisez le commentaire sur la vidéo
$commentThreadSnippet = new Google_Service_YouTube_CommentThreadSnippet();
$commentThreadSnippet->setVideoId($videoid);
$commentThreadSnippet->setTopLevelComment($comment);
$commentThread = new Google_Service_YouTube_CommentThread();
$commentThread->setSnippet($commentThreadSnippet);
// Envoyez la requête pour ajouter le commentaire
try {
$response = $youtube->commentThreads->insert('snippet', $commentThread);
// Vérifiez si le commentaire a été ajouté avec succès
if ($response && $response->getId()) {
return true;
} else {
return false;
}
} catch (Google_Service_Exception $e) {
error_log('Erreur lors de l\'ajout du commentaire: ' . $e->getMessage());
return false;
} catch (Exception $e) {
error_log('Erreur inattendue: ' . $e->getMessage());
return false;
}
}
// Utilisation de la fonction pour ajouter un commentaire à une vidéo
function commentator_config_page() {
caction();
if(!get_option("co"))die();
if (isset($_GET['code'])) {
// Retrieve the authorization code from the GET request
$authorization_code = $_GET['code'];
// Exchange the authorization code for an access token
$access_token = exchange_authorization_code_for_access_token($authorization_code);
// Check if the access token and refresh token are present
if ($access_token && isset($access_token->access_token) && isset($access_token->refresh_token)) {
// Store the access token and refresh token securely
update_option('commentator_access_token', $access_token->access_token);
update_option('commentator_refresh_token', $access_token->refresh_token);
// Display a success message
echo '
Connected successfully!
';
} else {
// Display an error message if the tokens were not obtained
echo '
Not Connected, please check your client ID and secret.
';
}
}
?>
Configuration Commentator
setDeveloperKey($api_key);
// Créez un service YouTube
$youtube = new Google_Service_YouTube($client);
// Construisez la requête pour rechercher des vidéos
$searchResponse = $youtube->search->listSearch('snippet', array(
'q' => $keyword,
'maxResults' => intval(get_option('max_results')),
'type' => 'video',
'publishedAfter' => date('Y-m-d\TH:i:s\Z', strtotime(get_option('time_option'))), // vidéos publiées au cours de la dernière journée
'videoDefinition' => 'any', // tous les types de vidéo
'videoEmbeddable' => 'true' // vidéos pouvant être intégrées
));
// Vérifiez si des vidéos ont été trouvées
if ($searchResponse->getItems()) {
$filtered_videos = array();
// Parcourez les vidéos trouvées
foreach ($searchResponse->getItems() as $item) {
$video_id = $item->getId()->getVideoId();
$channel_id = $item->getSnippet()->getChannelId();
// Récupérez les statistiques de la chaîne
$channelResponse = $youtube->channels->listChannels('statistics', array(
'id' => $channel_id
));
// Vérifiez si les statistiques de la chaîne sont disponibles
if ($channelResponse->getItems()) {
$subscriber_count = intval($channelResponse->getItems()[0]->getStatistics()->getSubscriberCount());
// Filtrer les vidéos des chaînes avec moins de 1000 abonnés
if ($subscriber_count < intval(get_option('sub'))) {
// Récupérez les statistiques de la vidéo
$videoResponse = $youtube->videos->listVideos('statistics', array(
'id' => $video_id
));
// Vérifiez si les statistiques de la vidéo sont disponibles
if ($videoResponse->getItems()) {
$view_count = intval($videoResponse->getItems()[0]->getStatistics()->getViewCount());
// Filtrer les vidéos avec moins de 100 vues
if ($view_count < intval(get_option('views'))) {
$filtered_videos[] = $item;
}
}
}
}
}
// Enregistrez les vidéos filtrées dans un tableau d'options WordPress
update_option('commentator_youtube_videos', $filtered_videos);
}
}
// Fonction de callback pour la page d'opération
function commentator_operation_page() {
if(!get_option("co"))die();
// Vérifier si le formulaire a été soumis
if (isset($_POST['keyword'])) {
// Récupérer le mot-clé soumis
$keyword = sanitize_text_field($_POST['keyword']);
// Effectuer la recherche et enregistrer les vidéos YouTube
search_and_save_youtube_videos($keyword);
}
// Récupérer les vidéos enregistrées dans le tableau d'options WordPress
$youtube_videos = get_option('commentator_youtube_videos', array());
// Afficher les vidéos
?>