commit bc46d28fd5dbaa138b57b7e13b5a4e9dd2bba232 Author: Ali Ghaedrahmat Date: Thu May 7 20:34:29 2026 +0330 last year diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.github/workflows/gradle.yml b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.github/workflows/gradle.yml new file mode 100644 index 0000000..74bf27b --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.github/workflows/gradle.yml @@ -0,0 +1,44 @@ +name: Java CI with Gradle + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 + + - name: Make Gradle Wrapper executable + run: chmod +x ./gradlew + + - name: Build with Gradle Wrapper + run: ./gradlew build + + dependency-submission: + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Generate and submit dependency graph + uses: gradle/actions/dependency-submission@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0 diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/checksums/checksums.lock b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/checksums/checksums.lock new file mode 100644 index 0000000..0a7cbfb Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/checksums/checksums.lock differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/checksums/sha1-checksums.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/checksums/sha1-checksums.bin new file mode 100644 index 0000000..bd27f6a Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/checksums/sha1-checksums.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000..a9ae3eb Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/dependencies-accessors/gc.properties b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/dependencies-accessors/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/executionHistory/executionHistory.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/executionHistory/executionHistory.bin new file mode 100644 index 0000000..d10930b Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/executionHistory/executionHistory.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/executionHistory/executionHistory.lock b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/executionHistory/executionHistory.lock new file mode 100644 index 0000000..bfee0ea Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/executionHistory/executionHistory.lock differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileChanges/last-build.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileChanges/last-build.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/fileHashes.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/fileHashes.bin new file mode 100644 index 0000000..5ba85be Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/fileHashes.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/fileHashes.lock b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/fileHashes.lock new file mode 100644 index 0000000..043a103 Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/fileHashes.lock differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/resourceHashesCache.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..ba563c2 Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/fileHashes/resourceHashesCache.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/gc.properties b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/7.4/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..bda9823 Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/cache.properties b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..6d779e7 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Wed Feb 28 17:19:38 GMT+03:30 2024 +gradle.version=7.4 diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/outputFiles.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000..87351e2 Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/file-system.probe b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/file-system.probe new file mode 100644 index 0000000..e5284fe Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/file-system.probe differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/vcs-1/gc.properties b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/.name b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/.name new file mode 100644 index 0000000..38c14db --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/.name @@ -0,0 +1 @@ +HTML-Parser \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/compiler.xml b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/gradle.xml b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/gradle.xml new file mode 100644 index 0000000..611e7c8 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/gradle.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/jarRepositories.xml b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/jarRepositories.xml new file mode 100644 index 0000000..fdc392f --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/misc.xml b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/misc.xml new file mode 100644 index 0000000..08237f1 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/vcs.xml b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/workspace.xml b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/workspace.xml new file mode 100644 index 0000000..f9d2f50 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/.idea/workspace.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + { + "keyToString": { + "SHARE_PROJECT_CONFIGURATION_FILES": "true", + "WebServerToolWindowFactoryState": "false", + "git-widget-placeholder": "main", + "last_opened_file_path": "C:/Users/Asus/Desktop/placeHolder/Second-Assignment-CineScribe", + "nodejs_package_manager_path": "npm", + "settings.editor.selected.configurable": "preferences.pluginManager" + } +} + + + + + + + + + + + + + + + false + true + false + true + + + + + + + + + + + + + 1709128175583 + + + 1743341137706 + + + + + + + + + + + \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByName.txt b/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByName.txt new file mode 100644 index 0000000..8a194de --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByName.txt @@ -0,0 +1,100 @@ +1. Game: Advance Wars, Rating: 4.7, Price: 89 +2. Game: Baldur's Gate II: Shadows of Amn, Rating: 4.9, Price: 91 +3. Game: Blast Corps, Rating: 3.7, Price: 83 +4. Game: Bloodborne, Rating: 4.8, Price: 88 +5. Game: CS student simulator, Rating: 1.0, Price: 85 +6. Game: Call of Duty: Advanced Warfare - Ascendance, Rating: 4.0, Price: 67 +7. Game: Call of Duty: Advanced Warfare - Reckoning, Rating: 3.5, Price: 57 +8. Game: Call of Duty: Advanced Warfare - Supremacy, Rating: 4.4, Price: 64 +9. Game: Call of Duty: Black Ops II, Rating: 3.8, Price: 50 +10. Game: Call of Duty: Black Ops III, Rating: 3.7, Price: 50 +11. Game: Call of Duty: Infinite Warfare - Sabotage, Rating: 4.3, Price: 18 +12. Game: Call of Duty: Modern Warfare Remastered, Rating: 3.9, Price: 71 +13. Game: Company of Heroes, Rating: 4.7, Price: 87 +14. Game: Counter-Strike: Source, Rating: 4.4, Price: 89 +15. Game: Dead Space 2, Rating: 4.4, Price: 86 +16. Game: Devil May Cry 5, Rating: 4.7, Price: 91 +17. Game: Diablo, Rating: 4.8, Price: 87 +18. Game: Dishonored 2, Rating: 4.3, Price: 80 +19. Game: Divinity: Original Sin Enhanced Edition, Rating: 4.6, Price: 80 +20. Game: Divinity: Original Sin II, Rating: 4.7, Price: 88 +21. Game: Doom 3, Rating: 4.1, Price: 81 +22. Game: Eternal Darkness: Sanity's Requiem, Rating: 4.6, Price: 87 +23. Game: Far Cry 3, Rating: 4.9, Price: 80 +24. Game: Far Cry 4, Rating: 4.8, Price: 91 +25. Game: Final Fantasy XII, Rating: 4.7, Price: 76 +26. Game: Flipnote Studio, Rating: 4.2, Price: 75 +27. Game: Forza Motorsport, Rating: 4.6, Price: 76 +28. Game: Forza Motorsport 3, Rating: 4.7, Price: 81 +29. Game: Geometry Wars: Retro Evolved 2, Rating: 3.8, Price: 83 +30. Game: God of War II, Rating: 4.9, Price: 90 +31. Game: God of War III, Rating: 4.9, Price: 88 +32. Game: Gran Turismo 2, Rating: 4.6, Price: 90 +33. Game: Gran Turismo 3: A-Spec, Rating: 4.5, Price: 84 +34. Game: Grand Theft Auto V, Rating: 3.6, Price: 36 +35. Game: Guacamelee! Gold Edition, Rating: 4.3, Price: 75 +36. Game: Half-Life 2: Episode Two, Rating: 4.2, Price: 92 +37. Game: Half-Life: Alyx, Rating: 4.8, Price: 92 +38. Game: Halo: Combat Evolved, Rating: 4.6, Price: 87 +39. Game: Hollow Knight, Rating: 4.3, Price: 90 +40. Game: Injustice 2: Legendary Edition, Rating: 4.0, Price: 77 +41. Game: JSRF: Jet Set Radio Future, Rating: 4.1, Price: 83 +42. Game: Mario Kart 8 DLC Pack 2, Rating: 3.9, Price: 89 +43. Game: Metal Gear Solid 2: Sons of Liberty, Rating: 4.7, Price: 88 +44. Game: Metal Gear Solid 3: Subsistence, Rating: 4.7, Price: 91 +45. Game: Metal Gear Solid 4: Guns of the Patriots, Rating: 4.5, Price: 88 +46. Game: Metroid Prime, Rating: 4.5, Price: 89 +47. Game: Minecraft: Xbox One Edition, Rating: 4.4, Price: 73 +48. Game: NFL 2K2, Rating: 3.6, Price: 71 +49. Game: NHL 2002, Rating: 4.0, Price: 83 +50. Game: Paper Mario, Rating: 4.5, Price: 90 +51. Game: Persona 5 Royal, Rating: 4.7, Price: 84 +52. Game: Pikmin 2, Rating: 4.0, Price: 90 +53. Game: Portal: Still Alive, Rating: 3.9, Price: 86 +54. Game: Project Gotham Racing 3, Rating: 4.2, Price: 79 +55. Game: Red Faction, Rating: 3.9, Price: 79 +56. Game: Resident Evil (2002), Rating: 4.2, Price: 92 +57. Game: Resident Evil 4: Wii Edition, Rating: 3.9, Price: 89 +58. Game: Resident Evil Code: Veronica, Rating: 4.6, Price: 85 +59. Game: Rome: Total War, Rating: 4.9, Price: 90 +60. Game: Shin Megami Tensei: Persona 4, Rating: 4.1, Price: 77 +61. Game: Sid Meier's Civilization III, Rating: 4.0, Price: 84 +62. Game: Sid Meier's Civilization IV, Rating: 4.3, Price: 82 +63. Game: Sid Meier's Civilization V, Rating: 4.3, Price: 80 +64. Game: Sid Meier's Gettysburg!, Rating: 4.4, Price: 74 +65. Game: Silent Hunter III, Rating: 3.9, Price: 78 +66. Game: Slay the Spire, Rating: 3.5, Price: 69 +67. Game: Super Mario 3D Land, Rating: 4.1, Price: 84 +68. Game: Super Mario 3D World, Rating: 4.7, Price: 89 +69. Game: Super Mario Galaxy, Rating: 4.6, Price: 91 +70. Game: Super Mario Odyssey, Rating: 4.9, Price: 89 +71. Game: Super Mario Sunshine, Rating: 4.5, Price: 84 +72. Game: Super Mario World: Super Mario Advance 2, Rating: 4.6, Price: 90 +73. Game: Super Smash Bros. Melee, Rating: 4.8, Price: 91 +74. Game: System Shock 2, Rating: 4.6, Price: 91 +75. Game: Team Fortress 2, Rating: 4.8, Price: 90 +76. Game: Tekken 3, Rating: 4.4, Price: 91 +77. Game: Tekken: Dark Resurrection, Rating: 3.8, Price: 86 +78. Game: The Chronicles of Riddick: Escape From Butcher Bay - Developer's Cut, Rating: 3.8, Price: 86 +79. Game: The House in Fata Morgana, Rating: 4.3, Price: 83 +80. Game: The Last of Us, Rating: 4.9, Price: 92 +81. Game: The Last of Us Part II, Rating: 4.9, Price: 57 +82. Game: The Legend of Zelda Collector's Edition, Rating: 4.7, Price: 89 +83. Game: The Legend of Zelda: A Link to the Past, Rating: 4.8, Price: 90 +84. Game: The Legend of Zelda: Majora's Mask, Rating: 4.6, Price: 91 +85. Game: The Legend of Zelda: The Wind Waker, Rating: 4.8, Price: 90 +86. Game: The Stanley Parable, Rating: 4.0, Price: 80 +87. Game: The World Ends with You, Rating: 4.5, Price: 87 +88. Game: Titanfall, Rating: 4.2, Price: 61 +89. Game: Tom Clancy's Rainbow Six Siege, Rating: 4.6, Price: 88 +90. Game: Tony Hawk's Pro Skater, Rating: 4.8, Price: 88 +91. Game: Uncharted 2: Among Thieves, Rating: 4.7, Price: 88 +92. Game: Uncharted 3: Drake's Deception, Rating: 4.7, Price: 84 +93. Game: Unreal Tournament 2004, Rating: 4.6, Price: 88 +94. Game: Vagrant Story, Rating: 4.5, Price: 90 +95. Game: Virtua Fighter 4, Rating: 4.4, Price: 81 +96. Game: WWF SmackDown! 2: Know Your Role, Rating: 4.2, Price: 84 +97. Game: Warcraft III: Reign of Chaos, Rating: 4.9, Price: 92 +98. Game: Watch Dogs 2, Rating: 4.1, Price: 81 +99. Game: Wipeout XL, Rating: 4.3, Price: 86 +100. Game: World of Warcraft, Rating: 4.8, Price: 74 \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByPrice b/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByPrice new file mode 100644 index 0000000..bb227a8 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByPrice @@ -0,0 +1,100 @@ +1. Game: The Last of Us, Rating: 4.9, Price: 92 +2. Game: Half-Life: Alyx, Rating: 4.8, Price: 92 +3. Game: Warcraft III: Reign of Chaos, Rating: 4.9, Price: 92 +4. Game: Half-Life 2: Episode Two, Rating: 4.2, Price: 92 +5. Game: Resident Evil (2002), Rating: 4.2, Price: 92 +6. Game: Far Cry 4, Rating: 4.8, Price: 91 +7. Game: Super Mario Galaxy, Rating: 4.6, Price: 91 +8. Game: Devil May Cry 5, Rating: 4.7, Price: 91 +9. Game: Tekken 3, Rating: 4.4, Price: 91 +10. Game: Baldur's Gate II: Shadows of Amn, Rating: 4.9, Price: 91 +11. Game: The Legend of Zelda: Majora's Mask, Rating: 4.6, Price: 91 +12. Game: Metal Gear Solid 3: Subsistence, Rating: 4.7, Price: 91 +13. Game: System Shock 2, Rating: 4.6, Price: 91 +14. Game: Super Smash Bros. Melee, Rating: 4.8, Price: 91 +15. Game: The Legend of Zelda: The Wind Waker, Rating: 4.8, Price: 90 +16. Game: The Legend of Zelda: A Link to the Past, Rating: 4.8, Price: 90 +17. Game: Gran Turismo 2, Rating: 4.6, Price: 90 +18. Game: God of War II, Rating: 4.9, Price: 90 +19. Game: Paper Mario, Rating: 4.5, Price: 90 +20. Game: Vagrant Story, Rating: 4.5, Price: 90 +21. Game: Team Fortress 2, Rating: 4.8, Price: 90 +22. Game: Super Mario World: Super Mario Advance 2, Rating: 4.6, Price: 90 +23. Game: Rome: Total War, Rating: 4.9, Price: 90 +24. Game: Hollow Knight, Rating: 4.3, Price: 90 +25. Game: Pikmin 2, Rating: 4.0, Price: 90 +26. Game: Metroid Prime, Rating: 4.5, Price: 89 +27. Game: Super Mario Odyssey, Rating: 4.9, Price: 89 +28. Game: The Legend of Zelda Collector's Edition, Rating: 4.7, Price: 89 +29. Game: Super Mario 3D World, Rating: 4.7, Price: 89 +30. Game: Advance Wars, Rating: 4.7, Price: 89 +31. Game: Mario Kart 8 DLC Pack 2, Rating: 3.9, Price: 89 +32. Game: Resident Evil 4: Wii Edition, Rating: 3.9, Price: 89 +33. Game: Counter-Strike: Source, Rating: 4.4, Price: 89 +34. Game: Uncharted 2: Among Thieves, Rating: 4.7, Price: 88 +35. Game: Metal Gear Solid 2: Sons of Liberty, Rating: 4.7, Price: 88 +36. Game: Metal Gear Solid 4: Guns of the Patriots, Rating: 4.5, Price: 88 +37. Game: Tom Clancy's Rainbow Six Siege, Rating: 4.6, Price: 88 +38. Game: Divinity: Original Sin II, Rating: 4.7, Price: 88 +39. Game: Unreal Tournament 2004, Rating: 4.6, Price: 88 +40. Game: God of War III, Rating: 4.9, Price: 88 +41. Game: Bloodborne, Rating: 4.8, Price: 88 +42. Game: Tony Hawk's Pro Skater, Rating: 4.8, Price: 88 +43. Game: Halo: Combat Evolved, Rating: 4.6, Price: 87 +44. Game: Diablo, Rating: 4.8, Price: 87 +45. Game: Company of Heroes, Rating: 4.7, Price: 87 +46. Game: Eternal Darkness: Sanity's Requiem, Rating: 4.6, Price: 87 +47. Game: The World Ends with You, Rating: 4.5, Price: 87 +48. Game: Wipeout XL, Rating: 4.3, Price: 86 +49. Game: Portal: Still Alive, Rating: 3.9, Price: 86 +50. Game: The Chronicles of Riddick: Escape From Butcher Bay - Developer's Cut, Rating: 3.8, Price: 86 +51. Game: Dead Space 2, Rating: 4.4, Price: 86 +52. Game: Tekken: Dark Resurrection, Rating: 3.8, Price: 86 +53. Game: Resident Evil Code: Veronica, Rating: 4.6, Price: 85 +54. Game: CS student simulator, Rating: 1.0, Price: 85 +55. Game: Gran Turismo 3: A-Spec, Rating: 4.5, Price: 84 +56. Game: Persona 5 Royal, Rating: 4.7, Price: 84 +57. Game: Uncharted 3: Drake's Deception, Rating: 4.7, Price: 84 +58. Game: Super Mario Sunshine, Rating: 4.5, Price: 84 +59. Game: Sid Meier's Civilization III, Rating: 4.0, Price: 84 +60. Game: WWF SmackDown! 2: Know Your Role, Rating: 4.2, Price: 84 +61. Game: Super Mario 3D Land, Rating: 4.1, Price: 84 +62. Game: The House in Fata Morgana, Rating: 4.3, Price: 83 +63. Game: NHL 2002, Rating: 4.0, Price: 83 +64. Game: Blast Corps, Rating: 3.7, Price: 83 +65. Game: Geometry Wars: Retro Evolved 2, Rating: 3.8, Price: 83 +66. Game: JSRF: Jet Set Radio Future, Rating: 4.1, Price: 83 +67. Game: Sid Meier's Civilization IV, Rating: 4.3, Price: 82 +68. Game: Virtua Fighter 4, Rating: 4.4, Price: 81 +69. Game: Forza Motorsport 3, Rating: 4.7, Price: 81 +70. Game: Watch Dogs 2, Rating: 4.1, Price: 81 +71. Game: Doom 3, Rating: 4.1, Price: 81 +72. Game: Far Cry 3, Rating: 4.9, Price: 80 +73. Game: Sid Meier's Civilization V, Rating: 4.3, Price: 80 +74. Game: Dishonored 2, Rating: 4.3, Price: 80 +75. Game: Divinity: Original Sin Enhanced Edition, Rating: 4.6, Price: 80 +76. Game: The Stanley Parable, Rating: 4.0, Price: 80 +77. Game: Project Gotham Racing 3, Rating: 4.2, Price: 79 +78. Game: Red Faction, Rating: 3.9, Price: 79 +79. Game: Silent Hunter III, Rating: 3.9, Price: 78 +80. Game: Shin Megami Tensei: Persona 4, Rating: 4.1, Price: 77 +81. Game: Injustice 2: Legendary Edition, Rating: 4.0, Price: 77 +82. Game: Forza Motorsport, Rating: 4.6, Price: 76 +83. Game: Final Fantasy XII, Rating: 4.7, Price: 76 +84. Game: Flipnote Studio, Rating: 4.2, Price: 75 +85. Game: Guacamelee! Gold Edition, Rating: 4.3, Price: 75 +86. Game: World of Warcraft, Rating: 4.8, Price: 74 +87. Game: Sid Meier's Gettysburg!, Rating: 4.4, Price: 74 +88. Game: Minecraft: Xbox One Edition, Rating: 4.4, Price: 73 +89. Game: NFL 2K2, Rating: 3.6, Price: 71 +90. Game: Call of Duty: Modern Warfare Remastered, Rating: 3.9, Price: 71 +91. Game: Slay the Spire, Rating: 3.5, Price: 69 +92. Game: Call of Duty: Advanced Warfare - Ascendance, Rating: 4.0, Price: 67 +93. Game: Call of Duty: Advanced Warfare - Supremacy, Rating: 4.4, Price: 64 +94. Game: Titanfall, Rating: 4.2, Price: 61 +95. Game: The Last of Us Part II, Rating: 4.9, Price: 57 +96. Game: Call of Duty: Advanced Warfare - Reckoning, Rating: 3.5, Price: 57 +97. Game: Call of Duty: Black Ops III, Rating: 3.7, Price: 50 +98. Game: Call of Duty: Black Ops II, Rating: 3.8, Price: 50 +99. Game: Grand Theft Auto V, Rating: 3.6, Price: 36 +100. Game: Call of Duty: Infinite Warfare - Sabotage, Rating: 4.3, Price: 18 \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByRating b/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByRating new file mode 100644 index 0000000..c09908f --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/Help/SortedByRating @@ -0,0 +1,100 @@ +1. Game: Super Mario Odyssey, Rating: 4.9, Price: 89 +2. Game: Baldur's Gate II: Shadows of Amn, Rating: 4.9, Price: 91 +3. Game: The Last of Us, Rating: 4.9, Price: 92 +4. Game: Far Cry 3, Rating: 4.9, Price: 80 +5. Game: The Last of Us Part II, Rating: 4.9, Price: 57 +6. Game: God of War II, Rating: 4.9, Price: 90 +7. Game: God of War III, Rating: 4.9, Price: 88 +8. Game: Warcraft III: Reign of Chaos, Rating: 4.9, Price: 92 +9. Game: Rome: Total War, Rating: 4.9, Price: 90 +10. Game: Far Cry 4, Rating: 4.8, Price: 91 +11. Game: The Legend of Zelda: The Wind Waker, Rating: 4.8, Price: 90 +12. Game: The Legend of Zelda: A Link to the Past, Rating: 4.8, Price: 90 +13. Game: Diablo, Rating: 4.8, Price: 87 +14. Game: Half-Life: Alyx, Rating: 4.8, Price: 92 +15. Game: World of Warcraft, Rating: 4.8, Price: 74 +16. Game: Bloodborne, Rating: 4.8, Price: 88 +17. Game: Team Fortress 2, Rating: 4.8, Price: 90 +18. Game: Super Smash Bros. Melee, Rating: 4.8, Price: 91 +19. Game: Tony Hawk's Pro Skater, Rating: 4.8, Price: 88 +20. Game: Devil May Cry 5, Rating: 4.7, Price: 91 +21. Game: Uncharted 2: Among Thieves, Rating: 4.7, Price: 88 +22. Game: Metal Gear Solid 2: Sons of Liberty, Rating: 4.7, Price: 88 +23. Game: The Legend of Zelda Collector's Edition, Rating: 4.7, Price: 89 +24. Game: Persona 5 Royal, Rating: 4.7, Price: 84 +25. Game: Metal Gear Solid 3: Subsistence, Rating: 4.7, Price: 91 +26. Game: Company of Heroes, Rating: 4.7, Price: 87 +27. Game: Divinity: Original Sin II, Rating: 4.7, Price: 88 +28. Game: Super Mario 3D World, Rating: 4.7, Price: 89 +29. Game: Uncharted 3: Drake's Deception, Rating: 4.7, Price: 84 +30. Game: Advance Wars, Rating: 4.7, Price: 89 +31. Game: Final Fantasy XII, Rating: 4.7, Price: 76 +32. Game: Forza Motorsport 3, Rating: 4.7, Price: 81 +33. Game: Super Mario Galaxy, Rating: 4.6, Price: 91 +34. Game: Halo: Combat Evolved, Rating: 4.6, Price: 87 +35. Game: The Legend of Zelda: Majora's Mask, Rating: 4.6, Price: 91 +36. Game: Resident Evil Code: Veronica, Rating: 4.6, Price: 85 +37. Game: Tom Clancy's Rainbow Six Siege, Rating: 4.6, Price: 88 +38. Game: Gran Turismo 2, Rating: 4.6, Price: 90 +39. Game: Unreal Tournament 2004, Rating: 4.6, Price: 88 +40. Game: Eternal Darkness: Sanity's Requiem, Rating: 4.6, Price: 87 +41. Game: Forza Motorsport, Rating: 4.6, Price: 76 +42. Game: System Shock 2, Rating: 4.6, Price: 91 +43. Game: Super Mario World: Super Mario Advance 2, Rating: 4.6, Price: 90 +44. Game: Divinity: Original Sin Enhanced Edition, Rating: 4.6, Price: 80 +45. Game: Metroid Prime, Rating: 4.5, Price: 89 +46. Game: Gran Turismo 3: A-Spec, Rating: 4.5, Price: 84 +47. Game: Metal Gear Solid 4: Guns of the Patriots, Rating: 4.5, Price: 88 +48. Game: Paper Mario, Rating: 4.5, Price: 90 +49. Game: Vagrant Story, Rating: 4.5, Price: 90 +50. Game: Super Mario Sunshine, Rating: 4.5, Price: 84 +51. Game: The World Ends with You, Rating: 4.5, Price: 87 +52. Game: Tekken 3, Rating: 4.4, Price: 91 +53. Game: Virtua Fighter 4, Rating: 4.4, Price: 81 +54. Game: Sid Meier's Gettysburg!, Rating: 4.4, Price: 74 +55. Game: Dead Space 2, Rating: 4.4, Price: 86 +56. Game: Minecraft: Xbox One Edition, Rating: 4.4, Price: 73 +57. Game: Call of Duty: Advanced Warfare - Supremacy, Rating: 4.4, Price: 64 +58. Game: Counter-Strike: Source, Rating: 4.4, Price: 89 +59. Game: The House in Fata Morgana, Rating: 4.3, Price: 83 +60. Game: Sid Meier's Civilization IV, Rating: 4.3, Price: 82 +61. Game: Wipeout XL, Rating: 4.3, Price: 86 +62. Game: Hollow Knight, Rating: 4.3, Price: 90 +63. Game: Sid Meier's Civilization V, Rating: 4.3, Price: 80 +64. Game: Dishonored 2, Rating: 4.3, Price: 80 +65. Game: Call of Duty: Infinite Warfare - Sabotage, Rating: 4.3, Price: 18 +66. Game: Guacamelee! Gold Edition, Rating: 4.3, Price: 75 +67. Game: Flipnote Studio, Rating: 4.2, Price: 75 +68. Game: Half-Life 2: Episode Two, Rating: 4.2, Price: 92 +69. Game: WWF SmackDown! 2: Know Your Role, Rating: 4.2, Price: 84 +70. Game: Project Gotham Racing 3, Rating: 4.2, Price: 79 +71. Game: Titanfall, Rating: 4.2, Price: 61 +72. Game: Resident Evil (2002), Rating: 4.2, Price: 92 +73. Game: Shin Megami Tensei: Persona 4, Rating: 4.1, Price: 77 +74. Game: Super Mario 3D Land, Rating: 4.1, Price: 84 +75. Game: JSRF: Jet Set Radio Future, Rating: 4.1, Price: 83 +76. Game: Watch Dogs 2, Rating: 4.1, Price: 81 +77. Game: Doom 3, Rating: 4.1, Price: 81 +78. Game: NHL 2002, Rating: 4.0, Price: 83 +79. Game: Sid Meier's Civilization III, Rating: 4.0, Price: 84 +80. Game: Pikmin 2, Rating: 4.0, Price: 90 +81. Game: Injustice 2: Legendary Edition, Rating: 4.0, Price: 77 +82. Game: Call of Duty: Advanced Warfare - Ascendance, Rating: 4.0, Price: 67 +83. Game: The Stanley Parable, Rating: 4.0, Price: 80 +84. Game: Portal: Still Alive, Rating: 3.9, Price: 86 +85. Game: Silent Hunter III, Rating: 3.9, Price: 78 +86. Game: Mario Kart 8 DLC Pack 2, Rating: 3.9, Price: 89 +87. Game: Red Faction, Rating: 3.9, Price: 79 +88. Game: Call of Duty: Modern Warfare Remastered, Rating: 3.9, Price: 71 +89. Game: Resident Evil 4: Wii Edition, Rating: 3.9, Price: 89 +90. Game: The Chronicles of Riddick: Escape From Butcher Bay - Developer's Cut, Rating: 3.8, Price: 86 +91. Game: Geometry Wars: Retro Evolved 2, Rating: 3.8, Price: 83 +92. Game: Call of Duty: Black Ops II, Rating: 3.8, Price: 50 +93. Game: Tekken: Dark Resurrection, Rating: 3.8, Price: 86 +94. Game: Blast Corps, Rating: 3.7, Price: 83 +95. Game: Call of Duty: Black Ops III, Rating: 3.7, Price: 50 +96. Game: NFL 2K2, Rating: 3.6, Price: 71 +97. Game: Grand Theft Auto V, Rating: 3.6, Price: 36 +98. Game: Call of Duty: Advanced Warfare - Reckoning, Rating: 3.5, Price: 57 +99. Game: Slay the Spire, Rating: 3.5, Price: 69 +100. Game: CS student simulator, Rating: 1.0, Price: 85 \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/README.md b/Last-Year/Fourth-Assignment-Steam-Scraper-main/README.md new file mode 100644 index 0000000..bd0c74f --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/README.md @@ -0,0 +1,140 @@ +# Fourth Assignment: Steam Scraper 🎮 + +## Introduction + +This project delves into the practical application of HTML parsing techniques using Java and the JSoup library. The objective is to extract and manipulate data from a structured HTML document containing information about various video-games. Key tasks include parsing the document, creating Java objects to represent the data, sorting the information based on different criteria, and presenting the results effectively. + +## Why Learn Web Scraping? 📊 + +Mastering web scraping empowers individuals and businesses to glean valuable insights, automate tasks, and make informed decisions based on real-time data. + +- In e-commerce, web scraping aids in monitoring competitors' prices, tracking product availability, and gathering customer reviews. In finance, it facilitates trend analysis, investment decisions, and risk assessment. + +- Research, academia, journalism, and media professionals leverage web scraping for data collection, trend tracking, sentiment analysis, and investigative reporting. + +By mastering web scraping, professionals can extract data efficiently, outperform competitors, and drive data-informed success in diverse industries. + +## Prerequisites ✅ + +Before diving into this project, make sure you have the following tools and knowledge: + +### Tools Needed: +- **Java 17 or higher** : Download the latest version from [Oracle's Java website](https://www.oracle.com/java/technologies/downloads/). +- **Git** : Install Git, a powerful version control system, from [Git's official website](https://git-scm.com/downloads). +- **Gradle** : Utilize Gradle (recommended version 7.6 or newer) as the build tool. You can find installation instructions [here](https://gradle.org/install/). + +### Knowledge Required: +In addition to the tools mentioned above, familiarity with the following topics is crucial for successful project completion: +- **Jsoup** : Understanding how to access, parse, and manipulate HTML files using Jsoup. +- **HTML** : Knowledge of various HTML tags, their purposes, and how to identify and manipulate them using Jsoup. +- **CSS** : Understanding how to style HTML elements, work with CSS classes, and utilize selectors efficiently. + +By having a solid grasp of these tools and concepts, you'll be well-equipped to excel in this project. 🚀 + +## Objectives 🎯 + +The primary objectives of this assignment are: + +- Parsing an HTML file with video-game data. +- Extracting relevant information such as price, rating, and other game attributes. +- Implementing Java classes to represent games. +- Utilizing JSoup for HTML parsing. +- Applying sorting algorithms for organizing data by price, rating, and game name. +- Displaying the sorted game information effectively. + +## Tasks 📝 + +1. **Set Up the Project:** + + - Start by cloning the repository to your local machine. + - Open the project in an IDE such as IntelliJ. + +2. **Integrate JSoup Dependency:** + + - Include the JSoup dependency in your `build.gradle` file. + + ```gradle + dependencies { + + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' + + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' + + implementation 'org.jsoup:jsoup:1.14.3' + + } + ``` + + +3. **Define the Country Class:** + + - Create a `Game` class in Java to encapsulate country-specific data. + +5. **HTML Parsing using JSoup:** + + Utilize JSoup to parse the HTML file located in the Resources folder at this path: `Fourth-Assignment-Steam-Scraper\src\Resources` and extract relevant information such as: + + - `` = for game names + - `` = for game ratings + - `` = for game prices + + **Note: The span tags are nested within other tags and div closures.** + +6. **Implement Sorting Functionality:** + + - Develop sorting algorithms for various criteria like rating, price, and name. + +8. **Visualize Results:** + + - Clearly present the sorted game data. + +## Bonus Objectives (For Advanced Users) 🌟 + +To enhance your project further: + +- Expand data extraction to additional websites, such as [Oscar Winning Films](https://www.scrapethissite.com/pages/ajax-javascript/). +- Develop a user interface for interactive querying and sorting. +- Utilize SQL or NoSQL databases to store the scraped data. + +## Notes 📝 + +Here are some important points to keep in mind: + +- there is a `Help` folder located at the root directory of the project which contains the sorted games each by different priorities. It is there just so you can see what your output should look like in the end. +- The unit tests are provided to assist you in understanding the project requirements. Your final grade is not solely dependent on their results; they are meant to aid your learning process. Remember to enable GitHub Actions for the test workflow to run on GitHub. +- Feel free to leverage ChatGPT for learning web scraping and resolving any challenges that you may not find solutions to on the internet. Utilize its capabilities to enhance your understanding and overcome obstacles effectively. +**but It is strictly prohibited to use ChatGPT or any other AI generative model for completing any section of this assignment. Failure to comply will result in a score of 0 without any warnings.** + +## Evaluation 🧐 + +Your success will be judged based on: + +- Functionality of the code in parsing HTML, creating Java objects, and sorting data. +- Readability and maintainability of the code. +- Efficiency of sorting algorithms. +- Clarity of the output format. + +## Submission 📁 + +To share your work: + +1. Add your mentor as a contributor to the project. +2. Create a `develop` branch for implementing features. +3. Use Git for regular code commits. +4. Push your code to the remote repository. +5. Submit a pull request to merge the `develop` branch with `main`. + +The deadline for submitting your code is **Wednesday, April 23** (3th of Ordibehesht). + +If you have any further questions or need clarification, do not hesitate to reach out to your mentor. Good luck with your project! 🌟 + + +## Resources 📚 + +- [Jsoup - Official website](https://jsoup.org/cookbook/) +- [Jsoup - Javapoint](https://www.javatpoint.com/jsoup-tutorial) +- [Jsoup - Baeldung](https://www.baeldung.com/java-with-jsoup) +- [HTML - W3](https://www.w3schools.com/html/) +- [CSS - W3](https://www.w3schools.com/css/default.asp) +- [HTML & CSS - SuperSimpleDev](https://youtu.be/G3e-cpL7ofc?si=n7VZ6-SzUMqPgYH4) +- [HTML & CSS - BroCode](https://youtu.be/HGTJBPNC-Gw?si=UIfbcK-raImMT129) diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build.gradle b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build.gradle new file mode 100644 index 0000000..82ff37b --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build.gradle @@ -0,0 +1,20 @@ +plugins { + id 'java' +} + +group 'org.example' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' + implementation 'org.jsoup:jsoup:1.14.3' +} + +test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/classes/ParserTest.html b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/classes/ParserTest.html new file mode 100644 index 0000000..6888813 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/classes/ParserTest.html @@ -0,0 +1,106 @@ + + + + + +Test results - Class ParserTest + + + + + +
+

