[go: up one dir, main page]

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update comment_handling.php #528

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Update comment_handling.php
  • Loading branch information
ANDYELPINGON committed Mar 11, 2024
commit 0499c1a193012af3e8f8d8d29872b245ce557d6c
115 changes: 56 additions & 59 deletions php/comment_handling.php
Original file line number Diff line number Diff line change
@@ -1,72 +1,71 @@
<?php

/**
* This sample creates and manages comments by:
* Este ejemplo crea y gestiona comentarios mediante:
*
* 1. Getting the top-level comments for a video via "commentThreads.list" method.
* 2. Replying to a comment thread via "comments.insert" method.
* 3. Getting comment replies via "comments.list" method.
* 4. Updating an existing comment via "comments.update" method.
* 5. Sets moderation status of an existing comment via "comments.setModerationStatus" method.
* 6. Marking a comment as spam via "comments.markAsSpam" method.
* 7. Deleting an existing comment via "comments.delete" method.
* 1. Obteniendo los comentarios de nivel superior para un video a través del método "commentThreads.list".
* 2. Respondiendo a un hilo de comentarios mediante el método "comments.insert".
* 3. Obteniendo respuestas de comentarios mediante el método "comments.list".
* 4. Actualizando un comentario existente mediante el método "comments.update".
* 5. Estableciendo el estado de moderación de un comentario existente mediante el método "comments.setModerationStatus".
* 6. Marcando un comentario como spam mediante el método "comments.markAsSpam".
* 7. Eliminando un comentario existente mediante el método "comments.delete".
*
* @author Ibrahim Ulukaya
* @author andy axcel dominguez ccorahua
*/

/**
* Library Requirements
* Requisitos de la biblioteca
*
* 1. Install composer (https://getcomposer.org)
* 2. On the command line, change to this directory (api-samples/php)
* 3. Require the google/apiclient library
* 1. Instala composer (https://getcomposer.org)
* 2. En la línea de comandos, cambia a este directorio (api-samples/php)
* 3. Requiere la biblioteca google/apiclient
* $ composer require google/apiclient:~2.0
*/
if (!file_exists(__DIR__ . '/vendor/autoload.php')) {
throw new \Exception('please run "composer require google/apiclient:~2.0" in "' . __DIR__ .'"');
throw new \Exception('Por favor, ejecuta "composer require google/apiclient:~2.0" en "' . __DIR__ .'"');
}

require_once __DIR__ . '/vendor/autoload.php';
session_start();


/*
* You can acquire an OAuth 2.0 client ID and client secret from the
* Puedes adquirir un ID de cliente y un secreto de cliente de OAuth 2.0 desde
* {{ Google Cloud Console }} <{{ https://cloud.google.com/console }}>
* For more information about using OAuth 2.0 to access Google APIs, please see:
* Para obtener más información sobre el uso de OAuth 2.0 para acceder a las API de Google, consulta:
* <https://developers.google.com/youtube/v3/guides/authentication>
* Please ensure that you have enabled the YouTube Data API for your project.
* Asegúrate de que hayas habilitado la API de Datos de YouTube para tu proyecto.
*/
$OAUTH2_CLIENT_ID = 'REPLACE_ME';
$OAUTH2_CLIENT_SECRET = 'REPLACE_ME';
$OAUTH2_CLIENT_ID = 'REEMPLAZAR';
$OAUTH2_CLIENT_SECRET = 'REEMPLAZAR';

/* You can replace $VIDEO_ID with one of your videos' id, and text with the
* comment you want to be added.
/* Puedes reemplazar $VIDEO_ID con el ID de uno de tus videos y $TEXT con el
* comentario que deseas agregar.
*/
$VIDEO_ID = 'REPLACE_ME';
$TEXT = 'REPLACE_ME';
$VIDEO_ID = 'REEMPLAZAR';
$TEXT = 'REEMPLAZAR';

$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);

