Gả nhầm hào môn, chủ mẫu khó đương - Chương 191

Cập nhật lúc: 2025-08-18 14:48:32
Lượt xem: 188

Mời Quý độc giả CLICK vào liên kết hoặc ảnh bên dưới

mở ứng dụng Shopee, sau đó quay trở lại để tiếp tục đọc toàn bộ chương truyện!

https://s.shopee.vn/5L5nAgyTop

MonkeyD và đội ngũ Editor xin chân thành cảm ơn!

# -*- coding: utf-8 -*-

 

# ==============================================================================

# --- BƯỚC 0: CÀI ĐẶT MÔI TRƯỜNG CHO GOOGLE COLAB ---

# ==============================================================================

# Các lệnh sẽ cài đặt trình duyệt Chrome và driver cần thiết.

# BẮT BUỘC chạy ô tiên và chờ nó tất.

print(">>> Đang cài đặt Chrome và các gói cần thiết...")

!apt-get update

!apt-get install -y chromium-browser chromium-chromedriver > /dev/null 2>&1

!pip install selenium > /dev/null 2>&1

print(">>> Cài đặt tất!")

 

import time

import random

import threading

from selenium import webdriver

from selenium.webdriver.chrome.service import Service

from selenium.webdriver.chrome.options import Options

from urllib.parse import urlparse, urlunparse

 

# ==============================================================================

# --- BƯỚC 1: KHU VỰC CẤU HÌNH ---

# ==============================================================================

 

# Dán danh sách các URL chương truyện bạn chạy đây

# Mỗi URL một dòng, trong cặp ba dấu nháy kép """..."""

CHAPTER_URLS_TEXT = """

https://monkeyd.net.vn/ga-nham-hao-mon-chu-mau-kho-duong/chuong-1.html

https://monkeyd.net.vn/ga-nham-hao-mon-chu-mau-kho-duong/chuong-2.html

https://monkeyd.net.vn/ga-nham-hao-mon-chu-mau-kho-duong/chuong-3.html

https://monkeyd.net.vn/ga-nham-hao-mon-chu-mau-kho-duong/chuong-4.html

https://monkeyd.net.vn/ga-nham-hao-mon-chu-mau-kho-duong/chuong-5.html

"""

 

# Số " ảo" chạy song song ( luồng)

# Lưu ý: Colab giới hạn tài nguyên, nên giữ con ở mức hợp lý (ví dụ: 2-5)

NUM_WORKERS = 3

 

# Thời gian "" mỗi chương (giây). Đặt lớn hơn 105 giây để chắc chắn.

VIEW_TIME_S = 108

 

# Thời gian nghỉ (giây) khi xong hết danh sách khi lặp

MIN_LOOP_WAIT_S = 300  # 5 phút

MAX_LOOP_WAIT_S = 600  # 10 phút

 

# ==============================================================================

# --- BƯỚC 2: LÕI CỦA CÔNG CỤ (KHÔNG CẦN CHỈNH SỬA) ---

# ==============================================================================

 

# Cờ để điều khiển việc dừng các luồng

stop_threads = False

 

def setup_colab_driver():

    """Thiết lập một trình duyệt Chrome để chạy môi trường Google Colab."""

    chrome_options = Options()

Lãnh Hàn Hạ Vũ

    # Các tùy chọn là BẮT BUỘC để chạy Selenium Colab

    chrome_options.add_argument("--headless")

    chrome_options.add_argument("--no-sandbox")

    chrome_options.add_argument("--disable-dev-shm-usage")

 

    # Các tùy chọn tối ưu hóa khác

    chrome_options.add_argument("--disable-gpu")

    chrome_options.add_argument("--disable-extensions")

    chrome_options.add_argument("--log-level=3") # Chỉ hiển thị nghiêm trọng

    # Chặn tải hình ảnh để tiết kiệm tài nguyên

    chrome_options.add_experimental_option(

        "prefs", {"profile.managed_default_content_settings.images": 2}

    )

 

    # Giả lập một User Agent phổ biến

    user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

    chrome_options.add_argument(f'user-agent={user_agent}')

 

    try:

        # Sử dụng đường dẫn mặc định của chromedriver Colab

        service = Service('/usr/bin/chromedriver')

        driver = webdriver.Chrome(service=service, options=chrome_options)

        return driver

    except Exception as e:

        print(f"Lỗi nghiêm trọng khi khởi tạo driver: {e}")

        return None

 

def selenium_worker(worker_id, chapter_urls):

    """

    Hàm công việc cho mỗi luồng.

    Mỗi luồng sẽ duyệt qua danh sách URL, đó nghỉ và lặp .

    """

    global stop_threads

   

    # Vòng lặp vô tận: xong sẽ tự reset và bắt đầu

    while not stop_threads:

        print(f"[Worker #{worker_id}] Bắt đầu một lượt mới.")

       

[Truyện được đăng tải duy nhất tại MonkeyD.net.vn - https://monkeydtruyen.com/ga-nham-hao-mon-chu-mau-kho-duong/chuong-191.html.]

        # Duyệt qua từng URL trong danh sách

        for url in chapter_urls:

            if stop_threads:

                print(f"[Worker #{worker_id}] Nhận tín hiệu dừng, kết thúc.")

                break

 

            driver = None # Đảm bảo driver khởi tạo

            try:

                driver = setup_colab_driver()

                if not driver:

                    print(f"[Worker #{worker_id}] Không thể khởi tạo trình duyệt. Bỏ qua chương .")

                    time.sleep(60) # Chờ 1 phút khi thử

                    continue

               

                print(f"[Worker #{worker_id}] Đang mở chương: ...{url[-30:]}")

                driver.get(url)

 

                print(f"[Worker #{worker_id}] Đang '' trong {VIEW_TIME_S} giây...")

                time.sleep(VIEW_TIME_S)

               

                print(f"[Worker #{worker_id}] Hoàn thành chương: ...{url[-30:]}")

 

            except Exception as e:

                print(f"[Worker #{worker_id}] Gặp khi xử lý URL {url}: {e}")

            finally:

                if driver:

                    driver.quit() # Đóng trình duyệt để giải phóng tài nguyên

       

        if stop_threads:

            break

 

        # Nghỉ ngơi khi bắt đầu

        reset_wait = random.randint(MIN_LOOP_WAIT_S, MAX_LOOP_WAIT_S)

        print(f"[Worker #{worker_id}] Đã thành danh sách. Sẽ bắt đầu {reset_wait // 60} phút {reset_wait % 60} giây.")

       

        # Vòng lặp chờ thể ngắt

        for _ in range(reset_wait):

            if stop_threads:

                break

            time.sleep(1)

 

def main():

    """Hàm chính để khởi tạo và quản lý các luồng."""

    global stop_threads

   

    print(">>> Bắt đầu công cụ tăng view (Phiên bản Google Colab) <<<")

   

    # Lọc và sạch danh sách URL

    urls = [url.strip() for url in CHAPTER_URLS_TEXT.strip().split('\n') if url.strip()]

    if not urls:

        print("Lỗi: Không tìm thấy URL nào trong cấu hình. Vui lòng kiểm tra BƯỚC 1.")

        return

       

    print(f"Đã tìm thấy {len(urls)} chương để xử lý.")

    print(f"Số luồng chạy song song: {NUM_WORKERS}")

    print("Nhấn nút 'Dừng' (Stop) trong Colab để kết thúc chương trình.")

 

    threads = []

    for i in range(NUM_WORKERS):

        # Chia đều danh sách URL cho các worker

        # Điều giúp các worker truy cập cùng URL một lúc

        worker_urls = urls[i::NUM_WORKERS]

       

        thread = threading.Thread(

            target=selenium_worker,

            args=(i + 1, worker_urls),

            daemon=True

        )

        threads.append(thread)

        thread.start()

        time.sleep(random.randint(2, 5)) # Dãn cách thời gian khởi động các trình duyệt

 

    # Giữ cho chương trình chính chạy và chờ tín hiệu dừng

    try:

        while True:

            # Kiểm tra xem tất cả các luồng còn sống

            if not any(t.is_alive() for t in threads):

                print("Tất cả các worker dừng. Kết thúc chương trình.")

                break

            time.sleep(5)

    except KeyboardInterrupt:

        print("\n>>> Đã nhận tín hiệu dừng. Đang yêu cầu các luồng kết thúc... <<<")

        stop_threads = True

        # Chờ các luồng kết thúc một cách an

        for t in threads:

            t.join()

        print(">>> Chương trình kết thúc an . <<<")

 

# ==============================================================================

# --- BƯỚC 3: CHẠY CÔNG CỤ ---

# ==============================================================================

if __name__ == "__main__":

    main()

 

Loading...