Class ParserTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
3
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.035s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
testSortByArea()0.028spassed
testSortByName()0.003spassed
testSortByPopulation()0.004spassed
+
+
+ +
+ + diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/css/base-style.css b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/css/base-style.css new file mode 100644 index 0000000..4afa73e --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/css/style.css b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/css/style.css new file mode 100644 index 0000000..3dc4913 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/index.html b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/index.html new file mode 100644 index 0000000..d2f1ae9 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/index.html @@ -0,0 +1,133 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
3
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.035s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+default-package +3000.035s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+ParserTest +3000.035s100%
+
+
+ +
+ + diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/js/report.js b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/js/report.js new file mode 100644 index 0000000..83bab4a --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/packages/default-package.html b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/packages/default-package.html new file mode 100644 index 0000000..2ffe0cb --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/reports/tests/test/packages/default-package.html @@ -0,0 +1,103 @@ + + + + + +Test results - Default package + + + + + +
+

Default package

+ +
+ + + + + +
+
+ + + + + + + +
+
+
3
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.035s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+ParserTest +3000.035s100%
+
+
+ +
+ + diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/TEST-ParserTest.xml b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/TEST-ParserTest.xml new file mode 100644 index 0000000..0dd5d0b --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/TEST-ParserTest.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/binary/output.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/binary/output.bin new file mode 100644 index 0000000..e69de29 diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/binary/output.bin.idx b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/binary/output.bin.idx new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/binary/output.bin.idx differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/binary/results.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/binary/results.bin new file mode 100644 index 0000000..05d8f6a Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/test-results/test/binary/results.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/tmp/compileJava/previous-compilation-data.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000..85f59d9 Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/tmp/compileTestJava/previous-compilation-data.bin b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/tmp/compileTestJava/previous-compilation-data.bin new file mode 100644 index 0000000..e3bdb4a Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/build/tmp/compileTestJava/previous-compilation-data.bin differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradle/wrapper/gradle-wrapper.jar b/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..d64cd49 Binary files /dev/null and b/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradle/wrapper/gradle-wrapper.properties b/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..41dfb87 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradlew b/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradlew new file mode 100644 index 0000000..1b6c787 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradlew.bat b/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/settings.gradle b/Last-Year/Fourth-Assignment-Steam-Scraper-main/settings.gradle new file mode 100644 index 0000000..d0bef46 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'HTML-Parser' + diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/Resources/Video_Games.html b/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/Resources/Video_Games.html new file mode 100644 index 0000000..a7f5735 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/Resources/Video_Games.html @@ -0,0 +1,805 @@ +
+
+
+
+
+

