<type 'exceptions.UnicodeDecodeError'>
Python 2.7.15+: /usr/bin/python2
Mon Jun 23 06:29:44 2025

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /var/www/artrz.ru/htdocs/src/index.py in <module>()
    336                                                 "menu": rubricator.html(len(params)>=2 and params[0]=="menu" and re.match("^\d+$", params[1]) and params[1]) }
    337                                 space["title"] = "<br>".join(space["title"].splitlines())
=>  338                                 space.update(page(params))
    339                                 result = template("main").merge(space, loader)
    340                 except:
space = {'banners': [{'id': 1805367818, 'image': 1805368091, 'name': '\xd0\x9a\xd0\xbe\xd0\xbc\xd0\xb8\xd1\x82\xd0\xb5\xd1\x82 \xd0\xbf\xd0\xbe \xd0\xb2\xd0\xbd\xd0\xb5\xd1\x88\xd0\xbd\xd0\xb8\xd0\xbc \xd1\x81\xd0\xb2\xd1\x8f\xd0\xb7\xd1\x8f\xd0\xbc \xd0\xa1\xd0\xb0\xd0\xbd\xd0\xba\xd1\x82-\xd0\x9f\xd0\xb5\xd1\x82\xd0\xb5\xd1\x80\xd0\xb1\xd1\x83\xd1\x80\xd0\xb3\xd0\xb0', 'ref': 'http://www.kvs.spb.ru'}, {'id': 1805367844, 'image': 1804835877, 'name': '\xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd0\xb9\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9 \xd0\xb3\xd1\x83\xd0\xbc\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x82\xd0\xb0\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbd\xd0\xb0\xd1\x83\xd1\x87\xd0\xbd\xd1\x8b\xd0\xb9 \xd1\x84\xd0\xbe\xd0\xbd\xd0\xb4', 'ref': 'http://www.rfh.ru'}, {'id': 1805367890, 'image': 1804846338, 'name': '\xd0\xa4\xd0\xbe\xd0\xbd\xd0\xb4 &quot;\xd0\x9a\xd0\xbe\xd0\xbd\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd1\x82\xd0\xb8\xd0\xbd\xd0\xbe\xd0\xb2\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9&quot;', 'ref': 'http://www.mbfk.ru'}, {'id': 1804932204, 'image': 1804931868, 'name': '\xd0\x94\xd0\xbe\xd0\xbc-\xd0\xbc\xd1\x83\xd0\xb7\xd0\xb5\xd0\xb9 \xd0\x9c\xd0\xb0\xd1\x80\xd0\xb8\xd0\xbd\xd1\x8b \xd0\xa6\xd0\xb2\xd0\xb5\xd1\x82\xd0\xb0\xd0\xb5\xd0\xb2\xd0\xbe\xd0\xb9', 'ref': 'http://www.dommuseum.ru/'}, {'id': 1804895481, 'image': 1804895658, 'name': '\xd0\x97\xd0\x90\xd0\x9e \xc2\xab\xd0\x90\xd0\xbb\xd1\x8c\xd1\x82-\xd0\xa1\xd0\xbe\xd1\x84\xd1\x82\xc2\xbb \xd0\xb8\xd0\xbd\xd1\x84\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb0\xd1\x86\xd0\xb8\xd0...\xd0\xbc\xd0\xbc\xd1\x83\xd0\xbd\xd0\xb8\xd0\xba\xd0\xb0\xd1\x86\xd0\xb8\xd0\xbe\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb5 \xd1\x82\xd0\xb5\xd1\x85\xd0\xbd\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb3\xd0\xb8\xd0\xb8', 'ref': 'http://www.altsoft.spb.ru'}], 'left_links': [{'active': None, 'id': 1805368474, 'image': 1805368485, 'name': '\xd0\xa0\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb5 \xd0\xb2 \xd0\x98\xd1\x82\xd0\xb0\xd0\xbb\xd0\xb8\xd0\xb8', 'text': 'http://www.russinitalia.it'}, {'active': None, 'id': 1805368262, 'image': 1805368273, 'name': '\xd0\xa0\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb5 \xd0\x9b\xd0\xb0\xd1\x82\xd0\xb2\xd0\xb8\xd0\xb8', 'text': 'http://www.russkije.lv'}, {'active': None, 'id': 1805368210, 'image': 1805368221, 'name': '\xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd0\xb9\xd1\x81\xd0\xba\xd0\xbe\xd0\xb5 \xd0\xb7\xd0\xb0\xd1\x80\xd1\x83\xd0\xb1\xd0\xb5\xd0\xb6\xd1\x8c\xd0\xb5 \xd0\xb2\xd0\xbe \xd0\xa4\xd1\x80\xd0\xb0\xd0\xbd\xd1\x86\xd0\xb8\xd0\xb8', 'text': 'http://www.dommuseum.ru/old/?m=dist'}, {'active': None, 'id': 1805368287, 'image': 1805368298, 'name': '\xd0\xa0\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb0\xd1\x8f \xd0\xad\xd1\x81\xd1\x82\xd0\xbe\xd0\xbd\xd0\xb8\xd1\x8f', 'text': 'http://russianestonia.eu'}], 'menu': '<div id="menu"><a class="menu_1" href="/menu/180...760.html">\xd0\xa1\xd0\xbe\xd0\xba\xd1\x80\xd0\xb0\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f</a>--></div></div>', 'title': '\xd0\x9f\xd0\xbe \xd0\xb2\xd0\xb0\xd1\x88\xd0\xb5\xd0\xbc\xd1\x83 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81\xd1\x83 \xd0\xbd\xd0\xb8\xd1\x87\xd0\xb5\xd0\xb3\xd0\xbe \xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xb9\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xbe'}, space.update = <built-in method update of dict object>, page = <function page>, params = ['search', '\xd0\x9c\xd0\xb0\xd0']
 /var/www/artrz.ru/htdocs/src/index.py in page(params=['search', '\xd0\x9c\xd0\xb0\xd0'])
    172                 return article(params[1])
    173         elif match("search", ".+"):
