"""点赞和收藏功能"""
from playwright.async_api import Page
from loguru import logger
class LikeAction:
"""点赞操作"""
def __init__(self, page: Page):
self.page = page
async def like(self, feed_id: str, xsec_token: str) -> bool:
"""点赞"""
logger.info(f"Liking feed: {feed_id}")
try:
from xiaohongshu.navigate import make_feed_detail_url
url = make_feed_detail_url(feed_id, xsec_token)
await self.page.goto(url)
await self.page.wait_for_load_state("networkidle")
# 找到点赞按钮并点击
like_button = await self.page.wait_for_selector(".like-btn")
await like_button.click()
logger.info("Liked successfully")
return True
except Exception as e:
logger.error(f"Failed to like: {e}")
return False
async def unlike(self, feed_id: str, xsec_token: str) -> bool:
"""取消点赞"""
logger.info(f"Unliking feed: {feed_id}")
# TODO: 实现取消点赞逻辑
return False
class FavoriteAction:
"""收藏操作"""
def __init__(self, page: Page):
self.page = page
async def favorite(self, feed_id: str, xsec_token: str) -> bool:
"""收藏"""
logger.info(f"Favoriting feed: {feed_id}")
try:
from xiaohongshu.navigate import make_feed_detail_url
url = make_feed_detail_url(feed_id, xsec_token)
await self.page.goto(url)
await self.page.wait_for_load_state("networkidle")
# 找到收藏按钮并点击
favorite_button = await self.page.wait_for_selector(".favorite-btn")
await favorite_button.click()
logger.info("Favorited successfully")
return True
except Exception as e:
logger.error(f"Failed to favorite: {e}")
return False
async def unfavorite(self, feed_id: str, xsec_token: str) -> bool:
"""取消收藏"""
logger.info(f"Unfavoriting feed: {feed_id}")
# TODO: 实现取消收藏逻辑
return False