Página 1 de 1

Archivos fuera de sitio.

Publicado: 23 Jul 2010, 22:16
por jurrabi
Investigando los cambios necesarios para XBMC Dharma (10.5) he encontrado montones de puntos donde se utilizan archivos en la carpeta del plugin. Los estoy cambiando poco a poco, pero los quiero dejar aquí para que no se me olviden y que queden un log escrito...

Código: Seleccionar todo

updater.py
28: DESTINATION_FOLDER = xbmc.translatePath( "special://home/plugins/video") 

*resources\lib
downloadtools.py (3 matches)
342: downloadpath = xbmc.translatePath( "special://home/downloads") 
380: downloadpath = xbmc.translatePath( "special://home/downloads/list") 

*servers
cinshare.py
18: COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" ) 
divxden.py
17: COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" ) 
divxlink.py
17: COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" ) 
gigabyteupload.py
17: COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" ) 
megavideo.py
20: #COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" ) 
metadivx.py
17: COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" ) 
movshare.py
14: COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" ) 
vreel.py
15: COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" ) 
zshare.py
17: COOKIEFILE = xbmc.translatePath( "special://home/plugins/video/pelisalacarta/cookies.lwp" )
Estoy revisando los server que son todos del mismo patrón. En cuanto lo tenga lo subo.

El update supongo que desaparecerá por lo que imagino que no es problema.
También estoy borrando las carpetas que se supone que sobran: Library, Bookmarks??


LA LINEA QUE ESTOY SIGUIENDO PARA REPARA ES ESTA:

He crado una constante DATA_PATH en config.py que contendrá el directorio adecuado para guardar datos ya sea una versión pre o post Dharma...

Código: Seleccionar todo

if DHARMA:
	DATA_PATH = xbmc.translatePath("special://profile/addon_data/%s" % getPluginId())
else:
	DATA_PATH = os.getcwd()
Por lo que sugiero que sustituyamos el típico uso:

Código: Seleccionar todo

f = open(os.getcwd()+'/films.tab', 'w') # fichero para obtener las notas
por:

Código: Seleccionar todo

filename = os.path.join (config.DATA_PATH, "films.tab")
f = open (filename, 'w')
En muchos casos se utiliza la estructura de datos existente en el plugin, que no existirá en la carpeta de datos. En estos casos hay, dependiendo del tipo de datos, o grabarlos en la propia raiz (sin carpetas) o asegurarse de comprobar si existe o crearla, pero en la raiz del data (no hay necesidad de complicar la estructura)


Finalmente todos los usos de getcwd sospechosos (sin revisar, habrá usos legítimos)...

Código: Seleccionar todo

