Author Topic: Плагин Import TXT  (Read 18195 times)

0 Members and 1 Guest are viewing this topic.

Offline CleriC

Re: Плагин Import TXT
« Reply #15 on: 21 10 2016, 07:47:15 »
Ваш текстовый блок парсится выражением
Code: [Select]
([^\r\n]+?)\s\((\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?)\)Проверить это можно тут https://regex101.com/
В шаблоне для Import TXT, вроде как, нужно отметить начало и конец строки
То есть поставить вначале выражения ^
А в конце выражения $
Получится:
Code: [Select]
[Message]
Pattern=^([^\r\n]+?)\s\((\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?)\)$
«События происходят, Дела делаются, Но нет индивидуального деятеля».
«Events happen, deeds are done, but there is no individual doer thereof».
 
The following users thanked this post: solaris

Offline solaris

  • Newbie
  • *
  • Posts: 9
Re: Плагин Import TXT
« Reply #16 on: 22 10 2016, 17:27:54 »
Спасибо большое за помощь!

Но не получается :(
Пишет:
No messages in this file
Added: 0 messages

Шаблон сделал из historypp_p.ini, заменив одну строчку
1magent.ini
[General]
Name=MailRu Agent pattern
Type=1
Charset=UCS2
UseHeader=3
UsePreMsg=1
[Message]
Pattern=^([^\r\n]+?)\s\((\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?)\)$
Direction=7
Day=1
Month=2
Year=3
Hours=4
Minutes=5
Seconds=6
[Header]
Pattern=^###\r\n###\s[^\r\n]+?\r\n###\s([^\r\n]+?)\s\([^\r\n]+?:\s([^\r\n]+?)\)\s-\s([^\r\n]+?)\s\([^\r\n]+?:\s([^\r\n]+?)\)\r\n###\s[^\r\n]+?\r\n###\r\n
In=3
Out=1
InNick=3
OutNick=1
InUID=4
OutUID=2
[PreMessage]
PreRN=1
AfterRN=2
[close]

файл импорта
###
### Полная история
### solaris (ICQ_1: 8538146) - dragonfly (ICQ_1: 455749014)
### (generated by history++ plugin)
###

dragonfly (18.07.2012 17:28):
Саш, вроде получилась...вымучила я его))
solaris (18.07.2012 17:28):
Ты - МОЗГ ! :-D
Молодец, на самом деле
dragonfly (18.07.2012 17:28):
я уже эти пути по разному меняла))
dragonfly (14.01.2014 13:53):
Саш, привет! Ты знаешь, когда сделал ворд и эксель всё было ок, но со след.дня снова начало выскакивать
[close]
 

Offline CleriC

Re: Плагин Import TXT
« Reply #17 on: 26 10 2016, 07:20:15 »
Но не получается :(

Обратите внимание на группы (Group). См. скрин (в правой части).
Spoiler
[close]

Исправьте в вашем шаблоне
 
Code: [Select]

[Message]
Direction=7
Day=1
Month=2
Year=3
Hours=4
Minutes=5
Seconds=6
В соответствии с группами в регулярке. Секунд у вас в логе нет.
Ещё, возможно, надо проверить кодировку файла. UCS2 , UTF-8 или ANSI.
«События происходят, Дела делаются, Но нет индивидуального деятеля».
«Events happen, deeds are done, but there is no individual doer thereof».
 
The following users thanked this post: solaris

Offline solaris

  • Newbie
  • *
  • Posts: 9
Re: Плагин Import TXT
« Reply #18 on: 27 10 2016, 08:21:26 »
Сделал.

Code: [Select]
[Message]
Direction=1
Day=2
Month=3
Year=4
Hours=5
Minutes=6

Результат прежний.

Кодировка 1200 │ UTF-16, такая же, как в файле, который выгружается/загружается historypp.
« Last Edit: 27 10 2016, 08:23:39 by solaris »
 

Offline CleriC

Re: Плагин Import TXT
« Reply #19 on: 27 10 2016, 08:38:35 »
У вас не хватает двоеточия в конце регулярки на шаблон сообщений
Code: [Select]
[Message]
Pattern=^([^\r\n]+?)\s\((\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?)\):$
В приведённом примере в вашем сообщении не было двоеточия в конце
Вадик (19.12.2012 21:16)
А в последнем уже было
dragonfly (18.07.2012 17:28):
Я проверил, всё работает, импортирует.
«События происходят, Дела делаются, Но нет индивидуального деятеля».
«Events happen, deeds are done, but there is no individual doer thereof».
 
The following users thanked this post: solaris

Offline solaris

  • Newbie
  • *
  • Posts: 9
Re: Плагин Import TXT
« Reply #20 on: 27 10 2016, 10:20:40 »
Точно, всё получилось!

CleriC, огромное спасибо!!!
 

Offline Mataes

Re: Плагин Import TXT
« Reply #21 on: 28 10 2016, 09:10:26 »
Выложите, пожалуйста, готовый файл для импорта. Добавим в шаблоны
 
The following users thanked this post: Apollo2k4

Offline solaris

  • Newbie
  • *
  • Posts: 9
Re: Плагин Import TXT
« Reply #22 on: 31 10 2016, 11:29:38 »
Выложите, пожалуйста, готовый файл для импорта. Добавим в шаблоны
Файл опубликовать не проблема.
Но где-то нужно к нему написать инструкцию. Так как это не прямой импорт из БД MailRu Агента, а
1) средствами MailRu Агента делается экспорт в html
2) html открывается в браузере
3) выделяется вся страница, копируется в буфер обмена,
4) создаётся текстовом файле с правильной кодировкой, в него копируется буфер и вручную пишется шапка
Вместо 1-3 можно скопировать сразу в буфер из истории MailRu Агента, но тогда нужен чуть другой шаблон, так как в этом случае после имени и времени нет знака ":".

