{"id":26187919,"url":"https://github.com/riisdev/personal-util","last_synced_at":"2026-04-26T07:32:50.960Z","repository":{"id":279426560,"uuid":"935349542","full_name":"RiisDev/Personal-Util","owner":"RiisDev","description":"This repo just contains my \"Scripts/Util\" solution which contains a bunch of methods and classes I use frequently individually for what ever I need done quickly  This code should not be used in a professional / efficient manner as it's not been tested.","archived":false,"fork":false,"pushed_at":"2025-10-20T09:33:40.000Z","size":98,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-26T19:42:22.642Z","etag":null,"topics":["porn-scraper","scraper","util","utilities","webdriver"],"latest_commit_sha":null,"homepage":"https://github.com/RiisDev/RadiantConnect","language":"C#","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/RiisDev.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-19T09:55:05.000Z","updated_at":"2025-10-20T09:33:44.000Z","dependencies_parsed_at":"2025-12-25T08:00:21.962Z","dependency_job_id":null,"html_url":"https://github.com/RiisDev/Personal-Util","commit_stats":null,"previous_names":["riisdev/personal-util"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RiisDev/Personal-Util","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FPersonal-Util","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FPersonal-Util/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FPersonal-Util/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FPersonal-Util/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RiisDev","download_url":"https://codeload.github.com/RiisDev/Personal-Util/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RiisDev%2FPersonal-Util/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32289926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T06:26:00.361Z","status":"ssl_error","status_checked_at":"2026-04-26T06:25:58.791Z","response_time":129,"last_error":"SSL_read: 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":["porn-scraper","scraper","util","utilities","webdriver"],"created_at":"2025-03-11T23:52:20.254Z","updated_at":"2026-04-26T07:32:50.937Z","avatar_url":"https://github.com/RiisDev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![C#](https://img.shields.io/badge/-.NET%208.0-blueviolet?style=for-the-badge\u0026logo=windows\u0026logoColor=white) [![Discord Server](https://img.shields.io/discord/477201632204161025.svg?label=Discord\u0026logo=Discord\u0026colorB=7289da\u0026style=for-the-badge)](https://discord.gg/yyuggrH) ![License](https://img.shields.io/github/license/RiisDev/RadiantConnect?style=for-the-badge)\n# Utilities\n\nThis repo just contains my \"Scripts/Util\" solution which contains a bunch of methods and classes I use frequently individually for what ever I need done quickly\n\nThis code should not be used in a professional / efficient manner as it's not been tested and used just by me.\n\nPublicized incase somehow someone needs some code listed here\n\n## Tools Embedded\n\n### Bypassers\n* BypassVIP API Usage (Needs api key)\n* BypassVIP Telegram Automation (WIP)\n* Krnl Keygen / Auto Bypass (WIP)\n\n### Scrapers\n* Dynamic PornScraper designated by settings [Examples](https://github.com/RiisDev/Personal-Util/blob/main/Scrapers/NSFW/PrebuiltSettings.cs) | Based on XPath\n* PornScraper includes metadata scraping, as well as video downloader (needs login cookies)\n* nsw2u.net Scraper (Doesn't include downloading)\n\n### Custom Build WebDrivers - Note I have no idea what the differences are when I wrote them\n* HeavyDriver \n* LIghtDriver\n\n### Quick File Utilties | Namespace HtmlUtil | Methods are Static\n```csharp\npublic static string[] GetFiles(string directory, string filter = \"*.*\") =\u003e Directory.GetFiles(directory, filter, SearchOption.AllDirectories);\n\npublic static string GetFolderFromFile(string file) =\u003e Path.GetFileNameWithoutExtension(file).Split('\\\\').Last();\n\npublic static string GetLastDirectory(string directoryPath) =\u003e directoryPath.Split('\\\\').Last();\n```\n\n### HtmlAgilityPack Expander | Namespace HtmlUtil | Methods are Static | Properties of HtmlDocument\n```csharp\npublic static List\u003cHref\u003e GetLinks(this HtmlDocument document, string html, string? startNodeXPath = null);\n\npublic static List\u003cDictionary\u003cstring, string\u003e\u003e GetNodesData(this HtmlDocument document, string html, string xpath, params string[] attributes);\n```\n\n### DataType Expander\n```csharp\npublic static bool TryAdd\u003cT\u003e(this List\u003cT\u003e list, T value);\n\npublic static bool RegexEndsWith(this string text, [StringSyntax(StringSyntaxAttribute.Regex)] string pattern) =\u003e IsMatch(text, pattern + \"$\");\n\npublic static bool IsNullOrEmpty(this string text) =\u003e string.IsNullOrEmpty(text);\n\npublic static string Normalize(this string abstractText); // This removes invalid path characters, and normalizes to utf8 etc\n\npublic static string SafeFileName(this string abstractFile); // Just gets valid path name\n\npublic static string JsonSerialize\u003cTValue\u003e(TValue obj, bool @unsafe = true); // Encodes unsafe, Writes tab indents, allows floating literals\n```\n\n### Formatting / Conversion\n* string ConvertSecondsToTime | Returns a formatted string, will take in int/double/long\n* (HttpClient, CookieContainer) BuildClient | Builds an http client with default settings and returns as a tuple\n* GetRootDomain | Returns the rootdomain and TLD from a url, not sure why it's not built into the Uri namespace\n* FormatBytes | Takes in a double, returns a forammted string with B,KB,MB,GB,TB\n\n### Regex Expander\n* static string ExtractValue(this Match match, int group = 0) =\u003e match.Groups[group].Value;\n\n### Regex Patterns\n* JAV Title Naming | RegexPatterns.JavTitle\n* Size Grabbing | RegexPatterns.SizeRegex\n* ReCaptcha Stuff | RegexPatterns.(GetReCaptchaType/GetReCaptchaToken/GetReCaptchaResponse)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friisdev%2Fpersonal-util","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Friisdev%2Fpersonal-util","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friisdev%2Fpersonal-util/lists"}