{"id":24698914,"url":"https://github.com/himanshumahajan138/plagx","last_synced_at":"2026-01-31T09:33:14.727Z","repository":{"id":251248795,"uuid":"836832231","full_name":"himanshumahajan138/PlagX","owner":"himanshumahajan138","description":"An automated tool for detecting plagiarism in LeetCode coding contests. It crawls contest data, processes user submissions, generates comprehensive reports, and uploads results to GitHub. Features secure handling of environment variables and seamless integration with GitHub for efficient data management.","archived":false,"fork":false,"pushed_at":"2024-10-22T08:53:21.000Z","size":72,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T21:44:41.618Z","etag":null,"topics":["automation","coding-contests","contest-submissions","data-processing","github-integration","json","leetcode","plagiarism-detection","python","report-generation","web-crawler"],"latest_commit_sha":null,"homepage":"https://himanshumahajan138.github.io/lc/web/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/himanshumahajan138.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":"2024-08-01T16:43:11.000Z","updated_at":"2024-11-10T15:39:18.000Z","dependencies_parsed_at":"2024-08-05T10:12:18.952Z","dependency_job_id":null,"html_url":"https://github.com/himanshumahajan138/PlagX","commit_stats":null,"previous_names":["himanshumahajan138/plagx"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/himanshumahajan138/PlagX","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himanshumahajan138%2FPlagX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himanshumahajan138%2FPlagX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himanshumahajan138%2FPlagX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himanshumahajan138%2FPlagX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/himanshumahajan138","download_url":"https://codeload.github.com/himanshumahajan138/PlagX/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/himanshumahajan138%2FPlagX/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28936192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T08:53:31.997Z","status":"ssl_error","status_checked_at":"2026-01-31T08:51:38.521Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["automation","coding-contests","contest-submissions","data-processing","github-integration","json","leetcode","plagiarism-detection","python","report-generation","web-crawler"],"created_at":"2025-01-27T04:34:51.281Z","updated_at":"2026-01-31T09:33:14.701Z","avatar_url":"https://github.com/himanshumahajan138.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PlagX 📜🚫\n\nPlagX is an automated tool designed to detect potential plagiarism in LeetCode coding contests.  It crawls contest data, processes user submissions, generates comprehensive reports, and uploads results to GitHub. Features secure handling of environment variables and seamless integration with GitHub for efficient data management.\n\n## 📋 Pre-Requirements\n\nEnsure you have the required dependencies installed:\n\n```bash\npip install -r requirements.txt\n```\n\n## 🔗 Website Live Link\nVisit this Link for Checking Live PlagX Website [PlagX](https://himanshumahajan138.github.io/lc/web/)\n\nFor Website Code Please Do Visit to my Github Repository [lc](https://github.com/himanshumahajan138/lc)\n\n## 📷Screenshots\n\n![Screenshot_1-8-2024_231619_](https://github.com/user-attachments/assets/5e0dca67-576c-4282-a093-4a0f3beda1b3)\n![Screenshot_1-8-2024_232146_himanshumahajan138 github io](https://github.com/user-attachments/assets/e1453bc1-0d98-493b-b9c1-7e1d1351c2cb)\n\n\n## 🚀 Project Overview\n\n### Step 1: Initialize Constants and Load Environment Variables\n\nSet up the environment and constants for the project. Sensitive data is loaded from the `.env` file.\n\n### Step 2: Create Required Folders\n\nCreate the necessary directories for storing data.\n\n### Step 3: Crawl the Website for Contest Data and Submission Data\n\nCrawl the LeetCode website to collect contest and submission data.\n\n### Step 4: Create Zips for Contest Data and Submission Data\n\nCompress the collected data into ZIP files.\n\n### Step 5: Submit Reports and Download Reports\n\nDownload the reports for further processing.\n\n### Step 6: Combine Result Reports\n\nCombine individual reports into a comprehensive report.\n\n### Step 7: Calculate Final Results\n\nGenerate the final results based on the combined reports.\n\n### Step 8: Convert Final Reports to JSON\n\nConvert the final reports into JSON format for easier handling.\n\n### Step 9: Upload JSON Reports to GitHub\n\nUpload the JSON reports to the specified GitHub repository.\n\n### Step 10: Upload Data File to GitHub\n\nUpload the data file to GitHub for record-keeping and further analysis.\n\n## 🌟 Environment Variables\n\nThe project uses the following environment variables, which should be defined in a `.env` file:\n\n- `GITHUB_TOKEN`: GitHub token for authentication\n- `GITHUB_REPO`: GitHub repository URL\n- `BRANCH`: GitHub branch\n- `JSON_FOLDER_PATH`: Path to the JSON folder\n- `DATA_FOLDER_PATH`: Path to the data folder\n- `GITHUB_LINK`: GitHub link\n- `WEB_PATH`: Web path\n- `CLIST_API`: Clist API key\n\n## 🔧 Utils\n\nThe project relies on various utility functions located in the `utils` module:\n\n- `create_directories(contest)`\n- `contest_crawler(contest, contest_url, page)`\n- `zip_questions(contest)`\n- `download_final_reports(contest)`\n- `combine_reports(contest)`\n- `final_report_results(contest, user_link, contest_sub)`\n- `convert_reports_to_json(contest)`\n- `upload_json_results(json_folder_path, github_repo, branch, github_token)`\n- `upload_data_file(contest_name, json_folder_path, data_file_path, data_folder_path, github_repo, branch, github_token, clist_api)`\n\n## 📄 License\n\nThis project is licensed under the MIT License.\n\n## 🤝 Contributing\n\nContributions are welcome! Please open an issue or submit a pull request for any improvements or suggestions.\n\n## 🙏 Acknowledgments\n\n- [LeetCode](https://leetcode.com) for providing the platform for coding contests.\n- [Dolos](https://github.com/dodona-edu/dolos) for inspiration on plagiarism detection tools.\n- All contributors and users for their support and feedback.\n\n## 📬 Contact\n\nFor any questions or inquiries, please contact [Himanshu Mahajan](https://www.linkedin.com/in/himanshu138).\n\n## 🔖 Tags\n\n`plagiarism-detection` `leetcode` `coding-contests` `web-crawler` `data-processing` `automation` `python` `github-integration` `json` `report-generation` `Cheating-detection` `github-pages`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhimanshumahajan138%2Fplagx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhimanshumahajan138%2Fplagx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhimanshumahajan138%2Fplagx/lists"}