Files
xstreamDownloader/xstream/resources/lib/handler/__pycache__/pluginHandler.cpython-311.pyc
T

171 lines
38 KiB
Plaintext
Raw Normal View History

2026-07-06 14:27:51 +02:00
§
ˆJj(ãóddlZddlZddlZddlZddlmZddlmZddlm Z ddl
m Z ddl m
Z
ddlmZddlmZdd lmZmZmZmZeej d
d ¦«¦«Zd Zd
ZdZGdd¦«ZdS)éN)ÚcConfig)Úlogger)Úutils)ÚcRequestHandler)Úurlparse)ÚDialog)Ú
translatePath)ÚplatformÚ
infoDialogÚgetDNSÚgetRepofromAddonsDBzspecial://home/addons/z%s)z site-maps.cc)z cuii.infozdrei.atÚmagentaÚtelekomÚvodafoneÚalliance4creativityÚstreamingunitycóF|sdS|tvrdStD] }||vrdSŒ
dS)z£Pruefen ob eine Domain als wrongDomain gilt.
Returns True bei exaktem Match in WRONG_DOMAINS_EXACT oder bei
Substring-Match in WRONG_DOMAIN_PATTERNS.
FT)ÚWRONG_DOMAINS_EXACTÚWRONG_DOMAIN_PATTERNS)ÚdomainÚpats úg/home/matthiasberner/Schreibtisch/kodi/xstreamDownloader/xstream/resources/lib/handler/pluginHandler.pyÚ_isWrongDomainr2sKð ð؈uØ
ÕˆtÝðˆØ &ˆ=ˆ=Ø4 à ˆ5ócópeZdZdZdZdZdZdZdZdZ dZ
d „Z d
Z d Z
d Zd
ZdZddZdZdS)ÚcPluginHandlercóxtt¦« d¦«¦«|_tj |jdd¦«|_tt¦« d¦«¦«|_tj |jd¦«|_ tj d|jz¦«tj d|jz¦«tj |jd¦«|_ tj d |j z¦«dS)
pathÚ resourcesz settings.xmlÚprofileÚpluginDBzprofile folder: %szroot folder: %sÚsiteszdefault sites folder: %s)
r rÚ getAddonInfoÚ
rootFolderÚosrÚjoinÚ settingsFileÚ profilePathÚ pluginDBFilerÚdebugÚ
defaultFolder)Úselfs rÚ__init__zcPluginHandler.__init__CÝ'­© ¬ ×(>Ò(>¸vÑ(FÔ(FьݜGŸLšL¨¬¸+À~ÑÔÝ©¬×)?Ò)?À Ñ)JÔ)JÑÔÝœGŸLšL¨Ô)9¸:ÑÔåŒ Ð)¨DÔ,<ÑŒ ЬќWŸ\š\¨$¬/¸7ÑÔÝŒ Ð/°$Ô2DÑErcóŒ| ¦«}d}| |j¦«}|D](}dddddddœ}||vr| ||¦« tj tj |j|dz¦«¦«}n#t$rd}YnwxYw t¦« 
d|z¦«a n#t$rYnwxYw||vs||dkstrWtjdt|¦«z¦«| ||j¦«}|rt|d <||d<|||<d
}Œ*g}|D]} | |vr| | ¦«Œ|D]}
||
=Œ|s|r)| |¦«tjd ¦«| ¦«S) NFÚr)ÚnameÚ
identifierÚiconrÚ globalsearchÚmodifiedú.pyÚglobal_search_r4zload plugin Informations for r3TzPluginDB informations updated.)Ú_cPluginHandler__getPluginDBÚ'_cPluginHandler__getFileNamesFromFolderr+Úupdater%rÚgetmtimer&ÚOSErrorrÚ
getSettingÚglobalSearchStatusÚ Exceptionrr*ÚstrÚ_cPluginHandler__getPluginDataÚappendÚ_cPluginHandler__updatePluginDBÚgetAvailablePluginsFromDB) r,r!r9Ú fileNamesÚfileNameÚpluginÚmodTimeÚ
pluginDataÚ deletionsÚpluginIDÚids rÚgetAvailablePluginsz"cPluginHandler.getAvailablePluginsOs'à×'ˆàˆØ×1°$Ô2DÑEˆ Ø "ˆ °¸BÈ"Ð^`ÐnoÐpˆ˜
˜h 
Ýœ'×*­2¬7¯<ª<¸Ô8JÈHÐW\ÑL\Ñ+]Ô+]Ñ^øÝð
ð
ð
Øð
øøøð
Ý%,¡Y¤Y×%9Ò%9Ð:JÈXÑ:UÑ%VÔ%VÐ"øÝð
ð
ð
Øð
øøøà˜'¨7°V¸JÔ5GÒ+GÐ+GÕK]Ð+GÝ Ð<½sÀ8¹}¼}Ñ!×1°(¸DÔ<NÑO
Øð"Ý1CJ˜.Ø-4J˜*Ø)3H˜!Fùàˆ Ø ð +ˆHؘyÐ× Ò  Ñ*øØð ð ˆBؘ Ø ð ; × !  ŒLÐ ×/s%ÁAB%Â% B4Â3B4Â8$CÃ
C*Ã)C*cóˆg}tj |jddd¦«}| ¦«}|D]}||}d|z}||d<d|vr*tj ||d¦«|d<nd|d<t ¦« |¦«dkr| |¦«Œ‚|S) NrÚartr"z plugin_%srKr2r/Útrue)r%rr&r$r7rr<rA)r,ÚpluginsÚ
iconFolderr!rJrFÚpluginSettingsNames rrCz(cPluginHandler.getAvailablePluginsFromDBx؈ݔW—\’\ $¤/°;ÀÀwÑ
Ø×'ˆà ð
'ˆ˜'ˆFØ!,¨xÑ!7Ð Ø#ˆF4‰LؘÐÐÝ!#¤§¢¨j¸¼.Ñ!IÔ!Ivà!#vå‰yŒy×#Ð$6Ñ7¸6Ò˜&øØˆrcóütj |j¦«stj|j¦«t |jd¦«}tj||¦«|  ¦«dS)w)
r%rÚexistsr(ÚmakedirsÚopenr)ÚjsonÚdumpÚclose)r,ÚdataÚfiles rÚ__updatePluginDBzcPluginHandler.__updatePluginDBscÝŒw~Š~˜dÔ ŒK˜Ô % sÑÝ Œ ÑÔÐØ
Š
Œ ˆ ˆ ˆ rcóLtj |j¦«st ¦«St |jd¦«} t
j|¦«}n2#t$r%tj
d¦«t ¦«}YnwxYw|  ¦«|S)rz(pluginDB seems corrupt, creating new one) r%rrUr)ÚdictrWrXÚloadÚ
ValueErrorrÚerrorrZ)r,r\r[s rÚ
__getPluginDBzcPluginHandler.__getPluginDB“s—ÝŒw~Š~˜dÔ Ý‘6”6ˆMÝ% sÑð Ý”9˜T‘?”?ˆDˆDøÝð ð ð Ý ŒLÐ ‘6”6ˆDˆDˆDð øøøð
Š
Œ ˆ ؈ sÁ AÁ,B
 B
có(ddl}ddl}ddlmcm}|j |j¦«sdS |jd}| |j|¦«|  |j¦«}| 
¦«}d}|  d¦«D]} |   d¦«dkr| }nŒ |sdSd| 
¦«D¦«Šdd gŠˆfd
D¦«Šˆfd D¦«}
|
 ¦«|
z} |  d ¦«D]4} |   d¦«}
|
d
kr| | | |¦«Œ5ddl}| ¦«}| |d¬¦«| ¦«}| dd¦«}t+|jdd¬¦«5}| d|z¦«ddd¦«n #1swxYwYt-jd|j¦«dS#t2$rd}|j |¦«r| ||j¦«t-jdt7|¦«¦«Yd}~dSd}~wwxYw)uÿ
Aktualisiert die settings.xml basierend auf den verfügbaren Plugins.
Entfernt Plugins, die nicht mehr existieren, und behält die saubere Formatierung bei.
Args:
pluginDB: Dictionary mit Plugin-Informationen
rNz.backupÚsectionrKzplugin.video.xstreamcóg|]
}|dk¯|Œ S)Ú globalSearch©)Ú.0Úps rú
<listcomp>z3cPluginHandler.__updateSettings.<locals>.<listcomp>Âs"Ð SÐ SÐ S q¸qÀNÒ?RÐ?R Ð?RÐ?RÐ?RrÚ
filmpalastÚinternetarchivecóg|]}|v¯|Œ Sriri)rjrkÚavailable_pluginss €rrlz3cPluginHandler.__updateSettings.<locals>.<listcomp>Æs$ø€ÐT Q¸QÐBSÐ=SÐ=S˜qÐ=SÐ=SÐ=Srcóg|]}|v¯|Œ Sriri)rjrkÚspecial_pluginss €rrlz3cPluginHandler.__updateSettings.<locals>.<listcomp>És-ø€ð; AØ!"¨/Ð!9Ð!9ð Ø!9Ð!9Ð!9rÚcategoryÚ
indexsite1Úunicode)Úencodingz</dependencies>&gt;z</dependencies>rTzutf-8z'<?xml version='1.0' encoding='utf-8'?>
z9settings.xml erfolgreich aktualisiert. Plugins entfernt: z,Fehler beim Aktualisieren der settings.xml: )r%ÚshutilÚxml.etree.ElementTreeÚetreeÚ ElementTreerrUr'Úcopy2ÚparseÚgetrootÚfindallÚgetÚkeysÚsortÚ_update_category_pluginsÚioÚStringIOÚwriteÚgetvalueÚreplacerWrr*Ú_removed_pluginsr>rcr?)r,r!r%rwÚETÚ backup_fileÚtreeÚrootÚxstream_sectionrfÚnormal_pluginsÚ all_pluginsrsÚ category_idrƒÚ
xml_stringÚcontentÚerprrs @@rÚ__updateSettingszcPluginHandler.__updateSettingsŸskøø€ð ˆ ˆ ˆ ؈
ˆ
ˆ
ØŒw~Š~˜dÔ Ø ˆ= Rà7ˆ LŠL˜Ô*¨KÑ —8’8˜DÔ.ˆ—<<>”>ˆ#ˆŸ<š<¨ Ñ
ð
Ø—;;˜$Ð(>Ò>Ø&-
Øð!TÐ S¨H¯MªM©O¬OÐ SÑ SÔ SÐ ð ,Ð->Ð?ˆT¨/ÐTˆOð;Ð):ð;ˆ
× Ò Ñ *¨NÑ:ˆKð3°JÑ
Sð
SØ&Ÿlšl¨4Ñ0 à ×1°(¸KÈÑRøð
ˆIˆIˆIØŸšœˆJØ JŠJz¨IˆJÑ  ×+ˆ—ooÐ&;Ð=NÑOˆ°wÐ
RÀ1ØÐÑ
Rð
Rð
Rñ
Rô
Rð
Rð
Rð
Rð
Rð
Rð
Røøøð
Rð
Rð
Rð
Rõ
ŒLÐlÐUYÔUjÐ møåð Rð Rð RàŒw~Š~˜
 ˜[¨$Ô*;Ñ ŒLÐÈAÉÌÐ Qøøøøð  RøøøsD¶B H#ÃDH#ÇG:Ç. H#Ç:G>Ç>H#ÈG>ÈH#È#
JÈ-AJ Ê Jcóæg|_g}| d¦«D]J}| d¦«}||vr/| |¦«|j |¦«ŒK|D]}| |¦«Œd| d¦«D¦«}|D]K}|}||vrC||vr?|dvr| ||||¦«Œ.| ||||¦«ŒLdS)uH
Aktualisiert die Plugin-Gruppen in einer Kategorie.
Entfernt Plugins, die nicht in der plugin_list sind.
Args:
category: XML-Element der Kategorie
plugin_list: Liste der verfügbaren Plugins für diese Kategorie
pluginDB: Dictionary mit Plugin-Informationen
ÚgrouprKcó8g|]}| d¦«ŒS)rK)r)rjÚgs rrlz;cPluginHandler._update_category_plugins.<locals>.<listcomp>s"ÐM¨a˜aŸeše D™kœkÐMr)ÚdokusÚ kids_tubermrnN)rˆr~rrAÚremoveÚ_add_special_pluginÚ_add_normal_plugin) r,rsÚ plugin_listr!Úgroups_to_remover—Úgroup_idÚexisting_group_idsÚ plugin_ids rrz'cPluginHandler._update_category_pluginsísEð!#ˆÔðÐØ×% gÑ 7ˆEØ—y’y ˆHà˜{Ð ×ÑÔ,¨XÑ6øð #ˆ OŠO˜ NÐM°8×3CÒ3CÀGÑ3LÔ3LÐà Zð Zˆ ˆHàРРÐ$[Ð׸9ÀhÈyÔFYÑ׸)ÀXÈiÔEXÑYøð Zð Zrcó¨ddlmcm}| d|¦«}| |d||¬¦«}| |dd|dd d
¬ ¦«}| |d ¦«}d
|_| |d¦«} d| _| |dd¬¦«}
| |dd|dd¬¦«}| |d ¦«}d
|_| |d¦«} d| _| |d¦«} | | dddd|¬¦«} d| _| |dd¬¦«}
dS)
Fügt ein normales Plugin zur Kategorie hinzu.
Args:
category: XML-Element der Kategorie
plugin_id: ID des Plugins
plugin_data: Daten des Plugins
rNr0r—©rKÚlabelÚsettingÚplugin_ÚbooleanÚ30050Ú30411©rKÚtyper¦ÚhelpÚlevelÚdefaultÚTrueÚcontrolÚtoggle©r­r6Ú30052©rKr­Ú dependenciesÚ
dependencyÚenableú!is©r­Úoperatorr§ÚFalse©rxryrzrÚ
SubElementÚtext)
r,rsÚ plugin_datar‰Ú plugin_namer—r¸s
rz!cPluginHandler._add_normal_plugins„ð"—oo f¨iÑ8ˆ ð
˜°IÀ[
Ñð—--  yÐ5J¸yÐ5JÐ5JÐQZÐbiÐpwxˆØ
˜g /ˆØˆŒ
Ø—-’- ¨Ñ؈Œ Ø—-’- ¨¸ð—--  yÐ5QÀiÐ5QÐ5QÐXaÐipqˆØ
˜g /ˆØˆŒ
Ø—-’- ¨Ñ؈Œ à—}’} W¨nÑ Ø—]] ÀHÐW\Ø+@°YÐ+@Ð+@ðBôBˆ
à!ˆ
Œà—-’- ¨¸ˆˆrcó¤ ddlmcm}dddddœ}| || d|¦«¦«}| |d ||¬
¦«}| |d d |d
dd¬¦«}| |d¦«} d| _| |d¦«}
|dvrdnd|
_| |dd¬¦«} |dvrÇ| |d |dddd¬¦«}| |d¦«} d| _| |d¦«} d | _| |dd!d¬"¦«} | | d#¦«}
d$|
_| |d%¦«}| |d&d'd |¬(¦«}d$|_|dvrdnd}| |d d)|d
d*¬+¦«}| |d¦«} d| _| |d¦«}
|dvrdnd|
_|r| |d'¦«}||_| |d%¦«}| |d&d,d-d |¬.¦«}d|_| |dd¬¦«} |d/krç| |d d |d0d
d1¬+¦«}| |d¦«} d2| _| |d¦«}
d|
_| |d%¦«}| |d&d,d-d |¬.¦«}d3|_| |d&d'd-d |¬.¦«}d3|_| |dd¬¦«} | |d d |d4d5d6d¬¦«}| |d¦«} d2| _| |d¦«}
| |d7¦«}| |d8¦«}d$|_| |d%¦«}| |d&d,d-d |¬.¦«}d3|_| |d&d'd-d |¬.¦«}d3|_| |dd9d5¬"¦«} | | d:¦«}d6|_|d;vrs| |d d |d<d5d=d¬¦«}| |d'¦«}d3|_| |d¦«}
d$|
_| |dd¬¦«} dSdS)>u
Fügt ein spezielles Plugin (dokus, kids_tube, filmpalast, internetarchive) zur Kategorie hinzu.
Args:
category: XML-Element der Kategorie
plugin_id: ID des Plugins
plugin_data: Daten des Plugins
r30505Ú30702Ú30712Ú30719)rmrnrr0r—)rnr)rz.youtubeÚactionÚ30431r/r[z(Addon.OpenSettings(plugin.video.youtube)Úbutton)r­ÚformatrZrOr¸Úvisible)r­r6rmÚ _checkDomainÚ30277Úfalseú.domainÚstringÚ30278Ú constraintsÚ
allowemptyÚeditÚheading)rmrnÚ_statusÚDummyr¿)r,rsr‰Ú label_codesr¦r—r[rZr¸ÚvisrÕs rrz"cPluginHandler._add_special_plugin<ðØ ð 
ð
ˆ ð  ¨;¯?ª?¸6À9Ñ+MÔ+MÑð