{"id":18817808,"url":"https://github.com/vpdb/agent","last_synced_at":"2026-01-15T12:30:20.982Z","repository":{"id":79024115,"uuid":"42680552","full_name":"vpdb/agent","owner":"vpdb","description":"Work in Progress!","archived":false,"fork":false,"pushed_at":"2018-08-31T21:04:25.000Z","size":32603,"stargazers_count":2,"open_issues_count":17,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-30T02:27:50.934Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vpdb.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":"2015-09-17T20:35:32.000Z","updated_at":"2020-12-14T03:24:31.000Z","dependencies_parsed_at":"2023-06-02T21:00:36.182Z","dependency_job_id":null,"html_url":"https://github.com/vpdb/agent","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpdb%2Fagent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpdb%2Fagent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpdb%2Fagent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpdb%2Fagent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vpdb","download_url":"https://codeload.github.com/vpdb/agent/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239753734,"owners_count":19691162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-08T00:13:29.980Z","updated_at":"2026-01-15T12:30:20.707Z","avatar_url":"https://github.com/vpdb.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VPDB Agent\n\n*A Windows desktop application that syncs local data with VPDB*.\n\n[![Build status](https://ci.appveyor.com/api/projects/status/28oc0qo7in6ps680?svg=true)](https://ci.appveyor.com/project/freezy/vpdb-agent)\n[![Coverage Status](https://coveralls.io/repos/freezy/vpdb-agent/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/freezy/vpdb-agent?branch=master)\n\n## What is it?\n\nA program that runs in the background on your cab and fills the gap between\n[PinballX](http://pinballx.net) and [VPDB](https://github.com/freezy/node-vpdb).\n\nIt also comes with a nice UI for configuring and monitoring it. Oh, and it's\ncompletely real-time, meaning if you change stuff locally or on VPDB, \nVPDB Agent will know immediately and react.\n\n## Features\n\nThe [MVP](https://en.wikipedia.org/wiki/Minimum_viable_product) should have the\nfollowing features:\n\n- Match local games against releases at VPDB\n- Update local games automatically from VPDB where enabled\n- Download starred games automatically from VPDB if enabled\n\nFrom there, we can imaginate more features such as media management, browsing,\nrating and so forth.\n\nFor more details, see [FEATURES](FEATURES.md).\n\n\n## Tech Stack / Dependencies\n\n- Microsoft .NET 4.5 WPF Application\n- Asynchronous backend with [Rx Extensions](https://rx.codeplex.com/)\n- UI wiring using [ReactiveUI](http://reactiveui.net/)\n- [Refit](https://github.com/paulcbetts/refit) for type-safe REST access\n- [Mahapps.Metro](http://mahapps.com/) for easy custom styling\n- [INI File Parser](https://github.com/rickyah/ini-parser) for parsing PinballX config\n- [Humanizer](https://github.com/MehdiK/Humanizer) for all kind of formatting tricks\n- [NLog](http://nlog-project.org/) for our logging needs\n- [Akavache](https://github.com/akavache/Akavache) for settings storage and image caching\n- [NotifyIcon](http://www.hardcodet.net/wpf-notifyicon) for tray features\n- [OpenMcdf](http://sourceforge.net/projects/openmcdf/) for reading and writing VP's OLE Compound format\n- [XUnit](https://xunit.github.io/), [Moq](https://github.com/Moq/moq4/wiki/Quickstart) and [Fluent Assertions](https://github.com/dennisdoomen/fluentassertions/wiki) for unit tests\n\n\n## Tests\n\nTests are written with [XUnit](https://xunit.github.io/) and \n[Fluent Assertions](https://github.com/dennisdoomen/fluentassertions/wiki).\nWhen using Resharper, use [the plugin](https://resharper-plugins.jetbrains.com/packages/xunitcontrib/)\nso you can easily debug. Coverage is still poor but increasing.\n\n\n## Database\n\nThe goal is to touch current XML files that make the PinballX database only\nwhen necessary (i.e. a release is updated). Instead, we keep a `vpdb.json` in\neach folder that contains the additional data we need to work with. This file\nbasically serves as our local database and is updated as the XMLs are changed \nmanually or by another application.\n\nAs for adding new games, the user can choose between a separate custom list or\nthe original XML.\n\n## Packaging\n\nWe're using [Squirrel](https://github.com/Squirrel/Squirrel.Windows) for \npackaging the builds. In order to release a new version:\n\n1. Bump to release version at `AssemblyInfo.cs` AND `vpdb-agent.nuspec`. Also \n   update release in the NU specs.\n2. **Build Release**\n3. Add new `.dll`s to `vpdb-agent.nuspec` if necessary.\n4. In the *Package Manager Console*, type: \n\n   ```\n   PM\u003e nuget pack .\\VpdbAgent\\VpdbAgent.nuspec\n   PM\u003e squirrel --releasify .\\VpdbAgent.0.0.x.nupkg\n   ```\n5. Run `.\\Releases\\Setup.exe` and test\n6. If all good, commit, tag and push\n7. Package `setup.exe` as `vpdb-agent-0.0.x.zip`\n8. Create release on GitHub and attach zip\n9. Bump to snapshot version.\n\n## Credits\n\n- Error and crash reporting for VPDB Agent has kindly been provided by \n  [Raygun](https://raygun.io/?ref=vpdb-agent). And by the way, it also \n  works with a ton of other platforms!\n\n  \u003ca href=\"https://raygun.io/?ref=vpdb-agent\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/freezy/vpdb-agent/master/Assets/raygun.png\" width=\"200\"\u003e\u003c/a\u003e\n- @andreaskoepf for some really helpful Rx suggestions\n\n## License\n\nGPLv2, see [LICENSE](LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpdb%2Fagent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpdb%2Fagent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpdb%2Fagent/lists"}