]> git.phdru.name Git - phdru.name/phdru.name.git/blobdiff - reindex_blog.py
Feat(reindex_blog.py): Расширить описание
[phdru.name/phdru.name.git] / reindex_blog.py
index bc34887d4076fe419cde94e4f7f1de2700e11749..3370d6f892b7896aab65257b6b22cd4efc6658ae 100755 (executable)
@@ -5,7 +5,7 @@ __author__ = "Oleg Broytman <phd@phdru.name>"
 __copyright__ = "Copyright (C) 2006-2024 PhiloSoft Design"
 
 from calendar import _localized_month
-import cgi
+from html import escape
 import locale
 import sys, os
 from urllib.parse import quote, urljoin
@@ -102,7 +102,7 @@ months_names_ru0 = [
 
 
 def encode_tag(tag):
-    return quote(tag.replace(' ', '_'))
+    return quote(tag.replace(' ', '_'), encoding='koi8-r')
 
 
 def write_template(level, year, month, day, titles, tags=None):
@@ -345,19 +345,22 @@ new_text = ["""\
 Синтаксис выражения:</p>
 <ul class="small">
      <li>Тег - если такой тег существует, произойдёт перенаправление на страницу тега.</li>
-     <li>Оператор '!' (NOT, not) - ищет записи, в которых нет этого тега.</li>
-     <li>Оператор '&amp;' (AND, and) - ищет записи, в которых есть оба тега.</li>
-     <li>Оператор '|' (OR, or) - ищет записи, в которых есть любые из тегов.</li>
+     <li>Оператор '!' (NOT, not, НЕ, не) - ищет записи, в которых нет этого тега.</li>
+     <li>Оператор '&amp;' (AND, and, И, и) - ищет записи, в которых есть оба тега.</li>
+     <li>Оператор '|' (OR, or, ИЛИ, или) - ищет записи, в которых есть любые из тегов.</li>
      <li>Приоритет операций стандартный: NOT &gt; AND &gt; OR. Скобки '()' позволяют объединять выражения.</li>
+     <li>Поиск игнорирует регистр: теги Linux и linux эквивалентны.</li>
 </ul>
 <p class="small">
 Примеры выражений: linux - произойдёт перенаправление
-на страницу linux.html; linux&amp;!audio - искать записи в которых есть тег
-linux и нет тега audio; linux and not audio - то же самое.
+на страницу Linux.html; linux&amp;!debian - искать записи в которых есть тег
+Linux и нет тега Debian; Linux and not Debian - то же самое. Если в теге есть
+пробел ("Мёртвое море", "Чёрное море") - его надо заменить на подчёркивание;
+например: "Израиль И НЕ мёртвое_море", "Кавказ и не чёрное_море".
 </p>
 
 <center>
-<form method=GET action="../../../cgi-bin/blog-ru/search-tags/search-tags.py">
+<form method=GET action="../../../cgi-bin/blog-ru/search-tags.cgi">
      <input type=text name=q>
      <input type=submit name=submit value="Искать">
 </form>
@@ -485,7 +488,7 @@ class AbsURLHTMLParser(_HTMLParser):
     def start_a(self, attrs):
         self.accumulator += '<a'
         for attrname, value in attrs:
-            value = cgi.escape(value, True)
+            value = escape(value, True)
             if attrname == 'href':
                 self.accumulator += ' href="%s"' % urljoin(self.base, value)
             else:
@@ -498,7 +501,7 @@ class AbsURLHTMLParser(_HTMLParser):
     def start_img(self, attrs):
         self.accumulator += '<img'
         for attrname, value in attrs:
-            value = cgi.escape(value, True)
+            value = escape(value, True)
             if attrname == 'src':
                 self.accumulator += ' src="%s"' % urljoin(self.base, value)
             else: