Miranda NG Official Community Forum

Miranda NG русскоязычный форум => Плагины => Topic started by: CleriC on 11 01 2014, 09:09:59

Title: Плагин Import TXT
Post by: CleriC on 11 01 2014, 09:09:59
Здравствуйте.
Хочу добавить сообщений с одним из собеседников. На своей же миранде, этой же версии, сделал с помощью History++ текстовый файл вида:
Полная история CleriC - Antonidze
###
### Полная история
### CleriC (ICQ: 200911462) - Antonidze (ICQ: 208558068)
### (generated by history++ plugin)
###

[10.01.2014 22:24:47] CleriC:
ты на работе еще? О_о

[11.01.2014 11:14:36] Antonidze:
привет!
не, я вчера аську забыл выключить, на гору вчера ездил
а сегодня на работе
[close]
Текстовый файл, который генерирует History++, сохраняется по умолчанию в кодировке UTF-16 LE (пробовал UTF-16 BE с BOM и без).
Если попробовать импортировать файл в контакт плагином Import TXT (с шаблоном History++ pattern), плагин пишет что не найден заголовок.
В historypp_p.ini по умолчанию, для шаблона History++ pattern прописан Charset=UCS2
Я пересохраняю файл в кодировке UTF-8. Теперь плагин пишет что "Импорт запущен", но "В этом файле нет сообщений".
Пробовал прописывать в historypp_p.ini Charset=UTF8 - тоже самое.
Подскажите, пожалуйста, как же мне успешно воспользоваться плагином и хоть что-то импортировать в нужный мне контакт?

ЗЫ Раньше, на Миранде ИМ 8.26, я делал это с помощью плагина mbot. Там был написан скрипт hpp_import.php который отлично все считывал.

VersionInfo
Quote
CPU: Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz [Intel64 Family 6 Model 26 Stepping 5] [DEP Enabled] [8 CPUs]
Installed RAM: 6136 MBytes
Operating System: Microsoft Windows 7 Ultimate Edition, 64-bit Service Pack 1 (build 7601)
Internet Explorer: 9.11.9600.16428 (build 99600)
Administrator privileges: No
OS Languages: (UI | Locale (User/System)) : Russian/Russian | Russian/Russian
Free disk space on Miranda partition: 2557 MBytes

Miranda NG Version: 0.94.6 build #6797 [running inside WOW64]
Build time: 6 Nov 2013 1:33:28
Profile: H:\Prog\Miranda NG\Profiles\Mcl\Mcl.dat
Profile size: 31064064 Bytes
Profile creation date: 8 Jan 2014 11:49:18
Language pack: Russian (RU) [0419]
Service Mode: No

Active Plugins (11):
  AdvaImg.dll v.0.11.0.1 [6 Nov 2013 1:28:06] - Miranda image services
  AVS.dll v.0.11.1.1 [6 Nov 2013 1:27:08] - Avatar service
  CrashDumper.dll v.0.0.4.22 [5 Nov 2013 21:30:22] - Crash dumper
  Dbx_3x.dll v.0.11.0.1 [6 Nov 2013 1:27:08] - Miranda NG database driver
  Dbx_mmap.dll v.0.11.0.1 [6 Nov 2013 1:27:12] - Miranda NG mmap database driver
  HistoryPP.dll v.1.5.1.5 [14 Oct 2013 6:06:30] - History++
  ICQ.dll v.0.11.0.1 [6 Nov 2013 1:27:46] - IcqOscarJ Protocol
  ImportTXT.dll v.0.0.1.10 [5 Nov 2013 21:34:00] - Import TXT
  KeepStatus.dll v.0.8.0.97 [5 Nov 2013 21:28:50] - Keep status
  MobileState.dll v.0.0.1.2 [5 Nov 2013 21:31:04] - Mobile state
  Spamotron.dll v.0.0.4.6 [5 Nov 2013 21:32:30] - Spam-o-tron

Unloadable Plugins (1):
  DbChecker.dll v.0.0.0.0 [6 Nov 2013 1:30:32] - <unknown>


Protocols and Accounts:
-------------------------------------------------------------------------------
ICQ                      1 - Enabled 0 - Disabled  Loaded
MRA                      0 - Enabled 1 - Disabled  Not Loaded
SKYPE                    0 - Enabled 1 - Disabled  Not Loaded

Icon Packs:
-------------------------------------------------------------------------------
 hicoloricq.dll [27 May 2001 0:13:46]
 HistoryPP_icons.dll [3 May 2008 18:08:36]
 HistoryPP_icons.dll1 [5 Nov 2013 21:30:54]
 mirabilisicons.dll [7 Apr 2002 3:05:06]
 Original ICQ Icons.dll [27 May 2001 5:13:46]
 Proto_AIM.dll [6 Nov 2013 1:29:28]
 Proto_Facebook.dll [6 Nov 2013 1:29:26]
 Proto_GG.dll [6 Nov 2013 1:29:28]
 Proto_ICQ.dll [6 Nov 2013 1:29:30]
 Proto_IRC.dll [6 Nov 2013 1:29:30]
 Proto_Jabber.dll [6 Nov 2013 1:29:30]
 Proto_MRA.dll [5 Nov 2013 21:29:28]
 Proto_MSN.dll [6 Nov 2013 1:29:30]
 Proto_Skype.dll [30 Dec 2013 16:05:14]
 Proto_Yahoo.dll [6 Nov 2013 1:29:30]
 TabSRMM_icons.dll [6 Nov 2013 1:30:56]
 Toolbar_icons.dll [6 Nov 2013 1:29:34]
 xStatus_ICQ.dll [6 Nov 2013 1:28:00]
 xStatus_Jabber.dll [6 Nov 2013 1:28:02]
 xStatus_MRA.dll [5 Nov 2013 21:29:14]
[close]

Post Merge: 11 01 2014, 10:05:18
Разобрался я в чем дело.
По умолчанию, в historypp_p.ini указан следующий шаблон на сообщения:
Code: [Select]
Pattern=^\[(\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?)\]\s([^\r\n]+?):$А необходим следующий:
Code: [Select]
Pattern=^\[(\d\d?)\.(\d\d?)\.(\d\d\d?\d?)\s(\d\d?):(\d\d?):(\d\d?)\]\s([^\r\n]+?):И в секции [Message] исправить
Direction=7
Seconds=6
Что бы плагин понял, что 6-ой блок регулярки содержит секунды, а 7-ой - направление (от кого) сообщения.
Title: Re: Плагин Import TXT
Post by: watcher on 11 01 2014, 10:17:44
Можно в History++ экспортировать историю контакта в формат mcontacts, ImportTXT его понимает и с ним вообще нет хлопот.

Post Merge: 11 01 2014, 10:24:27
Но да, импорт текста поломали, именно INI. Посмотрю почему.
Title: Re: Плагин Import TXT
Post by: watcher on 11 01 2014, 10:56:29
По ошибке был влит этот вариант паттерна, нерабочий, откатываю на старое (http://trac.miranda-ng.org/changeset/7587).
Title: история из MailRu Агента
Post by: solaris on 03 02 2014, 08:21:28
Хочу слезть с MailRu Агента. Для этого надо перетащить историю.
Агент умеет делать export в html, это совсем неудобно для импорта. Поэтому я выделил всю историю и скопировал в буфер, затем сохранил в файл.
Подскажите, плиз, может есть файл настроек для плагина ImportTXT, чтобы импортировать историю такого вида?
 
--------------------------------------
Вадик (19.12.2012 21:16)
Привет. В Бразилии был?  :)
 
Петр (19.12.2012 21:17)
Привет! Как угадал? Фотки на одноклассниках увидел?
 
Петр (19.12.2012 21:17)
Догадался, наверное Mail.ru агент местоположение писал.
 
Вадик (19.12.2012 21:17)
да ты указал на карте
 
Петр (19.12.2012 21:18)
понятно... никакой загадочности... а то я думал, что ты меня вычислил!
--------------------------------------
Title: Re: Плагин Import TXT
Post by: CleriC on 05 02 2014, 18:48:40
А можно, с помощью плагина Import TXT, добавить историю переписки из текстового файла, в контакт скайпа (которые появляются в контакт листе с помощью плагина Skype)?
Дело в том, что  Import TXT завязан на UID, а у протокола скайпа не цифровые UID, а, в основном буквенно-символьные.


Есть ли другие способы запихать историю в контакты Миранды? Да хоть бы и вручную.
Title: Re: Плагин Import TXT
Post by: Apollo2k4 on 05 02 2014, 19:14:20
CleriC, нет к сожаление никак из Skype выколупать (одно время в плагине Skype была функция подтянуть историю, но теперь кажись нет). Есть вариант как-то достать и написать ini для importtxt, но это больно муторно. Можно так же попробовать SkypeClassic там вроде тоже был импорт истории из Skype (использовал давно т.ч. могу ошибаться), а оттуда уже плясать History++ плюс ImportTXT
Title: Re: Плагин Import TXT
Post by: CleriC on 05 02 2014, 19:17:43
Да из скайпа то я выколупал историю, в таком виде:
Spoiler
[31.12.2012 22:39:32] CleriC: привет, Коля, с наступающим тебя!
[31.12.2012 22:39:58] Коля: привет, и тебя тоже с Наступающим
[05.06.2013 10:50:37] CleriC: Коля, привет
[close]
Проблема в том, что importtxt жалуется на отсутствие заголовка, хотя все там ок должно быть. Подозреваю что он хочет UID в виде чисел. Номера ICQ ведь из чисел состоят. А скайп буквенно-цифровой идентификатор (логин) имеет. Поэтому, наверное importtxt и не хочет с ним работать?

Задать бы вопрос создателю плагина...
Title: Re: Плагин Import TXT
Post by: Apollo2k4 on 05 02 2014, 19:26:47
CleriC, importtxt фиолетовы UID он следует форматированию в файле шаблона ты как я понимаю пытаешься его импортировать как history++?

Post Merge: 05 02 2014, 19:37:07
Задать бы вопрос создателю плагина...
Зачем? Оно работает, просто нужно правильно оформить файл истории.
Title: Re: Плагин Import TXT
Post by: CleriC on 06 02 2014, 04:57:11
Да. Вот такой сделал файл:
Spoiler
###
### Полная история
### CleriC (ICQ: 200911462) - В Коля (Skype: nick.vas)
### (generated by history++ plugin)
###


[31.12.2012 22:39:32] CleriC: привет, Коля, с наступающим тебя!
[31.12.2012 22:39:58] В Коля: привет, и тебя тоже с Наступающим
[05.06.2013 10:50:37] CleriC: Коля, привет
[close]


И вот такой шаблон:

Spoiler
Code: [Select]
[General]
Name=Skype
Type=1
Charset=UTF8
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=^###\n###\s[^\n]+?\n###\s([^\n]+?)\s\([^\n]+?:\s([^\n]+?)\)\s-\s([^\n]+?)\s\([^\n]+?:\s([^\n]+?)\)\n###\s[^\n]+?\n###\n
In=3
Out=1
InNick=3
OutNick=1
InUID=4
OutUID=2
[PreMessage]
PreRN=0
AfterRN=0
[close]
Пишет что не найден заголовок. Но регулярка точно рабочая, тестировал здесь (http://regex101.com/).
Title: Re: Плагин Import TXT
Post by: Apollo2k4 on 06 02 2014, 05:32:10
CleriC, сообщение должно быть с новой строки? после времени и в заголовке тоже бы поменять ICQ на Skype
Title: Re: Плагин Import TXT
Post by: CleriC on 06 02 2014, 06:06:00
HystoryPP сохраняет лог в таком виде:
Spoiler
###
### Полная история
### CleriC (ICQ: 200911462) - Bac (ICQ: 271193557)
### (generated by history++ plugin)
###

[19.09.2011 11:24:55] CleriC:
привет

[19.09.2011 11:44:03] Bac:
привет)
[close]
В кодировке UTF-16 LE без BOM. В той же кодировке я и пересохранил лог скайпа.
В настройках распознавания skype.ini (importtxt) поставил:

