165 lines
6.2 KiB
Text
165 lines
6.2 KiB
Text
' 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, " <dict>"
|
|
Print #hArchivoTMP, " <key>Inserted-By-iBooks</key>"
|
|
Print #hArchivoTMP, " <true/>"
|
|
Print #hArchivoTMP, " <key>Name</key>"
|
|
Print #hArchivoTMP, " <string>" & TITULO & "</string>"
|
|
Print #hArchivoTMP, " <key>Package Hash</key>"
|
|
Print #hArchivoTMP, " <string>" & MD5SUM & "</string>"
|
|
Print #hArchivoTMP, " <key>Path</key>"
|
|
Print #hArchivoTMP, " <string>" & NOMBREFICHERO & "</string>"
|
|
Print #hArchivoTMP, " <key>importDate</key>"
|
|
Print #hArchivoTMP, " <date>2023-07-31T18:02:06Z</date>"
|
|
Print #hArchivoTMP, " </dict>"
|
|
' Cerramos el XML
|
|
Print #hArchivoTMP, " </array>"
|
|
Print #hArchivoTMP, "</dict>"
|
|
Print #hArchivoTMP, "</plist>"
|
|
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
|