Что нового

(Skype History Generation) история от Skype в CHM формате.

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
413
AutoIt: 3.3+
Версия: 1.3

Категория: База данных

Описание: Программа для извлечения истории из файла базы данных Skype'a и сохранения результата в CHM файл справки.

Код/Пример:
Написана на PureBasic, имеется и на AutoIt

Код:
#include <SQLite.au3>
#include <Date.au3>
#include <Array.au3>

Global $Index = 0, $sRead

$sFile = FileOpenDialog ('Skype History', '', 'Database (*.db)', -1, 'main')
If $sFile Then
	_SQLite_Startup()
	$hBase = _SQLite_Open($sFile)
	CreateHHP('Skype.hhp', GetName($hBase))
	$sName = _Skype_GetContacts($hBase)
	DirCreate(@ScriptDir & '\html')
	CreateHHC('Skype.hhc')
	If IsArray($sName) Then
		For $i = 0	To UBound($sName) - 1
			If (Not $Index) Then
				IniWrite('Skype.hhp', 'OPTIONS', 'Default topic', 'html\' & $sName[$i][0] & '.html')
				$Index = 1
			EndIf
			WriteHHC('Skype.hhc', $sName[$i][0])
			FileWrite(@ScriptDir & '\html\' & $sName[$i][0] & '.html', _Skype_GetMessages($hBase, $sName[$i][0]))
		Next
	EndIf
	CloseHHC('Skype.hhc')
	$iPid = Run(@ComSpec & ' /c hhc.exe Skype.hhp', '', @SW_HIDE, 2)
	While 1
		$sRead &= StdoutRead($iPid)
		If $sRead Then
			ExitLoop
		EndIf
	Wend
	FileDelete('Skype.hhp')
	FileDelete('Skype.hhc')
	DirRemove(@ScriptDir & '\html', 1)
	_SQLite_Close($hBase)
	_SQLite_Shutdown()
	MsgBox(0, 'Skype History Generation', 'Готово!')
EndIf

Func CreateHHP($sFile, $sName)
	IniWrite($sFile, 'OPTIONS', 'Compatibility', '1.1')
	IniWrite($sFile, 'OPTIONS', 'Compiled file', 'Skype (' & $sName & ').chm')
	IniWrite($sFile, 'OPTIONS', 'Contents file', 'Skype.hhc')
	IniWrite($sFile, 'OPTIONS', 'Language', '0x419')
	IniWrite($sFile, 'OPTIONS', 'Title', 'Skype History (' & $sName & ')')
EndFunc

Func CreateHHC($sFile)
	Local $sData = '<HTML>' & @CRLF
	      $sData &= '  <HEAD><!-- Sitemap 1.0 --></HEAD>' & @CRLF
		  $sData &= '  <BODY>' & @CRLF
		  $sData &= '    <OBJECT type="text/site properties"><param name="Window Styles" value="0x25"><param name="ImageType" value="Folder"></OBJECT>' & @CRLF
		  $sData &= '    <UL>' & @CRLF
	FileWrite($sFile, $sData)
EndFunc

Func WriteHHC($sFile, $sName)
	FileWrite($sFile, '<LI><OBJECT type="text/sitemap"><param name="Name" value="' & $sName & '"><param name="Local" value="html\' & $sName & '.html"></OBJECT>' & @CRLF)
EndFunc

Func CloseHHC($sFile)
	Local $sData = '    </UL>' & @CRLF
	      $sData &= '  </BODY>' & @CRLF
		  $sData &= '</HTML>'
	FileWrite($sFile, $sData)
EndFunc

Func GetName($hBase)
	Local $aResult, $iRows, $iColumns
	If _SQLite_GetTable2d($hBase, 'SELECT skypename FROM accounts', $aResult, $iRows, $iColumns) <> $SQLITE_OK Then
		Return SetError(1, 0, 0)
	EndIf
	Return $aResult[$iRows][0]
EndFunc

Func _Skype_GetContacts($hBase)
	Local $aResult, $iRows, $iColumns
	If _SQLite_GetTable2d($hBase, 'SELECT skypename FROM contacts', $aResult, $iRows, $iColumns) <> $SQLITE_OK Then
		Return SetError(1, 0, 0)
	EndIf
	_ArrayDelete($aResult, 0)
	Return $aResult
EndFunc

Func _Skype_GetMessages($hBase, $sPartner)
	Local $aResult, $iRows, $iColumns, $sReturn = ''
	If _SQLite_GetTable2d($hBase, 'SELECT timestamp, from_dispname, body_xml FROM Messages WHERE dialog_partner = "' & $sPartner & '"', $aResult, $iRows, $iColumns) <> $SQLITE_OK Then
		Return SetError(1, 0, 0)
    EndIf
	_ArrayDelete($aResult, 0)
	For $i = 0 To UBound($aResult) -1
		$sReturn &= '<font size="2" color="#414D8E"><b>[' & _DateAdd('s', $aResult[$i][0], "1970/01/01 00:00:00") & '] </b></font>'
		$sReturn &= '<font size="2" color="#E21F1F"><b>' & $aResult[$i][1] & '</b></font>
'
		$sReturn &= StringReplace($aResult[$i][2], @CRLF, '
') & '

'
	Next
	Return $sReturn
EndFunc

Файл: Skype History Generation

Снимок:


История версий:
v1.3

Инструкция:
1. Открываем файл shc.exe
2. Ищем файл базы данных от Skype main.db
3. Перемещаем файл базы данных мышкой в консольное окно и жмём Enter

Источник: autoit-script.ru
Автор(ы): Viktor1703, Afonichev Sergey
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Интересная штука.
Правда часть информации идет в неправильной кодировке
 

Stan_r

Новичок
Сообщения
2
Репутация
0
Добрый день всем, ребята подскажите что не ТАК - сделал все как в инструкции, хотя там ни чего сложного нет. вот скрин
..
Далее захожу в папку - "Skype History Generation" хочу открыть справку "hhc" - но открывается черное окно, похожее на консоль, и тут-же через секунду закрывается*(((.. кто знает как исправить?..
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
413
Сколько весит main.db, может в нём не содержится истории...
 

Stan_r

Новичок
Сообщения
2
Репутация
0
Смог открыть, открылось окно как у вас на скрине с контактами, но переписки не видно - почему ?
Хотя вот открываю через "SQLiteManager" видно только часть переписки
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
413
У меня на скрине совершенно другое, если хотите.. киньте мне через лс файл main.db я попробую вытащить данные.
 

militarist

Новичок
Сообщения
1
Репутация
0
В СНМ файле кроме списка контактов нет ничего, а где переписка?
P.S. Вроде получается, что если в самом скайпе уже нажималась кнопка "Очистить историю", то наличе файла main.db ничего не даст, видно только последние сообщения. Хотя контакты видно даже удаленные. Есть ли вариант прочитать, что было до того?
 

s0me0ne

Новичок
Сообщения
19
Репутация
2
Ай,ай,ай, армен, как не стыдно...
http://secrets-bg.com/portal/shop/05/index.php?cls=05
 
Верх