Differenza fra plugin e Estensioni

Indaco

Active member
Ciao a tutti, ma c'è differenza fra Plugin ed estensioni (oltra al fatto di averli visualizzati ed utilizzabili da due menu diversi)?
Ho creato un banale .py e seguendo indicazioni che avevo trovato in rete, sono riuscito a farlo visualizzare o solo nelle estensioni o in entrambi i pannelli.
Mi chiedevo invece se, per plugin "seri", ci fosse qualche differenza fra le due cose.
ciao e grazie
i.
 

Logan

coder
Staff member
Administrator
Estensioni è solo un menu, i plugin possono essere inseriti o meno nel menu estensioni o solo nel menu principale. Dove viene visualizzato il plugin viene gestito da un'apposita funzione nel plugin stesso. Per fare un plugin per E2 devi studiare perchè ci sono delle funzioni specifiche da inserire.
 

Indaco

Active member
Grazie per la risposta, in sostanza mi stai dicendo che la differenza è nella visualizzazione nei menu

> Dove viene visualizzato il plugin viene gestito da un'apposita funzione nel plugin stesso.
Empiricamente ho capito che inserendo il codice seguente viene visualizzato solo nel menu estensioni (inserendo anche la parte relativa a "PLUGINMENU" viene visualizzato anche nell'elenco dei plugin)
def Plugins(**kwargs):
return PluginDescriptor(
name="TestPlugin",
description="Prova Plugin",
where = PluginDescriptor.WHERE_EXTENSIONSMENU,
icon="../ihad_tut.png",
fnc=main)

> Per fare un plugin per E2 devi studiare perchè ci sono delle funzioni specifiche da inserire.
Si, ho cominciato cercandomi qualche tutorial che mi ha aiutato a capire come iniziare; poi recuperando i sorgenti di qualche plugin, ho cercato di capirci qualcosa.
In effetti chiamare plugin ciò che ho fatto io è un po' pomposo, però nella sua banalità funziona, quindi almeno i principi fondamentali di partenza sono giusti

ciao e grazie ancora
i.
 

s8un3no

Active member
Il mimimo simdacale per farlo vedere sia tra i plugin che tra le estensioni
# in questo modo mostra il plugin sia nella lista dei plugin sia nelle estensioni
def Plugins(**kwargs):
return [PluginDescriptor(name="plugingtest", description=_("semplice test del plugin"), where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main),
PluginDescriptor(name="plugingtest", description=_("semplice test del plugin"), where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)]
 

Indaco

Active member
Il mimimo simdacale per farlo vedere sia tra i plugin che tra le estensioni
Domanda da ignorante..... è possibile provare a disassemblare un .pyo per ottenere il sorgente .py?
Astenersi dal ridere pf, sono un super pivello in materia :)
grazie
i.
 

B.D.

Active member
Domanda da ignorante..... è possibile provare a disassemblare un .pyo per ottenere il sorgente .py?
Astenersi dal ridere pf, sono un super pivello in materia :)
grazie
i.
Una volta, tempi gloriosi, esistevano i decompilatori, adesso non so.
 

Indaco

Active member
Per fare un plugin per E2 devi studiare perchè ci sono delle funzioni specifiche da inserire.
Ciao, ancora io..... hai dritte da darmi sul punto di partenza? Corso Python? Altro?
Non sono uno sviluppatore, nel tempo mi sono arrabattato con un po' di VB, JS, VBS e shell scripting (qualche script fatto da me che gira nel box), ma sono un super neofita
grazie
i.
 

Logan

coder
Staff member
Administrator
ci sono migliaia di tutorial python online non dovresti avere difficoltà a trovarne uno che risponde alle tue esigenze.
 

s8un3no

Active member
Domanda da ignorante..... è possibile provare a disassemblare un .pyo per ottenere il sorgente .py?
Astenersi dal ridere pf, sono un super pivello in materia :)
grazie
i.
C'è un piccolo programma a linea di comando, si chiama uncompyle6, lo installi con:
pip install uncompyle6
Poi da riga di comando dai:
uncompyle6 > nomefile.py
Purtroppo non funziona con le versioni py3 e, sembra, che lo sviluppatore non voglia aggiornarlo

P. S. In rete si trovano tanti libri in pdf, se giri li trovi anche a costo 0
 

Indaco

Active member
C'è un piccolo programma a linea di comando, si chiama uncompyle6, lo installi con:
<CUT>
Grazie, devo reinstallarmi una macchina linux e poi ci gioco :)
Oggi ho recuperato Easy Python Decompiler (per win), appena ho un attimo provo anche questo
grazie ancora e ciao
 
Last edited:

Indaco

