Coder Social home page Coder Social logo

maxnrb / spell-searcher Goto Github PK

View Code? Open in Web Editor NEW

This project forked from adrlsx/spell-searcher

0.0 0.0 0.0 1.49 GB

Spell Searcher to get started with web crawling using Scrapy, distributed computing using Apache Spark and desktop GUI using Scala Swing.

License: GNU Affero General Public License v3.0

Scala 45.17% Shell 2.66% Python 23.70% Hack 0.90% PHP 15.64% CSS 11.94%

spell-searcher's Introduction

Spell Searcher

This is a school project from UQAC in the course 8INF803.

In this project we are creating a web crawler to retrieve Pathfinder spell and creature data. The aim is to save those data in JSON in order to parse them thanks to Apache Spark. We also provide a GUI in Scala to search through spells more efficiently. This is a small project to get started with web crawling and distributed computing. Overall, this project thrives to be an introduction to big data.

For more information please refer to the Instructions (in French).

Interface

Two interfaces are available for this project. The main one is the Desktop interface in Scala Swing, using Apache Spark™ as a backend to process request.

The orange "Update Database" button launches the python crawler in order to retrieve spells and creatures information from Archives of Nethys. The first launch will take longer than the others as the crawler will automatically load the database from the website and generate the JSON files needed for Apache Spark™ processing.

You will need the Scrapy package installed on your machine for the crawler to work. You can expect the crawler to retrieve all information in between 2 and 10 minutes, depending on your internet speed. Following updates will be faster because HTTP requests are cached locally.

Scala Swing Desktop Interface

The second interface is a Web interface written in PHP and using a MySQL database as a backend. This interface is a more straight-forward approach available here.

Installation

Scrapy

To install the latest version of Scrapy:

$ pip install scrapy

You can also refer to the documentation: Scrapy Installation.

Apache Spark

To install and configure Apache Spark on Linux please refer to spark-setup.sh. You can also refer to the documentation: Apache Spark Installation.

Built With

  • Scala 2.12.12 - Scala is a general-purpose programming language providing support for both object-oriented programming and functional programming.
  • Oracle OpenJDK 11.0.9 - OpenJDK (Open Java Development Kit) is a free and open-source implementation of the Java Platform Standard Edition (Java SE).
  • sbt 1.4.5 - sbt is a build tool for Scala, Java, and more. It requires Java 1.8 or later.
  • Apache Spark™ 3.0.1 - Apache Spark is an open-source distributed general-purpose cluster-computing framework.
  • scala-swing 3.0.0 - scala-wing is a UI library that wraps most of Java Swing for Scala in a straightforward manner. The widget class hierarchy loosely resembles that of Java Swing.
  • FlatLaf 0.45 - FlatLaf is a modern open-source cross-platform Look and Feel for Java Swing desktop applications.
  • Python 3.9.1 - Python is an interpreted, high-level and general-purpose programming language.
  • Scrapy 2.4.1 - Scrapy is a free and open-source web-crawling framework written in Python.

Authors

License

This project is licensed under the GNU AGPLv3 License - see the LICENSE.md file for details

License chosen thanks to choosealicense.com

spell-searcher's People

Contributors

maxnrb avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.