=>  174                 al = model.search(urllib.unquote(params[1]))
    175                 return { "title": "Результаты поиска" if al else "По вашему запросу ничего не найдено",
    176                                 "articles": al }
al undefined, global model = <model.Model instance>, model.search = <bound method Model.search of <model.Model instance>>, global urllib = <module 'urllib' from '/usr/lib/python2.7/urllib.pyc'>, urllib.unquote = <function unquote>, params = ['search', '\xd0\x9c\xd0\xb0\xd0']
 /var/www/artrz.ru/htdocs/src/model.py in search(self=<model.Model instance>, txt='\xd0\x9c\xd0\xb0\xd0')
    430                 return self.banners()
    431         def search(self, txt):
=>  432                 sr = IndexReader("../index").search(txt)
    433                 articles = []
    434                 if sr and sr.has_key("articles") and sr["articles"]:
sr undefined, global IndexReader = <class search.IndexReader>, ).search = <unbound method IndexReader.search>, txt = '\xd0\x9c\xd0\xb0\xd0'
 /var/www/artrz.ru/htdocs/src/search.py in search(self=<search.IndexReader instance>, s='\xd0\x9c\xd0\xb0\xd0')
     73                 self.path = path
     74         def search(self, s):
=>   75                 words = [ru_stem(x) for x in ru_split(s.decode("UTF-8")) if len(x)]
     76                 file_list = [self.path + "/" + "/".join(ch for ch in w) + "/list.json" for w in words]
     77                 r = None
words undefined, global ru_stem = <function ru_stem>, x undefined, global ru_split = <function ru_split>, s = '\xd0\x9c\xd0\xb0\xd0', s.decode = <built-in method decode of str object>, builtin len = <built-in function len>
 /usr/lib/python2.7/encodings/utf_8.py in decode(input='\xd0\x9c\xd0\xb0\xd0', errors='strict')
     14 
     15 def decode(input, errors='strict'):
=>   16     return codecs.utf_8_decode(input, errors, True)
     17 
     18 class IncrementalEncoder(codecs.IncrementalEncoder):
global codecs = <module 'codecs' from '/usr/lib/python2.7/codecs.pyc'>, codecs.utf_8_decode = <built-in function utf_8_decode>, input = '\xd0\x9c\xd0\xb0\xd0', errors = 'strict', builtin True = True

<type 'exceptions.UnicodeDecodeError'>: 'utf8' codec can't decode byte 0xd0 in position 4: unexpected end of data
      args = ('utf8', '\xd0\x9c\xd0\xb0\xd0', 4, 5, 'unexpected end of data')
      encoding = 'utf8'
      end = 5
      message = ''
      object = '\xd0\x9c\xd0\xb0\xd0'
      reason = 'unexpected end of data'
      start = 4