' Gambas class file Public globalFichero As String Public Sub Boton_DesmontarEXIT_Click() ' Desmontar iPad Shell "umount /mnt/ipad" ' Salir del Programa Quit End Public Sub Boton_Seleccionar_Click() ' Mostrar formulario de Selección ePub/PDF 'form_Fichero.Show ' Vaciamos fichero anterior... globalFichero = "" form_Fichero.ShowModal 'Message.Info("El fichero es: " & globalFichero) If globalFichero <> "" Then Boton_Seleccionar.Enabled = False Boton_SubirFichero.Enabled = True Else Boton_Seleccionar.Enabled = True Boton_SubirFichero.Enabled = False Endif End Public Sub Check_Librerias() '' Librerias/Paquetes: libimobiledevice6 libimobiledevice-utils ifuse libimage-exiftool-perl Dim errores As Integer = 0 Dim resultado As String System.Shell = "/bin/bash" '' chequear libimobiledevice6 Shell "dpkg-query -l libimobiledevice6 1>/dev/null 2>/dev/null ; echo -n $?" To resultado If resultado Not "0" Then errores += 1 Endif '' chequear libimobiledevice-utils Shell "dpkg-query -l libimobiledevice-utils 1>/dev/null 2>/dev/null ; echo -n $?" To resultado If resultado <> "0" Then errores += 1 Endif '' chequear ifuse Shell "dpkg-query -l ifuse 1>/dev/null 2>/dev/null ; echo -n $?" To resultado If resultado <> "0" Then errores += 1 Endif If errores > 0 Then Message.Title = "Librerias y Despendencias" Message.Error("Hay " & errores & " librerias y/o paquetes que no están instalados en el sistema" & gb.CrLf & gb.CrLf & "Solucionelo ejecutando:" & gb.CrLf & " 'sudo apt -y install libimobiledevice6 libimobiledevice-utils ifuse'" & gb.CrLf & "sudo install -d /mnt/ipad -o ") '' Si hay errores no se sigue Quit Else '' Crear directorio de montaje /mnt/ipad Dim USUARIO As String USUARIO = System.User.Name Shell "sudo install -d /mnt/ipad -o " & USUARIO Endif End Public Sub Form_Open() globalFichero = "" Boton_Seleccionar.Enabled = False Boton_SubirFichero.Enabled = False ' Lanzar comprobacion de Librerias y Programas Check_Librerias ' Aviso de nombre sin espacios ni acentos Message.Title = "ePub to iPad: Ajuste previo de ficheros" Message.Info("Para funcionamiento optimo, por favor copie los ePub y PDF al directorio /tmp" & gb.CrLf & "Elimine los espacios y acentos del nombre del fichero en /tmp" & gb.CrLf & gb.CrLf & "No afecta a la visualización de los ficheros en el iPad") End Public Sub Boton_EmparejarIPAD_Click() System.Shell = "/bin/bash" Shell "idevicepair pair" Message.Title = "Emparejar con iPad" Message.Info("Continuar tras pulsar 'Confiar' en el iPad") Shell "ifuse /mnt/ipad" Boton_EmparejarIPAD.Enabled = False Boton_Seleccionar.Enabled = True End Public Sub Boton_SubirFichero_Click() System.Shell = "/bin/bash" Boton_Seleccionar.Enabled = False Boton_SubirFichero.Enabled = False Dim RutaIpad As String RutaIpad = "/mnt/ipad/Books/Purchases/" Dim FichCompra As String = "/mnt/ipad/Books/Purchases/Purchases.plist" ' BACKUP Previo Dim FichBackup, FichTMP As String FichBackup = FichCompra & "." & Year(Now) & "-" & Month(Now) & "-" & Day(Now) & "_" & Hour(Now) & Minute(Now) & Second(Now) FichTMP = FichCompra & ".tmp" 'Copy FichCompra To FichBackup Shell "cp " & FichCompra & " " & FichBackup Dim TITULO As String Shell "echo -n $(exiftool -Title " & globalFichero & " |awk -F ': ' '{print $2}')" To TITULO Dim MD5SUM As String Shell "echo -n $(md5sum F " & globalFichero & " | awk '{print $1}')" To MD5SUM Dim NOMBREFICHERO As String Shell "echo -n $(basename " & globalFichero & ")" To NOMBREFICHERO 'Message.Info("Nombre Fichero: " & NOMBREFICHERO) Dim TipoFichero As String Shell "echo -n $(exiftool -FileType " & globalFichero & " | awk -F ': ' '{print $2}')" To TipoFichero 'Message.Info("Tipo de fichero: -" & TipoFichero & "-") If TipoFichero = "PDF" Then 'Message.Info("Has seleccionado un fichero de tipo: " & TipoFichero) ' PDF -> iPad (solo copiar el PDF a la carpeta /mnt/ipad/Books/Purchases) Shell "cp " & globalFichero & " " & RutaIpad & NOMBREFICHERO Endif If TipoFichero = "EPUB" Then 'Message.Info("Has seleccionado un fichero de tipo: " & TipoFichero) ' EPUB -> iPad (Copiarlo como fichero zip ) ' Crear carpeta .epub ' Descomprimir directamente desde ruta ePub Origen a ruta iPad con el nombre del fichero Shell "unzip " & globalFichero & " -d " & RutaIpad & NOMBREFICHERO ''Shell "mkdir -p " & RutaIpad & NOMBREFICHERO & "; cp " & globalFichero & " " & RutaIpad & NOMBREFICHERO & "/" & NOMBREFICHERO & ".zip" 'Message("copiado") ''Shell "cd " & RutaIpad & NOMBREFICHERO & "; unzip *.zip ; rm *.zip" 'Message("extraido") Endif Shell "notify-send -t 6000 'Subiendo fichero al iPad. Espere a que termine el proceso'" ' Regenerar el XML de Purchases del iPad Dim hArchivo, hArchivoTMP As File Dim Lineas As Integer Dim Texto As String hArchivo = Open FichCompra For Read hArchivoTMP = Open FichTMP For Write Create Dim numLineas, linea As Integer Shell "echo -n $(wc -l " & FichCompra & " |awk '{print $1}')" To numLineas numLineas = numLineas - 3 linea = 0 While linea < numLineas Line Input #hArchivo, Texto Print #hArchivoTMP, Texto linea += 1 Wend Close hArchivo ' Grabamos nuevos datos Print #hArchivoTMP, " " Print #hArchivoTMP, " Inserted-By-iBooks" Print #hArchivoTMP, " " Print #hArchivoTMP, " Name" Print #hArchivoTMP, " " & TITULO & "" Print #hArchivoTMP, " Package Hash" Print #hArchivoTMP, " " & MD5SUM & "" Print #hArchivoTMP, " Path" Print #hArchivoTMP, " " & NOMBREFICHERO & "" Print #hArchivoTMP, " importDate" Print #hArchivoTMP, " 2023-07-31T18:02:06Z" Print #hArchivoTMP, " " ' Cerramos el XML Print #hArchivoTMP, " " Print #hArchivoTMP, "" Print #hArchivoTMP, "" Close hArchivoTMP Shell "cp " & FichTMP & " " & FichCompra & "; rm " & FichTMP Message.Title = "ePub to iPad" Message.Info("Se ha subido el fichero al iPad") globalFichero = "" Boton_Seleccionar.Enabled = True End