Короче, для варианта с ":"
MailRu_Agent.ini
[General]
Name=MailRu Agent pattern
Type=1
Charset=UCS2
UseHeader=3
UsePreMsg=1
[Message]
Pattern=^([^\r\n]+?)\s\((\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?)\):$
Direction=1
Day=2
Month=3
Year=4
Hours=5
Minutes=6
[Header]
Pattern=^###\r\n###\s[^\r\n]+?\r\n###\s([^\r\n]+?)\s\([^\r\n]+?:\s([^\r\n]+?)\)\s-\s([^\r\n]+?)\s\([^\r\n]+?:\s([^\r\n]+?)\)\r\n###\s[^\r\n]+?\r\n###\r\n
In=3
Out=1
InNick=3
OutNick=1
InUID=4
OutUID=2
[PreMessage]
PreRN=1
AfterRN=2
[close]
« Last Edit: 01 11 2016, 19:15:18 by solaris »
 

Offline solaris

  • Newbie
  • *
  • Posts: 9
Re: Плагин Import TXT
« Reply #23 on: 31 10 2016, 11:33:58 »
Импортирую.

1) Если в истории будут подряд две строки с именем и датой, но без текста сообщения, Miranda вылетает.
Вадик (19.12.2012 21:16):
Вадик (22.12.2012 13:15):
Привет! Как угадал? Фотки на одноклассниках увидел?

2) Если после последнего сообщения в файл импорта нет перевода строки, то последнее сообщение импортируется в неправильной кодировке (файл для импортв в UCS2, последнее сообщение в Miranda получается в 1251 и показывается крякозябры).

3) Не знаю, на основе каких данных работает поиск дубликатов, у меня он в половине случаев даёт ложное положительное срабатывание.

4) В файле для импорта заявлена кодировка UCS2, но смайлик (форум не пропускает, коды 55357 и 56832) не импортируется. Он не показывается, а при экспорте с history++ в этом месте "??". Возможно, это виноват не Import TXT, не знаю.
« Last Edit: 31 10 2016, 22:14:58 by solaris »
 

Offline solaris

  • Newbie
  • *
  • Posts: 9
Re: Плагин Import TXT
« Reply #24 on: 01 11 2016, 21:02:25 »
Нашел руководство по importtxt, вероятно его стоит опубликовать в wiki

pattern_cfg_ru.txt
Code: [Select]
Структура файла шаблона плагина importtxt начиная с версии 0.0.1.2
Расширение файла .ini

[General]* Общие параметры
Name=* Имя шаблона, выводится в списке
Type=* Тип импорта возможные значения
1 - импорт из текстовых файлов
2 - импорт из бинарных файлов
*******параметры для импорта текста*********
Charset=* кодировка ANSI, UTF8, UCS2
Codepage= кодовая страница для ANSI
UseHeader= 0..3 - использовать заголовок
первый бит использовать заголовок для распознавания направления
второй бит использовать заголовок для распознования контакта назначения
UsePreMsg= 0 - не использовать предварительную обработку сообщений,
даже если не используется, то всё равно будут удаляться все переводы строки в конце и в начале
1 - использовать предварительную обработку
*******параметры для бинарного импорта*********
BinProcedure= Используется для установки процедуры бинарного импорта (обязательна при Type=2)
Возможные значения:
1 - mContacts
2 - QHF
3 - ICQ6
4 - ICQ5
*******общие параметры*********
UseFileName= использовать имя файла для определения UID
DefaultExtension= Расширение файлов по умолчанию (если нет то txt)
*******параметры для импорта текста*********
[Message]* Сообщение
Pattern=* рег. выражение для разбора заголовка сообщения
In= варианты направления, если нет или пустые то используется из заголовка
Out= если UseHeader=0 и In пустой, то ошибка
Direction=* номер подвыражения определяющее направление сообщения (либо жестко заданное либо ник или уин)
Day=* номер подваражения дня
Month=* номер подваражения месяца
Year=* номер подваражения года
Hours=* номер подваражения часов
Minutes=* номер подваражения минут
Seconds= номер подваражения секунд (может быть 0, тогда при импорте принимается за 00)

