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