Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/local/bin/python
- # coding: utf-8
- import json
- from datetime import datetime
- import re
- import os
- f = open('messages.json')
- data = json.load(f)
- f.close()
- print(data.get('userId'))
- for c in data.get('conversations', []): # DEBUG: proceed with 2 dialogs only
- folder_name = 'export_skype_%s' % c.get('displayName', '')
- if c.get('displayName', '') in [u'Star-Land (Minecraft Server)', u'Мои записи (Skype)', u'Star-Land - Test Group']:
- if not os.path.exists(folder_name):
- os.makedirs(folder_name)
- f = open(folder_name + '/_chat.txt', 'w+')
- first_line = True
- for m in reversed(c.get('MessageList', [])): # the order must be reversed to keep the dates
- # format messages as
- # [dd.mm.yyyy, HH:MM:SS] nick: message
- # [dd.mm.yyyy, HH:MM:SS] nick: <прикреплено: ХХХХ-ХХХХ-ХХХХ.jpg>
- # time
- res_arrival_time_str = None
- try:
- orig_arrival_time_str = m.get('originalarrivaltime')
- orig_arrival_time = datetime.strptime(orig_arrival_time_str[:19], '%Y-%m-%dT%H:%M:%S') # "2023-01-12T19:49:29.56Z"
- res_arrival_time_str = datetime.strftime(orig_arrival_time, '%d.%m.%Y, %H:%M:%S')
- except:
- pass
- # print(res_arrival_time_str)
- # sender
- res_sender = None
- orig_sender = m.get('from')
- if orig_sender == '8:live:llukyanov_2':
- res_sender = '+79001234567'
- else:
- res_sender = '+79001234567' # if one user is used, then import into telegram Group is possible
- # res_sender = orig_sender
- # print(res_sender)
- # message text
- # ignored message types: ThreadActivity/TopicUpdate, ThreadActivity/HistoryDisclosedUpdate, ThreadActivity/JoiningEnabledUpdate, ThreadActivity/PictureUpdate,
- # EndToEndEncryption/EncryptedText, RichText/Media_Album, RichText/Media_GenericFile, RichText/Media_AudioMsg, Event/Call, Poll,
- # Text (this one contains useless data like `Call Log for Call 4f729474-ea5f-4364-a9b7-97dffef84b02`)
- res_text = None
- if m.get('messagetype', '') == 'RichText/UriObject':
- regex = r"objects/(.*?)\""
- content = m.get('content', '')
- m = re.search(regex, content)
- if m:
- if os.path.isfile('media/'+ m.group(1) + '.1.jpg'): # only JPEG and PNG files are supported
- filename = m.group(1) + '.1.jpg'
- else:
- filename = m.group(1) + '.1.png'
- # move file
- if os.path.isfile('media/'+filename):
- res_text = u'<прикреплено: %s>' % filename
- os.rename('media/'+filename, folder_name+'/'+filename)
- elif m.get('messagetype', '') == 'RichText':
- res_text = m.get('content')
- res_text = res_text.replace('<i raw_pre="_" raw_post="_">', '_') # not really supported
- res_text = res_text.replace('</i>', '_')
- res_text = res_text.replace('<b raw_pre="*" raw_post="*">', '*') # not really supported
- res_text = res_text.replace('</b>', '*')
- res_text = res_text.replace('>', '>')
- res_text = res_text.replace('<', '<')
- res_text = res_text.replace(''', '\'')
- res_text = res_text.replace('"', '"')
- res_text = res_text.replace('&', '&')
- # res_text = res_text.replace('\n', '\\n')
- # res_text = res_text.replace('\r', '\\r')
- res_text = res_text.replace('<ss type=\"2757_heavyexclamationmarksymbol\">(exclamationmark)</ss>', u'❗️')
- res_text = res_text.replace('<ss type=\"trophy\">(trophy)</ss>', u'🏆')
- res_text = res_text.replace('<ss type=\"26a0_warningsign\">(warning)</ss>',u'⚠️')
- res_text = res_text.replace('<ss type=\"26a0_warningsign\">(26a0_warningsign)</ss>',u'⚠️')
- res_text = res_text.replace('<ss type=\"cry\">(cry)</ss>',u'😢')
- res_text = res_text.replace('<ss type=\"1f3b2_gamedie\">(1f3b2_gamedie)</ss>',u'🎲')
- res_text = res_text.replace('<ss type=\"2705_whiteheavycheckmark\">(checkmarkbutton)</ss>',u'✅')
- res_text = res_text.replace('<ss type=\"2714_heavycheckmark\">(checkmark)</ss>',u'✔︎')
- res_text = res_text.replace('<ss type=\"274c_crossmark\">(274c_crossmark)</ss>',u'❌')
- res_text = res_text.replace('<ss type=\"plane\">(plane)</ss>',u'✈️')
- res_text = res_text.replace('<ss type=\"2611_ballotboxwithcheck\">(checkbox)</ss>',u'☑️')
- res_text = res_text.replace('<ss type=\"smile\">(smile)</ss>',u'🙂')
- res_text = res_text.replace('<ss type=\"pumpkin\">(pumpkin)</ss>',u'🎃')
- res_text = res_text.replace('<ss type=\"1f4c9_chartwithdownwardstrend\">(negativegraph)</ss>', u'📉')
- res_text = res_text.replace('<ss type=\"1f9e7_redenvelope\">(redenvelope)</ss>',u'💌')
- res_text = res_text.replace('<ss type=\"1f531_tridentemblem\">(trident)</ss>',u'🔱')
- res_text = res_text.replace('<ss type=\"2620_skullandcrossbones\">(2620_skullandcrossbones)</ss>',u'☠️')
- res_text = res_text.replace('<ss type=\"2620_skullandcrossbones\">(skullandbones)</ss>',u'☠️')
- res_text = res_text.replace('<ss type=\"1f3b0_slotmachine\">(slotmachine)</ss>',u'🎰')
- res_text = res_text.replace('<ss type=\"1f3b2_gamedie\">(dice)</ss>',u'🎲')
- res_text = res_text.replace('<ss type=\"1f451_crown\">(crown)</ss>',u'👑')
- res_text = res_text.replace('<ss type=\"1f4b0_moneybag\">(moneybag)</ss>',u'💰')
- res_text = res_text.replace('<ss type=\"1f4bc_briefcase\">(briefcase)</ss>',u'💼')
- res_text = res_text.replace('<ss type=\"1f553_fouroclock\">(fouroclock)</ss>',u'🕓')
- res_text = res_text.replace('<ss type=\"cwl\">(cwl)</ss>', u'')
- res_text = res_text.replace('<ss type=\"heart\">(heart)</ss>', u'❤️')
- res_text = res_text.replace('<ss type=\"mangraduate\">(mangraduate)</ss>',u'👨🎓')
- res_text = res_text.replace('<ss type=\"manteacher\">(manteacher)</ss>',u'👨🏫')
- res_text = res_text.replace('<ss type=\"phone\">(phone)</ss>',u'☎️')
- res_text = res_text.replace('<ss type=\"speechbubble\">(speechbubble)</ss>',u'💬')
- res_text = res_text.replace('<ss type=\"surprised\">(surprised)</ss>',u'😮')
- res_text = res_text.replace('<ss type=\"yes\">(yes)</ss>',u'🆗')
- # remove other emojis
- regex_emoji = re.compile('<ss type=\\"\w+\\">\(\w+\)</ss>')
- res_text = re.sub(regex_emoji, '', res_text)
- # remove all other tags
- regex_cleanr = re.compile('<.*?>')
- res_text = re.sub(regex_cleanr, '', res_text)
- # print(res_text)
- if res_arrival_time_str and res_sender and res_text:
- res_line = '[%s] %s: %s' % (res_arrival_time_str, res_sender, res_text)
- if first_line:
- first_line_str = u'[%s] %s создал(-а) группу "%s"' % (res_arrival_time_str, res_sender, c.get('displayName', ''))
- f.write(first_line_str.encode('utf-8')+'\r\n')
- first_line = False
- f.write(res_line.encode('utf-8')+'\r\n')
- # print(res_line)
- else:
- # print(res_arrival_time_str, res_sender, res_text)
- pass
- f.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement