This is a public archive of older content from Al-Qaddaary's English Telegram Channel.
I made this archive so previous posts, translations, files, audio, images, and other shared material remain accessible in a cleaner browsing format.
The main channel is now used more for interaction, announcements, updates, and current activity.
This archive is for readers who still want to access the older material.
- Searchable posts
- Date and month filtering
- Media filters
- Arabic and English support
- Images, videos, audio, PDFs, and files
- Dark and light mode
- Message links
- Copy post text
- Media hosted through Archive.org
The site is static.
It uses:
- HTML
- CSS
- JavaScript
- Telegram export JSON
- Archive.org for media hosting
This guide explains how the Telegram archive was made.
The setup has three main parts:
- Export the Telegram channel data.
- Upload media files to Archive.org.
- Host the archive website as a static site.
From Telegram Desktop:
- Open the channel.
- Click the menu.
- Choose Export chat history.
- Export as JSON.
- Include media if you want images, audio, video, and files to work in the archive.
The export folder may contain files like:
result.json
photos/
video_files/
files/
stickers/
voice_messages/
images/The important file is:
result.jsonThat is the raw Telegram export.
The website itself should stay light.
So media files are uploaded to Archive.org instead of being stored inside the Git repository.
Install the Internet Archive CLI:
sudo dnf install pipx
pipx ensurepath
pipx install internetarchiveConfigure it:
ia configureUpload the media folders:
ia upload alqaddari-tg-archive \
photos/ \
video_files/ \
files/ \
stickers/ \
voice_messages/ \
images/If the upload stops or Archive.org rate-limits you, upload missing files slowly.
First create a local list:
find photos video_files files stickers voice_messages images \
-type f -printf '%f\n' | sort > local-flat.txtThen create an Archive.org list:
ia list alqaddari-tg-archive | sort > uploaded.txtCompare them:
comm -23 local-flat.txt uploaded.txt > missing-flat.txtUpload the missing files slowly:
while IFS= read -r name; do
file=$(find photos video_files files stickers voice_messages images -type f -name "$name" | head -1)
if [ -n "$file" ]; then
echo "Uploading: $file"
ia upload alqaddari-tg-archive "$file"
sleep 12
else
echo "Could not find: $name"
fi
done < missing-flat.txtThe raw Telegram JSON is not ideal for the frontend.
So it is processed into a cleaner file:
result.processed.jsonRun:
python3 tools/preprocess.py result.json result.processed.json \
--media-base https://archive.org/download/alqaddari-tg-archive/ \
--flatten-mediaThis does several things:
- Cleans the message data.
- Converts text into paragraphs.
- Handles Arabic and English paragraph direction.
- Builds Archive.org media URLs.
- Adds searchable text.
- Adds tags for filtering.
The --flatten-media option is important because Archive.org stores the uploaded files without their original folder paths.
Example:
photos/photo_1.jpgbecomes:
https://archive.org/download/alqaddari-tg-archive/photo_1.jpgStart a local server:
python3 -m http.server 8080Open:
http://localhost:8080Do not open index.html directly by double-clicking it, because the browser may block loading the JSON file.
The archive is static, so it can be hosted on:
- GitHub Pages
- Vercel
- Netlify
- Any static host
The main files are:
index.html
styles.css
app.js
result.processed.json
assets/
fonts/Commit and push:
git add .
git commit -m "Build Telegram archive"
git pushWhen you want to update the archive:
- Export the channel again.
- Replace
result.json. - Upload any new media files to Archive.org.
- Regenerate
result.processed.json. - Test locally.
- Commit and push.
Regenerate:
python3 tools/preprocess.py result.json result.processed.json \
--media-base https://archive.org/download/alqaddari-tg-archive/ \
--flatten-mediaTest:
python3 -m http.server 8080Commit:
git add result.json result.processed.json
git commit -m "Update archive data"
git pushA typical project folder looks like this:
index.html
styles.css
app.js
result.json
result.processed.json
assets/
logo.jpg
fonts/
Cinzel-VariableFont_wght.ttf
Lateef-Regular.ttf
Lateef-Bold.ttf
AmiriQuran-Regular.ttf
tools/
preprocess.pyThe archive works by turning a Telegram JSON export into a static website, while storing large media files on Archive.org.
Telegram provides the exported content. Archive.org stores the media. The static site presents everything in a searchable archive.