Active member
Fammi sapere se decompila anche py3
Ciao, ho provato Easy Python decompiler (windows) : supporta fino alla versione 3.4; il programma è vecchio ma non ho trovato versioni più recenti
Detto questo: ho provato a fare questi passagi (partendo da un plugin in Python 2) in ambiente win
- ho decompilato tutti i pyo presenti nel pacchetto del plugin, con il tool di cui sopra
- ho rigenerato i .py per python3 utilizzando "2to3"
- ho ricompilato i .py rigenerati (qualcosa ho dovuto sistemare a mano) finchè non ho avuto nessun errore
Inserendo i .pyc compilati nel pacchetto del plugin, dal log vedo che in qualche modo esiste un riferimento al percorso sul filesystem dove ho compilato, quindi ho inserito direttamente i .py; vedo che risulta compilato solo il "__init__.py" e dal log vedo che:

< 2147.2630> [PluginComponent] Plugin Extensions/camoFS failed to load: No module named 'Plugins.Extensions.<nomeplugin>.Tools'
< 2147.2646> Traceback (most recent call last):
< 2147.2648> File "/usr/lib/enigma2/python/Components/PluginComponent.py", line 56, in readPluginList
< 2147.2649> File "/usr/lib/enigma2/python/Tools/Import.py", line 2, in my_import
< 2147.2649> File "/usr/lib/enigma2/python/Plugins/Extensions/<nomeplugin>/__init__.py", line 3, in <module>
from .Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_LANGUAGE
< 2147.2651> ModuleNotFoundError: No module named 'Plugins.Extensions.<nomeplugin>.Tools'

Io non ci capisco un accidente; quel che è certo è che l'installazione originale del plugin non si porta dietro null'altro, infatti in tutte le versioni precedenti di OBH ho solo capiato la directory all'interno di ...\....\...\Extensions e funzionava

Se hai tempo e voglia di provare a darmi una mano, dammi un ok e ti scrivo in privato; in ogni caso grazie per le dritte che mi hai dato fino ad ora
ciao
i.
 

s8un3no

Active member
In python 3 anche il richiamo di alcuni moduli è cambiato. Vedrai che Extensions non sta più dentro Plugins. Io apro un plugin in py3 funzionante e vedo come lui importa quel modulo
 

Indaco

Active member
In python 3 anche il richiamo di alcuni moduli è cambiato. Vedrai che Extensions non sta più dentro Plugins. Io apro un plugin in py3 funzionante e vedo come lui importa quel modulo
Non sono venuto a capo di nulla in pratica :-( ...... posso scriverti in privato?
 

nunigaia

Staff member
Moderator
Ciao, ho provato Easy Python decompiler (windows) : supporta fino alla versione 3.4; il programma è vecchio ma non ho trovato versioni più recenti
Detto questo: ho provato a fare questi passagi (partendo da un plugin in Python 2) in ambiente win
- ho decompilato tutti i pyo presenti nel pacchetto del plugin, con il tool di cui sopra
- ho rigenerato i .py per python3 utilizzando "2to3"
- ho ricompilato i .py rigenerati (qualcosa ho dovuto sistemare a mano) finchè non ho avuto nessun errore
Inserendo i .pyc compilati nel pacchetto del plugin, dal log vedo che in qualche modo esiste un riferimento al percorso sul filesystem dove ho compilato, quindi ho inserito direttamente i .py; vedo che risulta compilato solo il "__init__.py" e dal log vedo che:

< 2147.2630> [PluginComponent] Plugin Extensions/camoFS failed to load: No module named 'Plugins.Extensions.<nomeplugin>.Tools'
< 2147.2646> Traceback (most recent call last):
< 2147.2648> File "/usr/lib/enigma2/python/Components/PluginComponent.py", line 56, in readPluginList
< 2147.2649> File "/usr/lib/enigma2/python/Tools/Import.py", line 2, in my_import
< 2147.2649> File "/usr/lib/enigma2/python/Plugins/Extensions/<nomeplugin>/__init__.py", line 3, in <module>
from .Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_LANGUAGE
< 2147.2651> ModuleNotFoundError: No module named 'Plugins.Extensions.<nomeplugin>.Tools'

Io non ci capisco un accidente; quel che è certo è che l'installazione originale del plugin non si porta dietro null'altro, infatti in tutte le versioni precedenti di OBH ho solo capiato la directory all'interno di ...\....\...\Extensions e funzionava

Se hai tempo e voglia di provare a darmi una mano, dammi un ok e ti scrivo in privato; in ogni caso grazie per le dritte che mi hai dato fino ad ora
ciao
i.
<nomeplugin> ?

Ma sicuramente non sarà l'unico problema! :mad:
 
Top