Code: [Select]
[General]
Charset=UCS2

Заголовок для лога скайпа я видоизменил следующим образом:
Spoiler
###
### Полная история
### CleriC (Skype: iC1eriC) - Васильев Коля (Skype: nick.vasiliev)
### (generated by history++ plugin)
###
[close]
Но все равно, почему-то, не может он прочитать заголовок.
Там еще есть возможность разобрать лог без заголовка, взяв контакт из названия файла. Но если посмотреть шаблон:
Code: [Select]
[FileName]
Pattern=^[^\r\n]+?\\(\d{5,})\.txt$
InUID=1
Видно, что он хочет 5 и более ЦИФР (что логично для ICQ). Но не подходит для скайпа.


За количество переводов строки до и после сообщения, в importtxt отвечает следующая секция:
Spoiler
Code: [Select]
[PreMessage]                  Обработка сообщения перед импортом в базу
PreRN=                        удалить переводы строк в начале сообщения (целое число или -1 тогда все)
AfterRN=                     удалить переводы строк в конце сообщения (целое число или -1 тогда все)
PreSP=                        удалить пробелы в начале каждой строки сообщения
AfterSP=                     удалить пробелы в конце каждой строки сообщения
                           возможные значения:
                           целое число
                           -1 все
                           -2 кол-во равно длине распознаного шаблона заголовка сообщения (актуально для Message Export)
                           любой параметр может отсутствовать или быть равен нулю, тогда не используется
                           SP использовать только в случае крайней необходимости, потому что замедляется работа
[close]
Т.к. у меня в логе скайпа переводов строки нигде нет - я поставил нули.

Но пока до сообщений дело даже не дошло, он даже заголовок не может разобрать. Причем, мне все-таки кажется, что не хочет дружить плагин importtxt с плагином skype. Возможно из-за того что скайповый (буквенный) UID его не устраивает.

UPD
Вот для примера, только что проверил - импорт работает.
Лог (сделанный HistoryPP) вида:
Spoiler
###
### Полная история
### CleriC (ICQ: 200911462) - Commander Duck (ICQ: 112074746)
### (generated by history++ plugin)
###

[21.01.2014 11:02:32] CleriC:
привет
футболки получил, все супер! большое спасибо

[21.01.2014 16:32:48] Commander Duck:
пожалуйста
[close]
Кодировка UTF-16 LE без BOM.
Шаблон importtxt вида
Spoiler
Code: [Select]
[General]
Name=History++ pattern (Cler)
Type=1
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
[close]
Результат:
Spoiler
(https://forum.miranda-ng.org/proxy.php?request=http%3A%2F%2Fi60.fastpic.ru%2Fbig%2F2014%2F0206%2F5e%2Ff76474321a8aa82958955341a835ea5e.png&hash=8297b26867634b545b455c15be819df87317a70d)
[close]
А со скапом не работает :(

Post Merge: 06 02 2014, 06:45:55
Все, разобрался  :) 
«Учится, учится и еще раз учится!» Прав был дедушка Ленин.


Вот, держите, может будет кому полезно, шаблон для распознавания лога скайпа:

Spoiler
Code: [Select]
[General]
Name=Skype new
Type=1
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]+?):\s
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=0
AfterRN=0
[close]
Лог вида:

Spoiler
###
### Полная история
### CleriC (Skype: iC1eriC) - Васильев Коля (Skype: nick.vas)
### (generated by history++ plugin)
###

