diff --git a/README.md b/README.md index fd31d75..b9f502c 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,6 @@ If you would like to support this project, all you need to do is to contribute o > [!NOTE] > Usage in README may be removed in the future. Check the usage in [Wiki](https://github.com/KnugiHK/Whatsapp-Chat-Exporter/wiki) -> -> If you want to use the old release (< 0.5) of the exporter, please follow the [old usage guide](https://github.com/KnugiHK/Whatsapp-Chat-Exporter/wiki/Old-Usage#usage). First, install the exporter by: ```shell @@ -82,7 +80,10 @@ To support Crypt15 backup, install javaobj-py3 if it is not installed pip install javaobj-py3 # Or pip install whatsapp-chat-exporter["crypt15"] # install along with this software ``` -Place the encrypted WhatsApp Backup (msgstore.db.crypt15) in the working directory. If you also want the name of your contacts, get the contact database, which is called wa.db. And copy the WhatsApp (Media) directory from your phone directly. +Before proceeding with this method, you must first create an end-to-end encrypted backup. For detailed instructions, refer to [WhatsApp's help center](https://faq.whatsapp.com/490592613091019). + +Once you have copied the backup files to your computer, place the encrypted WhatsApp backup file (msgstore.db.crypt15) into the working directory. If you also wish to include your contacts' names, obtain the contact database file, named wa.db. Additionally, copy the WhatsApp Media folder directly from your phone. + If you do not have the 32 bytes hex key (64 hexdigits), place the decryption key file (encrypted_backup.key) extracted from Android. If you gave the 32 bytes hex key, simply put the key in the shell. Now, you should have something like this in the working directory (if you do not have 32 bytes hex key). @@ -134,17 +135,23 @@ After extracting, you will get these: Invoke the wtsexporter with --help option will show you all options available. ```sh > wtsexporter --help -usage: wtsexporter [-h] [-a] [-i] [-e EXPORTED] [-w WA] [-m MEDIA] [-b BACKUP] [-o OUTPUT] [-j [JSON]] [--avoid-encoding-json] [--pretty-print-json [PRETTY_PRINT_JSON]] [-d DB] [-k KEY] [-t TEMPLATE] [-s] - [-c] [--offline OFFLINE] [--size [SIZE]] [--no-html] [--check-update] [--assume-first-as-me] [--no-avatar] [--import] [--business] [--wab WAB] [--time-offset {-12 to 14}] [--date DATE] - [--date-format FORMAT] [--include [phone number ...]] [--exclude [phone number ...]] [--dont-filter-empty] [--per-chat] [--create-separated-media] [--decrypt-chunk-size DECRYPT_CHUNK_SIZE] - [--enrich-from-vcards ENRICH_FROM_VCARDS] [--default-country-code DEFAULT_CONTRY_CODE] [--txt [TEXT_FORMAT]] +usage: wtsexporter [-h] [-a] [-i] [-e EXPORTED] [-w WA] [-m MEDIA] [-b BACKUP] [-o OUTPUT] [-j [JSON]] + [--avoid-encoding-json] [--pretty-print-json [PRETTY_PRINT_JSON]] [-d DB] [-k KEY] [-t TEMPLATE] + [-s] [-c] [--offline OFFLINE] [--size [SIZE]] [--no-html] [--check-update] [--assume-first-as-me] + [--no-avatar] [--import] [--business] [--wab WAB] [--time-offset {-12 to 14}] [--date DATE] + [--date-format FORMAT] [--include [phone number ...]] [--exclude [phone number ...]] + [--dont-filter-empty] [--per-chat] [--create-separated-media] + [--decrypt-chunk-size DECRYPT_CHUNK_SIZE] [--enrich-from-vcards ENRICH_FROM_VCARDS] + [--default-country-code DEFAULT_CONTRY_CODE] [--txt [TEXT_FORMAT]] [--experimental-new-theme] + [--call-db [CALL_DB_IOS]] [--headline HEADLINE] -A customizable Android and iOS/iPadOS WhatsApp database parser that will give you the history of your WhatsApp conversations in HTML and JSON. Android Backup Crypt12, Crypt14 and Crypt15 supported. +A customizable Android and iOS/iPadOS WhatsApp database parser that will give you the history of your WhatsApp +conversations in HTML and JSON. Android Backup Crypt12, Crypt14 and Crypt15 supported. options: -h, --help show this help message and exit -a, --android Define the target as Android - -i, --ios, --iphone Define the target as iPhone/iPad + -i, --ios, Define the target as iPhone/iPad -e EXPORTED, --exported EXPORTED Define the target as exported chat file and specify the path to the file -w WA, --wa WA Path to contact database (default: wa.db/ContactsV2.sqlite) @@ -185,20 +192,29 @@ options: Include chats that match the supplied phone number --exclude [phone number ...] Exclude chats that match the supplied phone number - --dont-filter-empty By default, the exporter will not render chats with no valid message. Setting this flag will cause the exporter to render those. + --dont-filter-empty By default, the exporter will not render chats with no valid message. Setting this flag will + cause the exporter to render those. This is useful if chat(s) are missing from the output --per-chat Output the JSON file per chat --create-separated-media Create a copy of the media seperated per chat in /separated/ directory --decrypt-chunk-size DECRYPT_CHUNK_SIZE Specify the chunk size for decrypting iOS backup, which may affect the decryption speed. --enrich-from-vcards ENRICH_FROM_VCARDS - Path to an exported vcf file from Google contacts export. Add names missing from WhatsApp's default database + Path to an exported vcf file from Google contacts export. Add names missing from WhatsApp's + default database --default-country-code DEFAULT_CONTRY_CODE - Use with --enrich-from-vcards. When numbers in the vcf file does not have a country code, this will be used. 1 is for US, 66 for Thailand etc. Most likely use the number of your own - country - --txt [TEXT_FORMAT] Export chats in text format similar to what WhatsApp officially provided (default if present: result/) + Use with --enrich-from-vcards. When numbers in the vcf file does not have a country code, this + will be used. 1 is for US, 66 for Thailand etc. Most likely use the number of your own country + --txt [TEXT_FORMAT] Export chats in text format similar to what WhatsApp officially provided (default if present: + result/) + --experimental-new-theme + Use the newly designed WhatsApp-alike theme + --call-db [CALL_DB_IOS] + Path to call database (default: 1b432994e958845fffe8e2f190f26d1511534088) iOS only + --headline HEADLINE The custom headline for the HTML output. Use '??' as a placeholder for the chat name -WhatsApp Chat Exporter: 0.10.5 Licensed with MIT. See https://wts.knugi.dev/docs?dest=osl for all open source licenses. +WhatsApp Chat Exporter: 0.11.2 Licensed with MIT. See https://wts.knugi.dev/docs?dest=osl for all open source +licenses. ``` # To do diff --git a/Whatsapp_Chat_Exporter/__main__.py b/Whatsapp_Chat_Exporter/__main__.py index ac1d3dc..d8d9b2a 100644 --- a/Whatsapp_Chat_Exporter/__main__.py +++ b/Whatsapp_Chat_Exporter/__main__.py @@ -43,7 +43,6 @@ def main(): parser.add_argument( '-i', '--ios', - '--iphone', dest='ios', default=False, action='store_true', @@ -475,12 +474,6 @@ def main(): db.row_factory = sqlite3.Row contacts(db, data) elif args.ios: - import sys - if "--iphone" in sys.argv: - print( - "WARNING: The --iphone flag is deprecated and will" - "be removed in the future. Use --ios instead." - ) contacts = ios_handler.contacts messages = ios_handler.messages media = ios_handler.media diff --git a/Whatsapp_Chat_Exporter/ios_handler.py b/Whatsapp_Chat_Exporter/ios_handler.py index 1c72072..258bc61 100644 --- a/Whatsapp_Chat_Exporter/ios_handler.py +++ b/Whatsapp_Chat_Exporter/ios_handler.py @@ -199,7 +199,10 @@ def messages(db, data, media_folder, timezone_offset, filter_date, filter_chat, FROM ZWAMESSAGE WHERE ZSTANZAID LIKE '{message.reply}%'""") quoted_content = cursor2.fetchone() - message.quoted_data = quoted_content["ZTEXT"] or quoted_content + if quoted_content and "ZTEXT" in quoted_content: + message.quoted_data = quoted_content["ZTEXT"] + else: + message.quoted_data = None if content["ZMESSAGETYPE"] == 15: # Sticker message.sticker = True diff --git a/docs.html b/docs.html index 7b2e841..e64e2c5 100644 --- a/docs.html +++ b/docs.html @@ -1,7 +1,6 @@ -