Usar Google Drive como hosting de archivos y leerlos después [SOLUCIONADO]

Publicado por FernandoNavarro, Abril 12, 2020, 09:07:49 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

FernandoNavarro

Hola buenos días, tardes, noches. Como pueden leer en el título, quiero ver cómo leer archivos previamente subidos a Google Drive. Encontré este post en Reddit:

https://amp.reddit.com/r/gamemaker/comments/8aql2p/using_google_drive_as_an_online_ini_hostreadonly/

Pero no entendí muy bien lo de cambiar la url del archivo a url directa.

Gracias.

BssString

Hola FernandoNavarro

Para eso se usa la función "http_get_file", sólo necesita 2 parámetros, el link de donde descargará el archivo y el nombre del archivo que guardará.

Y lo de la descarga directa se refiere a que cuando subes un archivo a tu Google Drive, le puedes dar clic secundario y elegir "get shareable link", no sé exactamente cómo se llama esa opción en español, pero creo que es algo así como "obtener link para compartir".
Y eso te genera una ruta, yo aquí he subido un archivo de prueba y esta es la ruta que me genera:
https://drive.google.com/open?id=1yC-ily-29t6jp7OrTSRcvfCUME4GWBCK
Pero ese NO es el link directo. Porque para descargar debes entrar al link y luego pulsar en el botón "descargar".

Ahora... si haces clic en el logo de descarga en la esquina superior derecha (el logo es una flecha apuntando hacia abajo) entonces eso ya te lleva al enlace de descarga directa que a penas entras te baja el archivo. Este es el link de descarga DIRECTA que me ha generado a mí:
https://drive.google.com/u/0/uc?id=1yC-ily-29t6jp7OrTSRcvfCUME4GWBCK&export=download

Ese link es el que debes meter en Game Maker. El proceso es muy sencillo.

Básicamente esta es la línea de código que te descarga el archivo:
Create Event
[gml]file = http_get_file("https://drive.google.com/u/0/uc?id=1yC-ily-29t6jp7OrTSRcvfCUME4GWBCK&export=download","DLC/test.txt")[/gml]
Le he dicho que me descargue el archivo del link y lo guarde en la Carpeta: "DLC" con el nombre "test.txt".
Y listo, eso es todo xD corres esa línea de código y ya tienes el archivo en la carpeta de tu juego que por defecto es %localappdata%/<nombre de tu proyecto>.

Ahora si quieres ejecutar alguna línea de código una vez que el archivo se haya descargado, puedes usar el siguiente evento:

Asynchronous HTTP Event
[gml]if ds_map_find_value(async_load, "id") == file {
var status = ds_map_find_value(async_load, "status");
if status == 0 {
   var path = ds_map_find_value(async_load, "result");
   if file_exists(path) show_message("Descarga completa");
   }
}[/gml]
En ese ejemplo simplemente ejecuta un "show message" al descargar el archivo.

Ojo que creo (no estoy muy seguro) que Google Drive tiene un límite de descargas por archivo para evitar saturar el servidor o evitar ataques DDOS. No sé si es un límite en la cantidad de descargas o en la cantidad de KB que estás descargando, te sugiero investigar sobre ello.

Saludos

FernandoNavarro

Hola otra vez, ahora quiero saber si existe la posibilidad de subir un archivo desde Game Maker a la nube. Si no, da igual, es sólo por probar, quiero intentar que al guardar la partida se haga un backup y se suba, para programar una opción de restaurar progreso en caso de cambiar de dispositivo o pérdida de archivos.

BssString

Hola FernandoNavarro

No sé si eso sea posible la verdad. Creo que steam ofrece un Cloud Service, pero no estoy seguro cómo funciona, nunca lo he usado.

Saludos

FernandoNavarro


Powered by EzPortal
SMF spam blocked by CleanTalk