Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
¿Cómo iniciar sesión en wikipedia usando la API de mediawiki?

Ya tengo dos bots en funcionamiento en Wikipedia, pero usan un método diferente. Actualmente, estoy tratando de crear un bot usando C#. En la página de documentación de la API, han proporcionado algunos códigos de muestra en java, PHP y python. Pero desafortunadamente, no han proporcionado ningún código de muestra en C#. Es el único idioma que conozco.

Esta es la API de Wikimedia: Editar página de documentación. ¿Alguien amablemente convertiría las pocas palabras de java (o cualquier otro idioma) a C#?

Si pudiera convertir solo este código a C#, podría construir el resto del bot por mí mismo. Pedí ayuda en los tablones de anuncios relevantes en los sitios de wikimedia, pero nadie allí está familiarizado con C#. Es por eso que ahora estoy preguntando esto fuera de wikipedia.

Muchas gracias por adelantado

Este es el código fuente de Java:

 ``` /* edit.js MediaWiki API Demos Demo of `Login` module: Sending post request to login MIT license */ var request = require( 'request' ).defaults( { jar: true } ), url = 'https://test.wikipedia.org/w/api.php'; // Step 1: GET request to fetch login token function getLoginToken() { var params = { action: 'query', meta: 'tokens', type: 'login', format: 'json' }; request.get( { url: url, qs: params }, function ( error, res, body ) { var data; if ( error ) { return; } data = JSON.parse( body ); loginRequest( data.query.tokens.logintoken ); } ); } // Step 2: POST request to log in. // Use of main account for login is not // supported. Obtain credentials via Special:BotPasswords // (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword function loginRequest( loginToken ) { var params = { action: 'login', lgname: 'bot_username', lgpassword: 'bot_password', lgtoken: loginToken, format: 'json' }; request.post( { url: url, form: params }, function ( error, res, body ) { if ( error ) { return; } console.log( body ); } ); } // Start From Step 1 getLoginToken();

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No puedo profundizar tanto, pero espero que puedas echar un vistazo a esta página y descubrir cómo hacerlo.

https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=net-6.0

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes intentar algo como esto

 private static async Task LoginRequest(string loginToken) { var data = new { action = "login", lgname = "bot_username", lgpassword = "bot_password", lgtoken = loginToken, format = "json" }; using (var client = new HttpClient()) using (var response = await client.PostAsJsonAsync(LOGIN_URL, data)) { var responseString = await response.Content.ReadAsStringAsync(); var responseObject = JsonConvert.DeserializeObject<JObject>(responseString); Console.WriteLine(responseObject); } } private static async Task<string?> GetLoginToken() { var url = $"{LOGIN_URL}?action=query&meta=tokens&type=login&format=json"; using (var client = new HttpClient()) using (var response = await client.GetAsync(url)) { var responseString = await response.Content.ReadAsStringAsync(); var responseObject = JsonConvert.DeserializeObject<JObject>(responseString); return responseObject?["query"]?["tokens"]?["logintoken"]?.ToString(); } }

Para convertir la respuesta que necesita

 using Newtonsoft.Json; using Newtonsoft.Json.Linq;

Puede llamar a estos métodos desde su método Main de esta manera:

 const string LOGIN_URL = "https://test.wikipedia.org/w/api.php"; public static async Task Main() { var loginToken = await GetLoginToken(); await LoginRequest(loginToken ?? throw new Exception("No login token.")); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda