惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
IT之家
IT之家
博客园 - 聂微东
The Cloudflare Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
H
Help Net Security
博客园 - 叶小钗
V
V2EX
WordPress大学
WordPress大学
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
C
Check Point Blog
B
Blog
D
DataBreaches.Net
美团技术团队
罗磊的独立博客

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Export all of Andoid apps
Phuong Tran (IT) · 2026-05-28 · via DEV Community

Phuong Tran (IT)

Download: App List

Sau khi Export một file .html thì bạn mở lên sẽ không thấy app icons đâu. Hãy chạy đoạn script Python dưới đây để có thể **bổ sung app icons vào Android app list*.

Để tìm kiếm và bổ sung tự động icon thực tế của ứng dụng (từ Google Play Store hoặc các nguồn khác trên mạng) vào file HTML của bạn, phương pháp tối ưu nhất là sử dụng Script tự động (Python hoặc NodeJS) kết hợp với các công cụ/API cào dữ liệu (Web Scraping).

Vì trong file HTML của bạn đã có sẵn mã gói ứng dụng (ví dụ: com.alibaba.aliyun), việc tìm kiếm bằng package-name sẽ cho kết quả chính xác 100%.

Dưới đây là các phương pháp phổ biến và dễ thực hiện nhất:


Phương pháp 1: Sử dụng thư viện Python google-play-scraper (Khuyên dùng)

Đây là cách dễ nhất, không cần đăng ký API key và tỷ lệ thành công rất cao. Thư viện này sẽ tự động tìm kiếm trên Google Play Store dựa trên package-name và trả về link icon (hình ảnh).

Cách hoạt động:

  1. Đọc file HTML của bạn để lấy tất cả package-name.
  2. Dùng thư viện quét qua Play Store để lấy URL của icon.
  3. Chèn thẻ <img src="URL_ICON" /> vào trước tên ứng dụng trong HTML.

Đoạn code Python mẫu để bạn chạy:
(Trước khi chạy, bạn cài thư viện bằng lệnh: pip install google-play-scraper beautifulsoup4)
Lưu file với tên tuỳ chọn và chạy trong cmd.exe: py append_applist_icons.py.

from bs4 import BeautifulSoup
from google_play_scraper import app as play_app
import time

# 1. Đọc file HTML gốc của bạn (thay tên file tương ứng)
input_file = "apps_20260527232642_1.html"
output_file = "apps_with_icons.html"

with open(input_file, "r", encoding="utf-8") as f:
    soup = BeautifulSoup(f.read(), "html.parser")

# Tìm tất cả các khối ứng dụng
app_items = soup.find_all("div", class_="app-item")

print(f"Đang xử lý {len(app_items)} ứng dụng...")

for index, item in enumerate(app_items):
    package_div = item.find("div", class_="package-name")
    if package_div:
        package_name = package_div.text.strip()

        try:
            # 2. Lấy thông tin từ Google Play Store bằng package name
            # Thêm timeout hoặc delay nhỏ để tránh bị Google chặn (Rate limit)
            time.sleep(0.5) 
            result = play_app(package_name, lang='vi', country='vn')
            icon_url = result.get('icon')

            if icon_url:
                # 3. Bổ sung thẻ img chứa icon vào trước app-name
                name_div = item.find("div", class_="app-name")
                if name_div:
                    # Tạo thẻ img mới
                    icon_tag = soup.new_tag("img", src=icon_url)
                    icon_tag['style'] = "width: 48px; height: 48px; display: block; margin: 0 auto 8px auto; border-radius: 10px;"
                    name_div.insert_before(icon_tag)
                    print(f"[{index+1}] Đã thêm icon cho: {package_name}")

        except Exception as e:
            # Nếu ứng dụng không có trên Play Store (app nội địa, app tự phát triển, hoặc bị gỡ)
            print(f"[{index+1}] Không tìm thấy trên Play Store: {package_name}")

            # Thêm một icon mặc định nếu không tìm thấy
            name_div = item.find("div", class_="app-name")
            if name_div:
                icon_tag = soup.new_tag("img", src="https://cdn-icons-png.flaticon.com/512/564/564419.png")
                icon_tag['style'] = "width: 48px; height: 48px; display: block; margin: 0 auto 8px auto; opacity: 0.5;"
                name_div.insert_before(icon_tag)

# Sau khi chạy xong, lưu lại thành file mới
with open(output_file, "w", encoding="utf-8") as f:
    f.write(str(soup))

print("Hoàn thành! File mới đã được lưu thành:", output_file)

Tuỳ vào số lượng app của bạn. Script có thể mất vài phút đến vài chục phút. Trung bình 1-2 giây là sẽ tìm tải và chèn xong một icon vào file html.


Phương pháp 2: Sử dụng các dịch vụ Proxy Icon trực tiếp (Không cần chạy code phức tạp)

Nếu bạn không muốn chạy code Python mà muốn sửa thẳng vào CSS/HTML thông qua một đường dẫn URL động, bạn có thể tận dụng một số dịch vụ bên thứ ba hoặc công cụ hiển thị ảnh theo package name.

Tuy nhiên, Google Play Store không cung cấp link ảnh cố định dạng play.google.com/icon/com.whatsapp.png. Do đó, bạn vẫn phải dùng một dịch vụ trung gian (API).

Ví dụ một số API miễn phí/trả phí từ các bên cung cấp dữ liệu thiết bị di động như Apkpure, ApkCombo hoặc các open-source API trên GitHub:

  • Thay vì tải ảnh về, bạn có thể gán link ảnh trong HTML dạng: <img src="https://api.example.com/get-icon?package=com.alibaba.aliyun" />.

Nhược điểm: Các dịch vụ này thường không ổn định lâu dài nếu họ đổi cấu trúc API hoặc chặn request từ trình duyệt.


Phương pháp 3: Sử dụng API tìm kiếm hình ảnh của Google/Bing (Dành cho app không có trên Play Store)

Có một số ứng dụng (như game Trung Quốc bản nội địa, ứng dụng rác, ứng dụng hệ thống) sẽ không xuất hiện trên Google Play Store quốc tế.

  • Giải pháp: Bạn có thể dùng Google Custom Search JSON API hoặc Bing Image Search API.
  • Cách làm: Gửi truy vấn tìm kiếm bằng từ khóa "Tên ứng dụng" + "icon png" hoặc "package-name" + "icon". Sau đó lấy URL hình ảnh đầu tiên trả về từ kết quả tìm kiếm để chèn vào HTML.
  • Lưu ý: Phương pháp này cần bạn đăng ký API Key (thường miễn phí một lượng giới hạn bài tìm kiếm mỗi ngày).

Tóm lại, bạn nên làm gì lúc này?

Nếu bạn có một chút kiến thức về máy tính, hãy cài Python, copy đoạn code ở Phương pháp 1 và chạy. Nó sẽ tự động đọc file HTML hiện tại của bạn, tự lên mạng tìm đúng logo của Alibaba Cloud (阿里云), Facebook, TikTok,... và chèn thẳng vào file HTML giúp bạn một cách đẹp mắt nhất.