{"id":38821146,"url":"https://github.com/zbee/xiv-pose-organizer","last_synced_at":"2026-01-17T13:04:54.835Z","repository":{"id":151601230,"uuid":"487357787","full_name":"zbee/xiv-pose-organizer","owner":"zbee","description":"A tool to help you trudge through your massive FFXIV Anamnesis or Concept Matrix Poses folder and get them organized and tagged for easy searching.    This parses your poses folder and builds a workflow to process each pose, and finally a stage to review your changes and make sweeping modifications as well, and finally commit the edits.","archived":false,"fork":false,"pushed_at":"2024-07-29T20:09:25.000Z","size":1438,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-30T02:20:52.067Z","etag":null,"topics":["anamnesis","ffxiv","organization","organizer","pose"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zbee.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-30T18:55:00.000Z","updated_at":"2024-07-29T20:09:29.000Z","dependencies_parsed_at":"2023-04-07T19:55:58.127Z","dependency_job_id":null,"html_url":"https://github.com/zbee/xiv-pose-organizer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zbee/xiv-pose-organizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbee%2Fxiv-pose-organizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbee%2Fxiv-pose-organizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbee%2Fxiv-pose-organizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbee%2Fxiv-pose-organizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zbee","download_url":"https://codeload.github.com/zbee/xiv-pose-organizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbee%2Fxiv-pose-organizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28508943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T11:50:55.898Z","status":"ssl_error","status_checked_at":"2026-01-17T11:50:55.569Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anamnesis","ffxiv","organization","organizer","pose"],"created_at":"2026-01-17T13:04:54.760Z","updated_at":"2026-01-17T13:04:54.820Z","avatar_url":"https://github.com/zbee.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xiv-pose-organizer\n\n\u003e Windows 10, PHP 8.1, with compatibility for .pose and\n\u003e .cmp files.\n\nA tool to help you go through and organize all of\nyour FFXIV poses and make them searchable.\n\n## Software Preview\n![Preview of the Work Through process of the software](preview.png)\n## Output Preview\n\n![Preview of the output of the work through process](output_preview.png)\n\n(there are 2 output modes; folders for cleaner storage and more structured\nsearching, flat for simpler searching)\n\n# What is this\n\nThe point is to go through all of your poses, categorize\nthem, have extra resources for them (like preview images\nand links to the website of the pose), and ultimately\njust make them searchable in Anamnesis/CMT.\n\nYou run the software, open it in your browser, and begin configuring it.\n\nIt can be configured such that it requests you do as little as\npossible, just naming the poses and the authors, and choosing\ntags and categories - or for much more work that could be done\nlittle by little over time to also include previews images for\nevery pose, link to where the pose was downloaded from, how\nmany people are required for the pose to work and how many\npeople are posed in a pack of pose files, and so on.\n\nAfter configuration it tries to parse as much information as it can from the\nfolder\nand file names the poses already exist in, to reduce your workload.\n\nClarifying or completing the names of the poses, including\nthe name of the author, adding the link to where you got\nthe pose, adding a preview image of the pose, and tagging\nand categorizing the pose.\n\nAll of this data for all of your poses will then be outputted\nin a standard manner across all of your poses, including\nthe organization of the files themselves, and the poses will\nthen be better searchable in Anamnesis/CMT by the correct\npose names, the author, or the categories and tags you choose.\n\nFor more, see the [`use-case.md`](use-case.md) file.\n\n# How to use this\n\nThe basic idea of this is that you could throw this in\n[XAMPP](https://www.apachefriends.org/index.html)\nwith a\n[PHP Installation](https://windows.php.net/download#php-8.1)\n(VS16 x64 Non Thread Safe \u003e Zip)\nand visit localhost:80 on your computer and run through\nthe program (something would be clunky since /web is the\nroot, not the actual folder).\n\nA less user-friendly, but similar, way to run this that is known to work\nwould be to open\n[PHPStorm](https://www.jetbrains.com/phpstorm/)\nwith the interpreter\n[PHP 8.1.4](https://windows.php.net/download#php-8.1),\nand then run it as a \"PHP Built-in Web Server\" \u003e on \"localhost\" port \"80\" \u003e\nwith the document root set as (projects)\"\\xiv-pose-organizer\\web\" then\nopen up localhost:80.\n\nOnce you confirm your settings and begin working through\nyour poses you can download and remove poses in between\nsessions of organization. It will throw off your place in\nthe process, so if it does a lot there's a \"1st Unedited\"\nbutton to go to the first pose that was not worked on.\n\nIn the work through process you can click the grey fields\nalong the left side of the screen to copy the data in the\nfield. This is useful for copying the \"Path to File\" to\nopen the folder of the pose and examine the other poses\nin a pack.\n\n# How to code on this\n\nSo this is a little bit scuffed on the front-end. Sorry.\n\nAs for the back-end, it kept to the architecture plan\npretty well and is fairly well documented and structured.\nI think the main oddity of it would be the general\nstructure as I wanted to prioritize short calls, so\neverything just extends off of each other to get calls\nlike `$poser-\u003eget_packs()` and `$poser-\u003eget_tags()` vs\n`$poser-\u003epose-\u003eget_packs()` and `$poser-\u003etags-\u003eget_tags()`.\n\nRead the included [`use-case.md`](use-case.md) file for\ninformation on the goal of the code.\n\n[`architecture.md`](architecture.md) is a brief plan from\nbefore the project was written - once this reaches a point where it\nhas all of the planned features this will adjust.\n\nCheck the [To-Do](todo.md) for planned changes and unimplemented features.\n\n---\n\n`/web` is the root of the front-end.\n\nIn there `index.php` is the start of the process. It's\nclose to empty, just loading jquery and css, showing a\nloading icon while some of the pose files are initially\nparsed.\nIt starts to get messy when uses `ajax` to poll\n`middleman.php` with a page specified.\n\n`middleman.php` is another fairly sparse file, all it does\nis load the `web/handle/*` or `web/template/*` file given\na page.\n\nThe `web/template/*` files are just HTML.PHP files that\nload the base for the settings, work-through (the actual\nediting of each pose), and the review steps of the process.\nThey are a fair bit messy with some of the work-around\nnonsense that I did to deal with jQuery's lack of DOM\nrefreshing, but they're not too dreadful.\n\nThe `web/handle/*` files are fairly sparse as well, just\nsaving the settings data or calling the back-end to save\nthe pose data, or saving the steps of the review process.\n\nThe `web/assets/js/*` files are all the JavaScript required\nto run each `template` files, and are included there.\n\nThe flow then is `index.php` =\u003e `middleman.php`\n=\u003e `web/template/configure.php` =\u003e\n`web/assets/js/configure.php` ? =\u003e\n`web/handle/configure.php`.\n\nIf it's a GET request, it goes\nto a `template` file, and POST goes to a `handle` file.\nWhen using the caret symbols to go forward and backward\nbetween pages it will send POST requests to save progress,\nand a GET request to load the page you're going to.\n\nTo work on a specific page:\nYou would look at the html in the `template` folder,\nyou would adjust the back-end calls in the `handle` folder,\nand adjust the scripting for a page in the `assets/js`\nfolder.\n\n---\n\nGiven the back-end is better documented and close-ish to\nthe planned architecture I will go into it less.\n\n`/logic/autoload.php` is called and includes everything else.\n\nIt first includes the `utilities` folder for global static\nmethods. After that is the `static_data` and `structures`\nfolder for ... well ... static data and data structures.\n\nNext is the `core` folder where most of the work-through\nprocess is done - this is the bulk of the code utilized in\nactually parsing, modifying, and saving the poses.\n\nLast are the `check` and `review` folders. These are not\npopulated or called in the MVP I'm initially releasing,\nbut the `check` folder will contain the methods for \nactually checking the data for the `review` code, and\nthe `review` folder will contain all the calls to the\n`check` folder and give reports back to the user and\nlinks to jump back into the work-through process.\n\nA `/data` folder is utilized for `.json` files containing\nsettings and step-of-the-process data.\n\nA `/..working` folder is added to the user-configured\nposes directory and is where all of the work-in-progress\nfrom the work-through step will be.\nEssentially this will double (or more) the size of the\npose folder as the user works through the process, but\nalso allows for the review steps to work off of progress\nthat has already been made, and for the process to be\ncompleted intermittently without disrupting the user.\nAt the end, the pose folder is empty, and this folders'\ncontents replace it.\n\n# Licensing\n    xiv-pose-organizer: a tool to organize poses generated by Anamnesis or CMT.\n    Copyright (C) 2022  Ethan Henderson (zbee) \u003cethan@zbee.codes\u003e\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program; see a LICENSE file.  If not, see\n    \u003chttps://www.gnu.org/licenses/\u003e.\n\nSee the [LICENSE](LICENSE) file.\n\nIncludes jQuery 3.6.0 and Nord 0.2.0 palettes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzbee%2Fxiv-pose-organizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzbee%2Fxiv-pose-organizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzbee%2Fxiv-pose-organizer/lists"}