ePub2iPad - primera subida codigo liberado
This commit is contained in:
commit
d921125116
10 changed files with 300 additions and 0 deletions
2
.directory
Normal file
2
.directory
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Icon=./.icon.png
|
18
.gitignore
vendored
Normal file
18
.gitignore
vendored
Normal 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
3
.hidden/CHANGELOG
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
* Fri Aug 04 2023 luisgulo <luisgulo@gmail.com> 1.0.2
|
||||||
|
- Version Inicial
|
||||||
|
|
BIN
.icon.png
Normal file
BIN
.icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.1 KiB |
23
.project
Normal file
23
.project
Normal 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
160
.src/FMain.class
Normal 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
65
.src/FMain.form
Normal 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
13
.src/form_Fichero.class
Normal 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
16
.src/form_Fichero.form
Normal 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
BIN
iPad-logo-pantalla.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Loading…
Reference in a new issue