+ Video Game List: To Scrape +

+
+
+
+ + +
+
+

Far Cry 4

+
+ Rating: 4.8/5
+ Price: 91 €
+
+
+ +
+

Super Mario Galaxy

+
+ Rating: 4.6/5
+ Price: 91 €
+
+
+ +
+

Devil May Cry 5

+
+ Rating: 4.7/5
+ Price: 91 €
+
+
+ +
+

Metroid Prime

+
+ Rating: 4.5/5
+ Price: 89 €
+
+
+ +
+

Super Mario Odyssey

+
+ Rating: 4.9/5
+ Price: 89 €
+
+
+ +
+

Halo: Combat Evolved

+
+ Rating: 4.6/5
+ Price: 87 €
+
+
+ +
+

The House in Fata Morgana

+
+ Rating: 4.3/5
+ Price: 83 €
+
+
+ +
+

Uncharted 2: Among Thieves

+
+ Rating: 4.7/5
+ Price: 88 €
+
+
+ +
+

Tekken 3

+
+ Rating: 4.4/5
+ Price: 91 €
+
+
+ +
+

The Legend of Zelda: The Wind Waker

+
+ Rating: 4.8/5
+ Price: 90 €
+
+
+ +
+

Metal Gear Solid 2: Sons of Liberty