plugin.video.pelisalacarta
channels
anotador.py (2 matches)
23: f = open(os.getcwd()+"/channels/notas.tab","r") 
24: # f = open(os.getcwd()+"/fa.tab","r") 
casttv.py (17 matches)
2.439: VISTO_PATH = xbmc.translatePath( os.path.join( os.getcwd(), 'bookmarks/vistos' ) ) 
2.474: VISTO_PATH = xbmc.translatePath( os.path.join( os.getcwd(), 'bookmarks/vistos' ) ) 
2.517: VISTO_PATH = xbmc.translatePath( os.path.join( os.getcwd(), 'bookmarks/vistos' ) ) 
2.557: VISTO_PATH = xbmc.translatePath( os.path.join( os.getcwd(), 'bookmarks/vistos' ) ) 
2.788: copy2(fullfilename,xbmc.translatePath( os.path.join( os.getcwd(), 'resources', 'lib', 'subtitulo.srt' ))) 
cineadicto.py
450: fullpath = os.path.join( os.getcwd(), 'resources', 'lib', 'subtitulo.srt' ) 
descargacineclasico.py
79: f = open(os.getcwd()+'/films.tab', 'w') # fichero para obtener las notas 
divxonline.py
370: f = open(os.getcwd()+'/films.tab', 'w') # fichero para obtener las notas 
mocosoftx.py
22: BASE_PLUGIN_THUMBNAIL_PATH = os.path.join( os.getcwd(), "thumbnails","videos" ) 
newdivx.py
486: fullpath = os.path.join( os.getcwd(), 'resources', 'lib', 'subtitulo.srt' ) 
nolomires.py
512: fullpath = os.path.join( os.getcwd(), 'resources', 'lib', 'subtitulo.srt' ) 
pelisflv.py
446: fullpath = os.path.join( os.getcwd(), 'resources', 'lib', 'subtitulo.srt' ) 
resources
lib
favoritos.py
34: BOOKMARK_PATH = xbmc.translatePath( os.path.join( os.getcwd(), 'bookmarks' ) ) 
scrapertools.py
137: ficherocookies = os.path.join( os.getcwd(), 'cookies.lwp' ) 
xbmctools.py (2 matches)
337: xbmc.Player().setSubtitles(xbmc.translatePath( os.path.join( os.getcwd(), 'resources', 'lib', 'subtitulo.srt' ) ) ) 
servers
megaupload.py
21: COOKIEFILE = os.path.join( os.getcwd(), 'cookies.lwp' ) 
megavideo.py
23: #COOKIEFILE = os.path.join( os.getcwd(), 'cookies.lwp' ) 
updater.py (3 matches) (A BORRAR, NO IMPORTANTE)
20: ROOT_DIR = os.getcwd() 
112: xbmc.output("[updater.py] cwd="+os.getcwd()) 

Re: Archivos fuera de sitio.

Publicado: 24 Jul 2010, 09:20
por jurrabi
Ya he revisado/subido al trunk todos los usos sospechosos de os.getcwd y special://.

Resumiendo he tomado estas decisiones por vosotros (espero que os parezcan bien):

He replicado la estructura de Bookmarks que teníamos en el directorio del plugin y lo he movido al addon_data. Todos los módulos que escribían/leían de ahí han sido cambiados en concordancia.
He movido la creación del fichero coockie de la raiz del plugin a la raiz del addon_data y lo he cambiado en todos los módulos que lo usaban.

En general he movido todas las creaciones de fichero de os.getcwd a config.DATA_PATH que tiene 2 valores distintos para Pre y post Dharma.

Está todo en el trunk. Aunque voy a rechequear.

El plugin funciona bien (hasta donde he podido probar) en Dharma. Ahora estoy probando en 9.11 Si alguien pruede probar en Plex/Boxee, etc. ya que yo ahora mismo no tengo esas plataformas.

PD. Falta por eliminar el update. Pero eso creo que mejor te encargas tu, no jesus?

Re: Archivos fuera de sitio.

Publicado: 25 Jul 2010, 18:02
por jesus
Gracias :)

El updater.py no lo voy a eliminar, sólo lo quitaré cuando haga la subida de versión para el repositorio de xbmc en el directorio "tags". Si te fijas he modificado los puntos donde se usa para que no fallen si ese fichero no está, y a correr.

Me gusta tu solución al tema del path, aunque yo había empezado a pensar en una más "multiplataforma". Ya me conoces :)

Mi idea era tener un módulo .py que proporcione ciertos "servicios" de pelisalacarta, como devolver una ruta donde grabar cosas, acceso a la configuración, descargas, etc.

De esa forma se puede reescribir (o poner un "if") para que cada plataforma lo devuelva de la forma adecuada.

Re: Archivos fuera de sitio.

Publicado: 25 Jul 2010, 20:26
por jurrabi
Claro. Esto era sólo salir del paso porque pensaba que queríamos repositarnos este fin de semana...

Ya le había dicho a mis conocidos que iban a poder descasrgar el pac desde la ultima versión de xbmc sin tocar nada :(

Re: Archivos fuera de sitio.

Publicado: 25 Jul 2010, 23:16
por jesus
Y podran... :)