Re: Actualizaciones automaticas y channelselector dinamico
Publicado: 16 Dic 2015, 01:10
Hoy sólo he mirado el tema sha1 y que me volviendo majara.
El otro día no mira para nada el código, me limité a los resultados a excepción de corregir el error "UnicodeDecodeError: 'utf8' codec can't decode byte 0xf1 in position 1: invalid continuation byte" para poder probar.
Hoy si me he concentrado en la siguiente línea del error y he visto como crea el hash GitHub. He visto que es necesario añadir el nombre de la carpeta "blob" + la longitud de la cadena de datos + "\0".
Tal como está el código en el updater el copy/paste desde GitHub a windows no nos vale, tendríamos una diferencia longitud en la cadena de datos de n bytes por saltos de líneas.
Eso lo sulucionaba cuando hice lo del update_rservers con MD5 con la función "def md5_local( file_server ):". Para este quedaría así:
Con eso sale el hash clavadito
El otro día no mira para nada el código, me limité a los resultados a excepción de corregir el error "UnicodeDecodeError: 'utf8' codec can't decode byte 0xf1 in position 1: invalid continuation byte" para poder probar.
Hoy si me he concentrado en la siguiente línea del error y he visto como crea el hash GitHub. He visto que es necesario añadir el nombre de la carpeta "blob" + la longitud de la cadena de datos + "\0".
Tal como está el código en el updater el copy/paste desde GitHub a windows no nos vale, tendríamos una diferencia longitud en la cadena de datos de n bytes por saltos de líneas.
Eso lo sulucionaba cuando hice lo del update_rservers con MD5 con la función "def md5_local( file_server ):". Para este quedaría así:
Código: Seleccionar todo
def sha1_local( _file ):
import hashlib
hash = hashlib.sha1()
with open( _file ) as f:
for chunk in iter( lambda: f.read( 4096 ), "" ):
hash.update( "blob " + str(len(chunk)) + "\0" + chunk )
return hash.hexdigest()