/*
* This OAuth 2.0 access scope allows for full read/write access to the
* authenticated user's account and requires requests to use an SSL connection.
* Este alcance de acceso de OAuth 2.0 permite acceso completo de lectura/escritura a la
* cuenta del usuario autenticado y requiere que las solicitudes utilicen una conexión SSL.
*/
$client->setScopes('https://www.googleapis.com/auth/youtube.force-ssl');
$redirect = filter_var('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'],
FILTER_SANITIZE_URL);
$client->setRedirectUri($redirect);

// Define an object that will be used to make all API requests.
// Define un objeto que se utilizará para realizar todas las solicitudes a la API.
$youtube = new Google_Service_YouTube($client);

// Check if an auth token exists for the required scopes
// Verifica si existe un token de autenticación para los alcances requeridos
$tokenSessionKey = 'token-' . $client->prepareScopes();
if (isset($_GET['code'])) {
if (strval($_SESSION['state']) !== strval($_GET['state'])) {
die('The session state did not match.');
die('El estado de la sesión no coincidió.');
}

$client->authenticate($_GET['code']);
Expand All @@ -78,113 +77,111 @@
$client->setAccessToken($_SESSION[$tokenSessionKey]);
}

// Check to ensure that the access token was successfully acquired.
// Verifica que se haya adquirido el token de acceso con éxito.
if ($client->getAccessToken()) {
try {
# All the available methods are used in sequence just for the sake of an example.
# Se utilizan todos los métodos disponibles en secuencia solo como ejemplo.

// Call the YouTube Data API's commentThreads.list method to retrieve video comment threads.
// Llama al método "commentThreads.list" de la API de Datos de YouTube para recuperar hilos de comentarios de video.
$videoCommentThreads = $youtube->commentThreads->listCommentThreads('snippet', array(
'videoId' => $VIDEO_ID,
'textFormat' => 'plainText',
));

$parentId = $videoCommentThreads[0]['id'];

# Create a comment snippet with text.
# Crea un fragmento de comentario con texto.
$commentSnippet = new Google_Service_YouTube_CommentSnippet();
$commentSnippet->setTextOriginal($TEXT);
$commentSnippet->setParentId($parentId);

# Create a comment with snippet.
# Crea un comentario con el fragmento.
$comment = new Google_Service_YouTube_Comment();
$comment->setSnippet($commentSnippet);

# Call the YouTube Data API's comments.insert method to reply to a comment.
# (If the intention is to create a new top-level comment, commentThreads.insert
# method should be used instead.)
# Llama al método "comments.insert" de la API de Datos de YouTube para responder a un comentario.
# (Si la intención es crear un nuevo comentario de nivel superior, debería usarse el método "commentThreads.insert" en su lugar.)
$commentInsertResponse = $youtube->comments->insert('snippet', $comment);


// Call the YouTube Data API's comments.list method to retrieve existing comment replies.
// Llama al método "comments.list" de la API de Datos de YouTube para recuperar respuestas de comentarios existentes.
$videoComments = $youtube->comments->listComments('snippet', array(
'parentId' => $parentId,
'textFormat' => 'plainText',
));

if (empty($videoComments)) {
$htmlBody .= "<h3>Can\'t get video comments.</h3>";
$htmlBody .= "<h3>No se pueden obtener comentarios del video.</h3>";
} else {
$videoComments[0]['snippet']['textOriginal'] = 'updated';
$videoComments[0]['snippet']['textOriginal'] = 'actualizado';

// Call the YouTube Data API's comments.update method to update an existing comment.
// Llama al método "comments.update" de la API de Datos de YouTube para actualizar un comentario existente.
$videoCommentUpdateResponse = $youtube->comments->update('snippet', $videoComments[0]);

// Call the YouTube Data API's comments.setModerationStatus method to set moderation
// status of an existing comment.
// Llama al método "comments.setModerationStatus" de la API de Datos de YouTube para establecer el estado de moderación
// de un comentario existente.
$youtube->comments->setModerationStatus($videoComments[0]['id'], 'published');

// Call the YouTube Data API's comments.markAsSpam method to mark an existing comment as spam.
// Llama al método "comments.markAsSpam" de la API de Datos de YouTube para marcar un comentario existente como spam.
$youtube->comments->markAsSpam($videoComments[0]['id']);

// Call the YouTube Data API's comments.delete method to delete an existing comment.
// Llama al método "comments.delete" de la API de Datos de YouTube para eliminar un comentario existente.
$youtube->comments->delete($videoComments[0]['id']);
}

$htmlBody .= "<h3>Video Comment Replies</h3><ul>";
$htmlBody .= "<h3>Respuestas de comentarios del video</h3><ul>";
foreach ($videoComments as $comment) {
$htmlBody .= sprintf('<li>%s: "%s"</li>', $comment['snippet']['authorDisplayName'],
$comment['snippet']['textOriginal']);
}
$htmlBody .= '</ul>';

$htmlBody .= "<h2>Replied to a comment for</h2><ul>";
$htmlBody .= "<h2>Se respondió a un comentario de</h2><ul>";
$htmlBody .= sprintf('<li>%s: "%s"</li>',
$commentInsertResponse['snippet']['authorDisplayName'],
$commentInsertResponse['snippet']['textDisplay']);
$htmlBody .= '</ul>';

$htmlBody .= "<h2>Updated comment for</h2><ul>";
$htmlBody .= "<h2>Comentario actualizado de</h2><ul>";
$htmlBody .= sprintf('<li>%s: "%s"</li>',
$videoCommentUpdateResponse['snippet']['authorDisplayName'],
$videoCommentUpdateResponse['snippet']['textDisplay']);
$htmlBody .= '</ul>';

} catch (Google_Service_Exception $e) {
$htmlBody .= sprintf('<p>A service error occurred: <code>%s</code></p>',
$htmlBody .= sprintf('<p>Ocurrió un error del servicio: <code>%s</code></p>',
htmlspecialchars($e->getMessage()));
} catch (Google_Exception $e) {
$htmlBody .= sprintf('<p>An client error occurred: <code>%s</code></p>',
$htmlBody .= sprintf('<p>Ocurrió un error del cliente: <code>%s</code></p>',
htmlspecialchars($e->getMessage()));
}

$_SESSION[$tokenSessionKey] = $client->getAccessToken();
} elseif ($OAUTH2_CLIENT_ID == 'REPLACE_ME') {
} elseif ($OAUTH2_CLIENT_ID == 'REEMPLAZAR') {
$htmlBody = <<<END
<h3>Client Credentials Required</h3>
<h3>Se requieren credenciales del cliente</h3>
<p>
You need to set <code>\$OAUTH2_CLIENT_ID</code> and
<code>\$OAUTH2_CLIENT_ID</code> before proceeding.
Necesitas establecer <code>\$OAUTH2_CLIENT_ID</code> y
<code>\$OAUTH2_CLIENT_ID</code> antes de continuar.
<p>
END;
} else {
// If the user hasn't authorized the app, initiate the OAuth flow
// Si el usuario no ha autorizado la aplicación, inicia el flujo de OAuth
$state = mt_rand();
$client->setState($state);
$_SESSION['state'] = $state;

$authUrl = $client->createAuthUrl();
$htmlBody = <<<END
<h3>Authorization Required</h3>
<p>You need to <a href="$authUrl">authorize access</a> before proceeding.<p>
<h3>Se requiere autorización</h3>
<p>Necesitas <a href="$authUrl">autorizar el acceso</a> antes de continuar.<p>
END;
}
?>

<!doctype html>
<html>
<head>
<title>Insert, list, update, moderate, mark and delete comments.</title>
<title>Insertar, listar, actualizar, moderar, marcar y eliminar comentarios.</title>
</head>
<body>
<?=$htmlBody?>
Expand Down