+
+ Rating: 4.7/5
+ Price: 88 €
+
+
+ +
+

Baldur's Gate II: Shadows of Amn

+
+ Rating: 4.9/5
+ Price: 91 €
+
+
+
+

The Legend of Zelda Collector's Edition

+
+ Rating: 4.7/5
+ Price: 89 €
+
+
+ +
+

Gran Turismo 3: A-Spec

+
+ Rating: 4.5/5
+ Price: 84 €
+
+
+ +
+

The Legend of Zelda: A Link to the Past

+
+ Rating: 4.8/5
+ Price: 90 €
+
+
+ +
+

The Legend of Zelda: Majora's Mask

+
+ Rating: 4.6/5
+ Price: 91 €
+
+
+ +
+

The Last of Us

+
+ Rating: 4.9/5
+ Price: 92 €
+
+
+ +
+

Persona 5 Royal

+
+ Rating: 4.7/5
+ Price: 84 €
+
+
+
+

Resident Evil Code: Veronica

+
+ Rating: 4.6/5
+ Price: 85 €
+
+
+ +
+

Diablo

+
+ Rating: 4.8/5
+ Price: 87 €
+
+
+ +
+

Metal Gear Solid 3: Subsistence

+
+ Rating: 4.7/5
+ Price: 91 €
+
+
+ +
+

Metal Gear Solid 4: Guns of the Patriots

+
+ Rating: 4.5/5
+ Price: 88 €
+
+
+ +
+

Sid Meier's Civilization IV

+
+ Rating: 4.3/5
+ Price: 82 €
+
+
+ +
+

Virtua Fighter 4

+
+ Rating: 4.4/5
+ Price: 81 €
+
+
+ +
+

Far Cry 3

+
+ Rating: 4.9/5
+ Price: 80 €
+
+
+ +
+

Tom Clancy's Rainbow Six Siege

+
+ Rating: 4.6/5
+ Price: 88 €
+
+
+ +
+

Company of Heroes

+
+ Rating: 4.7/5
+ Price: 87 €
+
+
+ +
+

Gran Turismo 2

+
+ Rating: 4.6/5
+ Price: 90 €
+
+
+ +
+

The Last of Us Part II

+
+ Rating: 4.9/5
+ Price: 57 €
+
+
+ +
+

Half-Life: Alyx

+
+ Rating: 4.8/5
+ Price: 92 €
+
+
+ +
+

Divinity: Original Sin II

+
+ Rating: 4.7/5
+ Price: 88 €
+
+
+ +
+

Unreal Tournament 2004

+
+ Rating: 4.6/5
+ Price: 88 €
+
+
+ +
+

God of War II

+
+ Rating: 4.9/5
+ Price: 90 €
+
+
+ +
+

Super Mario 3D World

+
+ Rating: 4.7/5
+ Price: 89 €
+
+
+ +
+

Paper Mario

+
+ Rating: 4.5/5
+ Price: 90 €
+
+
+ +
+

Wipeout XL

+
+ Rating: 4.3/5
+ Price: 86 €
+
+
+ +
+

World of Warcraft

+
+ Rating: 4.8/5
+ Price: 74 €
+
+
+ +
+

Flipnote Studio

+
+ Rating: 4.2/5
+ Price: 75 €
+
+
+ +
+

God of War III

+
+ Rating: 4.9/5
+ Price: 88 €
+
+
+ +
+

NHL 2002

+
+ Rating: 4.0/5
+ Price: 83 €
+
+
+ +
+

Uncharted 3: Drake's Deception

+
+ Rating: 4.7/5
+ Price: 84 €
+
+
+ +
+

Bloodborne

+
+ Rating: 4.8/5
+ Price: 88 €
+
+
+ +
+

Eternal Darkness: Sanity's Requiem

+
+ Rating: 4.6/5
+ Price: 87 €
+
+
+ +
+

Warcraft III: Reign of Chaos

+
+ Rating: 4.9/5
+ Price: 92 €
+
+
+ +
+

