2024-10-26 11:35:36 +00:00
|
|
|
<!--- WARNING --->
|
|
|
|
<!--- THIS IS AN AUTO-GENERATED FILE --->
|
|
|
|
<!--- MANUAL CHANGES CAN AND WILL BE OVERWRITTEN --->
|
|
|
|
|
|
|
|
|
|
|
|
|
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-10-26 11:35:36 +00:00
|
|
|
|
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-11-16 17:39:05 +00:00
|
|
|
|
2024-10-26 11:35:36 +00:00
|
|
|
|
|
|
|
## Dependencies
|
|
|
|
|
|
|
|
All requirements can be installed easily using:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
pip install -r requirements.txt
|
|
|
|
```
|
|
|
|
|
|
|
|
Full list of requirements:
|
2024-10-26 13:19:24 +00:00
|
|
|
- [beautifulsoup4](https://pypi.org/project/beautifulsoup4/)
|
2024-10-26 11:35:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
```
|
|
|
|
MIT License
|
|
|
|
|
|
|
|
Copyright (c) 2024 Jon Michael Aanes
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
|
|
copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
SOFTWARE.
|
|
|
|
```
|