DEV Community

Phuong Tran (IT)
Phuong Tran (IT)

Posted on

Export all of Andoid apps

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)

Enter fullscreen mode Exit fullscreen mode

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.

Top comments (0)