[31.12.2012 22:39:32] CleriC: привет, Коля, с наступающим тебя!
[31.12.2012 22:39:58] Васильев Коля: привет, и тебя тоже с Наступающим
[05.06.2013 10:50:37] CleriC: Коля, привет
[close]
Для снятия со скайпа всего лога переписки, надо открыть контакт, нажать "С самого начала", выделить весь текст (ctrl+a) и скопировать его в текстовый файл UTF-16 LE без BOM. В файл добавить шапку как в примере.
Title: Re: Плагин Import TXT
Post by: hunnyr on 25 06 2015, 22:36:39
Друзья, помогите пожалуйста.

У меня довольно не тривиальная ситуация, мне надо было соединить истории 7 миранд, и старых и новых. И вот, в самом конце решил добить это дело импортированием  importtxt из папки MsgExport - сохранялась папка\файлы мирандой NG
Только я не могу понять, что у меня за шаблон такой сохранялся и где его можно взять. Перегуглился, больше не могу )
Spoiler
------------------------------------------------
      History for
User      : >>
Protocol  : ICQ
UIN       : 88**44428
FirstName :
LastName  :
Age       : 0
Gender    :
e-mail    :
Nick      :
City      :
State     :
Phone     :
Homepage  :
- About -

------------------------------------------------
>>  18.02.14 12:14:27 день добрый

>>  18.02.14 12:15:54 есть ли у вас такой web8
                      собираюсь покупать
<<  18.02.14 13:48:02 Здравствуйте

<<  18.02.14 13:48:09 Есть такой
....
...
...
и т.д.
[close]

Вроде бы всё должно быть просто из миранды в миранду. Но что то не так и я не могу понять что.. Все шаблоны перепробовал.. Не импортирует
Файлы у меня в utf8 сохранены.
....
Поставил на свежую версию плагин MsgExport . Оказывается это почти стандартный шаблон у меня, только галочка >> << делать выставлена.
Есть ли простой способ перенести в общую базу сообщения из этих тхт. Их просто много, около 8к.
Подскажите пожалуйста, как быть
Title: Re: Плагин Import TXT
Post by: hunnyr on 04 07 2015, 14:35:39
Начал разбираться в шаблоне
Message export import pattern
Немного переделал, но вот проблема, которую пока решить не могу. Если у контакта заполнен Nick  - импорт идёт. А вот если он пуст, как у меня в 90% всех случаев - не идёт.
Пробовал поставить InUIN, InUID - не получается
Пишет, что не может определить контакт назначения.

В итоге остаётся такой вопрос:
Если мне надо настроить импорт относительно строки
UIN       : 102**2324
Что мне надо вписать в
Pattern=****
In=1
ЗДЕСЬ=3
Подскажите пожалуйста, хотя бы примерный путь решения, я сам покопаюсь
Title: Re: Плагин Import TXT
Post by: hunnyr on 16 07 2015, 14:06:38
Выяснилась новая проблема. Даже если заполен НИК в логе в тхт. То не идет импорт у большинства списка пользователей, так как в базе они этого ника не имееют у меня. Их много и поэтому я не использую лист с сервера, так как у него ограничение в 1000 пользователей.
Может кто то подскажет, как по УИНу импортировать историю из этих тхт?
Проблемы нет, если взять пользователей из сервер-листа или импортировать историю из меню пользователя . А вот что бы группой , всех и сразу - увы..
Title: шаблон для импорта из MailRu Агента
Post by: solaris on 20 10 2016, 18:03:20
Приветсвтую!
Никто так и не написал шаблон для импорта из MailRu Агента?

--------------------------------------
Вадик (19.12.2012 21:16)
Привет. В Бразилии был?
Петр (19.12.2012 21:17)
Привет! Как угадал? Фотки на одноклассниках увидел?
--------------------------------------

Я, как не пытаюсь, понять regexp так и не могу.
Пробовал всякие online (типа https://www.debuggex.com/ ), но они не понимают regexp из Import TXT.

Буду благодарен за любые ответы, в том числе направление на учебник regexp'ов, которые применяются в Import TXT.
Title: Re: Плагин Import TXT
Post by: CleriC 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/ (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?)\)$
Title: Re: Плагин Import TXT
Post by: solaris 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]
Title: Re: Плагин Import TXT
Post by: CleriC on 26 10 2016, 07:20:15
Но не получается :(

Обратите внимание на группы (Group). См. скрин (в правой части).
Spoiler
(https://hsto.org/files/c6f/361/334/c6f3613345ca433eb4b1abd6f0a1ece7.png)
[close]

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

[Message]
Direction=7
Day=1
Month=2
Year=3
Hours=4
Minutes=5
Seconds=6
В соответствии с группами в регулярке. Секунд у вас в логе нет.
Ещё, возможно, надо проверить кодировку файла. UCS2 , UTF-8 или ANSI.
Title: Re: Плагин Import TXT
Post by: solaris 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.
Title: Re: Плагин Import TXT
Post by: CleriC 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):
Я проверил, всё работает, импортирует.
Title: Re: Плагин Import TXT
Post by: solaris on 27 10 2016, 10:20:40
Точно, всё получилось!

CleriC, огромное спасибо!!!
Title: Re: Плагин Import TXT
Post by: Mataes on 28 10 2016, 09:10:26
Выложите, пожалуйста, готовый файл для импорта. Добавим в шаблоны
Title: Re: Плагин Import TXT
Post by: solaris 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]
Title: Re: Плагин Import TXT
Post by: solaris 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, не знаю.
Title: Re: Плагин Import TXT
Post by: solaris 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]
Title: Re:Плагин Import TXT
Post by: lokapal 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
Title: Re: Плагин Import TXT
Post by: Apollo2k4 on 18 09 2017, 17:57:49
lokapal, импорт в mContacts из History++ сломан давно. Импортировать лучше в txt.
Title: Re: Плагин Import TXT
Post by: lokapal on 18 09 2017, 18:11:55
Спасибо, малька повозившись (ImportTXT падает, если видит.... ПУСТОЕ СООБЩЕНИЕ!!!) всё получилось через текст, спасибо.
Но надо
1. Написать где-нибудь в readme.txt/faq/первом посте темы о том, что нужно использовать именно этот режим.
2. Написать о том, что HistoryPP при экспорте для некоторых протоколов не пишет в заголовке поле "имя контакта". Если его не вписать самому - опять же всё падает с сообщением "Header not found"
Title: Re: Плагин Import TXT
Post by: Apollo2k4 on 18 09 2017, 18:21:36
Написать где-нибудь в readme.txt/faq/первом посте темы о том, что нужно использовать именно этот режим.
Нужно просто вымарать из History++ лишнее, но боюсь оно само уйдёт на свалку истории раньше…
Title: Re: Плагин Import TXT
Post by: dartraiden on 18 09 2017, 18:43:29
Можно написать в вики на страницах соответствующих плагинов, править могут все.
Title: Re: Плагин Import TXT
Post by: lokapal on 19 09 2017, 10:04:09
Такой вопрос - я бьюсь головой в открытую дверь  ;D или никакого другого плагина для импорта истории History++, кроме ImportTXT, нет? А то приходится специально ставить временно 32-битную Miranda
Title: Re: Плагин Import TXT
Post by: Apollo2k4 on 19 09 2017, 10:26:55
lokapal, увы, два оставшихся Delphi плагина.
Title: Re: Плагин Import TXT
Post by: dartraiden on 19 09 2017, 14:58:57
Дельфи-плагинов больше.
И да, они = боль.
Title: Re: Плагин Import TXT
Post by: Freeman on 18 10 2017, 19:53:44
А никто не делал ini-шку для импорта истории Skype в формате CSV, экспортированной самим Skype?