ePub2iPad - primera subida codigo liberado

This commit is contained in:
luisgulo 2023-08-05 00:01:12 +02:00
commit d921125116
10 changed files with 300 additions and 0 deletions

2
.directory Normal file
View file

@ -0,0 +1,2 @@
[Desktop Entry]
Icon=./.icon.png

18
.gitignore vendored Normal file
View file

@ -0,0 +1,18 @@
#---- Gambas files to ignore (v5)
*.gambas
.lock
*~
core
core.*
vgcore
vgcore.*
.kdbg*
.*.prof
.lang/*.pot
.gambas/*
.settings
.startup
.list
.info
.fuse_hidden*
#----

3
.hidden/CHANGELOG Normal file
View file

@ -0,0 +1,3 @@
* Fri Aug 04 2023 luisgulo <luisgulo@gmail.com> 1.0.2
- Version Inicial

BIN
.icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

23
.project Normal file
View file

@ -0,0 +1,23 @@
# Gambas Project File 3.0
Title=ePub2iPad
Startup=FMain
Icon=iPad-logo-pantalla.png
Version=1.0.2
Component=gb.image
Component=gb.gui
Component=gb.form
Description="Transferir ePUBs y PDF a biblioteca eBook de iPAD\nNota: No soporta inclusion de libros con DRM"
Authors="luisgulo (soloconlinux.org.es)"
TabSize=2
Language=es_ES
Maintainer=luisgulo
Vendor=SoloConLinux
Address=luisgulo@gmail.com
Url=https://repositorio.soloconlinux.org.es
License=General Public License
PackageName=epub2ipad-1.0.2
Packager=1
Systems=debian
Menus=debian:"Applications/File Management"
Groups=debian:"utils"
ExtraDependencies=debian:"libimobiledevice6\t\t\nlibimobiledevice-utils\t\t\nifuse\t\t\nlibimage-exiftool-perl\t\t"

160
.src/FMain.class Normal file
View file

@ -0,0 +1,160 @@
' 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
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
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

65
.src/FMain.form Normal file
View file

@ -0,0 +1,65 @@
# Gambas Form File 3.0
{ Form Form
MoveScaled(0,0,86,63)
Text = ("ePub to iPad")
Icon = Picture["iPad-logo-pantalla.png"]
Resizable = False
{ PictureBox1 PictureBox
MoveScaled(0,11,21,20)
Picture = Picture.Load("iPad-logo-pantalla.png")
Stretch = True
}
{ LCDLabel1 LCDLabel
MoveScaled(23,1,49,7)
Text = ("epub to ipad")
Alignment = Align.Center
}
{ Label1 Label
MoveScaled(23,8,49,5)
Text = ("1. Conecte el iPad con el cable USB al Ordenador")
}
{ Label2 Label
MoveScaled(23,12,49,5)
Text = ("2. Pulse el botón \"Emparejar con iPad\"")
}
{ Boton_EmparejarIPAD Button
MoveScaled(23,17,24,6)
Text = ("Emparejar con iPad")
Picture = Picture["icon:/22/usb"]
}
{ Label3 Label
MoveScaled(23,22,49,6)
Text = ("3. Pulse en el iPad \"Confiar en el ordenador\"")
}
{ Label4 Label
MoveScaled(23,27,49,5)
Text = ("4. Seleccione el ePUB o PDF que quiera enviar al iPAD")
}
{ Boton_Seleccionar Button
MoveScaled(23,32,24,6)
Text = ("Seleccionar ePUB/PDF")
Picture = Picture["icon:/22/pdf"]
}
{ !Boton_SubirFichero Button
MoveScaled(23,43,24,6)
#Public = True
Enabled = False
Text = ("Enviar al iPad")
Picture = Picture["icon:/22/book"]
}
{ Boton_DesmontarEXIT Button
MoveScaled(22,55,49,6)
Text = ("Desmontar iPad y Salir")
Picture = Picture["icon:/22/close"]
}
{ Label5 Label
MoveScaled(23,38,49,5)
Text = ("5. Ahora simplemente pulse \"Enviar al iPad\".")
}
{ Label6 Label
MoveScaled(4,30,12,5)
Font = Font["Roboto,Bold"]
Text = ("SoloConLinux")
}
}

13
.src/form_Fichero.class Normal file
View file

@ -0,0 +1,13 @@
' Gambas class file
Public Sub Boton_Cerrar_Click()
If FileChooserEPUB.SelectedPath = "" Then
FMain.globalFichero = ""
FMain.Boton_SubirFichero.Enabled = False
Else
FMain.globalFichero = FileChooserEPUB.SelectedPath
FMain.Boton_SubirFichero.Enabled = True
Endif
Me.Close
End

16
.src/form_Fichero.form Normal file
View file

@ -0,0 +1,16 @@
# Gambas Form File 3.0
{ Form Form
MoveScaled(0,0,92,73)
Text = ("Seleccione un fichero ePUB o PDF ")
Icon = Picture["iPad-logo-pantalla.png"]
Resizable = False
{ FileChooserEPUB FileChooser
MoveScaled(1,1,90,63)
Filter = [("*.epub"), ("ePUB"), ("*.pdf"), ("PDF")]
}
{ Boton_Cerrar Button
MoveScaled(74,66,17,5)
Text = ("Aceptar")
}
}

BIN
iPad-logo-pantalla.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB