修复点赞

This commit is contained in:
work
2026-04-08 16:02:00 +08:00
parent 7bbaf8499d
commit 5111e8288f

View File

@@ -270,7 +270,8 @@ def check_account_status(page, cookies):
# 判断是否需要运行cookies页面 # 判断是否需要运行cookies页面
if "flow=user_cookie_choice_v2&source=pft_user_cookie_choice" in page.url: if "flow=user_cookie_choice_v2&source=pft_user_cookie_choice" in page.url:
allow_cookies = page.query_selector('//div[@role="dialog"]/div/div/div/div/div[3]/div/div/div[1]/div[1]/div/div') allow_cookies = page.query_selector(
'//div[@role="dialog"]/div/div/div/div/div[3]/div/div/div[1]/div[1]/div/div')
if allow_cookies is None: if allow_cookies is None:
raise OperationFailed("允许cookies设置点击失败") raise OperationFailed("允许cookies设置点击失败")
allow_cookies.click() allow_cookies.click()
@@ -294,6 +295,30 @@ lock = RLock()
login_semaphore = threading.Semaphore(2) login_semaphore = threading.Semaphore(2)
def is_post_liked_in_dialog(page):
"""判断弹窗内的帖子是否已点赞"""
# 检查是否存在已点赞按钮
remove_like_button = page.query_selector('[role="dialog"] div[aria-label="Remove Like"]')
if remove_like_button:
# 获取点赞数
like_count_elem = remove_like_button.query_selector('..').query_selector('span[dir="auto"]')
like_count = like_count_elem.inner_text() if like_count_elem else "未知"
print(f"帖子已点赞,点赞数:{like_count}")
return True
else:
# 检查是否存在未点赞按钮
like_button = page.query_selector('[role="dialog"] div[aria-label="Like"]')
if like_button:
like_count_elem = like_button.query_selector('..').query_selector('span[dir="auto"]')
like_count = like_count_elem.inner_text() if like_count_elem else "0"
print(f"帖子未点赞,点赞数:{like_count}")
return False, like_count
else:
print("未找到点赞按钮")
return False
def playwright_like(cookies, target_url): def playwright_like(cookies, target_url):
path = os.path.join(BASE_PATH, 'chrome', '130-0008', 'chrome.exe') path = os.path.join(BASE_PATH, 'chrome', '130-0008', 'chrome.exe')
with lock: with lock:
@@ -317,14 +342,11 @@ def playwright_like(cookies, target_url):
page = context.new_page() page = context.new_page()
check_account_status(page, parse_cookies(cookies)) check_account_status(page, parse_cookies(cookies))
url = 'https://facebook.com'
try: try:
retry_goto(page, url)
time.sleep(random.randint(3, 10)) time.sleep(random.randint(3, 10))
if 'permalink.php?story_fbid' in target_url or '/permalink/' in target_url or '/posts/' in target_url: if 'permalink.php?story_fbid' in target_url or '/permalink/' in target_url or '/posts/' in target_url:
# 文字或图片类型 # 文字或图片类型
button_xpath = '//*[@role="dialog"]//span[text()="Like" or @data-ad-rendering-role="like_button"]' button_xpath = '//*[@role="dialog"]//div[text()="Like" or @data-ad-rendering-role="like_button"]'
elif 'watch/?v' in target_url or '/videos/' in target_url: elif 'watch/?v' in target_url or '/videos/' in target_url:
# 视频类型, 视频类型, # 视频类型, 视频类型,
button_xpath = '//span[@data-ad-rendering-role="like_button"][1]' button_xpath = '//span[@data-ad-rendering-role="like_button"][1]'
@@ -343,9 +365,9 @@ def playwright_like(cookies, target_url):
# 滚动到按钮所在处 # 滚动到按钮所在处
button.scroll_into_view_if_needed() button.scroll_into_view_if_needed()
# 判断按钮是否已经点过赞 # 判断按钮是否已经点过赞
if button.get_attribute('style') == "" or button.get_attribute('style') is None: if is_post_liked_in_dialog(page):
# 未点过赞进行点赞操作 # 未点过赞进行点赞操作
button.click(force=True) button.evaluate("element => element.click()")
else: else:
raise OperationFailed("未找到点赞按钮") raise OperationFailed("未找到点赞按钮")
time.sleep(10) time.sleep(10)
@@ -1254,8 +1276,10 @@ def playwright_share(cookies, target_url, content):
if __name__ == '__main__': if __name__ == '__main__':
cookies = "c_user=61587708421547; xs=32:70ZigyqtoCfQ0w:2:1770569737:-1:-1; oo=v13:1770569731; datr=A8CIafB8DHVOhB7TfY9GWAIG" cookies = {"c_user": "61580731829951", "datr": "YAG0acMh3dBPSWnm3cJbRXi3",
print(playwright_check_account_cookies(cookies)) "fr": "0R0Vyl5VWkjupCB9r.AWev5P-8DfHd85RU3mkQYZQCOhBiJFmEB_v36B87pqndwSE9tDc.BptAHA..AAA.0.0.BptAHA.AWf5e5v7gJOW95xdm38EkmtRYl0",
"xs": "27:0Z_9KYAMCws04A:2:1773404616:-1:-1"}
# print(playwright_check_account_cookies(cookies))
# print(playwright_set_user_profile(cookies, "61584735094876", "Inaaya", "Inaaya", # print(playwright_set_user_profile(cookies, "61584735094876", "Inaaya", "Inaaya",
# "facebook/user_upload/0196f098-851c-7810-b2aa-0833a0a7b09d/8c428558-2d90-4f45-baa3-a25f8a654b5c.png")) # "facebook/user_upload/0196f098-851c-7810-b2aa-0833a0a7b09d/8c428558-2d90-4f45-baa3-a25f8a654b5c.png"))
# cookies = '{"locale": "en_US", "datr": "ZnGnaBBx0yN7pov19-8_A6Gr", "sb": "ZnGnaDQicDSsVuevkudqio1J", "m_pixel_ratio": "1", "wd": "1920x1080", "test_cookie": "CheckForPermission", "c_user": "61579364283503", "xs": "34%3AdWeZoaWzFrtdVQ%3A2%3A1755804022%3A-1%3A-1", "oo": "v1%7C3%3A1755804031"}' # cookies = '{"locale": "en_US", "datr": "ZnGnaBBx0yN7pov19-8_A6Gr", "sb": "ZnGnaDQicDSsVuevkudqio1J", "m_pixel_ratio": "1", "wd": "1920x1080", "test_cookie": "CheckForPermission", "c_user": "61579364283503", "xs": "34%3AdWeZoaWzFrtdVQ%3A2%3A1755804022%3A-1%3A-1", "oo": "v1%7C3%3A1755804031"}'
@@ -1267,7 +1291,8 @@ if __name__ == '__main__':
# post(cookies, 'cs2025') # post(cookies, 'cs2025')
# like(cookies, 'ZmVlZGJhY2s6MTIyMTA5NjE0NjU0NzkzNzc5') # like(cookies, 'ZmVlZGJhY2s6MTIyMTA5NjE0NjU0NzkzNzc5')
# comment(cookies, 'ZmVlZGJhY2s6MTIyMTA5NjE0NjU0NzkzNzc5', 'game la', 'xzpq.mp4') # comment(cookies, 'ZmVlZGJhY2s6MTIyMTA5NjE0NjU0NzkzNzc5', 'game la', 'xzpq.mp4')
# playwright_like(cookies, 'https://www.facebook.com/watch/?v=1007800324567828') playwright_like(cookies,
'https://www.facebook.com/permalink.php?story_fbid=pfbid026dQik7NyujSGd2rjWyTKbQVw2CVM5BeJEP9sYxo7K5TBGhWZ4sUfs4gMoSLKq2mJl&id=61575372223339')
# print(playwright_post(cookies, '1111', image_key="1.mp4")) # print(playwright_post(cookies, '1111', image_key="1.mp4"))
# playwright_post(cookies, '2025-3-26~like', "") # playwright_post(cookies, '2025-3-26~like', "")
# playwright_comment( # playwright_comment(