Acortar URLs con PowerShell

Desde hace un tiempo soy usuario de Bit.ly, si no lo conocen la explicación más breve es un servicio (y app) para acortar los links (URLs). Dentro de las opciones que permite se encuentran:

  • Modificar el nombre
  • Agregar etiquetas
  • Dashboard de información
  • Cantidad de clics en el enlace

Realmente es muy útil, y la utilizo para compartir mis demos, PPTs, código, etc. ya que me permite generar un enlace fácil de recordar y asociado al contenido.

Hace un tiempo utilizo la API para trabajar desde PowerShell porque creo que es un poco ir contra la corriente hacerlo por la web, debido a que la API es muy simple, por ello quiero compartir el procedimiento.

API, ¿cómo tengo acceso a ella?

Lo primero es ingresar a la siguiente URL: https://bit.ly, iniciar sesión (pueden registrarse también con una cuenta de Twitter, Facebook o Google) y luego seleccionar la cuenta desde el menú para acceder la opción edit profile. Dentro de edit profile, se encuentra la opción Generic Access Token:

Bit.ly access token

Para generar un token, se debe ingresar la contraseña de la cuenta y seleccionar el botón Generate token. Ya con el token generado, lo siguiente es ejecutar el siguiente bloque de código, donde guardamos el resultado en la variable $MyURL:

	$OAuthToken = "b21c4a6***************************b709bd"
	$LongURL = "https://blog.victorsilva.com.uy"
	# Llamada a la API
	$MyURL=Invoke-WebRequest -Uri https://api-ssl.bitly.com/v3/shorten -Body @{access_token=$OAuthToken;longURL=$LongURL} -Method Get

API de Bit.ly en PowerShell

Ahora que tenemos el resultado, podemos observar que se encuentra la URL dentro de la información que despliega la salida en consola de la variable $MyURL (la URL corta es: “http://bit.ly/2uYW60F”).

Para poder organizar mejor la información es posible convertir a JSON todos los datos:

	
	#Guardar la información como JSON
	$MyURLjson = $MyURL.Content | convertfrom-json
	# Imprimir la URL
	$MyURLjson.data.url

Filtrar el resultado en JSON

Siguientes pasos…

En caso de utilizar esto de forma frecuente, o al menos, pensando en organizar mejor esta funcionalidad es que vamos a armar una simple función.

El código para ello es el siguiente:

	function Short-URL {
	    [CmdletBinding()]
    	param(
        	[Parameter(Mandatory=$true)][string]$LongURL
    	)
		$OAuthToken = "b21c4a6***************************b709bd"
		$MyURL=Invoke-WebRequest -Uri https://api-ssl.bitly.com/v3/shorten -Body @{access_token=$OAuthToken;longURL=$LongURL} -Method Get
		$MyURLjson = $MyURL.Content | ConvertFrom-Json
		$MyURLjson | Select-Object @{Name="Short URL";Expression={($_.data.url)}}, @{Name="Long URL";Expression={($_.data.long_url)}}
	}

Función utilizando la API de Bit.ly

Por más información, el enlace a la documentación es el siguiente: https://dev.bitly.com/

Happy scripting!

Comments