Skip to content

An advanced, cross-platform, lightweight system information tool for Windows, Linux, OsX and FreeBSD devices written in C#

License

Notifications You must be signed in to change notification settings

blue-hexagon/PowerScraper

Repository files navigation

Contributors Forks Stargazers Issues MIT License


Logo

Windows Linux OSX FreeBSD

Important: Work in Progress ~ Pre-Alpha

PowerScraper

An advanced, multi-platform, lightweight system query tool
Get Latest Version »

View Screenshots · Report Bug · Request Feature

About The Project

This project is the a reimplementation of a previous project I did in Python called WinScraper; this version is build with C#11 and .NET Core 7.

It comes in two packages: a CLI tool which is a downloadable executable, and a library which is available as a NuGet package.

It collects information about devices running on Windows, Linux, OsX, and FreeBSD which is then serialized into a wide array of data formats such as YAML, JSON, XML, CSV, TOML, INI and CSV.

Development Status

Scraper Name Category w-top l-top m-top b-top
CPU All.Hardware w l2 m2 b2
RAM All.Hardware w2 l2 m2 b2
Interface All.Network w2 l2 m2 b2
SSID All.Network w2 l2 m2 b2
PID All.Process w2 l2 m2 b2
Installed Software All.Software w2 l2 m2 b2
Startup Software All.Software w2 l2 m2 b2
Computer All.System w2 l2 m2 b2
Operating System All.System w2 l2 m2 b2

Demo & Screenshots

Run the executable without any arguments for a brief overview of argument options. Or run it with the --help option for more detailed help - example:

(back to top)

Getting Started

Installation

Install as Application

  1. Download the latest binary
  2. Manually add the path of the binary to your environment PATH variable.

Install as Library

  1. Download the latest NuGet package

(back to top)

Contributing

The project is pretty easy to extend and you won't need to concern yourself with any of the codebase besides all the scraping logic that is contained within Core.Scraping.Modules.<ModuleName>, where you find the modules and scrapers; a module is equivalent to a category and modules can be nested.

Modules can contain other modules or they can contain scrapers. The whole datastructure for the modules and scrapers are set up as a generalized tree where the leafs are scrapers and any other node which is not a leaf is a module. The only rule is that you cannot setup an empty module without at least one child that is a scraper (hence a category cannot be a leaf).

To add new modules or scrapers, the code should be self-explanatory enough I hope.

Since it was pretty easy to implement, I've added support for a few other operating systems in case someone would find it fun to implement scrapers for these. I might do some for Linux once the Windows scrapers are completed.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue. Also, don't forget to give the project a star ⭐!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/YourAwesomeNewScraper)
  3. Commit your Changes (git commit -m '...')
  4. Push to the Branch (git push origin feature/YourAwesomeNewScraper)
  5. Open a Pull Request

(back to top)

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

(back to top)

Authors

See also the list of contributors who participated in this project.

(back to top)

Contact

Contact me on Discord at manjana#3559 for any matter related to this project.

(back to top)

License

This project is distributed under the MIT License - see LICENSE.md for more details.

(back to top)

About

An advanced, cross-platform, lightweight system information tool for Windows, Linux, OsX and FreeBSD devices written in C#

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages