("UnboundLocalError: local variable 'oResponce' referenced before assignment",

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nikkenolle
User
Beiträge: 5
Registriert: Mittwoch 26. Januar 2022, 07:50

Hallo,

seit Stunden bin ich am googlen und genauso schlau, wie vorher :-(

Ich bin jetzt auf dieses Forum gestoßen und hoffe, hier kann mir jemand helfen.

Folgende Fehlermeldung tritt auf:

("UnboundLocalError: local variable 'oResponce' referenced before assignment",
'/plugin.video.xstream/resources/lib/handler/requestHandler.py",
line 164, in request')

In Zeile 164 steht folgendes:
self._sResponseHeader = oResponse.info()

wie bzw. was muß ich in der Zeile ändern, daß mein plugin wieder läuft?

Ich habe vom Programmieren Null Ahnung und hoffe, daß mir jemand kann bzw. wird ;-)

Ich würde mich echt sehr darüber freuen.

Ganz liebe Grüße
Nicole - Nikkenolle
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Nikkenolle,

Du hast die Variable "oResponce" wahrscheinlich außerhalb der Methode mit einem Wert belegt, und überschreibst sie innerhalb der Methode mit einem neuen Wert. Davor versuchst du aber schon auf sie zuzugreifen, was zu dem Fehler führt.

Ich kann nur sagen, dass du lernen must, wie man Variablen richtig an Funktionen und Methoden übergibt. Denn Variablen innerhalb von Funktion zu verwenden, die außerhalb definiert sind, führt zu Problemen.
Das Problem liegt also nicht direkt in Zeile 164. Dort macht es sich nur bemerkbar.

(wobei, ... wenn ich mir den Pfad der Meldung ansehe, bin ich mir nicht mehr ganz sicher ob meine Analyse korrekt ist)
Daher solltest du immer den gesamten Quellcode und Fehlermeldung zeigen, sonst ist es schwer etwas konkreteres zu sagen.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

@Nikkenolle: Wenn man die Zeile googelt, dann findet man das venom-xbmc-addon. Und die von dir gezeigten Zeile finde ich dort nicht in der aktuellen Version. Vielleicht musst du das addon entsprechend upadten.
imonbln
User
Beiträge: 149
Registriert: Freitag 3. Dezember 2021, 17:07

Nikkenolle hat geschrieben: Mittwoch 26. Januar 2022, 08:05 Folgende Fehlermeldung tritt auf:

("UnboundLocalError: local variable 'oResponce' referenced before assignment",
'/plugin.video.xstream/resources/lib/handler/requestHandler.py",
line 164, in request')

In Zeile 164 steht folgendes:
self._sResponseHeader = oResponse.info()
Die Fehlermeldung sagt aus, dass oResponse in der Zeile 164 noch nicht definiert ist. Da wir denn Code von requestHandler.py nicht kennen, ist mehr ein Raten als ein Helfen, was das Problem sein könnte. Sieh dir mal an wo (ob) oResponse in der Methode um die Zeile 164 definiert wird, vielleicht musst du dann nur ein paar Statements in eine andere Reihenfolge bringen und das Problem ist gelöst. Aber wie gesagt, um dir wirklich helfen zu können brauchen wir etwas Sourcecode.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Der Code scheint von einem Kodi-Plugin zu stammen: https://github.com/streamxstream/plugin ... Handler.py
Am besten, du wendest dich an dessen Entwickler.
In specifications, Murphy's Law supersedes Ohm's.
imonbln
User
Beiträge: 149
Registriert: Freitag 3. Dezember 2021, 17:07

pillmuncher hat geschrieben: Mittwoch 26. Januar 2022, 08:59 Der Code scheint von einem Kodi-Plugin zu stammen: https://github.com/streamxstream/plugin ... Handler.py
Am besten, du wendest dich an dessen Entwickler.
sparrow hat geschrieben: Mittwoch 26. Januar 2022, 08:56 @Nikkenolle: Wenn man die Zeile googelt, dann findet man das venom-xbmc-addon. Und die von dir gezeigten Zeile finde ich dort nicht in der aktuellen Version. Vielleicht musst du das addon entsprechend upadten.
Und deshalb ist es wichtig zu sagen, welcher Sourcecode es ist, um das Problem zu lösen. Wir haben schon zwei Vermutungen und ich bin sicher es wird noch anderen Code geben, der ein Response-Objekt hat. Aber letzten Endes weiß es nur @Nikkenolle, was Ihr Probleme macht.
Nikkenolle
User
Beiträge: 5
Registriert: Mittwoch 26. Januar 2022, 07:50

Hallo,

wow, soooo vielen Antworten, erst einmal vielen Dank dafür.


@rogerb
... dass du lernen must, wie man Variablen richtig an Funktionen und Methoden übergibt. Denn Variablen innerhalb von Funktion zu verwenden, die außerhalb definiert sind, führt zu Problemen.
ich verstehe überhaupt nichts von Variablen usw., bin froh, daß ich die Datei mit Notpad lesen, kopieren und ersetzen konnte ;-)

hier die Datei (welche du hoffentlich mit Quellcode meinst (wußte nicht, wie man eine Datei anhängt)).

Code: Alles auswählen

# -*- coding: utf-8 -*-
from resources.lib.config import cConfig
from resources.lib.tools import logger
from resources.lib import common
import io, gzip, time, xbmcgui, re
import socket, os, sys, hashlib, json
try:
    from urlparse import urlparse
    from urllib import quote, urlencode
    from urllib2 import HTTPError, URLError, HTTPHandler, HTTPSHandler, HTTPCookieProcessor, build_opener, Request, HTTPRedirectHandler
    from cookielib import LWPCookieJar, Cookie
    from httplib import HTTPException
except ImportError:
    from urllib.parse import quote, urlencode, urlparse
    from urllib.error import HTTPError, URLError
    from urllib.request import HTTPHandler, HTTPSHandler, HTTPCookieProcessor, build_opener, Request, HTTPRedirectHandler
    from http.cookiejar import LWPCookieJar, Cookie
    from http.client import HTTPException


class cRequestHandler:
    def __init__(self, sUrl, caching=True, ignoreErrors=False, compression=True, jspost=False):
        self._sUrl = sUrl
        self._sRealUrl = ''
        self._USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0'
        self._aParameters = {}
        self._headerEntries = {}
        self._profilePath = common.profilePath
        self._cachePath = ''
        self._cookiePath = ''
        self._Status = ''
        self._sResponseHeader = ''
        self.ignoreDiscard(False)
        self.ignoreExpired(False)
        self.caching = caching
        self.ignoreErrors = ignoreErrors
        self.compression = compression
        self.jspost = jspost
        self.cacheTime = int(cConfig().getSetting('cacheTime', 600))
        self.requestTimeout = int(cConfig().getSetting('requestTimeout', 10))
        self.removeBreakLines(True)
        self.removeNewLines(True)
        self.__setDefaultHeader()
        self.setCachePath()
        self.__setCookiePath()
        socket.setdefaulttimeout(self.requestTimeout)

    def getStatus(self):
        return self._Status

    def removeNewLines(self, bRemoveNewLines):
        self.__bRemoveNewLines = bRemoveNewLines

    def removeBreakLines(self, bRemoveBreakLines):
        self.__bRemoveBreakLines = bRemoveBreakLines

    def addHeaderEntry(self, sHeaderKey, sHeaderValue):
        self._headerEntries[sHeaderKey] = sHeaderValue

    def getHeaderEntry(self, sHeaderKey):
        if sHeaderKey in self._headerEntries:
            return self._headerEntries[sHeaderKey]

    def addParameters(self, key, value, Quote=False):
        if not Quote:
            self._aParameters[key] = value
        else:
            self._aParameters[key] = quote(str(value))

    def getResponseHeader(self):
        return self._sResponseHeader

    def getRealUrl(self):
        return self._sRealUrl

    def getRequestUri(self):
        return self._sUrl + '?' + urlencode(self._aParameters)

    def __setDefaultHeader(self):
        self.addHeaderEntry('User-Agent', self._USER_AGENT)
        self.addHeaderEntry('Accept-Language', 'de,en-US;q=0.7,en;q=0.3')
        self.addHeaderEntry('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8')
        if self.compression:
            self.addHeaderEntry('Accept-Encoding', 'gzip, deflate')

    def request(self):
        self._sUrl = self._sUrl.replace(' ', '+')
        if self.caching and self.cacheTime > 0:
            sContent = self.readCache(self.getRequestUri())
            if sContent:
                return sContent
        cookieJar = LWPCookieJar(filename=self._cookiePath)
        try:
            cookieJar.load(ignore_discard=self.__bIgnoreDiscard, ignore_expires=self.__bIgnoreExpired)
        except Exception as e:
            logger.debug(e)
        if self.jspost:
            if sys.version_info[0] == 2:
                sParameters = json.dumps(self._aParameters)
            else:
                sParameters = json.dumps(self._aParameters).encode()
        else:
            if sys.version_info[0] == 2:
                sParameters = urlencode(self._aParameters, True)
            else:
                sParameters = urlencode(self._aParameters, True).encode()

        handlers = [HTTPHandler(), HTTPSHandler(), HTTPCookieProcessor(cookiejar=cookieJar), RedirectFilter()]
        opener = build_opener(*handlers)
        oRequest = Request(self._sUrl, sParameters if len(sParameters) > 0 else None)

        for key, value in self._headerEntries.items():
            oRequest.add_header(key, value)
        if self.jspost:
            oRequest.add_header('Content-Type', 'application/json')
        cookieJar.add_cookie_header(oRequest)
        try:
            oResponse = opener.open(oRequest)
        except HTTPError as e:
            if e.code == 503:
                oResponse = None
                if not oResponse:
                    logger.error('Failed Cloudflare aktiv Url: ' + self._sUrl)
            if e.code == 403:
                data = e.fp.read()
                if 'DDOS-GUARD' in str(data):
                    opener = build_opener(HTTPCookieProcessor(cookieJar))
                    opener.addheaders = [('User-agent', self._USER_AGENT), ('Referer', self._sUrl)]
                    response = opener.open('https://check.ddos-guard.net/check.js')
                    if sys.version_info[0] == 2:
                        content = response.read()
                    else:
                        content = response.read().decode('utf-8').encode('utf-8', 'replace').decode('utf-8')
                    url2 = re.findall("Image.*?'([^']+)'; new", content)
                    url3 = urlparse(self._sUrl)
                    url3 = '%s://%s/%s' % (url3.scheme, url3.netloc, url2[0])
                    opener = build_opener(HTTPCookieProcessor(cookieJar))
                    opener.addheaders = [('User-agent', self._USER_AGENT), ('Referer', self._sUrl)]
                    opener.open(url3).read()
                    opener = build_opener(HTTPCookieProcessor(cookieJar))
                    opener.addheaders = [('User-agent', self._USER_AGENT), ('Referer', self._sUrl)]
                    oResponse = opener.open(self._sUrl, sParameters if len(sParameters) > 0 else None)
                    if not oResponse:
                        if not self.ignoreErrors:
                            logger.error('Failed DDOS-GUARD Url: ' + self._sUrl)
                            return ''
            elif not self.ignoreErrors:
                xbmcgui.Dialog().ok('xStream', 'Fehler beim Abrufen der Url: {0} {1}'.format(self._sUrl, str(e)))
                logger.error('HTTPError ' + str(e) + ' Url: ' + self._sUrl)
                return ''
            else:
                oResponse = e
        except URLError as e:
            if not self.ignoreErrors:
                xbmcgui.Dialog().ok('xStream', str(e.reason))
            logger.error('URLError ' + str(e.reason) + ' Url: ' + self._sUrl)
            return ''
        except HTTPException as e:
            if not self.ignoreErrors:
                xbmcgui.Dialog().ok('xStream', str(e))
            logger.error('HTTPException ' + str(e) + ' Url: ' + self._sUrl)
            return ''

        self._sResponseHeader = oResponse.info()
        if self._sResponseHeader.get('Content-Encoding') == 'gzip':
            sContent = gzip.GzipFile(fileobj=io.BytesIO(oResponse.read())).read()
            if sys.version_info[0] == 3:
                sContent = sContent.decode('utf-8').encode('utf-8', 'replace').decode('utf-8')
        else:
            if sys.version_info[0] == 2:
                sContent = oResponse.read()
            else:
                sContent = oResponse.read().decode('utf-8').encode('utf-8', 'replace').decode('utf-8')
        if 'lazingfast' in sContent:
            bf = cBF().resolve(self._sUrl, sContent, cookieJar, self._USER_AGENT, sParameters)
            if bf:
                sContent = bf
            else:
                logger.error('Failed BF Url: ' + self._sUrl)
        try:
            cookieJar.save(ignore_discard=self.__bIgnoreDiscard, ignore_expires=self.__bIgnoreExpired)
        except Exception as e:
            logger.error('Failed save cookie: %s' % e)
        if self.__bRemoveNewLines:
            sContent = sContent.replace('\n', '').replace('\r\t', '')
        if self.__bRemoveBreakLines:
            sContent = sContent.replace(' ', '')
        self._sRealUrl = oResponse.geturl()
        self._Status = oResponse.getcode() if self._sUrl == self._sRealUrl else '301'
        oResponse.close()
        if self.caching and self.cacheTime > 0:
            self.writeCache(self.getRequestUri(), sContent)
        return sContent

    def __setCookiePath(self):
        cookieFile = os.path.join(self._profilePath, 'cookies')
        if not os.path.exists(cookieFile):
            os.makedirs(cookieFile)
        if 'dummy' not in self._sUrl:
            cookieFile = os.path.join(cookieFile, urlparse(self._sUrl).netloc.replace('.', '_') + '.txt')
            if not os.path.exists(cookieFile):
                open(cookieFile, 'w').close()
            self._cookiePath = cookieFile

    def getCookie(self, sCookieName, sDomain=''):
        cookieJar = LWPCookieJar()
        try:
            cookieJar.load(self._cookiePath, self.__bIgnoreDiscard, self.__bIgnoreExpired)
        except Exception as e:
            logger.error(e)
        for entry in cookieJar:
            if entry.name == sCookieName:
                if sDomain == '':
                    return entry
                elif entry.domain == sDomain:
                    return entry
        return False

    def setCookie(self, oCookie):
        cookieJar = LWPCookieJar()
        try:
            cookieJar.load(self._cookiePath, self.__bIgnoreDiscard, self.__bIgnoreExpired)
            cookieJar.set_cookie(oCookie)
            cookieJar.save(self._cookiePath, self.__bIgnoreDiscard, self.__bIgnoreExpired)
        except Exception as e:
            logger.error(e)

    def ignoreDiscard(self, bIgnoreDiscard):
        self.__bIgnoreDiscard = bIgnoreDiscard

    def ignoreExpired(self, bIgnoreExpired):
        self.__bIgnoreExpired = bIgnoreExpired

    def setCachePath(self):
        cache = os.path.join(self._profilePath, 'htmlcache')
        if not os.path.exists(cache):
            os.makedirs(cache)
        self._cachePath = cache

    def readCache(self, url):
        content = ''
        if sys.version_info[0] == 2:
            h = hashlib.md5(url).hexdigest()
        else:
            h = hashlib.md5(url.encode('utf8')).hexdigest()
        cacheFile = os.path.join(self._cachePath, h)
        fileAge = self.getFileAge(cacheFile)
        if 0 < fileAge < self.cacheTime:
            try:
                if sys.version_info[0] == 2:
                    with open(cacheFile, 'r') as f:
                        content = f.read()
                else:
                    with open(cacheFile, 'rb') as f:
                        content = f.read().decode('utf8')
            except Exception:
                logger.error('Could not read Cache')
            if content:
                logger.info('read html for %s from cache' % url)
                return content
        return ''

    def writeCache(self, url, content):
        try:
            if sys.version_info[0] == 2:
                h = hashlib.md5(url).hexdigest()
                with open(os.path.join(self._cachePath, h), 'w') as f:
                    f.write(content)
            else:
                h = hashlib.md5(url.encode('utf8')).hexdigest()
                with open(os.path.join(self._cachePath, h), 'wb') as f:
                    f.write(content.encode('utf8'))
        except Exception:
            logger.error('Could not write Cache')

    @staticmethod
    def getFileAge(cacheFile):
        try:
            return time.time() - os.stat(cacheFile).st_mtime
        except Exception:
            return 0

    def clearCache(self):
        files = os.listdir(self._cachePath)
        for file in files:
            os.remove(os.path.join(self._cachePath, file))


class cBF:
    def resolve(self, url, html, cookie_jar, user_agent, sParameters):
        page = urlparse(url).scheme + '://' + urlparse(url).netloc
        j = re.findall('<script[^>]src="([^"]+)', html)
        if j:
            opener = build_opener(HTTPCookieProcessor(cookie_jar))
            opener.addheaders = [('User-agent', user_agent), ('Referer', url)]
            opener.open(page + j[0])
        a = re.findall('xhr\.open\("GET","([^,]+)",', html)
        if a:
            import random
            aespage = page + a[0].replace('" + ww +"', str(random.randint(700, 1500)))
            opener = build_opener(HTTPCookieProcessor(cookie_jar))
            opener.addheaders = [('User-agent', user_agent), ('Referer', url)]
            if sys.version_info[0] == 2:
                html = opener.open(aespage).read()
            else:
                html = opener.open(aespage).read().decode('utf-8').encode('utf-8', 'replace').decode('utf-8')
            cval = self.aes_decode(html)
            cdata = re.findall('cookie="([^="]+).*?domain[^>]=([^;]+)', html)
            if cval and cdata:
                c = Cookie(version=0, name=cdata[0][0], value=cval, port=None, port_specified=False, domain=cdata[0][1], domain_specified=True, domain_initial_dot=False, path="/", path_specified=True, secure=False, expires=time.time() + 21600, discard=False, comment=None, comment_url=None, rest={})
                cookie_jar.set_cookie(c)
                opener = build_opener(HTTPCookieProcessor(cookie_jar))
                opener.addheaders = [('User-agent', user_agent), ('Referer', url)]
                if sys.version_info[0] == 2:
                    return opener.open(url, sParameters if len(sParameters) > 0 else None).read()
                else:
                    return opener.open(url, sParameters if len(sParameters) > 0 else None).read().decode('utf-8').encode('utf-8', 'replace').decode('utf-8')

    def aes_decode(self, html):
        try:
            import pyaes
            keys = re.findall('toNumbers\("([^"]+)"', html)
            if keys:
                from binascii import hexlify, unhexlify
                msg = unhexlify(keys[2])
                key = unhexlify(keys[0])
                iv = unhexlify(keys[1])
                decrypter = pyaes.Decrypter(pyaes.AESModeOfOperationCBC(key, iv))
                plain_text = decrypter.feed(msg)
                plain_text += decrypter.feed()
                return hexlify(plain_text).decode()
        except Exception as e:
            logger.error(e)


class RedirectFilter(HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, hdrs, newurl):
        if 'notice.cuii' in newurl:
            return None
        return HTTPRedirectHandler.redirect_request(self, req, fp, code, msg, hdrs, newurl)
@sparrow
es gibt in der Software KEIN neues update.
kannst du mir den link oder eine Kopie des Textes (ich glaube, man nennt es Quellcode) schicken, wo du etwas zur aktuellen Version gefunden hast?

@imonbln
habe ich (glaube ich) eingefügt ;-)

@pillmuncher
habe den Code eingefügt und bekomme jetzt eine ganz andere Fehlermeldung:
"AttributeError: 'NoneType' object has no attribute 'replace'"
#/plugin.video.xstream/resources/lib/tools.py", line 34, in__replaceSpecialCharacters'"

würde mich gerne an den Entwickler wenden, aber finde auf der Seite kein Hilfe Forum o.ä.
bis vor kurzem, gab es noch ein kodiman.company Forum, aber das ist leider nicht mehr online.

vielen Dank für eure Antworten, aber ich verstehe vom progammieren wirklich NICHTS (habe mich heute das erste Mal damit beschäftigt).
ich kann wirklich nur mit Notpad etwas öffnen, evtl. eine Kleinigkeit verändern, kopieren und etwas ganz neues einfügen, mehr nicht.
tut mir leid, wenn ich nicht mal weiß, was ein Code, Quellcode oder SourceCode ist.

daaaaaaaaaaaaanke euch
Nicole
imonbln
User
Beiträge: 149
Registriert: Freitag 3. Dezember 2021, 17:07

Okay, damit kann man arbeiten.

Der Code in Zeile 118 wird also ein HTTPError haben, entweder mit Error code 503 oder 403.

Code: Alles auswählen

        try:
            oResponse = opener.open(oRequest)
        except HTTPError as e:  # <-- Diese Exception wird es sein. die muss kommen sonst ist oResponse definert.
            if e.code == 503:
                oResponse = None
                if not oResponse:  # <- macht kein sinn siehe Zeile zuvor oResponse ist hier immer None.
                    logger.error('Failed Cloudflare aktiv Url: ' + self._sUrl)
            if e.code == 403:
                data = e.fp.read()
mein Quick fix wäre es denn Code so umzuschreiben, da sind zwar noch andere Probleme aber das sollte erstmal dein Problem lösen.

Code: Alles auswählen

        try:
            oResponse = opener.open(oRequest)
        except HTTPError as e:
            oResponse = e
            if e.code == 403:
               data = e.fp.read()
               if 'DDOS-GUARD' in str(data):
                   opener = build_opener(HTTPCookieProcessor(cookieJar))
                   opener.addheaders = [('User-agent', self._USER_AGENT), ('Referer', self._sUrl)]
                   response = opener.open('https://check.ddos-guard.net/check.js')
                   if sys.version_info[0] == 2:
                       content = response.read()
                   else:
                       content = response.read().decode('utf-8').encode('utf-8', 'replace').decode('utf-8')
                   url2 = re.findall("Image.*?'([^']+)'; new", content)
                   url3 = urlparse(self._sUrl)
                   url3 = '%s://%s/%s' % (url3.scheme, url3.netloc, url2[0])
                   opener = build_opener(HTTPCookieProcessor(cookieJar))
                   opener.addheaders = [('User-agent', self._USER_AGENT), ('Referer', self._sUrl)]
                   opener.open(url3).read()
                   opener = build_opener(HTTPCookieProcessor(cookieJar))
                   opener.addheaders = [('User-agent', self._USER_AGENT), ('Referer', self._sUrl)]
                   oResponse = opener.open(self._sUrl, sParameters if len(sParameters) > 0 else None)
                   if not oResponse:
                       if not self.ignoreErrors:
                           logger.error('Failed DDOS-GUARD Url: ' + self._sUrl)
                           return ''
                       oResponse = e
            elif not self.ignoreErrors:
                xbmcgui.Dialog().ok('xStream', 'Fehler beim Abrufen der Url: {0} {1}'.format(self._sUrl, str(e)))
                logger.error('HTTPError ' + str(e) + ' Url: ' + self._sUrl)
                return ''
Nikkenolle
User
Beiträge: 5
Registriert: Mittwoch 26. Januar 2022, 07:50

@imonbin

verstehe ich das jetzt richtig:

ich markiere den ganzen oben Code und ersetze ihn mit dem (von dir geschriebenen, neuen) untem Code?

sorry, frage lieber einmal mehr, als das ich es ganz zerstöre ;-)
imonbln
User
Beiträge: 149
Registriert: Freitag 3. Dezember 2021, 17:07

