Compare commits

..

2 Commits

Author SHA1 Message Date
KnugiHK 68089f5ae4 Update actions 2026-07-18 13:41:38 +08:00
Knugi cac2a2464d Update outdated script reference in README (#213) 2026-05-18 15:03:06 +00:00
8 changed files with 16 additions and 20 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v7
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }} - name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
uses: actions/setup-python@v5 uses: actions/setup-python@v5
+1 -1
View File
@@ -57,7 +57,7 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v7
# Add any setup steps before running the `github/codeql-action/init` action. # Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node` # This includes steps like installing compilers or runtimes (`actions/setup-node`
+7 -7
View File
@@ -14,7 +14,7 @@ jobs:
linux: linux:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v6 uses: actions/setup-python@v6
with: with:
@@ -31,7 +31,7 @@ jobs:
--assume-yes-for-downloads Whatsapp_Chat_Exporter --output-filename=wtsexporter_linux_x64 --assume-yes-for-downloads Whatsapp_Chat_Exporter --output-filename=wtsexporter_linux_x64
sha256sum wtsexporter_linux_x64 sha256sum wtsexporter_linux_x64
- name: Generate artifact attestation - name: Generate artifact attestation
uses: actions/attest-build-provenance@v3 uses: actions/attest-build-provenance@v4
with: with:
subject-path: ./wtsexporter_linux_x64 subject-path: ./wtsexporter_linux_x64
- uses: actions/upload-artifact@v6 - uses: actions/upload-artifact@v6
@@ -42,7 +42,7 @@ jobs:
windows-x64: windows-x64:
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v6 uses: actions/setup-python@v6
with: with:
@@ -69,7 +69,7 @@ jobs:
windows-arm: windows-arm:
runs-on: windows-11-arm runs-on: windows-11-arm
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v6 uses: actions/setup-python@v6
with: with:
@@ -96,7 +96,7 @@ jobs:
macos-arm: macos-arm:
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v6 uses: actions/setup-python@v6
with: with:
@@ -125,7 +125,7 @@ jobs:
macos-intel: macos-intel:
runs-on: macos-15-intel runs-on: macos-15-intel
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v6 uses: actions/setup-python@v6
with: with:
@@ -143,7 +143,7 @@ jobs:
mv wtsexporter wtsexporter_macos_x64 mv wtsexporter wtsexporter_macos_x64
shasum -a 256 wtsexporter_macos_x64 shasum -a 256 wtsexporter_macos_x64
- name: Generate artifact attestation - name: Generate artifact attestation
uses: actions/attest-build-provenance@v3 uses: actions/attest-build-provenance@v4
with: with:
subject-path: ./wtsexporter_macos_x64 subject-path: ./wtsexporter_macos_x64
- uses: actions/upload-artifact@v6 - uses: actions/upload-artifact@v6
+2 -2
View File
@@ -19,7 +19,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Set up Node.js - name: Set up Node.js
uses: actions/setup-node@v6 uses: actions/setup-node@v6
@@ -36,7 +36,7 @@ jobs:
- name: Deploy to gh-pages - name: Deploy to gh-pages
if: github.ref == 'refs/heads/main' # Ensure deployment only happens from main if: github.ref == 'refs/heads/main' # Ensure deployment only happens from main
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4.1.0
with: with:
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs publish_dir: ./docs
+1 -1
View File
@@ -22,7 +22,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v7
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
+1 -1
View File
@@ -113,7 +113,7 @@ Do an iPhone/iPad Backup with iTunes/Finder first.
> [!NOTE] > [!NOTE]
> If you are working on unencrypted iOS/iPadOS backup, skip this. > If you are working on unencrypted iOS/iPadOS backup, skip this.
If you want to work on an encrypted iOS/iPadOS Backup, you should install `iphone_backup_decrypt` from [KnugiHK/iphone_backup_decrypt](https://github.com/KnugiHK/iphone_backup_decrypt) before you run the extract_iphone_media.py. If you want to work on an encrypted iOS/iPadOS Backup, you should install `iphone_backup_decrypt` from [KnugiHK/iphone_backup_decrypt](https://github.com/KnugiHK/iphone_backup_decrypt) before you run the `ios_media_handler.py`.
```sh ```sh
pip install git+https://github.com/KnugiHK/iphone_backup_decrypt pip install git+https://github.com/KnugiHK/iphone_backup_decrypt
``` ```
+1 -5
View File
@@ -213,9 +213,6 @@ def rendering(
if "??" not in headline: if "??" not in headline:
raise ValueError("Headline must contain '??' to replace with name") raise ValueError("Headline must contain '??' to replace with name")
headline = headline.replace("??", name) headline = headline.replace("??", name)
# Create a temporary lookup map only at render-time;
# media preview in reply is a UI-specific concern and
# is ignored by the core database processing
with open(output_file_name, "w", encoding="utf-8") as f: with open(output_file_name, "w", encoding="utf-8") as f:
f.write( f.write(
template.render( template.render(
@@ -229,8 +226,7 @@ def rendering(
previous=previous, previous=previous,
status=chat.status, status=chat.status,
media_base=chat.media_base, media_base=chat.media_base,
headline=headline, headline=headline
msg_map={m.key_id: m for m in msgs}.get
) )
) )
+2 -2
View File
@@ -355,7 +355,7 @@
{% endif %} {% endif %}
</p> </p>
</div> </div>
{% set replied_msg = msg_map(msg.reply) %} {% set replied_msg = msgs | selectattr('key_id', 'equalto', msg.reply) | first %}
{% if replied_msg and replied_msg.media == true %} {% if replied_msg and replied_msg.media == true %}
<div class="flex-shrink-0"> <div class="flex-shrink-0">
{% if "image/" in replied_msg.mime %} {% if "image/" in replied_msg.mime %}
@@ -461,7 +461,7 @@
{% endif %} {% endif %}
</p> </p>
</div> </div>
{% set replied_msg = msg_map(msg.reply) %} {% set replied_msg = msgs | selectattr('key_id', 'equalto', msg.reply) | first %}
{% if replied_msg and replied_msg.media == true %} {% if replied_msg and replied_msg.media == true %}
<div class="flex-shrink-0"> <div class="flex-shrink-0">
{% if "image/" in replied_msg.mime %} {% if "image/" in replied_msg.mime %}