├── .editorconfig
├── .gitattributes
├── .gitignore
├── DownloaderExtension
├── DownloaderExtension.cs
├── DownloaderExtension.csproj
├── DownloaderExtension.xaml
├── DownloaderExtension.xaml.cs
├── HttpClientSingleton.cs
├── Info.json
└── StreamExtensions.cs
├── ElAmigosModule
├── ElAmigosModule.cs
├── ElAmigosModule.csproj
└── Info.json
├── FitGirlModule
└── FitGirlModule
│ ├── FitGirlModule.cs
│ ├── FitGirlModule.csproj
│ └── Info.json
├── HexRomsModule
├── HexRomsModule.cs
├── HexRomsModule.csproj
└── Info.json
├── IModule
├── IModule.cs
└── IModule.csproj
├── README.md
├── RPGOnlyModule
├── Info.json
├── RPGOnlyModule.cs
└── RPGOnlyModule.csproj
├── STP_Setup
├── Icon.ico
├── Product.wxs
├── STP_Setup.wax
├── STP_Setup.wixproj
└── license.rtf
├── SimpleThingsProvider.sln
├── TPBModule
├── Info.json
├── TPBModule.cs
└── TPBModule.csproj
├── TorrentScraper
├── AboutWindow.xaml
├── AboutWindow.xaml.cs
├── AlertClass.cs
├── App.config
├── App.xaml
├── BannedWords.cs
├── FilePathUtils.cs
├── HelpWindow.xaml
├── HelpWindow.xaml.cs
├── IExtension.cs
├── IModule.cs
├── JsonSettings.cs
├── LinksWindow.xaml
├── LinksWindow.xaml.cs
├── Logger.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── NSFWWords.json
├── Results.cs
├── Settings.Designer.cs
├── Settings.settings
├── SettingsWindow.xaml
├── SettingsWindow.xaml.cs
├── SimpleThingsProvider.csproj
├── Utils.cs
├── WebsiteStatusWindow.xaml
├── WebsiteStatusWindow.xaml.cs
├── data
│ ├── ControlzEx.dll
│ ├── Discord.png
│ ├── DownloadIcon.png
│ ├── Github.png
│ ├── Icon.ico
│ ├── Icon.png
│ ├── Loading.gif
│ ├── MahApps.Metro.dll
│ ├── Microsoft.Xaml.Behaviors.dll
│ ├── NSFWWords.json
│ ├── Patreon.png
│ ├── Reddit.png
│ ├── Styles
│ │ ├── Controls.Buttons.xaml
│ │ ├── Controls.Calendar.xaml
│ │ ├── Controls.CheckBox.xaml
│ │ ├── Controls.ComboBox.xaml
│ │ ├── Controls.ContentControl.xaml
│ │ ├── Controls.ContextMenu.xaml
│ │ ├── Controls.DataGrid.xaml
│ │ ├── Controls.DatePicker.xaml
│ │ ├── Controls.Expander.xaml
│ │ ├── Controls.FlatButton.xaml
│ │ ├── Controls.FlatSlider.xaml
│ │ ├── Controls.GridSplitter.xaml
│ │ ├── Controls.GroupBox.xaml
│ │ ├── Controls.Hyperlink.xaml
│ │ ├── Controls.Label.xaml
│ │ ├── Controls.ListBox.xaml
│ │ ├── Controls.ListView.xaml
│ │ ├── Controls.Menu.xaml
│ │ ├── Controls.MenuItem.xaml
│ │ ├── Controls.Page.xaml
│ │ ├── Controls.PasswordBox.xaml
│ │ ├── Controls.ProgressBar.xaml
│ │ ├── Controls.RadioButton.xaml
│ │ ├── Controls.RichTextBox.xaml
│ │ ├── Controls.Scrollbars.xaml
│ │ ├── Controls.Shadows.xaml
│ │ ├── Controls.Shared.xaml
│ │ ├── Controls.Slider.xaml
│ │ ├── Controls.StatusBar.xaml
│ │ ├── Controls.TabControl.xaml
│ │ ├── Controls.TextBlock.xaml
│ │ ├── Controls.TextBox.xaml
│ │ ├── Controls.Toolbar.xaml
│ │ ├── Controls.Tooltip.xaml
│ │ ├── Controls.TreeView.xaml
│ │ ├── Controls.ValidationError.xaml
│ │ ├── Controls.xaml
│ │ └── Fonts.xaml
│ ├── WebScraping.png
│ └── Youtube.png
└── preview.png
├── Utils
├── BannedWords.cs
├── Logger.cs
├── Results.cs
├── Settings.Designer.cs
├── Settings.settings
└── Utils.csproj
├── VideoDownloaderExtension
├── App.xaml
├── App.xaml.cs
├── AssemblyInfo.cs
├── Info.json
├── PercentageConverter.cs
├── VideoDownloaderExtension.cs
├── VideoDownloaderExtension.csproj
├── VideoDownloaderExtension.xaml
└── VideoDownloaderExtension.xaml.cs
├── View
├── AboutWindow.xaml
├── AboutWindow.xaml.cs
├── HelpWindow.xaml
├── HelpWindow.xaml.cs
├── LinksWindow.xaml
├── LinksWindow.xaml.cs
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── SettingsWindow.xaml
├── SettingsWindow.xaml.cs
├── View.csproj
├── WebsiteStatusWindow.xaml
├── WebsiteStatusWindow.xaml.cs
└── data
│ ├── Discord.png
│ ├── DownloadIcon.png
│ ├── Github.png
│ ├── Icon.ico
│ ├── Icon.png
│ ├── Loading.gif
│ ├── Patreon.png
│ ├── Reddit.png
│ ├── WebScraping.png
│ └── Youtube.png
├── VimmslairModule
├── Info.json
├── VimmslairModule.cs
└── VimmslairModule.csproj
├── ZipertoModule
├── Info.json
├── ZipertoModule.cs
└── ZipertoModule.csproj
└── x1337Module
├── Info.json
├── x1337Module.cs
└── x1337Module.csproj
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.cs]
2 |
3 | # CS8618: Il campo non nullable deve contenere un valore non Null all'uscita dal costruttore. Provare a dichiararlo come nullable.
4 | dotnet_diagnostic.CS8618.severity = none
5 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Oo]ut/
33 | [Ll]og/
34 | [Ll]ogs/
35 |
36 | # Visual Studio 2015/2017 cache/options directory
37 | .vs/
38 | # Uncomment if you have tasks that create the project's static files in wwwroot
39 | #wwwroot/
40 |
41 | # Visual Studio 2017 auto generated files
42 | Generated\ Files/
43 |
44 | # MSTest test Results
45 | [Tt]est[Rr]esult*/
46 | [Bb]uild[Ll]og.*
47 |
48 | # NUnit
49 | *.VisualState.xml
50 | TestResult.xml
51 | nunit-*.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # Benchmark Results
59 | BenchmarkDotNet.Artifacts/
60 |
61 | # .NET Core
62 | project.lock.json
63 | project.fragment.lock.json
64 | artifacts/
65 |
66 | # ASP.NET Scaffolding
67 | ScaffoldingReadMe.txt
68 |
69 | # StyleCop
70 | StyleCopReport.xml
71 |
72 | # Files built by Visual Studio
73 | *_i.c
74 | *_p.c
75 | *_h.h
76 | *.ilk
77 | *.meta
78 | *.obj
79 | *.iobj
80 | *.pch
81 | *.pdb
82 | *.ipdb
83 | *.pgc
84 | *.pgd
85 | *.rsp
86 | *.sbr
87 | *.tlb
88 | *.tli
89 | *.tlh
90 | *.tmp
91 | *.tmp_proj
92 | *_wpftmp.csproj
93 | *.log
94 | *.vspscc
95 | *.vssscc
96 | .builds
97 | *.pidb
98 | *.svclog
99 | *.scc
100 |
101 | # Chutzpah Test files
102 | _Chutzpah*
103 |
104 | # Visual C++ cache files
105 | ipch/
106 | *.aps
107 | *.ncb
108 | *.opendb
109 | *.opensdf
110 | *.sdf
111 | *.cachefile
112 | *.VC.db
113 | *.VC.VC.opendb
114 |
115 | # Visual Studio profiler
116 | *.psess
117 | *.vsp
118 | *.vspx
119 | *.sap
120 |
121 | # Visual Studio Trace Files
122 | *.e2e
123 |
124 | # TFS 2012 Local Workspace
125 | $tf/
126 |
127 | # Guidance Automation Toolkit
128 | *.gpState
129 |
130 | # ReSharper is a .NET coding add-in
131 | _ReSharper*/
132 | *.[Rr]e[Ss]harper
133 | *.DotSettings.user
134 |
135 | # TeamCity is a build add-in
136 | _TeamCity*
137 |
138 | # DotCover is a Code Coverage Tool
139 | *.dotCover
140 |
141 | # AxoCover is a Code Coverage Tool
142 | .axoCover/*
143 | !.axoCover/settings.json
144 |
145 | # Coverlet is a free, cross platform Code Coverage Tool
146 | coverage*.json
147 | coverage*.xml
148 | coverage*.info
149 |
150 | # Visual Studio code coverage results
151 | *.coverage
152 | *.coveragexml
153 |
154 | # NCrunch
155 | _NCrunch_*
156 | .*crunch*.local.xml
157 | nCrunchTemp_*
158 |
159 | # MightyMoose
160 | *.mm.*
161 | AutoTest.Net/
162 |
163 | # Web workbench (sass)
164 | .sass-cache/
165 |
166 | # Installshield output folder
167 | [Ee]xpress/
168 |
169 | # DocProject is a documentation generator add-in
170 | DocProject/buildhelp/
171 | DocProject/Help/*.HxT
172 | DocProject/Help/*.HxC
173 | DocProject/Help/*.hhc
174 | DocProject/Help/*.hhk
175 | DocProject/Help/*.hhp
176 | DocProject/Help/Html2
177 | DocProject/Help/html
178 |
179 | # Click-Once directory
180 | publish/
181 |
182 | # Publish Web Output
183 | *.[Pp]ublish.xml
184 | *.azurePubxml
185 | # Note: Comment the next line if you want to checkin your web deploy settings,
186 | # but database connection strings (with potential passwords) will be unencrypted
187 | *.pubxml
188 | *.publishproj
189 |
190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
191 | # checkin your Azure Web App publish settings, but sensitive information contained
192 | # in these scripts will be unencrypted
193 | PublishScripts/
194 |
195 | # NuGet Packages
196 | *.nupkg
197 | # NuGet Symbol Packages
198 | *.snupkg
199 | # The packages folder can be ignored because of Package Restore
200 | **/[Pp]ackages/*
201 | # except build/, which is used as an MSBuild target.
202 | !**/[Pp]ackages/build/
203 | # Uncomment if necessary however generally it will be regenerated when needed
204 | #!**/[Pp]ackages/repositories.config
205 | # NuGet v3's project.json files produces more ignorable files
206 | *.nuget.props
207 | *.nuget.targets
208 |
209 | # Microsoft Azure Build Output
210 | csx/
211 | *.build.csdef
212 |
213 | # Microsoft Azure Emulator
214 | ecf/
215 | rcf/
216 |
217 | # Windows Store app package directories and files
218 | AppPackages/
219 | BundleArtifacts/
220 | Package.StoreAssociation.xml
221 | _pkginfo.txt
222 | *.appx
223 | *.appxbundle
224 | *.appxupload
225 |
226 | # Visual Studio cache files
227 | # files ending in .cache can be ignored
228 | *.[Cc]ache
229 | # but keep track of directories ending in .cache
230 | !?*.[Cc]ache/
231 |
232 | # Others
233 | ClientBin/
234 | ~$*
235 | *~
236 | *.dbmdl
237 | *.dbproj.schemaview
238 | *.jfm
239 | *.pfx
240 | *.publishsettings
241 | orleans.codegen.cs
242 |
243 | # Including strong name files can present a security risk
244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
245 | #*.snk
246 |
247 | # Since there are multiple workflows, uncomment next line to ignore bower_components
248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
249 | #bower_components/
250 |
251 | # RIA/Silverlight projects
252 | Generated_Code/
253 |
254 | # Backup & report files from converting an old project file
255 | # to a newer Visual Studio version. Backup files are not needed,
256 | # because we have git ;-)
257 | _UpgradeReport_Files/
258 | Backup*/
259 | UpgradeLog*.XML
260 | UpgradeLog*.htm
261 | ServiceFabricBackup/
262 | *.rptproj.bak
263 |
264 | # SQL Server files
265 | *.mdf
266 | *.ldf
267 | *.ndf
268 |
269 | # Business Intelligence projects
270 | *.rdl.data
271 | *.bim.layout
272 | *.bim_*.settings
273 | *.rptproj.rsuser
274 | *- [Bb]ackup.rdl
275 | *- [Bb]ackup ([0-9]).rdl
276 | *- [Bb]ackup ([0-9][0-9]).rdl
277 |
278 | # Microsoft Fakes
279 | FakesAssemblies/
280 |
281 | # GhostDoc plugin setting file
282 | *.GhostDoc.xml
283 |
284 | # Node.js Tools for Visual Studio
285 | .ntvs_analysis.dat
286 | node_modules/
287 |
288 | # Visual Studio 6 build log
289 | *.plg
290 |
291 | # Visual Studio 6 workspace options file
292 | *.opt
293 |
294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
295 | *.vbw
296 |
297 | # Visual Studio LightSwitch build output
298 | **/*.HTMLClient/GeneratedArtifacts
299 | **/*.DesktopClient/GeneratedArtifacts
300 | **/*.DesktopClient/ModelManifest.xml
301 | **/*.Server/GeneratedArtifacts
302 | **/*.Server/ModelManifest.xml
303 | _Pvt_Extensions
304 |
305 | # Paket dependency manager
306 | .paket/paket.exe
307 | paket-files/
308 |
309 | # FAKE - F# Make
310 | .fake/
311 |
312 | # CodeRush personal settings
313 | .cr/personal
314 |
315 | # Python Tools for Visual Studio (PTVS)
316 | __pycache__/
317 | *.pyc
318 |
319 | # Cake - Uncomment if you are using it
320 | # tools/**
321 | # !tools/packages.config
322 |
323 | # Tabs Studio
324 | *.tss
325 |
326 | # Telerik's JustMock configuration file
327 | *.jmconfig
328 |
329 | # BizTalk build output
330 | *.btp.cs
331 | *.btm.cs
332 | *.odx.cs
333 | *.xsd.cs
334 |
335 | # OpenCover UI analysis results
336 | OpenCover/
337 |
338 | # Azure Stream Analytics local run output
339 | ASALocalRun/
340 |
341 | # MSBuild Binary and Structured Log
342 | *.binlog
343 |
344 | # NVidia Nsight GPU debugger configuration file
345 | *.nvuser
346 |
347 | # MFractors (Xamarin productivity tool) working folder
348 | .mfractor/
349 |
350 | # Local History for Visual Studio
351 | .localhistory/
352 |
353 | # BeatPulse healthcheck temp database
354 | healthchecksdb
355 |
356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
357 | MigrationBackup/
358 |
359 | # Ionide (cross platform F# VS Code tools) working folder
360 | .ionide/
361 |
362 | # Fody - auto-generated XML schema
363 | FodyWeavers.xsd
--------------------------------------------------------------------------------
/DownloaderExtension/DownloaderExtension.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 | True
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/DownloaderExtension/DownloaderExtension.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/DownloaderExtension/HttpClientSingleton.cs:
--------------------------------------------------------------------------------
1 | using DownloaderExtension;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Diagnostics;
5 | using System.IO;
6 | using System.Linq;
7 | using System.Net.Http;
8 | using System.Text;
9 | using System.Threading;
10 | using System.Threading.Tasks;
11 |
12 | namespace SimpleThingsProvider
13 | {
14 | public static class HttpClientSingleton
15 | {
16 | public static HttpClient client = new HttpClient();
17 | static HttpClientSingleton()
18 | {
19 | client.Timeout = Timeout.InfiniteTimeSpan;
20 | }
21 | public static async Task DownloadAsync(this HttpClient client, string requestUri, Stream destination, IProgress progress = null, CancellationToken cancellationToken = default, IsPaused isPaused = null)
22 | {
23 | // Get the http headers first to examine the content length
24 | using (var response = await client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead))
25 | {
26 | var contentLength = response.Content.Headers.ContentLength;
27 |
28 | using (var download = await response.Content.ReadAsStreamAsync())
29 | {
30 | // Ignore progress reporting when no progress reporter was
31 | // passed or when the content length is unknown
32 | if (progress == null || !contentLength.HasValue)
33 | {
34 | await download.CopyToAsync(destination);
35 | return;
36 | }
37 |
38 | // Convert absolute progress (bytes downloaded) into relative progress (0% - 100%)
39 | var relativeProgress = new Progress(totalBytes => progress.Report((float)totalBytes / contentLength.Value));
40 | // Use extension method to report progress while downloading
41 | await download.CopyToAsync(destination, 8192, relativeProgress, cancellationToken, isPaused);
42 | if (cancellationToken.IsCancellationRequested)
43 | {
44 | progress.Report(0);
45 | }
46 | else
47 | {
48 | progress.Report(100);
49 | }
50 | destination.Close();
51 | }
52 | }
53 | }
54 | }
55 | }
--------------------------------------------------------------------------------
/DownloaderExtension/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/DownloaderExtension/StreamExtensions.cs:
--------------------------------------------------------------------------------
1 | using DownloaderExtension;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Diagnostics;
5 | using System.IO;
6 | using System.Linq;
7 | using System.Net.Sockets;
8 | using System.Text;
9 | using System.Threading;
10 | using System.Threading.Tasks;
11 |
12 | namespace SimpleThingsProvider
13 | {
14 | public static class StreamExtensions
15 | {
16 | public static async Task CopyToAsync(this Stream source, Stream destination, int bufferSize, IProgress progress, CancellationToken cancellationToken = default, IsPaused isPaused = null)
17 | {
18 | if (source == null)
19 | throw new ArgumentNullException(nameof(source));
20 | if (!source.CanRead)
21 | throw new ArgumentException("Has to be readable", nameof(source));
22 | if (destination == null)
23 | throw new ArgumentNullException(nameof(destination));
24 | if (!destination.CanWrite)
25 | throw new ArgumentException("Has to be writable", nameof(destination));
26 | if (bufferSize < 0)
27 | throw new ArgumentOutOfRangeException(nameof(bufferSize));
28 |
29 | var buffer = new byte[bufferSize];
30 | long totalBytesRead = 0;
31 | int bytesRead;
32 | try
33 | {
34 | while ((bytesRead = await source.ReadAsync(buffer, 0, buffer.Length, cancellationToken).ConfigureAwait(false)) != 0)
35 | {
36 | if (isPaused.pause)
37 | {
38 | Thread.Sleep(100);
39 | continue;
40 | }
41 | await destination.WriteAsync(buffer, 0, bytesRead, cancellationToken).ConfigureAwait(false);
42 | totalBytesRead += bytesRead;
43 | progress.Report(totalBytesRead * 100);
44 | }
45 | }
46 | catch (TaskCanceledException e)
47 | {
48 | if (destination is FileStream fileStream)
49 | {
50 | try
51 | {
52 | // Delete the file
53 | destination.Close();
54 | Debug.WriteLine(fileStream.Name);
55 | File.Delete(fileStream.Name);
56 | return;
57 | }
58 | catch(Exception c) { Debug.WriteLine(c); }
59 | }
60 | return;
61 | }
62 | catch(OperationCanceledException e)
63 | {
64 | if (destination is FileStream fileStream)
65 | {
66 | try
67 | {
68 | // Delete the file
69 | destination.Close();
70 | Debug.WriteLine(fileStream.Name);
71 | File.Delete(fileStream.Name);
72 | return;
73 | }
74 | catch (Exception c) { Debug.WriteLine(c); }
75 | }
76 | return;
77 | }
78 |
79 | }
80 | }
81 | }
--------------------------------------------------------------------------------
/ElAmigosModule/ElAmigosModule.cs:
--------------------------------------------------------------------------------
1 | using HtmlAgilityPack;
2 | using System.Diagnostics;
3 | using System.Net;
4 | using System.Net.Http.Headers;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Data;
8 |
9 | namespace SimpleThingsProvider
10 | {
11 | public class ElAmigosModule : IModule
12 | {
13 | public string Name { get { return "ElAmigos"; } set { } }
14 | public string ModuleVersion { get { return "1.0.0"; } set { } }
15 | public HtmlDocument Doc { get; set; }
16 | private List _underlying;
17 | public bool needsSubSelector { get { return false; } }
18 | public LinksWindow linksWindow { get { return new LinksWindow(); } }
19 | public ElAmigosModule()
20 | {
21 |
22 | }
23 |
24 | public void buildListView(GridView grid)
25 | {
26 | GridViewColumn title = new GridViewColumn();
27 | title.Header = "Title";
28 | title.DisplayMemberBinding = new Binding("Title");
29 | GridViewColumn info = new GridViewColumn();
30 | info.Header = "Infos";
31 | info.DisplayMemberBinding = new Binding("Infos");
32 | grid.Columns.Add(title);
33 | grid.Columns.Add(info);
34 | }
35 |
36 | public string getLink(int index)
37 | {
38 | return getLink(_underlying[index]);
39 | }
40 |
41 | public string getLink(string gameURL)
42 | {
43 | LinksWindow linksWindow = new LinksWindow();
44 | linksWindow.Show();
45 | linksWindow.getLinksList().Visibility = Visibility.Visible;
46 | List websites = new List();
47 | HtmlWeb web = new HtmlWeb();
48 | HtmlDocument doc = web.Load(gameURL);
49 | HtmlNodeCollection downloads = doc.DocumentNode.SelectNodes("/html/body/div/div[6]/div/a");
50 | Result result = new Result();
51 | foreach (HtmlNode node in downloads)
52 | {
53 | result = new Result();
54 | result.Name = node.InnerText;
55 | result.Link = node.Attributes["href"].Value;
56 | result.Infos = "Base game";
57 | websites.Add(result);
58 | }
59 |
60 | string info = doc.DocumentNode.SelectSingleNode("/html/body/div/div[8]/p/text()").InnerText;
61 | downloads = doc.DocumentNode.SelectNodes("/html/body/div/div[8]/p/a");
62 | foreach (HtmlNode node in downloads)
63 | {
64 | result = new Result();
65 | result.Name = node.InnerText;
66 | result.Link = node.Attributes["href"].Value;
67 | result.Infos = info;
68 | websites.Add(result);
69 | }
70 | linksWindow.getLinksList().ItemsSource = websites;
71 | return "";
72 | }
73 |
74 | public Tuple, List> getResults(HtmlDocument document)
75 | {
76 | _underlying = new List();
77 | List results = new();
78 |
79 | HtmlNodeCollection res = document.DocumentNode.SelectNodes("/html/body/div/div[4]/div/div/div");
80 | foreach (HtmlNode node in res)
81 | {
82 | HtmlNode n = node.SelectSingleNode("h6/a");
83 | Result result = new Result();
84 | string title = n.InnerText;
85 | title = title.Replace("'", "'");
86 | title = title.Replace("’", "’");
87 | title = title.Replace("–", "-");
88 | title = title.Replace("&", "&");
89 | result.Title = title;
90 |
91 | result.Link = n.Attributes["href"].Value;
92 | n = node.SelectSingleNode("small");
93 | result.Infos = n.InnerText;
94 | if (!result.Infos.Contains("[Offer]"))
95 | {
96 | results.Add(result);
97 | _underlying.Add(result.Link);
98 | }
99 | }
100 | return Tuple.Create(results, _underlying);
101 | }
102 |
103 | public HttpStatusCode search(string toSearch)
104 | {
105 | HttpStatusCode code;
106 | HtmlWeb web = new();
107 | web.UserAgent = "SimpleThingsProvider";
108 |
109 | Logger.Log("Searching for: " + toSearch + " in: " + Name, "Website (Search)");
110 | try
111 | {
112 | if (Settings.Default.ProxyEnabled) Doc = web.Load("https://www.elamigos-games.com/?q=" + toSearch.Replace(" ", "+"), Settings.Default.ProxyIP, Int32.Parse(Settings.Default.ProxyPort), string.Empty, string.Empty);
113 | else Doc = web.Load("https://www.elamigos-games.com/?q=" + toSearch.Replace(" ", "+"));
114 | }
115 | catch
116 | {
117 | return HttpStatusCode.NotFound;
118 | }
119 |
120 | code = web.StatusCode;
121 | return code;
122 | }
123 |
124 | public async void checkUpdate()
125 | {
126 | string repoURL = "https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/master/ElAmigosModule/Info.json";
127 | HttpClient client = new HttpClient();
128 | HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, repoURL);
129 | requestMessage.Headers.UserAgent.Add(new ProductInfoHeaderValue("User-Agent", "SimpleThingsProvider"));
130 | HttpResponseMessage response = await client.SendAsync(requestMessage);
131 | string content = await response.Content.ReadAsStringAsync();
132 | int start = content.IndexOf(": \"");
133 | int end = content.IndexOf('"', start + 3);
134 | string version = content.Substring(start + 3, end - start - 3);
135 | if (!version.Equals(ModuleVersion))
136 | {
137 | MessageBoxResult r = AlertClass.Alert("An update for " + Name + " is available, open the GitHub page?", Name, MessageBoxButton.YesNo, MessageBoxImage.Information);
138 | if (r == MessageBoxResult.Yes)
139 | {
140 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://github.com/Backend2121/SimpleThingsProvider/releases/latest" };
141 | System.Diagnostics.Process.Start(process);
142 | Logger.Log($"Newer version for {Name}: {version} found!", Name + " Updater");
143 | }
144 | }
145 | }
146 | }
147 | }
--------------------------------------------------------------------------------
/ElAmigosModule/ElAmigosModule.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ElAmigosModule/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/FitGirlModule/FitGirlModule/FitGirlModule.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/FitGirlModule/FitGirlModule/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/HexRomsModule/HexRomsModule.cs:
--------------------------------------------------------------------------------
1 | using HtmlAgilityPack;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Diagnostics;
5 | using System.Net;
6 | using System.Net.Http.Headers;
7 | using System.Net.Http;
8 | using System.Windows;
9 | using System.Windows.Controls;
10 | using System.Windows.Data;
11 |
12 | namespace SimpleThingsProvider
13 | {
14 | internal class HexRomsModule : IModule
15 | {
16 | public string Name { get { return "HexRom"; } set { } }
17 | public string ModuleVersion { get { return "1.0.0"; } set { } }
18 | public HtmlDocument Doc { get; set; }
19 | private List _underlying;
20 | public bool needsSubSelector { get { return false; } }
21 | public LinksWindow linksWindow { get { return new LinksWindow(); } }
22 | public HexRomsModule()
23 | {
24 |
25 | }
26 | public void buildListView(GridView grid)
27 | {
28 | GridViewColumn title = new GridViewColumn();
29 | title.Header = "Title";
30 | title.DisplayMemberBinding = new Binding("Title");
31 | grid.Columns.Add(title);
32 | }
33 |
34 | public Tuple, List> getResults(HtmlDocument document)
35 | {
36 | _underlying = new List();
37 | List results = new();
38 | HtmlNodeCollection alist = document.DocumentNode.SelectNodes("/html/body/div[2]/div[1]/div/div[1]/div/div/ul/li/a");
39 | try
40 | {
41 | Logger.Log($"Found {alist.Count} results", "Websites (getResults - HexRom)");
42 | foreach (HtmlNode game in alist)
43 | {
44 | try
45 | {
46 | var title = game.Attributes["title"].Value;
47 | title = title.Replace("&", "&");
48 | results.Add(new Result() { Title = title });
49 | _underlying.Add(game.Attributes["href"].Value);
50 | }
51 | catch { continue; }
52 | }
53 | }
54 | catch (NullReferenceException)
55 | {
56 | Logger.Log("No results found!", "Websites (getResults - HexRom)");
57 | return Tuple.Create(new List(), new List());
58 | }
59 |
60 | Logger.Log($"Found {_underlying.Count} entries", "Websites (getResults - HexRoms)");
61 | if (!Settings.Default.NSFWContent)
62 | {
63 | foreach (Result res in results)
64 | {
65 | foreach (string s in BannedWords.nsfwWords)
66 | {
67 | if (res.Title.ToLower().Contains(s.ToLower()))
68 | {
69 | res.Title = "NSFW Content";
70 | _underlying[results.IndexOf(res)] = string.Empty;
71 | }
72 | }
73 | }
74 | }
75 | return Tuple.Create(results, _underlying);
76 | }
77 | public string getLink(int index)
78 | {
79 | return getLink(_underlying[index] + "/download/");
80 | }
81 |
82 | public string getLink(string gameURL)
83 | {
84 | HtmlWeb web = new HtmlWeb();
85 | HtmlDocument doc = web.Load(gameURL);
86 | LinksWindow linksWindow = new LinksWindow();
87 | linksWindow.getLinksList().Visibility = Visibility.Visible;
88 | linksWindow.Show();
89 | List websites = new List();
90 | var title = "";
91 | var link = "";
92 | HtmlNodeCollection links = doc.DocumentNode.SelectNodes("/html/body/div[2]/div[1]/div/div/div/div[2]/div/table/tbody/tr/td/a");
93 | System.Diagnostics.Debug.Write(links.Count);
94 | if (links == null) { return ""; }
95 | Logger.Log("Getting game page links", "Websites (getGamePage - HexRom)");
96 | foreach (HtmlNode downloadlink in links)
97 | {
98 | title = downloadlink.InnerText;
99 | link = downloadlink.Attributes["href"].Value;
100 | if (title != " ") { websites.Add(new Result() { Link = link, Infos = title }); }
101 | }
102 | Logger.Log($"Found {websites.Count} game page links", "Websites (getGamePage - HexRom)");
103 | if (!Settings.Default.NSFWContent)
104 | {
105 | foreach (Result res in websites)
106 | {
107 | foreach (string s in BannedWords.nsfwWords)
108 | {
109 | if (res.Infos.ToLower().Contains(s.ToLower()))
110 | {
111 | res.Infos = "NSFW Content";
112 | _underlying[websites.IndexOf(res)] = string.Empty;
113 | }
114 | }
115 | }
116 | }
117 | linksWindow.getLinksList().ItemsSource = websites;
118 | return "";
119 | }
120 |
121 | public HttpStatusCode search(string toSearch)
122 | {
123 | HttpStatusCode code;
124 | HtmlWeb web = new();
125 | web.UserAgent = "SimpleThingsProvider";
126 |
127 | Logger.Log("Searching for: " + toSearch + " in: " + Name, "Website (Search)");
128 | try
129 | {
130 | if (Settings.Default.ProxyEnabled) Doc = web.Load("https://hexrom.com/roms/nintendo-3ds/?title=" + toSearch, Settings.Default.ProxyIP, Int32.Parse(Settings.Default.ProxyPort), string.Empty, string.Empty);
131 | else Doc = web.Load("https://hexrom.com/roms/nintendo-3ds/?title=" + toSearch);
132 | }
133 | catch { Logger.Log($"Error code {HttpStatusCode.NotFound}", "Website (Search)"); return HttpStatusCode.NotFound; }
134 |
135 | code = web.StatusCode;
136 | return code;
137 | }
138 | public async void checkUpdate()
139 | {
140 | string repoURL = "https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/master/HexRomsModule/Info.json";
141 | HttpClient client = new HttpClient();
142 | HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, repoURL);
143 | requestMessage.Headers.UserAgent.Add(new ProductInfoHeaderValue("User-Agent", "SimpleThingsProvider"));
144 | HttpResponseMessage response = await client.SendAsync(requestMessage);
145 | string content = await response.Content.ReadAsStringAsync();
146 | int start = content.IndexOf(": \"");
147 | int end = content.IndexOf('"', start + 3);
148 | string version = content.Substring(start + 3, end - start - 3);
149 | if (!version.Equals(ModuleVersion))
150 | {
151 | MessageBoxResult r = AlertClass.Alert("An update for " + Name + " is available, open the GitHub page?", Name, MessageBoxButton.YesNo, MessageBoxImage.Information);
152 | if (r == MessageBoxResult.Yes)
153 | {
154 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://github.com/Backend2121/SimpleThingsProvider/releases/latest" };
155 | System.Diagnostics.Process.Start(process);
156 | Logger.Log($"Newer version for {Name}: {version} found!", Name + " Updater");
157 | }
158 | }
159 | }
160 | }
161 | }
162 |
--------------------------------------------------------------------------------
/HexRomsModule/HexRomsModule.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/HexRomsModule/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/IModule/IModule.cs:
--------------------------------------------------------------------------------
1 | using HtmlAgilityPack;
2 | using SimpleThingsProvider;
3 | using System.Collections.Generic;
4 | using System.Net;
5 | using System.Windows.Controls;
6 |
7 | public interface IModule
8 | {
9 | string Name { get; set; }
10 | public HtmlDocument Doc { get; set; }
11 | public ListView listview { get; set; }
12 | public bool needsSubSelector { get; }
13 | public LinksWindow linksWindow { get; }
14 | public List getResults(HtmlDocument document);
15 | public string getLink(int index);
16 | public string getLink(string gameURL);
17 | public HttpStatusCode search(string toSearch);
18 | }
--------------------------------------------------------------------------------
/IModule/IModule.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [Simple Things Provider (STP)](https://github.com/Backend2121/SimpleThingsProvider/releases/latest)
2 | ## Only for Windows 7/10/11
3 | Successor of SGD improved to provide easier access to lots of data (games, films, books, torrents, etc)
4 |
5 | # DISCLAIMER
6 | THIS SOFTWARE MUST BE USED TO DOWNLOAD ONLY LEGALLY OWNED MEDIA! I DECLINE ANY RESPONSIBILITIES OF YOUR ACTIONS!
7 |
8 | 
9 |
10 |
11 | # FEATURES
12 | * User-friendly GUI
13 | * Game search functionality
14 | * Extendable features through Extensions
15 | * Extendable sources through Modules
16 | * Multiple Sources
17 | * Configurable Proxy
18 | * Update notifier
19 | * Easy to install
20 | * Light & Dark mode
21 |
22 | # SOURCES
23 | **x1337** for Torrents (Broken right now)
24 |
25 | **ThePirateBay** for Torrents
26 |
27 | **FitGirl** for PC Repacks
28 |
29 | **ElAmigos** for PC Games
30 |
31 | **RPGOnly** for Switch Games
32 |
33 | **NxBrew** for Switch Games
34 |
35 | **Ziperto** for Switch Games
36 |
37 | **HexRoms** for 3ds Games
38 |
39 | **WoWRoms** for old Games
40 |
41 | **Vimm's Lair** for old Games
42 |
43 | # HOW TO INSTALL
44 | Download "STP_Setup.msi", run it (smartscreen will probably block it), finish the installation by leaving everything as is and start downloading the Modules/Extensions you are interested in from the same page where you downloaded the Setup, extract the "STP" folder from the ".zip" file(s) inside your Documents folder and run STP!
45 |
46 | As an example for the path:
47 | C:\Users\{USER}\Documents\STP\Modules\SomethingModule.dll
48 | C:\Users\{USER}\Documents\STP\Extensions\SomethingExtension.dll
49 |
50 | # HOW TO USE
51 | Just type whatever you want to search from the selected website (in the drop-down menu) and press search!
52 |
53 | # Do i need a VPN?
54 |
55 | Whether or not you need a VPN will differ based on what you're downloading, what tracker you're using and what country you live in.
56 |
57 | A major AAA game is much more likely to be tracked than a shovelware title that costs $3 on the eShop.
58 |
59 | Not every country has ISPs and laws that care about torrenting. When in doubt, assume your country has harsher laws to be safe.
60 |
61 | Finally, the site matters. The chances of receiving an ISP letter while using a private tracker is much smaller than using a public tracker due to it being more work for copyright trolls to join private sites (and they have a smaller userbase than public ones). The effort isn't worth it for them when they can get more people more easily on other sites.
62 |
63 | # DISCORD
64 | For any help with the software join the Discord and ask for help!
65 |
66 | [Discord Link!](https://discord.com/invite/vBkxx7rR)
67 |
68 | # [TUTORIAL](https://youtu.be/49bENmhpf_s)
69 |
--------------------------------------------------------------------------------
/RPGOnlyModule/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/RPGOnlyModule/RPGOnlyModule.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/STP_Setup/Icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/STP_Setup/Icon.ico
--------------------------------------------------------------------------------
/STP_Setup/Product.wxs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/STP_Setup/STP_Setup.wax:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | TorrentScraper\SimpleThingsProvider.csproj
5 |
6 |
7 |
8 |
9 |
10 | false
11 | true
12 | false
13 | -
14 |
--------------------------------------------------------------------------------
/STP_Setup/STP_Setup.wixproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Debug
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | SimpleThingsProvider
16 | {81409bd9-3d58-4bee-b5d4-906f232c2581}
17 | True
18 | True
19 | Binaries;Content;Satellites
20 | INSTALLFOLDER
21 |
22 |
23 |
--------------------------------------------------------------------------------
/TPBModule/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/TPBModule/TPBModule.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/TorrentScraper/AboutWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
27 |
37 |
47 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/TorrentScraper/AboutWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using ControlzEx.Theming;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 | using System.Windows.Controls;
9 | using System.Windows.Data;
10 | using System.Windows.Documents;
11 | using System.Windows.Input;
12 | using System.Windows.Media;
13 | using System.Windows.Media.Imaging;
14 | using System.Windows.Shapes;
15 |
16 | namespace SimpleThingsProvider
17 | {
18 | ///
19 | /// Logica di interazione per AboutWindow.xaml
20 | ///
21 | public partial class AboutWindow
22 | {
23 | private byte[] egg = { 54, 56, 55, 52, 55, 52, 55, 48, 55, 51, 51, 97, 50, 102, 50, 102, 55, 57, 54, 102, 55, 53, 55, 52, 55, 53, 50, 101, 54, 50, 54, 53, 50, 102, 54, 102, 54, 53, 51, 49, 52, 97, 52, 102, 55, 97, 53, 51, 52, 99, 55, 53, 52, 97, 54, 51 };
24 | public AboutWindow()
25 | {
26 | InitializeComponent();
27 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
28 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
29 |
30 | ThemeManager.Current.SyncTheme();
31 | VersionLabel.Content = Settings.Default.ApplicationVersion;
32 | Logger.Log("About Window initialized", "About");
33 | this.SizeToContent = SizeToContent.WidthAndHeight;
34 | }
35 | public static string _2121(String h, Encoding e)
36 | {
37 | System.Diagnostics.Debug.WriteLine(h);
38 | int n = h.Length;
39 | byte[] b = new byte[n / 2];
40 | for (int i = 0; i < n; i += 2)
41 | {
42 | b[i / 2] = Convert.ToByte(h.Substring(i, 2), 16);
43 | }
44 | return e.GetString(b);
45 | }
46 | private void openDiscord(object sender, RoutedEventArgs e)
47 | {
48 | Logger.Log("Opening Discord Invite", "About");
49 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://discord.com/invite/WTrCtvyPke" };
50 | System.Diagnostics.Process.Start(process);
51 | Logger.Log("Opened Discord Invite", "About");
52 | }
53 | private void openPatreon(object sender, RoutedEventArgs e)
54 | {
55 | Logger.Log("Opening Patreon Page", "About");
56 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://www.patreon.com/Backend2121" };
57 | System.Diagnostics.Process.Start(process);
58 | Logger.Log("Opened Patreon Page", "About");
59 | }
60 | private void openReddit(object sender, RoutedEventArgs e)
61 | {
62 | Logger.Log("Opening Reddit Profile", "About");
63 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://www.reddit.com/user/Sbigioduro" };
64 | System.Diagnostics.Process.Start(process);
65 | Logger.Log("Opened Reddit Profile", "About");
66 | }
67 | private void openYoutube(object sender, RoutedEventArgs e)
68 | {
69 | Logger.Log("Opening Youtube Channel", "About");
70 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://www.youtube.com/channel/UCW2JQJs_R3O_I937yxicT9A" };
71 | System.Diagnostics.Process.Start(process);
72 | Logger.Log("Opened Youtube Channel", "About");
73 | }
74 | private void openEE(object sender, RoutedEventArgs e)
75 | {
76 | // That random textbox is not useless!
77 | Logger.Log("Testing the Super Secret Code Box", "About");
78 | if (SuperSecretCodeTextBox.Text == "HelloThereGeneralKenobi")
79 | {
80 | Logger.Log("* got in!", "About");
81 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = _2121(Encoding.ASCII.GetString(egg), Encoding.ASCII) };
82 | System.Diagnostics.Process.Start(process);
83 | }
84 | }
85 | }
86 | }
--------------------------------------------------------------------------------
/TorrentScraper/AlertClass.cs:
--------------------------------------------------------------------------------
1 | using ControlzEx.Theming;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Reflection.Metadata;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 | using System.Windows;
9 | using System.Windows.Controls;
10 | using System.Windows.Media;
11 | using System.Windows.Media.Media3D;
12 |
13 | namespace SimpleThingsProvider
14 | {
15 | public static class AlertClass
16 | {
17 | public static MessageBoxResult Alert(string messageBoxText, string caption, MessageBoxButton button , MessageBoxImage messageBoxImage)
18 | {
19 | Logger.Log("Alert sent: " + caption + "\nWith message: " + messageBoxText, "Alert");
20 | return MessageBox.Show(messageBoxText, caption, button, messageBoxImage, MessageBoxResult.OK);
21 | }
22 |
23 | public class CustomMessageBox : Window
24 | {
25 | public CustomMessageBox(string title, string message)
26 | {
27 | Title = title;
28 | Width = 300;
29 | Height = 150;
30 | WindowStartupLocation = WindowStartupLocation.CenterScreen;
31 | WindowStyle = WindowStyle.ToolWindow;
32 | ResizeMode = ResizeMode.NoResize;
33 | SolidColorBrush color;
34 | if (Settings.Default.SyncWithWindows)
35 | {
36 | if (SimpleThingsProvider.Utils.IsLightTheme())
37 | {
38 | color = new SolidColorBrush(Colors.Black);
39 | }
40 | else
41 | {
42 | color = new SolidColorBrush(Colors.White);
43 | }
44 | }
45 | else if (Settings.Default.MainTheme == "Light")
46 | {
47 | color = new SolidColorBrush(Colors.Black);
48 | }
49 | else
50 | {
51 | color = new SolidColorBrush(Colors.White);
52 | }
53 |
54 | var textBlock = new TextBlock
55 | {
56 | Text = message,
57 | Margin = new Thickness(20),
58 | TextWrapping = TextWrapping.Wrap,
59 | Foreground = color,
60 | };
61 | Content = textBlock;
62 | }
63 | }
64 | }
65 | }
--------------------------------------------------------------------------------
/TorrentScraper/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 127.0.0.1
15 |
16 |
17 | 80
18 |
19 |
20 | False
21 |
22 |
23 | -1
24 |
25 |
26 | -1
27 |
28 |
29 | Light
30 |
31 |
32 | Blue
33 |
34 |
35 | False
36 |
37 |
39 | False
40 |
41 |
42 | False
43 |
44 |
45 |
46 |
47 |
48 |
49 | 2.0.3.0
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/TorrentScraper/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/TorrentScraper/BannedWords.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Text.Json;
7 | using System.IO;
8 |
9 | namespace SimpleThingsProvider
10 | {
11 | public static class BannedWords
12 | {
13 | public static List nsfwWords = JsonSerializer.Deserialize>(File.ReadAllText("NSFWWords.json"));
14 | }
15 | }
--------------------------------------------------------------------------------
/TorrentScraper/FilePathUtils.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Text.RegularExpressions;
7 | using System.Threading.Tasks;
8 |
9 | namespace SimpleThingsProvider
10 | {
11 | public static class FilePathUtils
12 | {
13 | public static string GetValidFilePath(string inputString)
14 | {
15 | // Rimuovi i caratteri non validi per i nomi dei file su Windows
16 | string cleanString = RemoveInvalidPathChars(inputString);
17 |
18 | // Sostituisci spazi con trattini bassi
19 | cleanString = cleanString.Replace(' ', '_');
20 |
21 | // Riduci la lunghezza massima del percorso (ad esempio, 260 caratteri per Windows)
22 | int maxPathLength = 260;
23 | if (cleanString.Length > maxPathLength)
24 | {
25 | cleanString = cleanString.Substring(0, maxPathLength);
26 | }
27 |
28 | return cleanString;
29 | }
30 |
31 | private static string RemoveInvalidPathChars(string input)
32 | {
33 | string invalidChars = Regex.Escape(new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars()));
34 | string invalidCharsPattern = string.Format(@"([{0}]*\.+$)|([{0}]+)", invalidChars);
35 | return Regex.Replace(input, invalidCharsPattern, "_");
36 | }
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/TorrentScraper/HelpWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/TorrentScraper/HelpWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using ControlzEx.Theming;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 | using System.Windows.Controls;
9 | using System.Windows.Data;
10 | using System.Windows.Documents;
11 | using System.Windows.Input;
12 | using System.Windows.Media;
13 | using System.Windows.Media.Imaging;
14 | using System.Windows.Shapes;
15 |
16 | namespace SimpleThingsProvider
17 | {
18 | ///
19 | /// Logica di interazione per HelpWindow.xaml
20 | ///
21 | public partial class HelpWindow : Window
22 | {
23 | public HelpWindow()
24 | {
25 | InitializeComponent();
26 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
27 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
28 |
29 | ThemeManager.Current.SyncTheme();
30 | Topmost = true;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/TorrentScraper/IExtension.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 |
9 | public interface IExtension
10 | {
11 | string Name { get; set; }
12 | string ExtensionVersion { get; set; }
13 | public Window extensionWindow { get; set; }
14 | public Window getExtensionWindow();
15 | public bool startFunction(object[] args);
16 | public List getElements(ListView lv, Label ol);
17 | public List getSettings();
18 | public void showWindow();
19 | public void enableButton(Label outputLabel);
20 | public void disableButton(Label outputLabel);
21 | public void saveSettings();
22 | public void checkUpdate();
23 | }
--------------------------------------------------------------------------------
/TorrentScraper/IModule.cs:
--------------------------------------------------------------------------------
1 | using HtmlAgilityPack;
2 | using SimpleThingsProvider;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.ComponentModel;
6 | using System.Net;
7 | using System.Windows.Controls;
8 |
9 | public interface IModule
10 | {
11 | string Name { get; set; }
12 | string ModuleVersion { get; set; }
13 | public HtmlDocument Doc { get; set; }
14 | public bool needsSubSelector { get; }
15 | public LinksWindow linksWindow { get; }
16 | public Tuple, List> getResults(HtmlDocument document);
17 | public string getLink(int index);
18 | public string getLink(string gameURL);
19 | public HttpStatusCode search(string toSearch);
20 | public void buildListView(GridView view);
21 | public void checkUpdate();
22 | }
--------------------------------------------------------------------------------
/TorrentScraper/JsonSettings.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.VisualBasic.FileIO;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Diagnostics;
5 | using System.IO;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Text.Json;
9 | using System.Threading.Tasks;
10 |
11 | namespace SimpleThingsProvider
12 | {
13 | public class JsonSettings
14 | {
15 | private string directory;
16 | private string file;
17 | private Dictionary settings;
18 | public JsonSettings(string where, string fileName, Dictionary pairs)
19 | {
20 | directory = SpecialDirectories.MyDocuments + "\\STP\\" + where;
21 | file = fileName.Replace(".json", string.Empty);
22 | file += ".json";
23 | settings = pairs;
24 | }
25 | public void saveToJson()
26 | {
27 | Debug.WriteLine(JsonSerializer.Serialize(settings));
28 | File.WriteAllText(directory + "\\" + file, JsonSerializer.Serialize(settings));
29 | }
30 | public Dictionary loadFromJson()
31 | {
32 | try
33 | {
34 | return JsonSerializer.Deserialize>(File.ReadAllText(directory + "\\" + file));
35 | }
36 | catch (DirectoryNotFoundException e)
37 | {
38 | Directory.CreateDirectory(directory);
39 | File.Create(directory + "\\" + file).Close();
40 | return new Dictionary();
41 | }
42 | catch(FileNotFoundException e)
43 | {
44 | Directory.CreateDirectory(directory);
45 | File.Create(directory + "\\" + file).Close();
46 | return new Dictionary();
47 | }
48 | catch(JsonException e)
49 | {
50 | return new Dictionary();
51 | }
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/TorrentScraper/LinksWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/TorrentScraper/LinksWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using ControlzEx.Theming;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Windows;
5 | using System.Windows.Controls;
6 |
7 | namespace SimpleThingsProvider
8 | {
9 | ///
10 | /// Logica di interazione per LinksWindow.xaml
11 | ///
12 | public partial class LinksWindow : Window
13 | {
14 | public LinksWindow()
15 | {
16 | InitializeComponent();
17 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
18 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
19 | ThemeManager.Current.SyncTheme();
20 | // Hide all linkslists
21 | LinksList.Visibility = Visibility.Visible;
22 | Topmost = true;
23 | }
24 | private void SelectionChanged(object sender, RoutedEventArgs e)
25 | {
26 | string link = "";
27 | MainWindow mainWindow = (MainWindow)Application.Current.MainWindow;
28 | if (LinksList.Visibility == Visibility.Visible)
29 | {
30 | link = ((Result)LinksList.SelectedValue).Link;
31 | }
32 | mainWindow.OutputLabel.Content = link;
33 | foreach (IExtension ex in mainWindow.getExtensions())
34 | {
35 | ex.enableButton(mainWindow.OutputLabel);
36 | }
37 | if (link != "") { Close(); }
38 | }
39 | public ListView getLinksList()
40 | {
41 | return LinksList;
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/TorrentScraper/Logger.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace SimpleThingsProvider
9 | {
10 | public class Logger
11 | {
12 | static string file = $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/SimpleThingsProvider_logs/{createLogFile()}";
13 | public static void Log(string logMessage, string whoami)
14 | {
15 | using (StreamWriter w = File.AppendText(file))
16 | {
17 | w.Write("\r\nLog Entry : ");
18 | w.WriteLine($"{DateTime.Now.ToLongTimeString()} {DateTime.Now.ToLongDateString()}");
19 | w.WriteLine($" :{whoami}");
20 | w.WriteLine($" :{logMessage}");
21 | w.WriteLine("-------------------------------");
22 | }
23 | }
24 | private static string createLogFile()
25 | {
26 | var file = $"{DateTime.Now.ToLongTimeString()} {DateTime.Now.ToLongDateString()}".Replace(":", "_") + ".log";
27 | file = file.Replace(" ", "_");
28 | System.Diagnostics.Debug.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
29 | if (!Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/SimpleThingsProvider_logs/"))
30 | {
31 | Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/SimpleThingsProvider_logs/");
32 | }
33 |
34 | return file;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/TorrentScraper/NSFWWords.json:
--------------------------------------------------------------------------------
1 | [ "allupato", "sesso", "ammucchiata", "anale", "arrapato", "arrusa", "arruso", "assatanato", "bagascia", "bagassa", "bagnarsi", "baldracca", "balle", "battere", "battona", "belino", "biga", "bocchinara", "bocchino", "bofilo", "boiata", "bordello", "brinca", "bucaiolo", "budiùlo", "busone", "cacca", "caciocappella", "cadavere", "cagare", "cagata", "cagna", "casci", "cazzata", "cazzimma", "cazzo", "cesso", "cazzone", "checca", "chiappa", "chiavare", "chiavata", "ciospo", "ciucciami il cazzo", "coglione", "coglioni", "cornuto", "cozza", "culattina", "culattone", "culo", "ditalino", "fava", "femminuccia", "fica", "figa", "figlio di buona donna", "figlio di puttana", "figone", "finocchio", "fottere", "fottersi", "fracicone", "fregna", "frocio", "froscio", "goldone", "guardone", "imbecille", "incazzarsi", "incoglionirsi", "ingoio", "leccaculo", "lecchino", "lofare", "loffa", "loffare", "mannaggia", "merda", "merdata", "merdoso", "mignotta", "minchia", "minchione", "mona", "monta", "montare", "mussa", "nave scuola", "nerchia", "padulo", "palle", "palloso", "patacca", "patonza", "pecorina", "pesce", "picio", "pincare", "pippa", "pinnolone", "pipì", "pippone", "pirla", "pisciare", "piscio", "pisello", "pistolotto", "pomiciare", "pompa", "pompino", "porca", "porca madonna", "porca miseria", "porca puttana", "porco", "porco due", "porco zio", "potta", "puppami", "puttana", "quaglia", "recchione", "regina", "rincoglionire", "rizzarsi", "rompiballe", "rompipalle", "ruffiano", "sbattere", "sbattersi", "sborra", "sborrata", "sborrone", "sbrodolata", "scopare", "scopata", "scorreggiare", "sega", "slinguare", "slinguata", "smandrappata", "soccia", "socmel", "sorca", "spagnola", "spompinare", "sticchio", "stronza", "stronzata", "stronzo", "succhiami", "succhione", "sveltina", "sverginare", "tarzanello", "terrone", "testa di cazzo", "tette", "tirare", "topa", "troia", "trombare", "vacca", "vaffanculo", "vangare", "zinne", "zio cantante", "zoccola", "2g1c", "2 girls 1 cup", "acrotomophilia", "alabama hot pocket", "alaskan pipeline", "anal", "anilingus", "anus", "apeshit", "arsehole", "ass", "asshole", "assmunch", "auto erotic", "autoerotic", "babeland", "baby batter", "baby juice", "ball gag", "ball gravy", "ball kicking", "ball licking", "ball sack", "ball sucking", "bangbros", "bangbus", "bareback", "barely legal", "barenaked", "bastard", "bastardo", "bastinado", "bbw", "bdsm", "beaner", "beaners", "beaver cleaver", "beaver lips", "beastiality", "bestiality", "big black", "big breasts", "big knockers", "big tits", "bimbos", "birdlock", "bitch", "bitches", "black cock", "blonde action", "blonde on blonde action", "blowjob", "blow job", "blow your load", "blue waffle", "blumpkin", "bollocks", "bondage", "boner", "boob", "boobs", "booty call", "brown showers", "brunette action", "bukkake", "bulldyke", "bullet vibe", "bullshit", "bung hole", "bunghole", "busty", "butt", "buttcheeks", "butthole", "camel toe", "camgirl", "camslut", "camwhore", "carpet muncher", "carpetmuncher", "chocolate rosebuds", "cialis", "circlejerk", "cleveland steamer", "clit", "clitoris", "clover clamps", "clusterfuck", "cock", "cocks", "coprolagnia", "coprophilia", "cornhole", "coon", "coons", "creampie", "cum", "cumming", "cumshot", "cumshots", "cunnilingus", "cunt", "darkie", "date rape", "daterape", "deep throat", "deepthroat", "dendrophilia", "dick", "dildo", "dingleberry", "dingleberries", "dirty pillows", "dirty sanchez", "doggie style", "doggiestyle", "doggy style", "doggystyle", "dog style", "dolcett", "domination", "dominatrix", "dommes", "donkey punch", "double dong", "double penetration", "dp action", "dry hump", "dvda", "eat my ass", "ecchi", "ejaculation", "erotic", "erotism", "escort", "eunuch", "fag", "faggot", "fecal", "felch", "fellatio", "feltch", "female squirting", "femdom", "figging", "fingerbang", "fingering", "fisting", "foot fetish", "footjob", "frotting", "fuck", "fuck buttons", "fuckin", "fucking", "fucktards", "fudge packer", "fudgepacker", "futanari", "gangbang", "gang bang", "gay sex", "genitals", "giant cock", "girl on", "girl on top", "girls gone wild", "goatcx", "goatse", "god damn", "gokkun", "golden shower", "goodpoop", "goo girl", "goregasm", "grope", "group sex", "g-spot", "guro", "hand job", "handjob", "hard core", "hardcore", "hentai", "homoerotic", "honkey", "hooker", "horny", "hot carl", "hot chick", "how to kill", "how to murder", "huge fat", "humping", "incest", "intercourse", "jack off", "jail bait", "jailbait", "jelly donut", "jerk off", "jigaboo", "jiggaboo", "jiggerboo", "jizz", "juggs", "kike", "kinbaku", "kinkster", "kinky", "knobbing", "leather restraint", "leather straight jacket", "lemon party", "livesex", "lolita", "lovemaking", "make me come", "male squirting", "masturbate", "masturbating", "masturbation", "menage a trois", "milf", "missionary position", "mong", "motherfucker", "mound of venus", "mr hands", "muff diver", "muffdiving", "nambla", "nawashi", "negro", "neonazi", "nigga", "nigger", "nig nog", "nimphomania", "nipple", "nipples", "nsfw", "nsfw images", "nude", "nudity", "nutten", "nympho", "nymphomania", "octopussy", "omorashi", "one cup two girls", "one guy one jar", "orgasm", "orgy", "paedophile", "paki", "panties", "panty", "pedobear", "pedophile", "pegging", "penis", "phone sex", "piece of shit", "pikey", "pissing", "piss pig", "pisspig", "playboy", "pleasure chest", "pole smoker", "ponyplay", "poof", "poon", "poontang", "punany", "poop chute", "poopchute", "porn", "porno", "pornography", "prince albert piercing", "pthc", "pubes", "pussy", "queaf", "queef", "quim", "raghead", "raging boner", "rape", "raping", "rapist", "rectum", "reverse cowgirl", "rimjob", "rimming", "rosy palm", "rosy palm and her 5 sisters", "rusty trombone", "sadism", "santorum", "scat", "schlong", "scissoring", "semen", "sex", "sexcam", "sexo", "sexy", "sexual", "sexually", "sexuality", "shaved beaver", "shaved pussy", "shemale", "shibari", "shit", "shitblimp", "shitty", "shota", "shrimping", "skeet", "slanteye", "slut", "s&m", "smut", "snatch", "snowballing", "sodomize", "sodomy", "spastic", "spic", "splooge", "splooge moose", "spooge", "spread legs", "spunk", "strap on", "strapon", "strappado", "strip club", "style doggy", "suck", "sucks", "suicide girls", "sultry women", "swastika", "swinger", "tainted love", "taste my", "tea bagging", "threesome", "throating", "thumbzilla", "tied up", "tight white", "tit", "tits", "titties", "titty", "tongue in a", "topless", "tosser", "towelhead", "tranny", "tribadism", "tub girl", "tubgirl", "tushy", "twat", "twink", "twinkie", "two girls one cup", "undressing", "upskirt", "urethra play", "urophilia", "vagina", "venus mound", "viagra", "vibrator", "violet wand", "vorarephilia", "voyeur", "voyeurweb", "voyuer", "vulva", "wank", "wetback", "wet dream", "white power", "whore", "worldsex", "wrapping men", "wrinkled starfish", "xx", "xxx", "yaoi", "yellow showers", "yiffy", "zoophilia", "🖕" ]
--------------------------------------------------------------------------------
/TorrentScraper/Results.cs:
--------------------------------------------------------------------------------
1 | public class Result
2 | {
3 | public string System { get; set; }
4 | public string Title { get; set; }
5 | public string Seeds { get; set; }
6 | public string Leechs { get; set; }
7 | public string Time { get; set; }
8 | public string Size { get; set; }
9 | public string Region { get; set; }
10 | public string Version { get; set; }
11 | public string Languages { get; set; }
12 | public string OriginalSize { get; set; }
13 | public string RepackSize { get; set; }
14 | public string Name { get; set; }
15 | public string Link { get; set; }
16 | public string Infos { get; set; }
17 | public string Downloads { get; set; }
18 | }
--------------------------------------------------------------------------------
/TorrentScraper/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace SimpleThingsProvider {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.8.0.0")]
16 | public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("127.0.0.1")]
29 | public string ProxyIP {
30 | get {
31 | return ((string)(this["ProxyIP"]));
32 | }
33 | set {
34 | this["ProxyIP"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("80")]
41 | public string ProxyPort {
42 | get {
43 | return ((string)(this["ProxyPort"]));
44 | }
45 | set {
46 | this["ProxyPort"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
53 | public bool ProxyEnabled {
54 | get {
55 | return ((bool)(this["ProxyEnabled"]));
56 | }
57 | set {
58 | this["ProxyEnabled"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("-1")]
65 | public int WebsiteSelected {
66 | get {
67 | return ((int)(this["WebsiteSelected"]));
68 | }
69 | set {
70 | this["WebsiteSelected"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("-1")]
77 | public int WebsiteSubSelected {
78 | get {
79 | return ((int)(this["WebsiteSubSelected"]));
80 | }
81 | set {
82 | this["WebsiteSubSelected"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.ApplicationScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("2.0.3.0")]
89 |
90 | public string ApplicationVersion {
91 | get {
92 | return ((string)(this["ApplicationVersion"]));
93 | }
94 | }
95 |
96 | [global::System.Configuration.UserScopedSettingAttribute()]
97 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
98 | [global::System.Configuration.DefaultSettingValueAttribute("Light")]
99 | public string MainTheme {
100 | get {
101 | return ((string)(this["MainTheme"]));
102 | }
103 | set {
104 | this["MainTheme"] = value;
105 | }
106 | }
107 |
108 | [global::System.Configuration.UserScopedSettingAttribute()]
109 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
110 | [global::System.Configuration.DefaultSettingValueAttribute("Blue")]
111 | public string SubTheme {
112 | get {
113 | return ((string)(this["SubTheme"]));
114 | }
115 | set {
116 | this["SubTheme"] = value;
117 | }
118 | }
119 |
120 | [global::System.Configuration.UserScopedSettingAttribute()]
121 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
122 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
123 | public bool SyncWithWindows {
124 | get {
125 | return ((bool)(this["SyncWithWindows"]));
126 | }
127 | set {
128 | this["SyncWithWindows"] = value;
129 | }
130 | }
131 |
132 | [global::System.Configuration.UserScopedSettingAttribute()]
133 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
134 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
135 | public bool DoNotShowAgain_RestartApplicationAfterThemeChange {
136 | get {
137 | return ((bool)(this["DoNotShowAgain_RestartApplicationAfterThemeChange"]));
138 | }
139 | set {
140 | this["DoNotShowAgain_RestartApplicationAfterThemeChange"] = value;
141 | }
142 | }
143 |
144 | [global::System.Configuration.UserScopedSettingAttribute()]
145 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
146 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
147 | public bool NSFWContent {
148 | get {
149 | return ((bool)(this["NSFWContent"]));
150 | }
151 | set {
152 | this["NSFWContent"] = value;
153 | }
154 | }
155 | }
156 | }
157 |
--------------------------------------------------------------------------------
/TorrentScraper/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 127.0.0.1
7 |
8 |
9 | 80
10 |
11 |
12 | False
13 |
14 |
15 | -1
16 |
17 |
18 | -1
19 |
20 |
21 | 2.0.3.0
22 |
23 |
24 | Light
25 |
26 |
27 | Blue
28 |
29 |
30 | False
31 |
32 |
33 | False
34 |
35 |
36 | False
37 |
38 |
39 |
--------------------------------------------------------------------------------
/TorrentScraper/SettingsWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Simple Things Provider
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | Light
43 | Dark
44 |
45 |
46 | Red
47 | Green
48 | Blue
49 | Purple
50 | Orange
51 | Lime
52 | Emerald
53 | Teal
54 | Cyan
55 | Cobalt
56 | Indigo
57 | Violet
58 | Pink
59 | Magenta
60 | Crimson
61 | Amber
62 | Yellow
63 | Brown
64 | Olive
65 | Steel
66 | Mauve
67 | Taupe
68 | Sienna
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/TorrentScraper/SettingsWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Shapes;
14 | using HtmlAgilityPack;
15 | using System.Net.Http;
16 | using ControlzEx.Theming;
17 | using System.Diagnostics;
18 |
19 | namespace SimpleThingsProvider
20 | {
21 | ///
22 | /// Logica di interazione per ProxyWindow.xaml
23 | ///
24 | public partial class SettingsWindow
25 | {
26 | private List extensions;
27 | public SettingsWindow(List e)
28 | {
29 | InitializeComponent();
30 | extensions = e;
31 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
32 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
33 |
34 | ThemeManager.Current.SyncTheme();
35 | Logger.Log("Initialized Proxy Window", "Proxy");
36 | foreach (IExtension extension in extensions)
37 | {
38 | ExtensionsListView.Items.Add(extension.Name);
39 | // Get all extension's settings
40 | }
41 | getSettings();
42 | }
43 | public void Alert(string messageBoxText, string caption)
44 | {
45 | Logger.Log(messageBoxText, "Alert");
46 | MessageBoxButton button = MessageBoxButton.OK;
47 | MessageBoxImage icon = MessageBoxImage.Information;
48 | MessageBox.Show(messageBoxText, caption, button, icon, MessageBoxResult.OK);
49 | }
50 |
51 | private void getSettings()
52 | {
53 | IPTextBox.Text = Settings.Default.ProxyIP;
54 | PortTextBox.Text = Settings.Default.ProxyPort;
55 | ProxyEnabledCheckBox.IsChecked = Settings.Default.ProxyEnabled;
56 | MainThemeComboBox.SelectedItem = Settings.Default.MainTheme;
57 | MainThemeComboBox.IsEnabled = true;
58 | SubThemeComboBox.SelectedItem = Settings.Default.SubTheme;
59 | SubThemeComboBox.IsEnabled = true;
60 | SyncWithWindowsCheckBox.IsChecked = Settings.Default.SyncWithWindows;
61 | NSFWContentCheckBox.IsChecked = Settings.Default.NSFWContent;
62 | if (Settings.Default.SyncWithWindows) { MainThemeComboBox.IsEnabled = false; SubThemeComboBox.IsEnabled = false; }
63 | Logger.Log($"Loaded previous settings for Proxy IP:{IPTextBox.Text} PORT:{PortTextBox.Text} ENABLED:{ProxyEnabledCheckBox.IsChecked}", "Proxy");
64 | }
65 |
66 | private void SaveButton_Click(object sender, RoutedEventArgs e)
67 | {
68 | // Save STP's settings the old way
69 | Settings.Default.NSFWContent = NSFWContentCheckBox.IsChecked.Value;
70 | Logger.Log("Testing new proxy configuration", "Proxy");
71 | if (ProxyEnabledCheckBox.IsChecked.Value)
72 | {
73 | try
74 | {
75 | HtmlWeb web = new HtmlWeb();
76 | web.Load("https://google.com/", IPTextBox.Text, Int32.Parse(PortTextBox.Text), String.Empty, String.Empty);
77 | Logger.Log("New proxy configuration is valid", "Proxy");
78 | }
79 | catch (Exception) { MainWindow mainWindow = (MainWindow)Application.Current.MainWindow; mainWindow.Alert("Proxy unreachable", "Error"); return; }
80 | }
81 | Settings.Default.ProxyPort = PortTextBox.Text.Replace(" ", "");
82 | Settings.Default.ProxyIP = IPTextBox.Text.Replace(" ", "");
83 | Settings.Default.ProxyEnabled = ProxyEnabledCheckBox.IsChecked.Value;
84 | if (Settings.Default.MainTheme != MainThemeComboBox.Text)
85 | {
86 | Settings.Default.MainTheme = MainThemeComboBox.Text;
87 | if (!Settings.Default.DoNotShowAgain_RestartApplicationAfterThemeChange)
88 | {
89 | Alert("You need to restart the application to change the theme!", "Info");
90 | Settings.Default.DoNotShowAgain_RestartApplicationAfterThemeChange = true;
91 | }
92 | }
93 | if (Settings.Default.SubTheme != SubThemeComboBox.Text)
94 | {
95 | Settings.Default.SubTheme = SubThemeComboBox.Text;
96 | if (!Settings.Default.DoNotShowAgain_RestartApplicationAfterThemeChange) {
97 | Alert("You need to restart the application to change the theme!", "Info");
98 | Settings.Default.DoNotShowAgain_RestartApplicationAfterThemeChange = true;
99 | }
100 | }
101 | Settings.Default.SyncWithWindows = SyncWithWindowsCheckBox.IsChecked.Value;
102 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
103 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
104 | ThemeManager.Current.SyncTheme();
105 | Settings.Default.Save();
106 | // Save the extensions's settings
107 | foreach (IExtension extension in extensions)
108 | {
109 | try
110 | {
111 | extension.saveSettings();
112 | }
113 | catch(NullReferenceException ex)
114 | {
115 | continue;
116 | }
117 |
118 | }
119 | Close();
120 | }
121 |
122 | private void extensionsListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
123 | {
124 | if (ExtensionsListView.SelectedItem.Equals("Simple Things Provider"))
125 | {
126 | STPSettingsGrid.Visibility = Visibility.Visible;
127 | SettingsGrid.Visibility = Visibility.Hidden;
128 | }
129 | else
130 | {
131 | STPSettingsGrid.Visibility = Visibility.Hidden;
132 | SettingsGrid.Visibility = Visibility.Visible;
133 | }
134 | // Load new grid got from the extension getSettings function
135 | foreach (IExtension extension in extensions)
136 | {
137 | if (extension.Name.Equals(ExtensionsListView.SelectedItem))
138 | {
139 | List docks = extension.getSettings();
140 | SettingsGridSP.Children.Clear();
141 | foreach (DockPanel dock in docks)
142 | {
143 | SettingsGridSP.Children.Add(dock);
144 | }
145 | }
146 | }
147 | }
148 | }
149 | }
--------------------------------------------------------------------------------
/TorrentScraper/Utils.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace SimpleThingsProvider
9 | {
10 | public static class Utils
11 | {
12 | ///
13 | /// True if the light theme is used
14 | ///
15 | public static bool IsLightTheme()
16 | {
17 | using var key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize");
18 | var value = key?.GetValue("AppsUseLightTheme");
19 | return value is int i && i > 0;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/TorrentScraper/WebsiteStatusWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/TorrentScraper/data/ControlzEx.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/ControlzEx.dll
--------------------------------------------------------------------------------
/TorrentScraper/data/Discord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Discord.png
--------------------------------------------------------------------------------
/TorrentScraper/data/DownloadIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/DownloadIcon.png
--------------------------------------------------------------------------------
/TorrentScraper/data/Github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Github.png
--------------------------------------------------------------------------------
/TorrentScraper/data/Icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Icon.ico
--------------------------------------------------------------------------------
/TorrentScraper/data/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Icon.png
--------------------------------------------------------------------------------
/TorrentScraper/data/Loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Loading.gif
--------------------------------------------------------------------------------
/TorrentScraper/data/MahApps.Metro.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/MahApps.Metro.dll
--------------------------------------------------------------------------------
/TorrentScraper/data/Microsoft.Xaml.Behaviors.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Microsoft.Xaml.Behaviors.dll
--------------------------------------------------------------------------------
/TorrentScraper/data/NSFWWords.json:
--------------------------------------------------------------------------------
1 | [ "allupato", "sesso", "ammucchiata", "anale", "arrapato", "arrusa", "arruso", "assatanato", "bagascia", "bagassa", "bagnarsi", "baldracca", "balle", "battere", "battona", "belino", "biga", "bocchinara", "bocchino", "bofilo", "boiata", "bordello", "brinca", "bucaiolo", "budiùlo", "busone", "cacca", "caciocappella", "cadavere", "cagare", "cagata", "cagna", "casci", "cazzata", "cazzimma", "cazzo", "cesso", "cazzone", "checca", "chiappa", "chiavare", "chiavata", "ciospo", "ciucciami il cazzo", "coglione", "coglioni", "cornuto", "cozza", "culattina", "culattone", "culo", "ditalino", "fava", "femminuccia", "fica", "figa", "figlio di buona donna", "figlio di puttana", "figone", "finocchio", "fottere", "fottersi", "fracicone", "fregna", "frocio", "froscio", "goldone", "guardone", "imbecille", "incazzarsi", "incoglionirsi", "ingoio", "leccaculo", "lecchino", "lofare", "loffa", "loffare", "mannaggia", "merda", "merdata", "merdoso", "mignotta", "minchia", "minchione", "mona", "monta", "montare", "mussa", "nave scuola", "nerchia", "padulo", "palle", "palloso", "patacca", "patonza", "pecorina", "pesce", "picio", "pincare", "pippa", "pinnolone", "pipì", "pippone", "pirla", "pisciare", "piscio", "pisello", "pistolotto", "pomiciare", "pompa", "pompino", "porca", "porca madonna", "porca miseria", "porca puttana", "porco", "porco due", "porco zio", "potta", "puppami", "puttana", "quaglia", "recchione", "regina", "rincoglionire", "rizzarsi", "rompiballe", "rompipalle", "ruffiano", "sbattere", "sbattersi", "sborra", "sborrata", "sborrone", "sbrodolata", "scopare", "scopata", "scorreggiare", "sega", "slinguare", "slinguata", "smandrappata", "soccia", "socmel", "sorca", "spagnola", "spompinare", "sticchio", "stronza", "stronzata", "stronzo", "succhiami", "succhione", "sveltina", "sverginare", "tarzanello", "terrone", "testa di cazzo", "tette", "tirare", "topa", "troia", "trombare", "vacca", "vaffanculo", "vangare", "zinne", "zio cantante", "zoccola", "2g1c", "2 girls 1 cup", "acrotomophilia", "alabama hot pocket", "alaskan pipeline", "anal", "anilingus", "anus", "apeshit", "arsehole", "ass", "asshole", "assmunch", "auto erotic", "autoerotic", "babeland", "baby batter", "baby juice", "ball gag", "ball gravy", "ball kicking", "ball licking", "ball sack", "ball sucking", "bangbros", "bangbus", "bareback", "barely legal", "barenaked", "bastard", "bastardo", "bastinado", "bbw", "bdsm", "beaner", "beaners", "beaver cleaver", "beaver lips", "beastiality", "bestiality", "big black", "big breasts", "big knockers", "big tits", "bimbos", "birdlock", "bitch", "bitches", "black cock", "blonde action", "blonde on blonde action", "blowjob", "blow job", "blow your load", "blue waffle", "blumpkin", "bollocks", "bondage", "boner", "boob", "boobs", "booty call", "brown showers", "brunette action", "bukkake", "bulldyke", "bullet vibe", "bullshit", "bung hole", "bunghole", "busty", "butt", "buttcheeks", "butthole", "camel toe", "camgirl", "camslut", "camwhore", "carpet muncher", "carpetmuncher", "chocolate rosebuds", "cialis", "circlejerk", "cleveland steamer", "clit", "clitoris", "clover clamps", "clusterfuck", "cock", "cocks", "coprolagnia", "coprophilia", "cornhole", "coon", "coons", "creampie", "cum", "cumming", "cumshot", "cumshots", "cunnilingus", "cunt", "darkie", "date rape", "daterape", "deep throat", "deepthroat", "dendrophilia", "dick", "dildo", "dingleberry", "dingleberries", "dirty pillows", "dirty sanchez", "doggie style", "doggiestyle", "doggy style", "doggystyle", "dog style", "dolcett", "domination", "dominatrix", "dommes", "donkey punch", "double dong", "double penetration", "dp action", "dry hump", "dvda", "eat my ass", "ecchi", "ejaculation", "erotic", "erotism", "escort", "eunuch", "fag", "faggot", "fecal", "felch", "fellatio", "feltch", "female squirting", "femdom", "figging", "fingerbang", "fingering", "fisting", "foot fetish", "footjob", "frotting", "fuck", "fuck buttons", "fuckin", "fucking", "fucktards", "fudge packer", "fudgepacker", "futanari", "gangbang", "gang bang", "gay sex", "genitals", "giant cock", "girl on", "girl on top", "girls gone wild", "goatcx", "goatse", "god damn", "gokkun", "golden shower", "goodpoop", "goo girl", "goregasm", "grope", "group sex", "g-spot", "guro", "hand job", "handjob", "hard core", "hardcore", "hentai", "homoerotic", "honkey", "hooker", "horny", "hot carl", "hot chick", "how to kill", "how to murder", "huge fat", "humping", "incest", "intercourse", "jack off", "jail bait", "jailbait", "jelly donut", "jerk off", "jigaboo", "jiggaboo", "jiggerboo", "jizz", "juggs", "kike", "kinbaku", "kinkster", "kinky", "knobbing", "leather restraint", "leather straight jacket", "lemon party", "livesex", "lolita", "lovemaking", "make me come", "male squirting", "masturbate", "masturbating", "masturbation", "menage a trois", "milf", "missionary position", "mong", "motherfucker", "mound of venus", "mr hands", "muff diver", "muffdiving", "nambla", "nawashi", "negro", "neonazi", "nigga", "nigger", "nig nog", "nimphomania", "nipple", "nipples", "nsfw", "nsfw images", "nude", "nudity", "nutten", "nympho", "nymphomania", "octopussy", "omorashi", "one cup two girls", "one guy one jar", "orgasm", "orgy", "paedophile", "paki", "panties", "panty", "pedobear", "pedophile", "pegging", "penis", "phone sex", "piece of shit", "pikey", "pissing", "piss pig", "pisspig", "playboy", "pleasure chest", "pole smoker", "ponyplay", "poof", "poon", "poontang", "punany", "poop chute", "poopchute", "porn", "porno", "pornography", "prince albert piercing", "pthc", "pubes", "pussy", "queaf", "queef", "quim", "raghead", "raging boner", "rape", "raping", "rapist", "rectum", "reverse cowgirl", "rimjob", "rimming", "rosy palm", "rosy palm and her 5 sisters", "rusty trombone", "sadism", "santorum", "scat", "schlong", "scissoring", "semen", "sex", "sexcam", "sexo", "sexy", "sexual", "sexually", "sexuality", "shaved beaver", "shaved pussy", "shemale", "shibari", "shit", "shitblimp", "shitty", "shota", "shrimping", "skeet", "slanteye", "slut", "s&m", "smut", "snatch", "snowballing", "sodomize", "sodomy", "spastic", "spic", "splooge", "splooge moose", "spooge", "spread legs", "spunk", "strap on", "strapon", "strappado", "strip club", "style doggy", "suck", "sucks", "suicide girls", "sultry women", "swastika", "swinger", "tainted love", "taste my", "tea bagging", "threesome", "throating", "thumbzilla", "tied up", "tight white", "tit", "tits", "titties", "titty", "tongue in a", "topless", "tosser", "towelhead", "tranny", "tribadism", "tub girl", "tubgirl", "tushy", "twat", "twink", "twinkie", "two girls one cup", "undressing", "upskirt", "urethra play", "urophilia", "vagina", "venus mound", "viagra", "vibrator", "violet wand", "vorarephilia", "voyeur", "voyeurweb", "voyuer", "vulva", "wank", "wetback", "wet dream", "white power", "whore", "worldsex", "wrapping men", "wrinkled starfish", "xx", "xxx", "yaoi", "yellow showers", "yiffy", "zoophilia", "🖕" ]
--------------------------------------------------------------------------------
/TorrentScraper/data/Patreon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Patreon.png
--------------------------------------------------------------------------------
/TorrentScraper/data/Reddit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Reddit.png
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.ContentControl.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.ContextMenu.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
57 |
58 |
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.FlatButton.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.GridSplitter.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
13 |
14 |
21 |
22 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.GroupBox.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 | 4
10 |
11 |
84 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.Hyperlink.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
22 |
23 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.Label.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
42 |
43 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.Menu.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
31 |
32 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.Page.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.Shadows.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
15 |
16 |
24 |
25 |
32 |
33 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.Shared.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
10 |
11 |
12 |
16 |
17 |
18 |
19 |
22 |
23 |
24 |
25 |
29 |
33 |
34 |
35 |
36 |
39 |
42 |
43 |
44 |
45 |
50 |
51 |
52 |
53 |
56 |
57 |
58 |
59 |
64 |
69 |
70 |
71 |
72 |
75 |
78 |
79 |
80 |
81 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.StatusBar.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
31 |
32 |
50 |
51 |
91 |
92 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.TextBlock.xaml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
13 |
14 |
25 |
26 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Controls.Tooltip.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
67 |
--------------------------------------------------------------------------------
/TorrentScraper/data/Styles/Fonts.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 | Segoe MDL2 Assets,/MahApps.Metro;component/Assets/#Segoe MDL2 Assets
7 | Segoe UI, Lucida Sans Unicode, Verdana
8 | Segoe UI Light, Lucida Sans Unicode, Verdana
9 | Segoe UI Light, Lucida Sans Unicode, Verdana
10 | Segoe UI, Lucida Sans Unicode, Verdana
11 | Segoe UI, Lucida Sans Unicode, Verdana
12 | Segoe UI, Lucida Sans Unicode, Verdana
13 | Segoe UI, Lucida Sans Unicode, Verdana
14 |
15 | 40
16 | 29.333
17 | 16
18 | 14
19 | 12
20 | 14
21 | 26.67
22 | 10
23 | 10
24 | 16
25 | 12
26 | 14
27 | 14
28 | 12
29 | 26
30 | 15
31 | 12
32 | 20
33 | 14
34 | 14
35 | 16
36 | 14
37 |
38 | Upper
39 | Lower
40 | Normal
41 | Normal
42 | Normal
43 | Upper
44 | Upper
45 | Normal
46 | Upper
47 | Normal
48 | Upper
49 | Upper
50 | Upper
51 | Upper
52 | Normal
53 | Upper
54 |
55 |
--------------------------------------------------------------------------------
/TorrentScraper/data/WebScraping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/WebScraping.png
--------------------------------------------------------------------------------
/TorrentScraper/data/Youtube.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/data/Youtube.png
--------------------------------------------------------------------------------
/TorrentScraper/preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/TorrentScraper/preview.png
--------------------------------------------------------------------------------
/Utils/BannedWords.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Text.Json;
7 | using System.IO;
8 |
9 | namespace SimpleThingsProvider
10 | {
11 | public static class BannedWords
12 | {
13 | public static List nsfwWords = JsonSerializer.Deserialize>(File.ReadAllText("NSFWWords.json"));
14 | }
15 | }
--------------------------------------------------------------------------------
/Utils/Logger.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace SimpleThingsProvider
9 | {
10 | public class Logger
11 | {
12 | static string file = $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/SimpleThingsProvider_logs/{createLogFile()}";
13 | public static void Log(string logMessage, string whoami)
14 | {
15 | using (StreamWriter w = File.AppendText(file))
16 | {
17 | w.Write("\r\nLog Entry : ");
18 | w.WriteLine($"{DateTime.Now.ToLongTimeString()} {DateTime.Now.ToLongDateString()}");
19 | w.WriteLine($" :{whoami}");
20 | w.WriteLine($" :{logMessage}");
21 | w.WriteLine("-------------------------------");
22 | }
23 | }
24 | private static string createLogFile()
25 | {
26 | var file = $"{DateTime.Now.ToLongTimeString()} {DateTime.Now.ToLongDateString()}".Replace(":", "_") + ".log";
27 | file = file.Replace(" ", "_");
28 | System.Diagnostics.Debug.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
29 | if (!Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/SimpleThingsProvider_logs/"))
30 | {
31 | Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/SimpleThingsProvider_logs/");
32 | }
33 |
34 | return file;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Utils/Results.cs:
--------------------------------------------------------------------------------
1 | public class Result
2 | {
3 | public string System { get; set; }
4 | public string Title { get; set; }
5 | public string Seeds { get; set; }
6 | public string Leechs { get; set; }
7 | public string Time { get; set; }
8 | public string Size { get; set; }
9 | public string Region { get; set; }
10 | public string Version { get; set; }
11 | public string Languages { get; set; }
12 | public string OriginalSize { get; set; }
13 | public string RepackSize { get; set; }
14 | public string Name { get; set; }
15 | public string Link { get; set; }
16 | public string Infos { get; set; }
17 | public string Downloads { get; set; }
18 | }
--------------------------------------------------------------------------------
/Utils/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Il codice è stato generato da uno strumento.
4 | // Versione runtime:4.0.30319.42000
5 | //
6 | // Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
7 | // il codice viene rigenerato.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace Utils {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")]
16 | public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("127.0.0.1")]
29 | public string ProxyIP {
30 | get {
31 | return ((string)(this["ProxyIP"]));
32 | }
33 | set {
34 | this["ProxyIP"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("80")]
41 | public string ProxyPort {
42 | get {
43 | return ((string)(this["ProxyPort"]));
44 | }
45 | set {
46 | this["ProxyPort"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
53 | public bool ProxyEnabled {
54 | get {
55 | return ((bool)(this["ProxyEnabled"]));
56 | }
57 | set {
58 | this["ProxyEnabled"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("-1")]
65 | public int WebsiteSelected {
66 | get {
67 | return ((int)(this["WebsiteSelected"]));
68 | }
69 | set {
70 | this["WebsiteSelected"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("-1")]
77 | public int WebsiteSubSelected {
78 | get {
79 | return ((int)(this["WebsiteSubSelected"]));
80 | }
81 | set {
82 | this["WebsiteSubSelected"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.ApplicationScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("1.0.3.0")]
89 | public string ApplicationVersion {
90 | get {
91 | return ((string)(this["ApplicationVersion"]));
92 | }
93 | }
94 |
95 | [global::System.Configuration.UserScopedSettingAttribute()]
96 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
97 | [global::System.Configuration.DefaultSettingValueAttribute("Light")]
98 | public string MainTheme {
99 | get {
100 | return ((string)(this["MainTheme"]));
101 | }
102 | set {
103 | this["MainTheme"] = value;
104 | }
105 | }
106 |
107 | [global::System.Configuration.UserScopedSettingAttribute()]
108 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
109 | [global::System.Configuration.DefaultSettingValueAttribute("Blue")]
110 | public string SubTheme {
111 | get {
112 | return ((string)(this["SubTheme"]));
113 | }
114 | set {
115 | this["SubTheme"] = value;
116 | }
117 | }
118 |
119 | [global::System.Configuration.UserScopedSettingAttribute()]
120 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
121 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
122 | public bool SyncWithWindows {
123 | get {
124 | return ((bool)(this["SyncWithWindows"]));
125 | }
126 | set {
127 | this["SyncWithWindows"] = value;
128 | }
129 | }
130 |
131 | [global::System.Configuration.UserScopedSettingAttribute()]
132 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
133 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
134 | public bool DoNotShowAgain_RestartApplicationAfterThemeChange {
135 | get {
136 | return ((bool)(this["DoNotShowAgain_RestartApplicationAfterThemeChange"]));
137 | }
138 | set {
139 | this["DoNotShowAgain_RestartApplicationAfterThemeChange"] = value;
140 | }
141 | }
142 |
143 | [global::System.Configuration.UserScopedSettingAttribute()]
144 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
145 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
146 | public bool NSFWContent {
147 | get {
148 | return ((bool)(this["NSFWContent"]));
149 | }
150 | set {
151 | this["NSFWContent"] = value;
152 | }
153 | }
154 | }
155 | }
156 |
--------------------------------------------------------------------------------
/Utils/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 127.0.0.1
7 |
8 |
9 | 80
10 |
11 |
12 | False
13 |
14 |
15 | -1
16 |
17 |
18 | -1
19 |
20 |
21 | 1.0.3.0
22 |
23 |
24 | Light
25 |
26 |
27 | Blue
28 |
29 |
30 | False
31 |
32 |
33 | False
34 |
35 |
36 | False
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Utils/Utils.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | Settings.Designer.cs
20 | SettingsSingleFileGenerator
21 |
22 |
23 |
24 |
25 |
26 | True
27 | Settings.settings
28 | True
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/VideoDownloaderExtension/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/VideoDownloaderExtension/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 |
9 | namespace VideoDownloaderExtension
10 | {
11 | ///
12 | /// Interaction logic for App.xaml
13 | ///
14 | public partial class App : Application
15 | {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/VideoDownloaderExtension/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/VideoDownloaderExtension/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/VideoDownloaderExtension/PercentageConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows.Data;
4 |
5 | namespace VideoDownloaderExtension;
6 | public class PercentageConverter : IValueConverter
7 | {
8 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
9 | {
10 | if (value is double percentage)
11 | {
12 | return string.Format("{0:0}%", percentage);
13 | }
14 | return null;
15 | }
16 |
17 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
18 | {
19 | throw new NotImplementedException();
20 | }
21 | }
--------------------------------------------------------------------------------
/VideoDownloaderExtension/VideoDownloaderExtension.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | WinExe
5 | net6.0-windows
6 | enable
7 | true
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/VideoDownloaderExtension/VideoDownloaderExtension.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/View/AboutWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
27 |
37 |
47 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/View/AboutWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using ControlzEx.Theming;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 | using System.Windows.Controls;
9 | using System.Windows.Data;
10 | using System.Windows.Documents;
11 | using System.Windows.Input;
12 | using System.Windows.Media;
13 | using System.Windows.Media.Imaging;
14 | using System.Windows.Shapes;
15 | using Utils;
16 |
17 | namespace SimpleThingsProvider
18 | {
19 | ///
20 | /// Logica di interazione per AboutWindow.xaml
21 | ///
22 | public partial class AboutWindow
23 | {
24 | private byte[] egg = { 54, 56, 55, 52, 55, 52, 55, 48, 55, 51, 51, 97, 50, 102, 50, 102, 55, 57, 54, 102, 55, 53, 55, 52, 55, 53, 50, 101, 54, 50, 54, 53, 50, 102, 54, 102, 54, 53, 51, 49, 52, 97, 52, 102, 55, 97, 53, 51, 52, 99, 55, 53, 52, 97, 54, 51 };
25 | public AboutWindow()
26 | {
27 | InitializeComponent();
28 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
29 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
30 |
31 | ThemeManager.Current.SyncTheme();
32 | VersionLabel.Content = Settings.Default.ApplicationVersion;
33 | Logger.Log("About Window initialized", "About");
34 | this.SizeToContent = SizeToContent.WidthAndHeight;
35 | }
36 | public static string _2121(String h, Encoding e)
37 | {
38 | System.Diagnostics.Debug.WriteLine(h);
39 | int n = h.Length;
40 | byte[] b = new byte[n / 2];
41 | for (int i = 0; i < n; i += 2)
42 | {
43 | b[i / 2] = Convert.ToByte(h.Substring(i, 2), 16);
44 | }
45 | return e.GetString(b);
46 | }
47 | private void openDiscord(object sender, RoutedEventArgs e)
48 | {
49 | Logger.Log("Opening Discord Invite", "About");
50 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://discord.com/invite/WTrCtvyPke" };
51 | System.Diagnostics.Process.Start(process);
52 | Logger.Log("Opened Discord Invite", "About");
53 | }
54 | private void openPatreon(object sender, RoutedEventArgs e)
55 | {
56 | Logger.Log("Opening Patreon Page", "About");
57 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://www.patreon.com/Backend2121" };
58 | System.Diagnostics.Process.Start(process);
59 | Logger.Log("Opened Patreon Page", "About");
60 | }
61 | private void openReddit(object sender, RoutedEventArgs e)
62 | {
63 | Logger.Log("Opening Reddit Profile", "About");
64 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://www.reddit.com/user/Sbigioduro" };
65 | System.Diagnostics.Process.Start(process);
66 | Logger.Log("Opened Reddit Profile", "About");
67 | }
68 | private void openYoutube(object sender, RoutedEventArgs e)
69 | {
70 | Logger.Log("Opening Youtube Channel", "About");
71 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://www.youtube.com/channel/UCW2JQJs_R3O_I937yxicT9A" };
72 | System.Diagnostics.Process.Start(process);
73 | Logger.Log("Opened Youtube Channel", "About");
74 | }
75 | private void openEE(object sender, RoutedEventArgs e)
76 | {
77 | // That random textbox is not useless!
78 | Logger.Log("Testing the Super Secret Code Box", "About");
79 | if (SuperSecretCodeTextBox.Text == "HelloThereGeneralKenobi")
80 | {
81 | Logger.Log("* got in!", "About");
82 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = _2121(Encoding.ASCII.GetString(egg), Encoding.ASCII) };
83 | System.Diagnostics.Process.Start(process);
84 | }
85 | }
86 | }
87 | }
--------------------------------------------------------------------------------
/View/HelpWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/View/HelpWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using ControlzEx.Theming;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 | using System.Windows.Controls;
9 | using System.Windows.Data;
10 | using System.Windows.Documents;
11 | using System.Windows.Input;
12 | using System.Windows.Media;
13 | using System.Windows.Media.Imaging;
14 | using System.Windows.Shapes;
15 | using Utils;
16 |
17 | namespace SimpleThingsProvider
18 | {
19 | ///
20 | /// Logica di interazione per HelpWindow.xaml
21 | ///
22 | public partial class HelpWindow : Window
23 | {
24 | public HelpWindow()
25 | {
26 | InitializeComponent();
27 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
28 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
29 |
30 | ThemeManager.Current.SyncTheme();
31 | Topmost = true;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/View/LinksWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/View/LinksWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using ControlzEx.Theming;
2 | using System.Windows;
3 | using System.Windows.Controls;
4 | using Utils;
5 |
6 | namespace SimpleThingsProvider
7 | {
8 | ///
9 | /// Logica di interazione per LinksWindow.xaml
10 | ///
11 | public partial class LinksWindow : Window
12 | {
13 | public LinksWindow linkWindow { get { return this; } }
14 | public LinksWindow()
15 | {
16 | InitializeComponent();
17 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
18 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
19 | ThemeManager.Current.SyncTheme();
20 | // Hide all linkslists
21 | LinksList.Visibility = Visibility.Hidden;
22 | HexRomsLinksList.Visibility = Visibility.Hidden;
23 | Topmost = true;
24 | }
25 | private void SelectionChanged(object sender, RoutedEventArgs e)
26 | {
27 | string link = "";
28 | MainWindow mainWindow = (MainWindow)Application.Current.MainWindow;
29 | if (LinksList.Visibility == Visibility.Visible)
30 | {
31 | link = ((Result)LinksList.SelectedValue).Link;
32 | }
33 | else if (HexRomsLinksList.Visibility == Visibility.Visible)
34 | {
35 | link = ((Result)HexRomsLinksList.SelectedValue).Link;
36 | }
37 | mainWindow.OutputLabel.Content = link;
38 | if (link != "") { Close(); }
39 | }
40 | public ListView getLinksList()
41 | {
42 | return LinksList;
43 | }
44 | }
45 | }
--------------------------------------------------------------------------------
/View/SettingsWindow.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Light
27 | Dark
28 |
29 |
30 | Red
31 | Green
32 | Blue
33 | Purple
34 | Orange
35 | Lime
36 | Emerald
37 | Teal
38 | Cyan
39 | Cobalt
40 | Indigo
41 | Violet
42 | Pink
43 | Magenta
44 | Crimson
45 | Amber
46 | Yellow
47 | Brown
48 | Olive
49 | Steel
50 | Mauve
51 | Taupe
52 | Sienna
53 |
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/View/SettingsWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Shapes;
14 | using HtmlAgilityPack;
15 | using System.Net.Http;
16 | using ControlzEx.Theming;
17 | using Utils;
18 |
19 | namespace SimpleThingsProvider
20 | {
21 | ///
22 | /// Logica di interazione per ProxyWindow.xaml
23 | ///
24 | public partial class SettingsWindow
25 | {
26 | bool shown = false;
27 | public SettingsWindow()
28 | {
29 | InitializeComponent();
30 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
31 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
32 |
33 | ThemeManager.Current.SyncTheme();
34 | Logger.Log("Initialized Proxy Window", "Proxy");
35 | getSettings();
36 | }
37 | public void Alert(string messageBoxText, string caption)
38 | {
39 | Logger.Log(messageBoxText, "Alert");
40 | MessageBoxButton button = MessageBoxButton.OK;
41 | MessageBoxImage icon = MessageBoxImage.Information;
42 | MessageBox.Show(messageBoxText, caption, button, icon, MessageBoxResult.OK);
43 | }
44 |
45 | private void getSettings()
46 | {
47 | IPTextBox.Text = Settings.Default.ProxyIP;
48 | PortTextBox.Text = Settings.Default.ProxyPort;
49 | ProxyEnabledCheckBox.IsChecked = Settings.Default.ProxyEnabled;
50 | MainThemeComboBox.SelectedItem = Settings.Default.MainTheme;
51 | MainThemeComboBox.IsEnabled = true;
52 | SubThemeComboBox.SelectedItem = Settings.Default.SubTheme;
53 | SubThemeComboBox.IsEnabled = true;
54 | SyncWithWindowsCheckBox.IsChecked = Settings.Default.SyncWithWindows;
55 | NSFWContentCheckBox.IsChecked = Settings.Default.NSFWContent;
56 | if (Settings.Default.SyncWithWindows) { MainThemeComboBox.IsEnabled = false; SubThemeComboBox.IsEnabled = false; }
57 |
58 | Logger.Log($"Loaded previous settings for Proxy IP:{IPTextBox.Text} PORT:{PortTextBox.Text} ENABLED:{ProxyEnabledCheckBox.IsChecked}", "Proxy");
59 | }
60 |
61 | private void SaveButton_Click(object sender, RoutedEventArgs e)
62 | {
63 | Settings.Default.NSFWContent = NSFWContentCheckBox.IsChecked.Value;
64 | Logger.Log("Testing new proxy configuration", "Proxy");
65 | if (ProxyEnabledCheckBox.IsChecked.Value)
66 | {
67 | try
68 | {
69 | HtmlWeb web = new HtmlWeb();
70 | web.Load("https://google.com/", IPTextBox.Text, Int32.Parse(PortTextBox.Text), String.Empty, String.Empty);
71 | Logger.Log("New proxy configuration is valid", "Proxy");
72 | }
73 | catch (Exception) { MainWindow mainWindow = (MainWindow)Application.Current.MainWindow; mainWindow.Alert("Proxy unreachable", "Error"); return; }
74 | }
75 | Settings.Default.ProxyPort = PortTextBox.Text.Replace(" ", "");
76 | Settings.Default.ProxyIP = IPTextBox.Text.Replace(" ", "");
77 | Settings.Default.ProxyEnabled = ProxyEnabledCheckBox.IsChecked.Value;
78 | if (Settings.Default.MainTheme != MainThemeComboBox.Text)
79 | {
80 | Settings.Default.MainTheme = MainThemeComboBox.Text;
81 | if (!Settings.Default.DoNotShowAgain_RestartApplicationAfterThemeChange)
82 | {
83 | Alert("You need to restart the application to change the theme!", "Info");
84 | Settings.Default.DoNotShowAgain_RestartApplicationAfterThemeChange = true;
85 | }
86 | }
87 | if (Settings.Default.SubTheme != SubThemeComboBox.Text)
88 | {
89 | Settings.Default.SubTheme = SubThemeComboBox.Text;
90 | if (!Settings.Default.DoNotShowAgain_RestartApplicationAfterThemeChange) {
91 | Alert("You need to restart the application to change the theme!", "Info");
92 | Settings.Default.DoNotShowAgain_RestartApplicationAfterThemeChange = true;
93 | }
94 | }
95 | Settings.Default.SyncWithWindows = SyncWithWindowsCheckBox.IsChecked.Value;
96 | if (Settings.Default.SyncWithWindows) { ThemeManager.Current.ThemeSyncMode = ThemeSyncMode.SyncWithAppMode; }
97 | else { ThemeManager.Current.ChangeTheme(this, Settings.Default.MainTheme + "." + Settings.Default.SubTheme); }
98 | ThemeManager.Current.SyncTheme();
99 | Settings.Default.Save();
100 | Close();
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/View/View.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | $(DefaultXamlRuntime)
36 |
37 |
38 | $(DefaultXamlRuntime)
39 | Designer
40 |
41 |
42 | $(DefaultXamlRuntime)
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/View/WebsiteStatusWindow.xaml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/View/data/Discord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/Discord.png
--------------------------------------------------------------------------------
/View/data/DownloadIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/DownloadIcon.png
--------------------------------------------------------------------------------
/View/data/Github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/Github.png
--------------------------------------------------------------------------------
/View/data/Icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/Icon.ico
--------------------------------------------------------------------------------
/View/data/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/Icon.png
--------------------------------------------------------------------------------
/View/data/Loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/Loading.gif
--------------------------------------------------------------------------------
/View/data/Patreon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/Patreon.png
--------------------------------------------------------------------------------
/View/data/Reddit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/Reddit.png
--------------------------------------------------------------------------------
/View/data/WebScraping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/WebScraping.png
--------------------------------------------------------------------------------
/View/data/Youtube.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/1c4342714ff0729cb929beb13f1e1378b2680e1a/View/data/Youtube.png
--------------------------------------------------------------------------------
/VimmslairModule/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.1"
3 | }
--------------------------------------------------------------------------------
/VimmslairModule/VimmslairModule.cs:
--------------------------------------------------------------------------------
1 | using HtmlAgilityPack;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Diagnostics;
5 | using System.Net;
6 | using System.Net.Http.Headers;
7 | using System.Net.Http;
8 | using System.Windows;
9 | using System.Windows.Controls;
10 | using System.Windows.Data;
11 |
12 | namespace SimpleThingsProvider
13 | {
14 | class VimmslairModule : IModule
15 | {
16 | public string Name { get { return "VimmsLair"; } set { } }
17 | public string ModuleVersion { get { return "1.0.1"; } set { } }
18 | public HtmlDocument Doc { get; set; }
19 | private List _underlying;
20 | public bool needsSubSelector { get { return false; } }
21 | public LinksWindow linksWindow { get { return new LinksWindow(); } }
22 |
23 | public VimmslairModule()
24 | {
25 |
26 | }
27 | public void buildListView(GridView grid)
28 | {
29 | GridViewColumn title = new GridViewColumn();
30 | title.Header = "Title";
31 | title.DisplayMemberBinding = new Binding("Title");
32 |
33 | GridViewColumn system = new GridViewColumn();
34 | system.Header = "System";
35 | system.DisplayMemberBinding = new Binding("System");
36 |
37 | GridViewColumn region = new GridViewColumn();
38 | region.Header = "Region";
39 | region.DisplayMemberBinding = new Binding("Region");
40 |
41 | GridViewColumn version = new GridViewColumn();
42 | version.Header = "Version";
43 | version.DisplayMemberBinding = new Binding("Version");
44 |
45 | GridViewColumn languages = new GridViewColumn();
46 | languages.Header = "Languages";
47 | languages.DisplayMemberBinding = new Binding("Languages");
48 |
49 | grid.Columns.Add(title);
50 | grid.Columns.Add(system);
51 | grid.Columns.Add(region);
52 | grid.Columns.Add(version);
53 | grid.Columns.Add(languages);
54 | }
55 | public string getLink(int index)
56 | {
57 | return getLink(_underlying[index]);
58 | }
59 | public string getLink(string gameURL)
60 | {
61 | return gameURL;
62 | }
63 | public Tuple, List> getResults(HtmlDocument document)
64 | {
65 | _underlying = new List();
66 | List results = new();
67 | // /html/body/div[2]/div[2]/div/main/table/tbody/tr
68 | HtmlNodeCollection games = document.DocumentNode.SelectNodes("/html/body/div/div[2]/div[1]/main/table/tr");
69 | foreach (HtmlNode node in games)
70 | {
71 | Debug.WriteLine(node.InnerText);
72 | }
73 | Logger.Log($"Found {games.Count} results", "Websites (getResults - VimmsLair)");
74 | foreach (HtmlNode game in games)
75 | {
76 | HtmlNodeCollection tds = game.SelectNodes("td");
77 | try
78 | {
79 | var title = tds[1].InnerText;
80 | title = title.Replace(" ", " ");
81 | title = title.Replace("⚠", "");
82 | title = title.Replace("'", "'");
83 |
84 | results.Add(new Result() { System = tds[0].InnerText, Title = title, Region = tds[2].FirstChild.Attributes["title"].Value, Version = tds[3].InnerText, Languages = tds[4].InnerText });
85 | _underlying.Add("https://vimm.net" + tds[1].FirstChild.Attributes["href"].Value);
86 | Debug.WriteLine(tds[1].FirstChild.Attributes["href"].Value);
87 | }
88 | catch (NullReferenceException) { Logger.Log("No results found!", "Websites (getResults - VimmsLair)"); return Tuple.Create(new List(), new List()); }
89 | }
90 | if (!Settings.Default.NSFWContent)
91 | {
92 | foreach (Result res in results)
93 | {
94 | foreach (string s in BannedWords.nsfwWords)
95 | {
96 | if (res.Title.ToLower().Contains(s.ToLower()))
97 | {
98 | res.Title = "NSFW Content";
99 | _underlying[results.IndexOf(res)] = string.Empty;
100 | }
101 | }
102 | }
103 | }
104 | Logger.Log($"Found {_underlying.Count} entries", "Websites (getResults - VimmsLair)");
105 | return Tuple.Create(results, _underlying);
106 | }
107 | public HttpStatusCode search(string toSearch)
108 | {
109 | HttpStatusCode code;
110 | HtmlWeb web = new();
111 | web.UserAgent = "SimpleThingsProvider";
112 |
113 | Logger.Log("Searching for: " + toSearch + " in: " + Name, "Website (Search)");
114 | try
115 | {
116 | if (Settings.Default.ProxyEnabled) Doc = web.Load("https://vimm.net/vault/?p=list&q=" + toSearch.Replace(" ", "+"), Settings.Default.ProxyIP, Int32.Parse(Settings.Default.ProxyPort), string.Empty, string.Empty);
117 | else Doc = web.Load("https://vimm.net/vault/?p=list&q=" + toSearch.Replace(" ", "+"));
118 | }
119 | catch { Logger.Log($"Error code {HttpStatusCode.NotFound}", "Website (Search)"); return HttpStatusCode.NotFound; }
120 |
121 | code = web.StatusCode;
122 | return code;
123 | }
124 | public async void checkUpdate()
125 | {
126 | string repoURL = "https://raw.githubusercontent.com/Backend2121/SimpleThingsProvider/master/VimmslairModule/Info.json";
127 | HttpClient client = new HttpClient();
128 | HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, repoURL);
129 | requestMessage.Headers.UserAgent.Add(new ProductInfoHeaderValue("User-Agent", "SimpleThingsProvider"));
130 | HttpResponseMessage response = await client.SendAsync(requestMessage);
131 | string content = await response.Content.ReadAsStringAsync();
132 | int start = content.IndexOf(": \"");
133 | int end = content.IndexOf('"', start + 3);
134 | string version = content.Substring(start + 3, end - start - 3);
135 | if (!version.Equals(ModuleVersion))
136 | {
137 | MessageBoxResult r = AlertClass.Alert("An update for " + Name + " is available, open the GitHub page?", Name, MessageBoxButton.YesNo, MessageBoxImage.Information);
138 | if (r == MessageBoxResult.Yes)
139 | {
140 | var process = new System.Diagnostics.ProcessStartInfo() { UseShellExecute = true, FileName = "https://github.com/Backend2121/SimpleThingsProvider/releases/latest" };
141 | System.Diagnostics.Process.Start(process);
142 | Logger.Log($"Newer version for {Name}: {version} found!", Name + " Updater");
143 | }
144 | }
145 | }
146 | }
147 | }
148 |
--------------------------------------------------------------------------------
/VimmslairModule/VimmslairModule.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ZipertoModule/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/ZipertoModule/ZipertoModule.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/x1337Module/Info.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version" : "1.0.0"
3 | }
--------------------------------------------------------------------------------
/x1337Module/x1337Module.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net6.0-windows
5 | enable
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------