LibreOffice Write Автозамена

Автор Ципихович Эндрю, 10 ноября 2024, 11:46

0 Пользователи и 1 гость просматривают эту тему.

Ципихович Эндрю

Цитата: sokol92 от 13 ноября 2024, 13:54Значение свойства AutoCorrect - два URL пути к папкам, разделенные точкой с запятой.
Об этих папках и идет речь в данной теме.
ещё запутанней стало...
у меня так: C:\Users\start\AppData\Roaming\LibreOffice\4\ в ней 4 папки
1 cache
2 crash
3 updates
4 user - в ней папка autocorr - но она пуста до тех пор пока я НЕ добавлю ещё одну автозмену и где же искать искомый архив?

Ципихович Эндрю

может не городить огород:
Sub CountAutoCorrectEntries()
    Dim oDoc As Object
    Dim oServiceManager As Object
    Dim oAutoCorrect As Object
    ' Получаем доступ к документу
    oDoc = ThisComponent
    ' Получаем доступ к службе автозамен
    oServiceManager = createUnoService("com.sun.star.lang.ServiceManager")
    oAutoCorrect = oServiceManager.createInstance("com.sun.star.text.AutoCorrect")
    ' Проверяем, успешно ли получен объект автозамен
    If IsNull(oAutoCorrect) Then
        MsgBox "Не удалось получить доступ к автозаменам."
        Exit Sub
    End If
End Sub
пока месседж Не удалось получить доступ к автозаменам - как его получить правильно?

sokol92

Цитата: Ципихович Эндрю от 13 ноября 2024, 15:02как его получить правильно
Добавить в исходный код LibreOffice такой сервис.  :)
Владимир.

Ципихович Эндрю

Цитата: sokol92 от 14 ноября 2024, 15:16Добавить в исходный код LibreOffice такой сервис
сколько это может стоить?

Ципихович Эндрю

Цитата: Ципихович Эндрю от 14 ноября 2024, 15:29сколько это может стоить?
ответа нет, понял ЛО это же Не про деньги, это же бесплатно....
здесь: https://www.libreoffice.org/download/download-libreoffice/
имеется
Download the Sourcecode
libreoffice-24.8.3.1.tar.xz скачать нет возможности - страница НЕ найдена
268 MB (Torrent, Info)
libreoffice-24.8.3.2.tar.xz скачал файл libreoffice-24.8.3.2.tar.xz
268 MB (Torrent, Info)
стал извлекать из архива и получил сообщение на одном из пнж файлов: Клиент НЕ обладает требуемыми правами
ЧЯДНТ?

mikekaganski

С уважением,
Михаил Каганский

Ципихович Эндрю


mikekaganski

Ок. Тогда возможно, что антивирус заблокировал распаковку одного из тестовых файлов, используемых для проверки работы с уязвимостями.
С уважением,
Михаил Каганский

Ципихович Эндрю

Цитата: mikekaganski от 15 ноября 2024, 09:18антивирус заблокировал распаковку
нету таковых...

mikekaganski

Вы специально заблокировали даже встроенный антивирус Windows?
С уважением,
Михаил Каганский

Ципихович Эндрю

ладно опробую на другом ПК...

Ципихович Эндрю

одна неприятность так и НЕ побеждена
1-ю замену нужно добавить вручную, чтобы файл появился, такие дела ...
код питона:
import zipfile
import re
import os
import html  # Импортируем модуль для декодирования HTML-сущностей
appdata_directory = os.environ['APPDATA'] # Получаем путь к папке AppData
zip_file_path = appdata_directory + r'\LibreOffice\4\user\autocorr\acor_ru-RU.dat' # Получаем путь к ZIP-файлу
if not os.path.exists(zip_file_path): # Проверяем наличие файла
    print(f'Файл {zip_file_path} не найден, программа далее продолжаться не будет')
    exit(0)
else: print(f'Файл {zip_file_path} обнаружен на ПК, программа продолжает свою работу')
new_zip_file_path = zip_file_path.replace('.dat', '_new.dat') # Временный путь для нового ZIP-файла
with zipfile.ZipFile(zip_file_path, 'r') as zip_file: # Открываем оригинальный ZIP-файл
    with zipfile.ZipFile(new_zip_file_path, 'w') as new_zip_file: # Создаем новый ZIP-файл
        for file_info in zip_file.infolist(): # Проходим по всем файлам в оригинальном архиве
            if file_info.filename == 'DocumentList.xml': # Проверяем, является ли текущий файл "DocumentList.xml"
                with zip_file.open(file_info.filename) as document_file: # Читаем содержимое файла
                    content = document_file.read()
                content = content.decode('utf-8')  # Декодируем байты в строку
                pattern = r'block-list:abbreviated-name="([^"]+)"\s+block-list:name="([^"]+)"' # Регулярное выражение для извлечения значений атрибутов
                matches = re.findall(pattern, content) # Находим все совпадения
                if matches:
                    numb = 0
                    for match in matches:  # Проходим по всем найденным совпадениям
                        numb += 1
                        abbreviated_name = match[0]  # Значение "Что заменяем"
                        name = match[1]  # Значение "На что заменяем"
                        # Декодируем HTML-сущности
                        abbreviated_name = html.unescape(abbreviated_name)
                        name = html.unescape(name)
                        result = f'{numb}. "{abbreviated_name}"=="{name}"' # Формируем нужную строку с нумерацией
                        print(result)
                else:
                    print('Замены не найдены')
                    exit(0)
                print('Работа завершена')
будет представлено 1376 замен