@Nikkenolle,

Gut, dass du gefragt hast, ich habe nur ein teil des Codes umgeschrieben Zeile 117 bis 152. du markierst diese Zeilen und ersetzt sie mit meinem Code. (mach aber vorher besser eine Sicherungskopie).

Denn wie gesagt, ich glaube, der Code hat noch andere Probleme und es kann sein, dass nach dieser Änderung was anders schief geht. Der Code ist zu Komplex das ich ihn mal eben schnell repariere.
Nikkenolle
User
Beiträge: 5
Registriert: Mittwoch 26. Januar 2022, 07:50

@imonbln

habe es gerade probiert und jetzt wird gar nichts mehr geöffnet, sondern nur ein Hinweis, daß man die Fehlermeldung in der Logdatei auslesen kann.

ABER, (ich traue es mich überhaupt nicht zu sagen) seit 2 Wochen warte ich auf ein update und heute gibt's ein nightly update und es läuft alles wieder einwandfrei.

ist mir richtig unangenehm.

ich hoffe, du hast nicht all zu viel Zeit für mich verplempert?!

ich bedanke mich ganz, ganz doll für deine Hilfe.

ganz liebe Grüße
Nicole - Nikkenolle
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich kann natuerlich nicht fuer imonbln sprechen, aber aus meiner Perspektive hast du deutlich mehr Information beigetragen und Initiative gezeigt, als 90% der Erst-Poster hier. Alles gut.
imonbln
User
Beiträge: 149
Registriert: Freitag 3. Dezember 2021, 17:07

Nikkenolle hat geschrieben: Mittwoch 26. Januar 2022, 15:57
ABER, (ich traue es mich überhaupt nicht zu sagen) seit 2 Wochen warte ich auf ein update und heute gibt's ein nightly update und es läuft alles wieder einwandfrei.

ist mir richtig unangenehm.
Muss es nicht, um sich gegenseitig zu helfen, dafür sind ja solche Foren da.
Vielleicht Postest du noch einen Link zu dem Projekt (nigthly), dann können andere, die diesen Thread finden, dort die neue Version bekommen.
Nikkenolle
User
Beiträge: 5
Registriert: Mittwoch 26. Januar 2022, 07:50

danke für dein Verständnis

würde gerne den link teilen, ABER, ich habe kein link.

das Addon läuft über Kodi und würde darüber upgedatet.

vielen, vielen Dank nochmal
Antworten