Y Combinator Application Status

Just making it a little easier to track your Y Combinator application status.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Y Combinator Application Status
// @namespace    https://www.linkedin.com/in/jarrettcoggin
// @version      2024-05-07
// @description  Just making it a little easier to track your Y Combinator application status.
// @author       Jarrett Coggin
// @match        https://apply.ycombinator.com/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ycombinator.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    function createAndAppendContent(parent, tag, text) {
        var element = document.createElement(tag);
        element.innerText = text;
        parent.appendChild(element);
    }

    window.addEventListener('load', function() {
        var div = document.querySelector('div[data-react-props]');
        if (div) {
            var rawProps = div.getAttribute("data-react-props");
            try {
                var reactProps = JSON.parse(rawProps);
                console.log(reactProps);
                reactProps.all_apps.forEach(app => {
                    if (app.current_batch) {
                        var appId = app.id;
                        var selector = `a[href='apps/${appId}']`;
                        var linkElement = document.querySelector(selector);
                        if (linkElement) {
                            var parentDiv = linkElement.closest('div.mb-8.overflow-hidden.rounded-xl.bg-white.p-12.shadow-md.hover\\:shadow-xl');
                            var newContent = document.createElement('div');
                            newContent.innerHTML = '<h2>Application Status:</h2>';
                            createAndAppendContent(newContent, 'p', 'Status: ' + app.status);
                            createAndAppendContent(newContent, 'p', 'Rejected: ' + app.rejected);
                            createAndAppendContent(newContent, 'p', 'Stage: ' + app.stage);
                            createAndAppendContent(newContent, 'p', 'Invited: ' + app.invited);
                            createAndAppendContent(newContent, 'p', 'Result: ' + app.result);
                            createAndAppendContent(newContent, 'p', 'Updated At: ' + app.updated_at);
                            createAndAppendContent(newContent, 'p', 'Updated By User At: ' + app.updated_by_user_at);
                            createAndAppendContent(newContent, 'p', 'Interview: ' + app.interview);
                            createAndAppendContent(newContent, 'p', 'Interview in Person: ' + app.interview_in_person);
                            createAndAppendContent(newContent, 'p', 'Interview Questions Filled In: ' + app.interview_questions_filled_in);
                            createAndAppendContent(newContent, 'p', 'Interview Time: ' + app.interview_time);
                            createAndAppendContent(newContent, 'p', 'Interview Within 30 Mins: ' + app.interview_within_30_min);
                            createAndAppendContent(newContent, 'p', 'Last Message Replied To: ' + app.last_message_replied_to);
                            createAndAppendContent(newContent, 'p', 'Messages: ' + app.messages);
                            parentDiv.appendChild(newContent);
                        }
                    }
                });
            } catch (e) {
                console.error('Error parsing JSON or updating the page:', e);
            }
        } else {
            console.log('No div with data-react-props found');
        }
    });
})();