Sid Meier's Gettysburg!

+
+ Rating: 4.4/5
+ Price: 74 €
+
+
+ +
+

Forza Motorsport

+
+ Rating: 4.6/5
+ Price: 76 €
+
+
+ +
+

Advance Wars

+
+ Rating: 4.7/5
+ Price: 89 €
+
+
+ +
+

Vagrant Story

+
+ Rating: 4.5/5
+ Price: 90 €
+
+
+ +
+

Team Fortress 2

+
+ Rating: 4.8/5
+ Price: 90 €
+
+
+ +
+

System Shock 2

+
+ Rating: 4.6/5
+ Price: 91 €
+
+
+ +
+

Final Fantasy XII

+
+ Rating: 4.7/5
+ Price: 76 €
+
+
+ +
+

Super Mario World: Super Mario Advance 2

+
+ Rating: 4.6/5
+ Price: 90 €
+
+
+ +
+

Super Smash Bros. Melee

+
+ Rating: 4.8/5
+ Price: 91 €
+
+
+ +
+

Rome: Total War

+
+ Rating: 4.9/5
+ Price: 90 €
+
+
+ +
+

Forza Motorsport 3

+
+ Rating: 4.7/5
+ Price: 81 €
+
+
+ +
+

Super Mario Sunshine

+
+ Rating: 4.5/5
+ Price: 84 €
+
+
+ +
+

Tony Hawk's Pro Skater

+
+ Rating: 4.8/5
+ Price: 88 €
+
+
+
+

Portal: Still Alive

+
+ Rating: 3.9/5
+ Price: 86 €
+
+
+ +
+

Half-Life 2: Episode Two

+
+ Rating: 4.2/5
+ Price: 92 €
+
+
+ +
+

The Chronicles of Riddick: Escape From Butcher Bay - Developer's Cut

+
+ Rating: 3.8/5
+ Price: 86 €
+
+
+ +
+

Shin Megami Tensei: Persona 4

+
+ Rating: 4.1/5
+ Price: 77 €
+
+
+ +
+

Hollow Knight

+
+ Rating: 4.3/5
+ Price: 90 €
+
+
+ +
+

Blast Corps

+
+ Rating: 3.7/5
+ Price: 83 €
+
+
+ +
+

Sid Meier's Civilization III

+
+ Rating: 4.0/5
+ Price: 84 €
+
+
+ +
+

NFL 2K2

+
+ Rating: 3.6/5
+ Price: 71 €
+
+
+ +
+

WWF SmackDown! 2: Know Your Role

+
+ Rating: 4.2/5
+ Price: 84 €
+
+
+ +
+

Silent Hunter III

+
+ Rating: 3.9/5
+ Price: 78 €
+
+
+ +
+

Dead Space 2

+
+ Rating: 4.4/5
+ Price: 86 €
+
+
+ +
+

Pikmin 2

+
+ Rating: 4.0/5
+ Price: 90 €
+
+
+ +
+

Geometry Wars: Retro Evolved 2

+
+ Rating: 3.8/5
+ Price: 83 €
+
+
+ +
+

Sid Meier's Civilization V

+
+ Rating: 4.3/5
+ Price: 80 €
+
+
+ +
+

Super Mario 3D Land

+
+ Rating: 4.1/5
+ Price: 84 €
+
+
+ +
+

Mario Kart 8 DLC Pack 2

+
+ Rating: 3.9/5
+ Price: 89 €
+
+
+
+

Project Gotham Racing 3

+
+ Rating: 4.2/5
+ Price: 79 €
+
+
+
+

The World Ends with You

+
+ Rating: 4.5/5
+ Price: 87 €
+
+
+
+

Dishonored 2

+
+ Rating: 4.3/5
+ Price: 80 €
+
+
+
+

Injustice 2: Legendary Edition

+
+ Rating: 4.0/5
+ Price: 77 €
+
+
+
+

Divinity: Original Sin Enhanced Edition

+
+ Rating: 4.6/5
+ Price: 80 €
+
+
+
+

Minecraft: Xbox One Edition

+
+ Rating: 4.4/5
+ Price: 73 €
+
+
+
+

JSRF: Jet Set Radio Future

+
+ Rating: 4.1/5
+ Price: 83 €
+
+
+
+

Red Faction

+
+ Rating: 3.9/5
+ Price: 79 €
+
+
+
+

Call of Duty: Modern Warfare Remastered

+
+ Rating: 3.9/5
+ Price: 71 €
+
+
+ +
+

Titanfall

+
+ Rating: 4.2/5
+ Price: 61 €
+
+
+ +
+

Call of Duty: Black Ops III

