有很多播放记录,看着很烦,又不想手动删除,就用ai写了个清除的脚本
脚本如下
import requests
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
EMBY_URL = "填入你的emby地址"
API_KEY = "填入你的key"
def get_headers():
return {"X-Emby-Token": API_KEY, "Content-Type": "application/json"}
def get_users():
url = f"{EMBY_URL}/Users"
resp = requests.get(url, headers=get_headers())
resp.raise_for_status()
return resp.json()
def get_continue_watching(user_id):
url = f"{EMBY_URL}/Users/{user_id}/Items/Resume"
resp = requests.get(url, headers=get_headers())
resp.raise_for_status()
data = resp.json()
if isinstance(data, dict):
return data.get('Items', [])
return data
def get_played_items(user_id):
url = f"{EMBY_URL}/Users/{user_id}/Items"
resp = requests.get(url, headers=get_headers(), params={'Filters': 'IsPlayed'})
resp.raise_for_status()
data = resp.json()
return data.get('Items', [])
def mark_unplayed(user_id, item_id):
url = f"{EMBY_URL}/Users/{user_id}/PlayedItems/{item_id}/Delete"
resp = requests.post(url, headers=get_headers())
return resp.status_code in [200, 204]
def clear_playback_data(user_id, item_id):
url = f"{EMBY_URL}/Users/{user_id}/Items/{item_id}/UserData"
resp = requests.post(url, headers=get_headers(), json={
'PlaybackPositionTicks': 0,
'PlayCount': 0,
'Played': False,
'LastPlayedDate': None
})
return resp.status_code in [200, 204]
def main():
print("=" * 50)
print("Emby 播放记录管理工具")
print("=" * 50)
print("\n获取用户列表...")
users = get_users()
print(f"\n找到 {len(users)} 个用户:\n")
for i, user in enumerate(users):
print(f" [{i+1}] {user.get('Name', '未知')}")
print("\n" + "-" * 50)
choice = input("请选择用户编号: ").strip()
try:
idx = int(choice) - 1
if idx < 0 or idx >= len(users):
print("无效选择!")
return
selected_user = users[idx]
except ValueError:
print("无效输入!")
return
user_id = selected_user["Id"]
user_name = selected_user["Name"]
print(f"\n已选择用户: {user_name}")
print("-" * 50)
resume_items = get_continue_watching(user_id)
played_items = get_played_items(user_id)
total_count = len(resume_items) + len(played_items)
if total_count == 0:
print("\n没有记录")
return
print("\n" + "-" * 50)
confirm = input(f"确定清除 {user_name} 的记录? (y/n): ").strip().lower()
if confirm == 'y':
all_items = resume_items + played_items
for item in all_items:
item_id = item.get('Id')
if item_id:
mark_unplayed(user_id, item_id)
clear_playback_data(user_id, item_id)
print("\n记录已清除,请刷新!")
else:
print("\n已取消操作")
if __name__ == "__main__":
main()
1 个帖子 - 1 位参与者