Obtiene los trending posts de Reddit y los muestra en una página
// ==UserScript==
// @license MIT
// @name Obtener Trending Posts de Reddit
// @namespace https://www.example.com
// @version 1.0.3
// @description Obtiene los trending posts de Reddit y los muestra en una página
// @author Tu Nombre
// @match https://www.reddit.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
let isFetchingPosts = false; // Variable para controlar si se están obteniendo más publicaciones
let after = ''; // ID de la última publicación obtenida
// Función para obtener los trending posts de Reddit
function getTrendingPosts() {
if (isFetchingPosts) {
return; // Evitar múltiples llamadas mientras se están obteniendo publicaciones
}
isFetchingPosts = true;
fetch(`https://www.reddit.com/r/all.json?after=${after}`)
.then(response => response.json())
.then(data => {
isFetchingPosts = false;
// Recorremos los trending posts y los mostramos en la página
data.data.children.forEach(post => {
const postTitle = post.data.title;
const postAuthor = post.data.author;
const postScore = post.data.score;
const postElement = document.createElement('p');
postElement.innerHTML = `<strong>${postTitle}</strong> - Autor: ${postAuthor} - Puntuación: ${postScore}`;
const trendingPostsElement = document.getElementById('trendingPosts');
if (trendingPostsElement) {
trendingPostsElement.appendChild(postElement);
}
});
after = data.data.after; // Actualizamos el ID de la última publicación obtenida
})
.catch(error => {
console.log('Ha ocurrido un error:', error);
isFetchingPosts = false; // Reiniciamos la variable en caso de error
});
}
// Verificar si estamos en una página de Reddit
const isRedditPage = window.location.hostname === 'www.reddit.com';
if (isRedditPage) {
// Crear la estructura de la página
const containerElement = document.createElement('div');
containerElement.className = 'container';
containerElement.innerHTML = `
<h1>Trending Posts de Reddit</h1>
<div id="trendingPosts"></div>
`;
document.body.appendChild(containerElement);
// Registrar el evento de scroll para cargar más publicaciones cuando sea necesario
window.addEventListener('scroll', function() {
const scrollPosition = window.innerHeight + window.pageYOffset;
const documentHeight = document.documentElement.scrollHeight;
const buffer = 200; // Espacio adicional antes de llegar al final de la página
if (scrollPosition >= documentHeight - buffer) {
getTrendingPosts();
}
});
// Obtener los primeros trending posts al cargar la página
getTrendingPosts();
}
})();