Página 3 de 4

Re: Servidor Mega

Publicado: 13 Mar 2016, 13:51
por Cmos
divadr escribió:Eso ya esta compilado... solo necesitas buscar el AES.so dentro del zip
Ok, definitivamente estoy cegato :lol: Los he renombrado correctamente, he copiado la carpeta Crypto completa en la carpeta lib y ahora me dice que no encuentra lib_AES.so xD

No recuerdo dónde encontré un archivo libAES.so y lo copié tanto en la carpeta Cipher como en system/lib ya que tengo root, pero parece que no es de su agrado, ya no sé qué más probar xD

Re: Servidor Mega

Publicado: 13 Mar 2016, 14:00
por Cmos
Vale, un pequeño "progreso", he intentado copiar el archivo libAES.so que comenté antes en la carpeta data/data/org.xbmc.kodi/lib (hace falta ser root) y ahora en lugar de decirme que no lo encuentra, me dice que tiene bad ELF magic, que seguramente quiere decir "mala magia élfica" :lol: :lol: :lol:

Vamos, que entiendo que esa es la ruta donde intenta cargarlo, pero el archivo no es válido con la versión de crypto, del sistema o que sé yo xD

Re: Servidor Mega

Publicado: 13 Mar 2016, 14:01
por divadr
De donde has sacado el libAES.so?

Re: Servidor Mega

Publicado: 13 Mar 2016, 14:03
por Cmos
divadr escribió:De donde has sacado el libAES.so?
De esta página, no he encontrado otro para descargar, lo mismo ahora que lo miro solo sirve para android honeycomb :?

Re: Servidor Mega

Publicado: 14 Mar 2016, 13:17
por robalo
Al final he rooteao la kkandroid y he colacado en /system/lib/ el AES.so renombrado a libAES.so y ahora pide libpython2.6.so :lol: :lol:
No creo que esta sea la forma de hacer las cosas.

Voy a ver si puedo instalar python en el kkandroid y a ver por dónde salen los tiros y si va bien y pilla arriba lo intento con el libtorrent que en una table como que no lo veo :)
Lo he probado en la MV con OSX y perfecto con "sudo easy_install pip" y "sudo pip install pycripto"
Ahora mismo me funciona en una rasp2, dos rasp1, w7 y MV OSX. En las MVs de linux no me hace falta probarlo, si funciona en las rasp funcionan seguro en linux x86 y amd64.

Re: Servidor Mega

Publicado: 15 Mar 2016, 08:54
por divadr
que versión de Python tienes?

Re: Servidor Mega

Publicado: 02 Abr 2016, 13:02
por jesus
El tema de las librerías binarias y Python a mí me ha traído de calle siempre, creo que todos lo controláis mucho más que yo pero aún así os cuento algunas cosas que tengo abiertas por si aporta algo.

El programita para descargar vídeos de Aragón TV está hecho en Python, pero utiliza el ejecutable de "rtmpdump" en lugar de la librería.

https://github.com/tvalacarta/descargar ... tv/main.py

Lo que hace es tomar el nombre de la plataforma, y de ahí deduce qué binario tiene que utilizar. En Linux coge el rtmpdump que tengas instalado.

Código: Seleccionar todo

        # get_platform_name es: win, linux, android, macosx, ios or unknown
        folder_platform = os.path.join( os.getcwd() , "rtmpdump" , self.get_platform_name() )
        print "folder_platform="+folder_platform
        if self.get_platform_name()=="win":
            rtmpdump = os.path.join(folder_platform,"rtmpdump.exe")
        elif self.get_platform_name()=="linux":
            rtmpdump = "rtmpdump"
        else:
            rtmpdump = os.path.join(folder_platform,"rtmpdump")
Luego le asigna permisos de ejecución, creo que en realidad esto es no es cosa de Android sino que viene porque Kivy al desplegar el APK primero copia los ficheros y olvida los permisos.

Código: Seleccionar todo

        # En Android hay que darle antes expresamente permisos de ejecución al binario de rtmpdump
        if self.get_platform_name()=="android":
            subprocess.Popen(["chmod","0755",rtmpdump], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
Y finalmente construye el array para Popen.

Código: Seleccionar todo

        exe = [rtmpdump]
        exe.append("-r")
        exe.extend(self.media_url.replace("app=","--app ").replace("playpath=","--playpath ").split(" "))
        #exe.append("--live")
        exe.append("-o")
        exe.append(self.target_file)
Esto falla en Android 5+, porque dice que el binario no es válido... supongo que será lo de la magia élfica de Cmos: "Thinna i ardhon: han mathon ne nen, han mathon ne chef, han noston ne gwilith".

Y sobre todo el problema que tiene esto es que al no usar la librería "librtmp.so", tiene poco control sobre el proceso.

Investigando sobre cómo lo hacen otros por ahí encontré este código, que usa la librería "ctypes" de Python.

https://gist.github.com/athoik/5484842# ... librtmp-L5

Si os fijáis carga la DLL desde un directorio cualquiera, lo que debería resolver el problema de dónde ponemos esos ficheros para cada plataforma:

Código: Seleccionar todo

        if os.name == 'nt':
            self.lib = cdll.LoadLibrary('lib/librtmp.dll')
        elif os.name == 'posix':
            self.lib = cdll.LoadLibrary('librtmp.so.0')
Ese es mi plan para la próxima versión de la herramienta de descarga.

Entiendo que la idea con mega y la librería de AES es algo parecido, poner los .so/.dll de cada plataforma en un directorio y hacer esa carga dinámica. Evitaríamos rootear en Android.

Tengo ganas de resolver el problema de las librerías, varios problemas que se me resisten tendrían una solución muy buena si aprendo a mezclar python con librerías :)

Re: Servidor Mega

Publicado: 02 Abr 2016, 13:05
por divadr
Cargar las librerias con crypes... ya lo havia echo alguna vez... el unico problema es encontrarlas para cada aquitectura...

Re: Servidor Mega

Publicado: 02 Abr 2016, 14:25
por jesus
Mi idea era montarme una máquina virtual con Linux, que me permita hacer el cross-compile de rtmpdump y de su librería en diferentes plataformas... así dejo de preocuparme por ese punto. Normalmente en Linux/Windows/Mac suele ser fácil encontrar los binarios, el problema lo encuentras normalmente con iOS/Android/Raspberry.

Para las herramientas más populares suele haber tutoriales por ahí de cómo hacer el cross-compile (yo por ejemplo tengo una VMWare con Linux para compilar Kodi en Android), el resto puede que sea más difícil así que es cuestión de ir buscando.

Re: Servidor Mega

Publicado: 02 Abr 2016, 14:29
por divadr
Yo he encontrado las librerias para muchas arquitecturas... el problema es que yo no dispongo de algunas para poder probar... y sin poder probar es complicado hacerlo funcionar... en el caso del servidor mega lo veo sencillo ya que aunque la libreria pycrypto tiene varios modulos escritos en c el unico que necesitamos es el _AES