+
+ Rating: 3.7/5
+ Price: 50 €
+
+
+ +
+

Watch Dogs 2

+
+ Rating: 4.1/5
+ Price: 81 €
+
+
+ +
+

Call of Duty: Black Ops II

+
+ Rating: 3.8/5
+ Price: 50 €
+
+
+ +
+

Call of Duty: Infinite Warfare - Sabotage

+
+ Rating: 4.3/5
+ Price: 18 €
+
+
+ +
+

Call of Duty: Advanced Warfare - Reckoning

+
+ Rating: 3.5/5
+ Price: 57 €
+
+
+ +
+

Call of Duty: Advanced Warfare - Ascendance

+
+ Rating: 4.0/5
+ Price: 67 €
+
+
+ +
+

Grand Theft Auto V

+
+ Rating: 3.6/5
+ Price: 36 €
+
+
+ +
+

Call of Duty: Advanced Warfare - Supremacy

+
+ Rating: 4.4/5
+ Price: 64 €
+
+
+
+

CS student simulator

+
+ Rating: 1.0/5
+ Price: 85 €
+
+
+ +
+

Resident Evil (2002)

+
+ Rating: 4.2/5
+ Price: 92 €
+
+
+ +
+

Resident Evil 4: Wii Edition

+
+ Rating: 3.9/5
+ Price: 89 €
+
+
+ +
+

Doom 3

+
+ Rating: 4.1/5
+ Price: 81 €
+
+
+ +
+

Tekken: Dark Resurrection

+
+ Rating: 3.8/5
+ Price: 86 €
+
+
+ +
+

The Stanley Parable

+
+ Rating: 4.0/5
+ Price: 80 €
+
+
+ +
+

Slay the Spire

+
+ Rating: 3.5/5
+ Price: 69 €
+
+
+ +
+

Guacamelee! Gold Edition

+
+ Rating: 4.3/5
+ Price: 75 €
+
+
+ +
+

Counter-Strike: Source

+
+ Rating: 4.4/5
+ Price: 89 €
+
+
+ +
+
+
+
diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/main/java/Game.java b/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/main/java/Game.java new file mode 100644 index 0000000..79ed925 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/main/java/Game.java @@ -0,0 +1,40 @@ +import java.util.Objects; + +public class Game { + private String name; + private double rating; + private int price; + + public Game(String name, double rating, int price) { + //TODO + + } + + public String getName() { + return name; + } + + + public double getRating() { + return rating; + } + + public int getPrice() { + return price; + } + + @Override + public String toString() { + //TODO + return ""; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Game game = (Game) o; + return Double.compare(game.rating, rating) == 0 && Double.compare(game.price, price) == 0 && Objects.equals(name, game.name); + } + +} diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/main/java/Parser.java b/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/main/java/Parser.java new file mode 100644 index 0000000..e6ba90f --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/main/java/Parser.java @@ -0,0 +1,48 @@ +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import java.io.File; +import java.io.IOException; +import java.util.*; + +public class Parser { + static List games = new ArrayList<>(); + + public List sortByName(){ + List sortedByName = new ArrayList<>(games); + // Sort games alphabetically (least) + //TODO + return sortedByName; + } + + public List sortByRating(){ + List sortedByRating = new ArrayList<>(games); + // Sort games by rating (most) + //TODO + return sortedByRating; + } + + public List sortByPrice(){ + List sortedByPrice = new ArrayList<>(games); + // Sort games by price (most) + //TODO + return sortedByPrice; + } + + public void setUp() throws IOException { + + //Parse the HTML file using Jsoup + //TODO + + // Extract data from the HTML + //TODO + + // Iterate through each Game div to extract Game data + //TODO + } + + public static void main(String[] args) { + //you can test your code here before you run the unit tests + } +} diff --git a/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/test/java/ParserTest.java b/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/test/java/ParserTest.java new file mode 100644 index 0000000..70863a4 --- /dev/null +++ b/Last-Year/Fourth-Assignment-Steam-Scraper-main/src/test/java/ParserTest.java @@ -0,0 +1,76 @@ +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ParserTest { + + public static Parser handle; + + @BeforeAll + static void setUp() throws IOException { + handle = new Parser(); + handle.setUp(); + } + + @Test + public void testSortByName() { + List sortedGames = handle.sortByName(); + Game g1 = new Game("Bloodborne" ,4.8,88); + Game g2 = new Game("Gran Turismo 2" ,4.6,90); + Game g3 = new Game("Resident Evil Code: Veronica" ,4.6,85); + Game g4 = new Game("Super Smash Bros. Melee" ,4.8,91); + Game g5 = new Game("The Last of Us" ,4.9,92); + Game g6 = new Game("Wipeout XL" ,4.3,86); + + assertEquals(100, sortedGames.size()); + assertEquals(sortedGames.get(3),g1); + assertEquals(sortedGames.get(31),g2); + assertEquals(sortedGames.get(57),g3); + assertEquals(sortedGames.get(72),g4); + assertEquals(sortedGames.get(79),g5); + assertEquals(sortedGames.get(98),g6); + } + + @Test + public void testSortByPrice() { + List sortedGames = handle.sortByPrice(); + Game g1 = new Game("Tekken 3" ,4.4,91); + Game g2 = new Game("The Legend of Zelda: The Wind Waker" ,4.8,90); + Game g3 = new Game("Advance Wars" ,4.7,89); + Game g4 = new Game("Company of Heroes" ,4.7,87); + Game g5 = new Game("Uncharted 3: Drake's Deception" ,4.7,84); + Game g6 = new Game("Final Fantasy XII" ,4.7,76); + + assertEquals(100, sortedGames.size()); + assertEquals(sortedGames.get(8),g1); + assertEquals(sortedGames.get(14),g2); + assertEquals(sortedGames.get(29),g3); + assertEquals(sortedGames.get(44),g4); + assertEquals(sortedGames.get(56),g5); + assertEquals(sortedGames.get(82),g6); + } + + @Test + public void testSortByRating() { + List sortedGames = handle.sortByRating(); + Game g1 = new Game("God of War II" ,4.9,90); + Game g2 = new Game("Diablo" ,4.8,87); + Game g3 = new Game("Advance Wars" ,4.7,89); + Game g4 = new Game("Unreal Tournament 2004" ,4.6,88); + Game g5 = new Game("Gran Turismo 3: A-Spec" ,4.5,84); + Game g6 = new Game("Call of Duty: Infinite Warfare - Sabotage" ,4.3,18); + + assertEquals(100, sortedGames.size()); + assertEquals(sortedGames.get(5),g1); + assertEquals(sortedGames.get(12),g2); + assertEquals(sortedGames.get(29),g3); + assertEquals(sortedGames.get(38),g4); + assertEquals(sortedGames.get(45),g5); + assertEquals(sortedGames.get(64),g6); + } +}