Example App

Building an Application with the Rscripts API

In this guide, we'll walk through the process of building a simple application that utilizes the Rscripts API to retrieve and display scripts. We'll cover various API endpoints, showcasing how to fetch script data, handle edge cases, and present the information in a user-friendly way.

Prerequisites

Before we begin, ensure that you have the following prerequisites:

  • Basic understanding of JavaScript (or your preferred programming language)
  • Access to the Rscripts API (currently free and publicly available)

Setting Up the Project

  1. Create a new directory for your project and navigate to it in your terminal or command prompt.

  2. Initialize a new project by running the appropriate command for your preferred package manager (e.g., npm init for Node.js or yarn init for Yarn).

  3. Install any necessary dependencies for making HTTP requests (e.g., axios or the built-in fetch API for JavaScript).

Fetching Scripts

Let's start by fetching a list of scripts from the Rscripts API using the /api/v2/scripts endpoint.

// Fetch the latest scripts
fetch("https://rscripts.net/api/v2/scripts?page=1&orderBy=date&sort=desc")
  .then((response) => response.json())
  .then((data) => {
    console.log("Current Page:", data.info.currentPage);
    console.log("Max Pages:", data.info.maxPages);
    console.log("Scripts:", data.scripts);
  })
  .catch((error) => {
    console.error("Error fetching scripts:", error);
  });

In this example, we're fetching the latest scripts by ordering them by their creation date in descending order. The response contains an info object with pagination information and an array of scripts objects containing the script details.

Displaying Scripts

Here's an example of how you might render the scripts using vanilla JavaScript:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Rscripts App</title>
    <style>
      /* Add your custom styles here */
      textarea {
        width: 100%;
        height: 200px;
      }
 
      /* responsive 4 grid cols grid scripts-container */
      #scripts-container {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 10px;
        padding: 10px;
      }
 
      #scripts-container div {
        border: 1px solid #ccc;
        padding: 10px;
      }
    </style>
  </head>
 
  <body>
    <h1>Rscripts App</h1>
    <div id="scripts-container"></div>
 
    <script>
      // Fetch and display scripts
      fetch("https://rscripts.net/api/v2/scripts?page=1&orderBy=date&sort=desc")
        .then((response) => response.json())
        .then((data) => {
          const scriptsContainer = document.getElementById("scripts-container");
 
          const scripts = data.scripts.map((script) => {
            const hasUser = script.user;
 
            const profilePicture = (hasUser && script.user.image) ? script.user.image : "https://i.pravatar.cc/300";
            const username = hasUser ? script.user.username : script.creator;
 
            const scriptElement = document.createElement("div");
            scriptElement.innerHTML = `
              <h2>${script.title}</h2>
              <p>${script.description}</p>
              <img style="width: 40px; height: 40px; border-radius: 50%;" src="${profilePicture}" alt="Profile picture of ${username}">
              <p>Creator: ${username}</p>
              <img src="${script.image}" alt="${script.title}">
              <textarea id="script-${script._id}"></textarea>
            `;
 
            const downloadUrl = script.rawScript;
 
            // Fetch and display the script content
            fetch(downloadUrl)
              .then((response) => response.text())
              .then((scriptContent) => {
                const textArea = scriptElement.querySelector(
                  `#script-${script._id}`
                );
                textArea.value = scriptContent;
              })
              .catch((error) => {
                console.error(
                  `Error fetching script content for ${script.title}:`,
                  error
                );
              });
 
            return scriptElement;
          });
 
          scripts.forEach((scriptElement) => {
            scriptsContainer.appendChild(scriptElement);
          });
        })
        .catch((error) => {
          console.error("Error fetching scripts:", error);
        });
 
      // Helper function to check if a URL is valid
      function isValidUrl(url) {
        try {
          new URL(url);
          return true;
        } catch (error) {
          return false;
        }
      }
    </script>
  </body>
</html>

Your final result should look like this 🎉

Hello

Exploring Other Endpoints

The Rscripts API offers several other endpoints that you can explore and integrate into your application. Here are a few examples:

Retrieving a Specific Script

// Retrieve a specific script by its ID
fetch(
  "https://rscripts.net/api/v2/script?id=6422a7b9d8f7e7c4d0d6a9b3"
)
  .then((response) => response.json())
  .then((data) => {
    if (data.success) {
      console.log("Script retrieved successfully:", data.success);
    } else {
      console.error("Error retrieving script:", data.error);
    }
  })
  .catch((error) => {
    console.error("Error retrieving script:", error);
  });

Learn more here

Fetching Trending Scripts

// Fetch trending scripts
fetch("https://rscripts.net/api/v2/trending")
  .then((response) => response.json())
  .then((data) => {
    if (data.success) {
      console.log("Trending Scripts:", data.success);
    } else {
      console.error("Error:", data.error);
    }
  })
  .catch((error) => {
    console.error("Error fetching trending scripts:", error);
  });

Learn more here

Refer to the Rscripts API documentation for more endpoints and their usage details.

Conclusion

In this guide, we explored how to build an application using the Rscripts API, covering various endpoints and displaying script data in a user interface.

Remember to always refer to the official Rscripts API documentation for the latest updates and best practices. Happy coding!