commit d9211251164c1a19213da85b2585a91b65e4a14b Author: luisgulo Date: Sat Aug 5 00:01:12 2023 +0200 ePub2iPad - primera subida codigo liberado diff --git a/.directory b/.directory new file mode 100644 index 0000000..06dab1c --- /dev/null +++ b/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..944c803 --- /dev/null +++ b/.gitignore @@ -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* +#---- diff --git a/.hidden/CHANGELOG b/.hidden/CHANGELOG new file mode 100644 index 0000000..e321440 --- /dev/null +++ b/.hidden/CHANGELOG @@ -0,0 +1,3 @@ +* Fri Aug 04 2023 luisgulo 1.0.2 +- Version Inicial + diff --git a/.icon.png b/.icon.png new file mode 100644 index 0000000..1ec8a6b Binary files /dev/null and b/.icon.png differ diff --git a/.project b/.project new file mode 100644 index 0000000..5b18389 --- /dev/null +++ b/.project @@ -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" diff --git a/.src/FMain.class b/.src/FMain.class new file mode 100644 index 0000000..c7b149e --- /dev/null +++ b/.src/FMain.class @@ -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, " " + 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 diff --git a/.src/FMain.form b/.src/FMain.form new file mode 100644 index 0000000..4ff07a5 --- /dev/null +++ b/.src/FMain.form @@ -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") + } +} diff --git a/.src/form_Fichero.class b/.src/form_Fichero.class new file mode 100644 index 0000000..901aba4 --- /dev/null +++ b/.src/form_Fichero.class @@ -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 diff --git a/.src/form_Fichero.form b/.src/form_Fichero.form new file mode 100644 index 0000000..e1759a7 --- /dev/null +++ b/.src/form_Fichero.form @@ -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") + } +} diff --git a/iPad-logo-pantalla.png b/iPad-logo-pantalla.png new file mode 100644 index 0000000..9a61110 Binary files /dev/null and b/iPad-logo-pantalla.png differ