Skip to content

Commit

Permalink
Notebook for cleaning AI tags
Browse files Browse the repository at this point in the history
  • Loading branch information
MinasukiHikimuna committed Sep 9, 2024
1 parent 16d7651 commit 3d0fab9
Showing 1 changed file with 188 additions and 0 deletions.
188 changes: 188 additions & 0 deletions pandas/ai_tag_cleanup.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Create Stash app client\n",
"\n",
"import pandas as pd\n",
"import dotenv\n",
"\n",
"from libraries.client_stashapp import get_stashapp_client\n",
"\n",
"dotenv.load_dotenv()\n",
"\n",
"stash = get_stashapp_client()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from dataclasses import dataclass\n",
"\n",
"\n",
"@dataclass\n",
"class TagConversion:\n",
" ai_tag: any\n",
" target_tag: any\n",
"\n",
"tag_conversion = {\n",
" \"Anal Fucking_AI\": \"Anal\",\n",
" \"Ass Penetration_AI\": \"Anal\",\n",
" \"Anal Gape_AI\": \"Anal Gape\",\n",
" \"Ball Licking/Sucking_AI\": \"Ball Licking\",\n",
" \"Blowjob_AI\": \"Blowjob\",\n",
" \"Cumshot_AI\": \"Cumshot\",\n",
" \"Cum on Person_AI\": \"Cumshot\",\n",
" \"Deepthroat_AI\": \"Deepthroat\",\n",
" \"Fingering_AI\": \"Fingering\",\n",
" \"Grabbing Ass_AI\": \"Ass Grabbing\",\n",
" \"Grabbing Boobs_AI\": \"Breast Squeezing\",\n",
" \"Grabbing Hair/Head_AI\": \"Grabbing Hair/Head\",\n",
" \"Handjob_AI\": \"Handjob\",\n",
" \"Kissing_AI\": \"Kissing\",\n",
" \"Licking Penis_AI\": \"Dick Licking\",\n",
" \"Masturbation_AI\": \"Masturbation\",\n",
" \"Pissing_AI\": \"Peeing\",\n",
" \"Pussy Licking_AI\": \"Pussy Licking\",\n",
" \"Pussy Licking (Clearly Visible)_AI\": \"Pussy Licking\",\n",
" \"Pussy Rubbing_AI\": \"Pussy Rubbing\",\n",
" \"Sucking Toy/Dildo_AI\": \"Toy Sucking\",\n",
" \"Undressing_AI\": \"Striptease\",\n",
" \"Vaginal Fucking_AI\": \"Vaginal Sex\",\n",
" \"Vaginal Penetration_AI\": \"Vaginal Penetration\",\n",
" \"Wet (Genitals)_AI\": \"Wet Genitals\"\n",
"}\n",
"\n",
"stash_tag_conversion = {}\n",
"\n",
"for ai_tag_name in tag_conversion.keys():\n",
" target_tag_name = tag_conversion[ai_tag_name]\n",
"\n",
" ai_tag = stash.find_tag(ai_tag_name)\n",
" if not ai_tag:\n",
" raise Exception(\"Could not find tag: \" + ai_tag_name)\n",
" \n",
" target_tag = stash.find_tag(target_tag_name)\n",
" if not target_tag:\n",
" raise Exception(\"Could not find tag: \" + tag_conversion[ai_tag_name])\n",
"\n",
" stash_tag_conversion[ai_tag[\"id\"]] = TagConversion(ai_tag, target_tag)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ai_reviewed_tag = stash.find_tag(\"AI_Reviewed\")\n",
"ai_reviewed_tag_id = ai_reviewed_tag[\"id\"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"scene_id = 18562\n",
"\n",
"markers = stash.get_scene_markers(scene_id)\n",
"ai_markers = [m for m in markers if m[\"title\"].endswith(\"_AI\")]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for ai_marker in ai_markers:\n",
" marker_ai_tag_id = ai_marker[\"primary_tag\"][\"id\"]\n",
"\n",
" if marker_ai_tag_id not in stash_tag_conversion:\n",
" print(\"Could find conversion for tag: \" + ai_marker[\"primary_tag\"][\"name\"])\n",
" continue\n",
"\n",
" marker_target_tag = stash_tag_conversion[marker_ai_tag_id].target_tag\n",
" if not marker_target_tag:\n",
" print(\"Could not find target tag for: \" + ai_marker[\"primary_tag\"][\"name\"])\n",
" continue\n",
"\n",
" update_marker = stash.update_scene_marker({\n",
" \"id\": ai_marker[\"id\"],\n",
" \"scene_id\": ai_marker[\"scene\"][\"id\"],\n",
" \"title\": marker_target_tag[\"name\"],\n",
" \"primary_tag_id\": marker_target_tag[\"id\"],\n",
" \"tag_ids\": []\n",
" })\n",
"\n",
"scene = stash.find_scene(scene_id)\n",
"scene_tags = scene[\"tags\"]\n",
"print(\"Existing tags:\")\n",
"print([f\"{t[\"id\"]}: {t[\"name\"]}\" for t in scene_tags])\n",
"\n",
"ai_marker_tags = [m[\"primary_tag\"][\"id\"] for m in ai_markers]\n",
"ai_tags = [t for t in scene_tags if t[\"id\"] in ai_marker_tags]\n",
"non_ai_tags = [t for t in scene_tags if t[\"id\"] not in ai_marker_tags]\n",
"\n",
"print(\"AI tags:\")\n",
"print([f\"{t[\"id\"]}: {t[\"name\"]}\" for t in ai_tags])\n",
"\n",
"print(\"Non AI tags:\")\n",
"print([f\"{t[\"id\"]}: {t[\"name\"]}\" for t in non_ai_tags])\n",
"\n",
"non_ai_tags_ids = [t[\"id\"] for t in non_ai_tags]\n",
"\n",
"update_scene = stash.update_scene({\n",
" \"id\": scene_id,\n",
" \"tag_ids\": non_ai_tags_ids\n",
"})"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"scene = stash.find_scene(scene_id)\n",
"scene_tags = scene[\"tags\"]\n",
"scene_tag_ids = [t[\"id\"] for t in scene_tags] + [ai_reviewed_tag_id]\n",
"\n",
"update_scene = stash.update_scene({\n",
" \"id\": scene_id,\n",
" \"tag_ids\": scene_tag_ids\n",
"})"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "name_of_my_env",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

0 comments on commit 3d0fab9

Please sign in to comment.