Chủ Nhật, 4 tháng 10, 2020

Series Python for Live - 01 - Increase for view Youtube by Python & Selenium

Yêu Cầu:

  • Hướng dẫn và sử dùng trên hệ đều hành Windows + Web Browser Chrome
  • Cài đặt Python3 + Chương trình Code (VSCode) --- (tham khảo >>>tại đây<<<)
  • Cài đặt Selenium --- (tham khảo >>>tại đây<<<)

Ý Tưởng:
Mỗi video trên youtube sẽ có một ID riêng, với thường sẽ có url dạng như sau "https://www.youtube.com/watch?v=7VaYiHadnPc" .. bằng thủ công hoặc công cụ chúng ta hãy lấy tất cả những ID mà chúng ta muốn tăng view, sau đó chuyển chúng vào cùng 1file videolist.txt với mỗi dòng là 1 cứu pháp và ID như lúc nãy...
  • Sau khi đã có file videolist.txt chứa danh sách ID video, ta viết 1 chương trình với ngôn ngữ python với ý tưởng như sau:
  • chrome sẽ mở từng tab và chạy ID video youtube được lấy từ từng dòng trong file videolist.txt, chúng ta có thể chạy 4 hoặc 5 hay nhiều hơn số tab và sau mỗi thời gian chúng ta quy định...
  • tiếp theo sau khoản thời gian chúng ta mong muốn vd là 1 phút thì quay lại tab đầu tiên và đổi nó thành video khác.. và tiếp tục cho những tab còn lại...
Digram:


Thực Hiện:

1. Mở File VideoList.txt Và Lấy Thông Tin

import time
from selenium import webdriver

#txt chứa đường link video youtube
VideoFileName = "videolist.txt"
ViewCountFileName = "videolog.txt"

#selector id nút playvideo trên youtube
btnSelector = "#movie_player > div.ytp-cued-thumbnail-overlay > button"

#mở file videolist và lấy đường link từ nội dung trong file
videofile = open(VideoFileName)
listvideo = videofile.readlines()

2. Khởi Chạy Video

videoIndex = 0
tabIndex = 0
tabCount = 1
viewCount = 0

#khai báo biến số tab để sau này tiện thay đổi
NUMBER_OF_TAB = 4
NUMBER_OF_VIDEO = len(listvideo)
LOOP_TIME = 15

#khởi chạy video lên
browser = webdriver.Chrome()
browser.get(listvideo[videoIndex])

#tìm tới cái selector play video
time.sleep(5)
playbutton = browser.find_element_by_css_selector(btnSelector)

#tìm được rồi thì play cái video bằng cách click vào nó
playbutton.click()

'''
Đến đây là ta có thể chạy chương trình với lấy 1 ID đầu tiên của file và chạy thành công...
.
.
còn nhiều hơn tiếp tục thêm phần bên dưới nhé
'''

3. Tạo Vòng Lặp Và Những Cấu Hình Cân Chỉnh Cho Hoàn Chỉnh

#tạo vòng lặp đến khi nào ta tắt thì chương trình mới dừng
while True:
videoIndex = (videoIndex +1) % NUMBER_OF_VIDEO
tabIndex = (tabIndex +1) % NUMBER_OF_TAB

if(tabCount < NUMBER_OF_TAB):
tabCount+=1
browser.execute_script("window.open('"+listvideo[videoIndex].strip()+"')")
else:
browser.switch_to_window(browser.window_handles[tabIndex]) #chuyển về tab củ đã mở
time.sleep(5) # ngưng 5s rồi chạy video
browser.get(listvideo[videoIndex]) # chạy video

#ghi ra file log đã chạy được bao nhiêu vòng lặp
viewCount +=1
saveFile = open(ViewCountFileName,"w")
saveFile.write(str(viewCount))
saveFile.close()

#sau thời gian LOOP_TIME thì sẽ quay về vòng lặp
time.sleep(LOOP_TIME)

Code Hoàn Chỉnh:

import time
from selenium import webdriver

#txt chứa đường link video youtube
VideoFileName = "videolist.txt"
ViewCountFileName = "videolog.txt"

#selector id nút playvideo trên youtube
btnSelector = "#movie_player > div.ytp-cued-thumbnail-overlay > button"

#mở file videolist và lấy đường link từ nội dung trong file
videofile = open(VideoFileName)
listvideo = videofile.readlines()

videoIndex = 0
tabIndex = 0
tabCount = 1
viewCount = 0

#khai báo biến số tab để sau này tiện thay đổi
NUMBER_OF_TAB = 4
NUMBER_OF_VIDEO = len(listvideo)
LOOP_TIME = 15

#khởi chạy video lên
browser = webdriver.Chrome()
browser.get(listvideo[videoIndex])

#tìm tới cái selector play video
time.sleep(5)
playbutton = browser.find_element_by_css_selector(btnSelector)

#tìm được rồi thì play cái video bằng cách click vào nó
playbutton.click()

'''
Đến đây là ta có thể chạy chương trình với lấy 1 ID đầu tiên của file và chạy thành công...
.
.
còn nhiều hơn tiếp tục thêm phần bên dưới nhé
'''


#tạo vòng lặp đến khi nào ta tắt thì chương trình mới dừng
while True:
videoIndex = (videoIndex +1) % NUMBER_OF_VIDEO
tabIndex = (tabIndex +1) % NUMBER_OF_TAB

if(tabCount < NUMBER_OF_TAB):
tabCount+=1
browser.execute_script("window.open('"+listvideo[videoIndex].strip()+"')")
else:
browser.switch_to_window(browser.window_handles[tabIndex]) #chuyển về tab củ đã mở
time.sleep(5) # ngưng 5s rồi chạy video
browser.get(listvideo[videoIndex]) # chạy video

#ghi ra file log đã chạy được bao nhiêu vòng lặp
viewCount +=1
saveFile = open(ViewCountFileName,"w")
saveFile.write(str(viewCount))
saveFile.close()

#sau thời gian LOOP_TIME thì sẽ quay về vòng lặp
time.sleep(LOOP_TIME)



Bạn có thể download trọn bộ file code tại đây 

==================================================================================

Nguyen Hoang Sang

Author & Editor

Công Nghệ Thông Tin - Bonsai Tiểu Cảnh

 
background image