2024-10-26 11:35:36 +00:00
|
|
|
# WARNING
|
|
|
|
#
|
|
|
|
# THIS IS AN AUTOGENERATED FILE.
|
|
|
|
#
|
|
|
|
# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN.
|
|
|
|
|
|
|
|
import re
|
|
|
|
|
|
|
|
from setuptools import setup
|
|
|
|
|
|
|
|
PACKAGE_NAME = 'libpurple_to_markdown'
|
|
|
|
|
|
|
|
PACKAGE_DESCRIPTION = """
|
2024-10-31 21:38:57 +00:00
|
|
|
# Markdown Message Conversion.
|
2024-10-26 13:19:24 +00:00
|
|
|
|
2024-10-31 21:38:57 +00:00
|
|
|
Conversion script from various messaging formats to markdown.
|
2024-10-26 13:19:24 +00:00
|
|
|
|
2024-10-31 21:38:57 +00:00
|
|
|
Supported input formats:
|
|
|
|
|
|
|
|
- [Pidgin/Libpurple](https://pidgin.im/) chat program HTML-based logs. **This
|
|
|
|
backend is not actively maintained.**
|
|
|
|
- [SyncTech Backup & Restore](https://www.synctech.com.au/sms-backup-restore/)
|
|
|
|
XML-based backup format.
|
2024-10-26 13:19:24 +00:00
|
|
|
|
|
|
|
## Motivation
|
|
|
|
|
2024-10-31 21:38:57 +00:00
|
|
|
Messaging applications are mostly good at sending real-time messages to other
|
|
|
|
people, but they generally do not possess any useful archival features. Most
|
|
|
|
messages are write-once read-once, and the apps where built for this use case.
|
|
|
|
More and more through, I am attracted to the prospect of archival; of
|
|
|
|
understanding who I am and who I _were_ when I wrote those messages.
|
|
|
|
|
2024-10-26 13:19:24 +00:00
|
|
|
I recently discovered [Obsidian](https://obsidian.md) and liked the prospect of
|
|
|
|
cross-referencing my notes with my old chat logs. Libpurple uses HTML logs if
|
|
|
|
you haven't configured it to something else (which I haden't).
|
|
|
|
|
|
|
|
I no longer use IRC or Pidgin as my entire friend group have switched to using
|
|
|
|
Matrix.
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
2024-11-21 18:44:29 +00:00
|
|
|
There are two main import patterns:
|
|
|
|
|
|
|
|
- One-off archival import: For when you have a large set of messages to import
|
|
|
|
for a service that you don't use very much anymore.
|
|
|
|
- Recurring import: For when you are still using the service, and want to
|
|
|
|
import on a recurring basis.
|
|
|
|
|
|
|
|
This program will be default not overwrite existing files, as the user might
|
|
|
|
have modified it.
|
|
|
|
|
|
|
|
Special consideration must be taking for recurring imports if you expect to be
|
|
|
|
modifying the resulting files, for example if you are inserting links
|
|
|
|
using Obsidian's unlinked mentions feature. You might want to use the
|
|
|
|
`--skip-this-period` flag to avoid importing the current period until it has
|
|
|
|
become the last period. That way you won't accidentally modify the log, because
|
|
|
|
it has been finalized.
|
|
|
|
|
|
|
|
### One-off
|
|
|
|
|
|
|
|
This is the recommended command for the one-off case:
|
2024-10-26 13:19:24 +00:00
|
|
|
|
|
|
|
```bash
|
|
|
|
python -m libpurple_to_markdown LOG_DIRECTORY --output OUTPUT_FOLDER
|
|
|
|
```
|
|
|
|
|
2024-11-21 18:44:29 +00:00
|
|
|
### Recurring
|
|
|
|
|
|
|
|
This is the recommended command for the recurring import case:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
python -m libpurple_to_markdown LOG_DIRECTORY --output OUTPUT_FOLDER --skip-this-period --period month
|
|
|
|
```
|
2024-11-16 17:39:05 +00:00
|
|
|
|
|
|
|
## TODO
|
|
|
|
|
2024-11-21 18:44:29 +00:00
|
|
|
- [ ] SyncTech: Decode MMS parts and reconstruct image attachments.
|
2024-10-26 11:35:36 +00:00
|
|
|
""".strip()
|
|
|
|
|
|
|
|
PACKAGE_DESCRIPTION_SHORT = """
|
2024-10-31 21:38:57 +00:00
|
|
|
Conversion script from various messaging formats to markdown.""".strip()
|
2024-10-26 11:35:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
def parse_version_file(text: str) -> str:
|
|
|
|
match = re.match(r'^__version__\s*=\s*(["\'])([\d\.]+)\1$', text)
|
|
|
|
if match is None:
|
|
|
|
msg = 'Malformed _version.py file!'
|
|
|
|
raise Exception(msg)
|
|
|
|
return match.group(2)
|
|
|
|
|
|
|
|
|
|
|
|
with open(PACKAGE_NAME + '/_version.py') as f:
|
|
|
|
version = parse_version_file(f.read())
|
|
|
|
|
|
|
|
|
2024-10-26 13:19:24 +00:00
|
|
|
REQUIREMENTS_MAIN = [
|
|
|
|
'beautifulsoup4',
|
|
|
|
]
|
2024-10-26 11:35:36 +00:00
|
|
|
REQUIREMENTS_TEST = []
|
|
|
|
|
|
|
|
|
|
|
|
setup(
|
|
|
|
name=PACKAGE_NAME,
|
|
|
|
version=version,
|
|
|
|
description=PACKAGE_DESCRIPTION_SHORT,
|
|
|
|
long_description=PACKAGE_DESCRIPTION,
|
|
|
|
long_description_content_type='text/markdown',
|
|
|
|
author='Jon Michael Aanes',
|
|
|
|
author_email='jonjmaa@gmail.com',
|
|
|
|
url='https://gitfub.space/Jmaa/' + PACKAGE_NAME,
|
|
|
|
packages=[PACKAGE_NAME],
|
|
|
|
install_requires=REQUIREMENTS_MAIN,
|
|
|
|
extras_require={
|
|
|
|
'test': REQUIREMENTS_TEST,
|
|
|
|
},
|
|
|
|
python_requires='>=3.9',
|
|
|
|
)
|