[Header] Заголовок файла
Pattern=* рег. выражение заголовка
In=* подвыражение определяющее то что сообщение входящее (Ник, Уин)
Out= подвыражение определяющее то что сообщение исходящее (Ник, Уин)
может быть 0 или отсутствовать, если при импорте Direction<>In тогда оно исходящее, такая случайная фишка, но очень помогающая
InNick=* Ник собеседника
OutNick= Ваш Ник //не используется
InUID=* UID собеседника
OutUID= ваш UID //не используется

[PreMessage] Обработка сообщения перед импортом в базу
PreRN= удалить переводы строк в начале сообщения (целое число или -1 тогда все)
AfterRN= удалить переводы строк в конце сообщения (целое число или -1 тогда все)
PreSP= удалить пробелы в начале каждой строки сообщения
AfterSP= удалить пробелы в конце каждой строки сообщения
возможные значения:
целое число
-1 все
-2 кол-во равно длине распознаного шаблона заголовка сообщения (актуально для Message Export)
любой параметр может отсутствовать или быть равен нулю, тогда не используется
SP использовать только в случае крайней необходимости, потому что замедляется работа
*******общие параметры*********
[FileName] Имя файла
Pattern=* шаблон для распознования
InNick=* Ник собеседника
OutNick= Ваш Ник //не используется
InUID=* UID собеседника
OutUID= Ваш UID //не используется


* обязательная секция, если указаны UseHeader=1, а секции [Header] нет, то ошибка, аналогично с [PreMessage] и [FileName]
* обязательный параметр в секции, если параметр не обязателен то по умолчанию используется либо 0 для PS, либо -1 для RN , либо пустая строка
* если в UseHeader включен второй бит, то обязателен либо InUID, либо InNick, приоритетом распознавания является UID
* в Имени файла аналогично

UID означает Уникальный ИДентификатор :) это может быть UIN, JID и т.д.

[close]


examples_ru.txt
Code: [Select]

Пример файла:
************

История сообщений с Неизвестный (000000000)
Сохранено из Jimm 07.06.2008 11:49:17


------------------------------------>>>-
 Abyss  (06.09.2007 17:52:51):
Привет!

------------------------------------<<<-
 Неизвестный (06.09.2007 18:03:09):
Хай

************

Шаблон такой:

[General]
Name=Jimm import pattern
Charset=ANSI
UseHeader=2
UsePreMsg=1
[Message]
Pattern=^------------------------------------(<<<|>>>)-\r\n\s([^\r\n]+?)\s\((\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?):(\d\d?)\):$
In=<<<
Out=>>>
Direction=1
Day=3
Month=4
Year=5
Hours=6
Minutes=7
Seconds=8
[PreMessage]
PreRN=1
AfterRN=2
[Header]
Pattern=^\r\n\tИстория сообщений с ([^\r\n]+?)\s\((\d{5,})\)\r\n\tСохранено из Jimm\s[^\r\n]+?\r\n
InNick=1
InUID=2

Коментарии: основные моменты содержаться в pattern_cfg,
Такие значения RN потому что:
считаем...

Привет!{\r\n} Раз
{\r\n} два после
------------------------------------<<<-
 Неизвестный (06.09.2007 18:03:09):{\r\n} Один до
Хай

UseHeader=2 используем заголовок только для определения контакта назначения


====================================================================================================================================
Для History++
=============

Пример файла
************

###
### Полная история
### Abyss (ICQ: 0000000) - Неизвестный (ICQ: 00000000)
### (создана модулем history++)
###

[06.09.2007 17:52:51] Abyss:
Привет!

[06.09.2007 18:03:09] Неизвестный:
Хай

************
Файл шаблона выглядит так:
**************************
[General]
Name=History++ pattern
Charset=UCS2
UseHeader=3
UsePreMsg=1
[Message]
Pattern=^\[(\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?):(\d\d?)\]\s([^\r\n]+?):$
Direction=7
Day=1
Month=2
Year=3
Hours=4
Minutes=5
Seconds=6
[Header]
Pattern=^###\r\n###\s[^\r\n]+?\r\n###\s([^\r\n]+?)\s\([^\r\n]+?:\s([^\r\n]+?)\)\s-\s([^\r\n]+?)\s\([^\r\n]+?:\s([^\r\n]+?)\)\r\n###\s[^\r\n]+?\r\n###\r\n
In=3
Out=1
InNick=3
OutNick=1
InUID=4
OutUID=2
[PreMessage]
PreRN=1
AfterRN=2
**************************

Все аналогично только добавляется обработка заголовка, получаем ник для того чтобы потом его использовать в качестве маркера направления

========================================================================================================================================

Для Message Export
==================
Файл:
*****
------------------------------------------------
      History for
User      : Неизвестный
Protocol  : ICQ
UIN       : 00000000
FirstName : Mister
LastName  : X
Age       : 0
Gender    : M
e-mail    :
Nick      : Неизвестный
City      :
State     : 66
Phone     :
Homepage  :
- About -

------------------------------------------------
Abyss        06.09.2007 17:52:51 Привет
                                 Как дела?
Неизвестный  06.09.2007 18:03:09 Хай, нормально

*******************

[General]
Name=Message export import pattern
Charset=UTF8
UseHeader=3
UsePreMsg=1
[Message]
Pattern=^([^\r\n]+?)[\s]+?(\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?):(\d\d?)\s
Direction=1
Day=2
Month=3
Year=4
Hours=5
Minutes=6
Seconds=7
[Header]
Pattern=^------------------------------------------------\r\n[\s]+?History for\r\nUser[\s]+?:\s([^\r\n]+?)\r\n(.*\r\n)+?Nick[\s]+?:\s([^\r\n]+?)\s\r\n(.*\r\n)+?^------------------------------------------------$
In=1
InNick=3
[PreMessage]
PreRN=0
AfterRN=1
PreSP=-2
*********************


Добавлено удаление пробелов в многострочных сообщениях PreSP=-2

С этим форматом сообщений бардак: 1) если протокол НЕ ICQ то UID мы не увидим, тоесть ни JID ни что-то там еще не сохраняются
приходится использовать Ник, что не есть гуд
  2) Ник! Зачем писать в файлы пробел после ника????
Все строчки (Potocol, User, email) нормальные, а после ника пробел.
[close]
 

Offline lokapal

Re:Плагин Import TXT
« Reply #25 on: 18 09 2017, 15:57:45 »
Друзья, пытаюсь переехать на 0.95.6 с 0.95.3
В частности, всё решилось, кроме того, что не могу перетащить историю из skype.dll в skypeweb.dll По заветам отцов-основателей :) я проэкспортировал всю историю переписки (от трёх до пяти лет, за что и люблю нежно миранду) в mContacts .dat файлы. Миранда была 0.95.3 64bit. Поставил специально 0.95.6 x32, поставил ImportTXT, он запускается, я ему указываю mContact import pattern формат для нового (по сути) контакта, чтобы проимпортировать историю, он на все попытки пишет To: (кому надо правильно распознаёт), а потом
Import started...
Error adding message to database
и всё, собственно.
Есть идеи, что я делаю не так?
P.S. Файл в формате mContacts с расширением .dat, произведённый на свет из HistoryPP.dll - ни разу не текстовый с виду, бинарный совершенно. А паттерн в плагине с виду очень простой.
Северный пушной зверёк какой-то прямо  :o
« Last Edit: 18 09 2017, 16:15:54 by lokapal »
 

Offline Apollo2k4

Re: Плагин Import TXT
« Reply #26 on: 18 09 2017, 17:57:49 »
lokapal, импорт в mContacts из History++ сломан давно. Импортировать лучше в txt.
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

Правильно заданный вопрос – 50% решения.
Правила постинга
 

Offline lokapal

Re: Плагин Import TXT
« Reply #27 on: 18 09 2017, 18:11:55 »
Спасибо, малька повозившись (ImportTXT падает, если видит.... ПУСТОЕ СООБЩЕНИЕ!!!) всё получилось через текст, спасибо.
Но надо
1. Написать где-нибудь в readme.txt/faq/первом посте темы о том, что нужно использовать именно этот режим.
2. Написать о том, что HistoryPP при экспорте для некоторых протоколов не пишет в заголовке поле "имя контакта". Если его не вписать самому - опять же всё падает с сообщением "Header not found"
 

Offline Apollo2k4

Re: Плагин Import TXT
« Reply #28 on: 18 09 2017, 18:21:36 »
Написать где-нибудь в readme.txt/faq/первом посте темы о том, что нужно использовать именно этот режим.
Нужно просто вымарать из History++ лишнее, но боюсь оно само уйдёт на свалку истории раньше…
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

Правильно заданный вопрос – 50% решения.
Правила постинга
 

Offline dartraiden

Re: Плагин Import TXT
« Reply #29 on: 18 09 2017, 18:43:29 »
Можно написать в вики на страницах соответствующих плагинов, править могут все.