Search content
Sort by

Showing 20 of 92 results by *Ace*
Post
Topic
Board Guide (Italiano)
Re: [Tool] Bitcointalk Weekly post and merit tracker v.1.3.2
by
*Ace*
on 25/07/2025, 11:07:27 UTC
molto molto bello, grafica veramente bella e accattivamente
devo imparare da te dato che i miei tool sono veramente brutti

ti avviso, la parte estetica, quindi il gigio con sfondo e ombra te lho appena rubato Smiley sapevilo

grazie per aver condiviso il codice

Il codice è libero amico, non ho scritto che ha licenza MIT perché me lo sono dimenticato ma è un codice per tutti, chi vuole può usarlo modificarlo o aiutarmi nello sviluppo liberamente
Mi fa piacere che ti sia piaciuto, anche se hai rubato solo una parte del codice.
Ti chiedo una mano di aiuto se vuoi o se ne hai voglia, visto che conosci JS mi aiuteresti per evitare il cache dei dati? Le ho provate tutte ma nada! Il problema si ripresenta sempre
Post
Topic
Board Guide (Italiano)
Merits 2 from 2 users
Re: [Tool] Btctalk weekly stats v1.0
by
*Ace*
on 24/07/2025, 15:58:44 UTC
⭐ Merited by Lillominato89 (1) ,babo (1)


Beh, ma poi il nostro *Ace*, che intanto è diventato membro, sa cosa sono le signature campaign?
PErchè ha iniziato lo script con una ragione specifica, ma lo abbbiamo fatto immediatamente virare su qualcosa d'altro, che evidentemente interessa a tutti!

Dai *Ace*, guarda qui:
Overview of Bitcointalk Signature-Ad Campaigns [Last update: 20-Jul-25]

Hai ragione, certe volte do per scontato tante cose che poi proprio scontate non sono, lui non ha mai partecipato a una campagna firme, quindi sarà meglio spiegargli come funzionano di preciso

Almeno che non abbia già letto qualcosa a riguardo, vediamo cosa ci risponde

Ho appena aggiornato il primo post e inserito il link dove scaricare la nuova versione dello script 1.3.2

Aggiunto i target come richiesto, sono andato a cercare nelle varie campagne firme per capire cosa intendevi veramente per i target. Diciamo che sono tutti uguali, chi  vuole come target minimo 10 in gambling e chi da max 5 in board locali
Quindi da impostazioni ognuno può settare i target, se la local board non viene conteggiata basta inserire 0 e non verranno presi in considerazione i post scritti in local board
Invece per i minimi basta inserire quello richiesto dal manager, e poi cliccare su salva.
Nessun dato andrà salvato su server esterni, va tutto in locale

Sperando che possa esservi utile e funzionale. Ogni tanto purtroppo i dati che arrivano da ninjastic vanno in cache, basta in quel caso chiudere a icona il box e riaprirlo che si aggiorna
Post
Topic
Board Guide (Italiano)
Re: [Tool] Btctalk monthly stats v1.0
by
*Ace*
on 22/07/2025, 21:56:44 UTC

Ok caro, ho lavorato tutto il pomeriggio per farti questo script, adesso creo un topic per questo tool, lo provi e mi fai sapere

Purtroppo al momento il mio setup è mobile only, e per di più IOS.
Quindi al momento per me è difficile provare un setup nel quale riesca a caricare l’addome.
Confido nella forza della community e sul fatto che qualcuno lo proverà!

Si io lo sto usando ed è una figata!
Ogni tanto si inceppa ma basta dargli due colpetti e riparte. Ma il fatto di non doversi segnare quanti post ho fatto durante la settimana è tanta ma tanta roba, poi te li suddivide anche e quindi diventa molto utile

Grazie mille per il feedback
Se ci sono cose che suggerisci di cambiare, detta pure
Io sto mettendo a punto la nuova release 🙂
Post
Topic
Board Guide (Italiano)
Merits 6 from 1 user
Re: [Tool] Btctalk monthly stats v1.0
by
*Ace*
on 22/07/2025, 13:55:29 UTC
⭐ Merited by fillippone (6)

Ok caro, ho lavorato tutto il pomeriggio per farti questo script, adesso creo un topic per questo tool, lo provi e mi fai sapere

Purtroppo al momento il mio setup è mobile only, e per di più IOS.
Quindi al momento per me è difficile provare un setup nel quale riesca a caricare l’addome.
Confido nella forza della community e sul fatto che qualcuno lo proverà!

Nooo! Questa che mi dai è una brutta notizia
Io mi sono mazzato per farti lo script come lo volevi tu...
C'è una soluzione ma io non l'ho mai provata, installare userscript app ma non usa safari, bensì un browser proprio, puoi provare con questa alternativa
Post
Topic
Board Italiano (Italian)
Merits 1 from 1 user
Re: Cosa ne farai dei tuoi bitcoin una volta che diventerai anziano?
by
*Ace*
on 21/07/2025, 14:27:04 UTC
⭐ Merited by babo (1)
Fanno il loro lavoro senza dubbio, ma sono i veri e propri facchini dello stato italiano
Fortunatamente non ho mai avuto a che fare con loro finora, ma se un giorno si presenterà questa occasione vedrò con i miei occhi la loro cattiveria.
Credo che vengano proprio ammaestrati per essere così

Fanno il loro lavoro dici? Anche i soldati nazisti che ammazzavano ebrei nei campi di concentramento facevano il loro lavoro, scusami ma che discorso è? Se vedi che il tuo lavoro nuoce a persone innocenti puoi anche rifiutarti di farlo.
Mica qualcuno ti punta la pistola

Che paragoni fai?
Piuttosto di pensare se il lavoro nuoce o no altre persone io mi chiederei, o paghiamo tutti o nessuno
Evadere costa sulle spalle di chi paga e non allo stato, ricordalo!

Si riferiva al fatto che anche gli innocenti possono subire torti, comunque sia lasciamo stare i paragoni, in Italia l'evasione fiscale è una piaga profonda. Lo stato purtroppo ci vuole a tutti col capo chinato, è così dappertutto, chi più chi meno
Post
Topic
Board Italiano (Italian)
Re: Mi presento sono nuovo
by
*Ace*
on 21/07/2025, 08:23:08 UTC
Ciao e benvenuto sul forum e soprattutto benvenuto nel club di quelli che si sono appena inscritti per imparare, sono sicuro che ti troverai bene, come lo è stato per me.
Resta attivo che imparerai tanto
Post
Topic
Board Guide (Italiano)
Re: [Tool] Btctalk weekly stats v1.0
by
*Ace*
on 20/07/2025, 11:16:41 UTC
Aggiornamento, credo di aver fixato il problema nella versione 1.1
Vediamo nei prossimi giorni se funziona
Intanto fillippone fammi sapere come si comporta con te

Dimmi come si installa esattamente.
Scrivi bene le istruzioni per l’installazione su Safari mobile (o altro browser mobile).
Devi essere idiot proof

Ho inserito una mini guida nel primo post
Dovrebbe essere intuitiva
Post
Topic
Board Meta
Re: Bitcointalk ProfileAnalyzer & Rank ProgressTracker 4 Newbies & Existing Members
by
*Ace*
on 20/07/2025, 10:43:18 UTC
First of all I want to congratulate you, this tool is beautiful especially for us who are not yet legendary members



This feature is truly a gem  Grin I hope your project is successful
Post
Topic
Board Guide (Italiano)
Re: [Tool] Btctalk weekly stats v1.0
by
*Ace*
on 20/07/2025, 10:07:28 UTC
Aggiornamento, credo di aver fixato il problema nella versione 1.1
Vediamo nei prossimi giorni se funziona
Intanto fillippone fammi sapere come si comporta con te
Post
Topic
Board Guide (Italiano)
Re: [Tool] Btctalk weekly stats v1.0
by
*Ace*
on 20/07/2025, 08:58:19 UTC
La versione con selezione UTC sembra che prenda i dati cachati
Ma serve qualcuno che lo usi per un po' di tempo per avere dei feedback utili
Se scrivete messaggi lui li conta ugualmente ma li inserisce in non classificati cioè non riconosce in quale board sono stati scritti
Usatelo e mi fate sapere
Grazie mille
Post
Topic
Board Guide (Italiano)
Re: [Tool] Btctalk weekly stats v1.0
by
*Ace*
on 20/07/2025, 05:49:06 UTC
Bravissimo!
Di solo un suggerimento.
Alcune campagne firme iniziano a mezzanotte ora locale, altre a mezzanotte UTC, altre magari alle 4 del pomeriggio.
Insomma, dovresti aggiungere un selettore del fuso orario.
Ottimo lavoro comunque. Quando è un po’ affinato potresti tradurre tutto in inglese e postarlo in META.



Ho implementato la selezione UTC sperando non abbia scassato il codice
Inoltre ho messo a classifica anche i Merit ricevuti
Piccolo problema è ingrossato il box e non riesco a snellirlo
Post
Topic
Board Guide (Italiano)
Merits 3 from 2 users
Topic OP
[Tool] Btctalk weekly stats v1.0
by
*Ace*
on 19/07/2025, 22:12:17 UTC
⭐ Merited by Lillominato89 (2) ,babo (1)
Dopo che avevo creato il tool mensile il nostro grande fillippone mi ha chiesto di farne uno settimanale per la gestione delle campagne firme
Quindi ho creato adhoc un tool sperando sia utile, comunque modificabile all'occasione



Cosa fa questo tool?
Utilizzo i dati provenienti da ninjastic e bip
Ogni qualvolta che scrivete un post verrà conteggiato da questo tool in base alla board dove e stato scritto
È possibile settare più utenti
È possibile scegliere il giorno di inizio della settimana, esempio mercoledì ore 00:00 -> martedì ore 23:59:59
Nella stessa settimana verranno visualizzati i Merit ricevuti

In attesa di vostri feedback vi lascio il codice da inserire su tampermonkey o greasemonkey oppure violentmonkey

Code:
// ==UserScript==
// @name         Bitcointalk Weekly Tracker + Weekly Merit
// @namespace    https://bitcointalk.org
// @version      1.0
// @description  Conteggio post settimanali + Merit ricevuti (settimana personalizzabile), mobile compatibile, creata con amore per fillippone
// @author       *Ace*
// @match        https://bitcointalk.org/*
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  const usernames = ['fillippone', '*Ace*']; //inserisci qui altri username per avere piu account da seguire, togli gli username tra gli apici per eliminare l'account
  let selectedUser = localStorage.getItem('btwk_user') || usernames[0];
  let startDayIndex = parseInt(localStorage.getItem('btwk_dayIndex')) || 5; // default venerdì
  let currentWeekOffset = 0;

  function getWeekRange(offset = 0) {
    const now = new Date();
    const today = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));
    const day = today.getUTCDay();
    const daysSinceStart = (day + 7 - startDayIndex) % 7;
    const start = new Date(today);
    start.setUTCDate(today.getUTCDate() - daysSinceStart + offset * 7);
    start.setUTCHours(0, 0, 0, 0);
    const end = new Date(start);
    end.setUTCDate(start.getUTCDate() + 7);
    end.setUTCHours(0, 0, 0, 0);
    return {
      from: start.toISOString().split('.')[0],
      to: end.toISOString().split('.')[0],
      label: `${start.toISOString().slice(0, 10)} → ${new Date(end - 1).toISOString().slice(0, 10)}`
    };
  }

  function fetchBoardStats() {
    const { from, to, label } = getWeekRange(currentWeekOffset);
    const url = `https://api.ninjastic.space/users/${selectedUser}/boards?from=${from}&to=${to}&_=${Date.now()}_${Math.random().toString(36).slice(2)}`;

    fetch(url, {
      cache: 'no-store',
      headers: {
        'Cache-Control': 'no-cache, no-store, must-revalidate',
        'Pragma': 'no-cache',
        'Expires': '0',
      }
    })
      .then(res => res.json())
      .then(json => {
        if (json.result !== 'success') {
          renderStats(`❌ Errore nel recupero dati`);
          return;
        }

        const boards = json.data.boards || [];
        const totalWithBoard = json.data.total_results_with_board || 0;
        const totalAll = json.data.total_results || 0;
        const unclassified = totalAll - totalWithBoard;

        let gambling = 0;
        let local = 0;
        const otherBoards = [];

        boards.forEach(b => {
          if ([228, 56].includes(b.key)) gambling += b.count;
          else if ([28, 153].includes(b.key)) local += b.count;
          else otherBoards.push({ name: b.name, count: b.count });
        });

        let html = `<b>👤 Account:</b> ${selectedUser}<br>`;
        html += `<b>📆 Settimana:</b><br>${label}<br><br>`;
        html += `🧮 <b>Totale:</b> ${totalAll}<br>`;
        html += `🧩 <b>Non classificati:</b> ${unclassified}<br>`;
        html += `🃏 <b>Gambling:</b> ${gambling}<br>`;
        html += `🌍 <b>Local IT:</b> ${local}<br><br>`;

        if (otherBoards.length > 0) {
          html += `<b>📌 Altre board:</b><br>`;
          otherBoards.forEach(b => {
            html += `• ${b.name}: ${b.count}<br>`;
          });
        }

        renderStats(html);
      })
      .catch(err => {
        renderStats(`⚠️ Errore di rete: ${err.message}`);
      });
  }

  function fetchMerits() {
    const { from, to } = getWeekRange(currentWeekOffset);
    const url = `https://api.allorigins.win/get?url=${encodeURIComponent(`https://bpip.org/smerit.aspx?to=${selectedUser}&start=${from}&end=${to}`)}`;

    fetch(url)
      .then(res => res.json())
      .then(data => {
        const html = data.contents;
        const parser = new DOMParser();
        const doc = parser.parseFromString(html, 'text/html');
        const table = doc.querySelector('table');
        if (!table) throw new Error("Nessuna tabella trovata");

        const rows = Array.from(table.querySelectorAll('tbody tr'));
        const fromMap = {};
        let total = 0;

        rows.forEach(row => {
          const tds = row.querySelectorAll('td');
          if (tds.length >= 4) {
            const from = tds[1].innerText.replace('(Summary)', '').trim();
            const amount = parseInt(tds[3].innerText.trim());
            fromMap[from] = (fromMap[from] || 0) + amount;
            total += amount;
          }
        });

        let htmlOut = `<b>⭐ Merit ricevuti:</b><br>`;
        if (total === 0) {
          htmlOut += `Nessun Merit ricevuto in questa settimana.`;
        } else {
          Object.entries(fromMap).forEach(([from, count]) => {
            htmlOut += `• ${from}: ${count}<br>`;
          });
        }
        renderMerits(htmlOut);
      })
      .catch(err => {
        renderMerits(`❌ Errore caricamento Merit: ${err.message}`);
      });
  }

  function renderStats(html) {
    const div = document.getElementById('btwk_stats');
    if (div) div.innerHTML = html;
  }

  function renderMerits(html) {
    const div = document.getElementById('btwk_merits');
    if (div) div.innerHTML = html;
  }

  function renderBox() {
    if (document.getElementById('btwk_box')) return;

    const box = document.createElement('div');
    box.id = 'btwk_box';
    box.style.position = 'fixed';
    box.style.bottom = '10px';
    box.style.right = '10px';
    box.style.background = '#222';
    box.style.color = '#fff';
    box.style.padding = '12px';
    box.style.borderRadius = '12px';
    box.style.fontSize = '13px';
    box.style.maxWidth = '350px';
    box.style.zIndex = '9999';
    box.style.boxShadow = '0 0 8px rgba(0,0,0,0.6)';
    box.style.fontFamily = 'Arial, sans-serif';

    const header = document.createElement('div');
    header.style.display = 'flex';
    header.style.justifyContent = 'space-between';
    header.style.alignItems = 'center';

    const title = document.createElement('b');
    title.textContent = '📊 Tracker Settimanale';

    const toggleBtn = document.createElement('span');
    toggleBtn.textContent = '➖';
    toggleBtn.style.cursor = 'pointer';
    toggleBtn.onclick = () => {
      const content = document.getElementById('btwk_content');
      content.style.display = content.style.display === 'none' ? 'block' : 'none';
      toggleBtn.textContent = toggleBtn.textContent === '➖' ? '➕' : '➖';
    };

    header.appendChild(title);
    header.appendChild(toggleBtn);
    box.appendChild(header);

    const content = document.createElement('div');
    content.id = 'btwk_content';
    content.style.marginTop = '10px';

    // Select user
    const sel = document.createElement('select');
    sel.style.width = '100%';
    usernames.forEach(name => {
      const opt = document.createElement('option');
      opt.value = name;
      opt.textContent = name;
      if (name === selectedUser) opt.selected = true;
      sel.appendChild(opt);
    });
    sel.onchange = () => {
      selectedUser = sel.value;
      localStorage.setItem('btwk_user', selectedUser);
      update();
    };
    content.appendChild(sel);

    // Day select
    const daySel = document.createElement('select');
    daySel.style.width = '100%';
    ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'].forEach((d, i) => {
      const opt = document.createElement('option');
      opt.value = i;
      opt.textContent = `Inizia da ${d}`;
      if (i === startDayIndex) opt.selected = true;
      daySel.appendChild(opt);
    });
    daySel.onchange = () => {
      startDayIndex = parseInt(daySel.value);
      localStorage.setItem('btwk_dayIndex', startDayIndex);
      update();
    };
    content.appendChild(daySel);

    // Navigation
    const nav = document.createElement('div');
    nav.style.margin = '5px 0';
    nav.innerHTML = `
      <button id="prevW">⬅️</button>
      <button id="thisW">📅</button>
      <button id="nextW">➡️</button>
    `;
    content.appendChild(nav);

    document.body.appendChild(box);
    box.appendChild(content);

    const stats = document.createElement('div');
    stats.id = 'btwk_stats';
    stats.style.marginTop = '8px';
    content.appendChild(stats);

    const merits = document.createElement('div');
    merits.id = 'btwk_merits';
    merits.style.marginTop = '12px';
    merits.style.borderTop = '1px solid #666';
    merits.style.paddingTop = '8px';
    content.appendChild(merits);

    document.getElementById('prevW').onclick = () => { currentWeekOffset--; update(); };
    document.getElementById('nextW').onclick = () => { currentWeekOffset++; update(); };
    document.getElementById('thisW').onclick = () => { currentWeekOffset = 0; update(); };
  }

  function update() {
    fetchBoardStats();
    fetchMerits();
  }

  renderBox();
  update();
})();
Post
Topic
Board Guide (Italiano)
Re: [Tool] Btctalk monthly stats v1.0
by
*Ace*
on 19/07/2025, 22:00:09 UTC
A me personalmente sarebbe utile sapere quanti post ho scritto da una specifica data, es: il venerdì a mezzanotte, quanti nella sezione internazionale, quanti i in quella italiana.
Una altra cosa che controllo spesso è quanti meriti ho ricevuto OGGI.

Ma questo scritto funzionerebbe anche da mobile?

Si può fare! Lo metto in cantiere.. tu dimmi di preciso come deve essere, una data specifica? Una settimana?
Tipo da venerdì a giovedì?
Tutte le board o esclusivamente solo italiano e internazionale?

Dimmi tutte le opzioni che ti serve avere e te lo creo adhoc solo per te
Comunque si funziona da mobile, gli screenshot li ho fatti dal mio smartphone

Beh, dovrebbe essere settabile, tipo uno dei parametri per il dettaglio iniziale: qualcosa tipo: “start of the week” tu metti sabato 0:00 (forse meglio usare utc ovvero il forum time) .
Deve contare tutti i messaggi e quelli nella board italiana (e magari quelli nel WO… sarebbe fantastico).
Servirebbe a tutti quelli che partecipano ad una campagna firme.

Ok caro, ho lavorato tutto il pomeriggio per farti questo script, adesso creo un topic per questo tool, lo provi e mi fai sapere
Post
Topic
Board Guide (Italiano)
Merits 3 from 1 user
Re: [Tool] Btctalk monthly stats v1.0
by
*Ace*
on 19/07/2025, 14:43:08 UTC
⭐ Merited by fillippone (3)
A me personalmente sarebbe utile sapere quanti post ho scritto da una specifica data, es: il venerdì a mezzanotte, quanti nella sezione internazionale, quanti i in quella italiana.
Una altra cosa che controllo spesso è quanti meriti ho ricevuto OGGI.

Ma questo scritto funzionerebbe anche da mobile?

Si può fare! Lo metto in cantiere.. tu dimmi di preciso come deve essere, una data specifica? Una settimana?
Tipo da venerdì a giovedì?
Tutte le board o esclusivamente solo italiano e internazionale?

Dimmi tutte le opzioni che ti serve avere e te lo creo adhoc solo per te
Comunque si funziona da mobile, gli screenshot li ho fatti dal mio smartphone
Post
Topic
Board Guide (Italiano)
Re: [Tool] Btctalk monthly stats v1.0
by
*Ace*
on 19/07/2025, 13:21:04 UTC
Wow ma è fighissimo! Secondo me piacerà molto a tutti e specialmente a fillippone, se magari gli metti a disposizione un tool dove può scrapare le statistiche di tutti con un semplice click ed esportare tutto per poi fare i suoi post meta
Non so se è fattibile, io ti butto una idea
Quando ho un po' di tempo lo provo anche io

Mi fa piacere che ti sia piaciuto lo script (scusa il gioco di parole)
Se puoi provalo e mi fai sapere se riscontri problemi
Post
Topic
Board Guide (Italiano)
Merits 12 from 3 users
Topic OP
[Tool] Btctalk monthly stats v1.0
by
*Ace*
on 18/07/2025, 13:13:17 UTC
⭐ Merited by fillippone (9) ,babo (2) ,Lillominato89 (1)
Ciao ragazzi, da poco mi sono cimentato a scrivere userscript da utilizzare con Firefox o Chrome. Avevo visto che fillippone ogni mese costava un resoconto abbastanza bello e completo, e mi è venuta l'idea di creare uno script minimalista che restituisce alcuni dati importanti, come post scritti nel mese corrente o a ritroso, dove li avete scritti e quanti Merit avete ricevuto

Vi allego giusto 2 screenshot per avere una idea di quello che ho fatto, non è professionale ma è abbastanza carino





Inserisco anche il codice se qualcuno volesse provarlo e darmi feedback o consigli su cosa inserire, poi eventualmente valuterò di pubblicarlo anche sulla sezione internazionale

Code:
// ==UserScript==
// @name         Bitcointalk Monthly Stats + Merit Tracker
// @namespace    https://bitcointalk.org
// @version      1.0
// @description  Monthly post and merit statistics for Bitcointalk profile (mobile friendly)
// @author       *Ace*
// @match        https://bitcointalk.org/index.php?action=profile*
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  const uid = 'inserisci_il_tuo_UID';
  const username = 'inserisci_il_tuo_username';
  const boxId = 'monthlyStatsBox';
  const now = new Date();
  let currentMonthOffset = 0;

  function pad(n) {
    return n.toString().padStart(2, '0');
  }

  function addOneDay(dateString) {
    const d = new Date(dateString);
    d.setDate(d.getDate() + 1);
    return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
  }

  function getDateRange(monthOffset = 0) {
    const date = new Date(now.getFullYear(), now.getMonth() + monthOffset, 1);
    const year = date.getFullYear();
    const month = date.getMonth() + 1;
    const firstDay = `${year}-${pad(month)}-01`;
    const lastDay = new Date(year, month, 0).getDate();
    const lastDate = `${year}-${pad(month)}-${pad(lastDay)}`;
    const label = `${date.toLocaleString('en', { month: 'long' })} ${year}`;
    return { from: firstDay, to: lastDate, label, y: year, m: month };
  }

  async function fetchBoardData(from, to) {
    const url = `https://api.ninjastic.space/users/${username}/boards?from=${from}T00:00:00&to=${addOneDay(to)}T00:00:00`;
    try {
      const res = await fetch(url);
      const json = await res.json();
      if (json.result !== 'success') return null;
      return json.data;
    } catch {
      return null;
    }
  }

  async function fetchMeritData(y, m) {
    const from = `${y}-${pad(m)}-01`;
    const toDate = new Date(y, m, 0);
    const to = `${y}-${pad(m)}-${pad(toDate.getDate())}`;
    const url = `https://bpip.org/smerit.aspx?&to=${username}&start=${from}&end=${to}`;

    try {
      const res = await fetch(url);
      const htmlText = await res.text();
      const parser = new DOMParser();
      const doc = parser.parseFromString(htmlText, 'text/html');
      const rows = Array.from(doc.querySelectorAll('table tbody tr'));
      if (!rows.length) return null;

      const fromData = {};
      let total = 0;
      rows.forEach(tr => {
        const tds = tr.querySelectorAll('td');
        if (tds.length >= 4) {
          const name = tds[1].innerText.trim().replace(/\s*\(Summary\)$/i, '');
          const count = parseInt(tds[3].innerText.trim()) || 0;
          total += count;
          fromData[name] = (fromData[name] || 0) + count;
        }
      });
      return { total, fromData };
    } catch (e) {
      console.error(e);
      return null;
    }
  }

  function createBox() {
    let box = document.getElementById(boxId);
    if (box) return box;

    box = document.createElement('div');
    box.id = boxId;
    box.style.position = 'fixed';
    box.style.left = '5px';
    box.style.top = '460px';
    box.style.background = '#222';
    box.style.color = '#fff';
    box.style.padding = '12px';
    box.style.borderRadius = '12px';
    box.style.fontSize = '13px';
    box.style.maxWidth = '340px';
    box.style.zIndex = '9999';
    box.style.boxShadow = '0 0 8px rgba(0,0,0,0.6)';
    box.style.fontFamily = 'Arial, sans-serif';

    const content = document.createElement('div');
    content.id = `${boxId}-content`;
    content.innerHTML = 'Loading...';
    box.appendChild(content);

    const nav = document.createElement('div');
    nav.style.marginTop = '8px';
    nav.style.display = 'flex';
    nav.style.justifyContent = 'space-between';

    const prevBtn = document.createElement('button');
    prevBtn.textContent = '← Previous Month';
    prevBtn.style.flex = '1';
    prevBtn.style.marginRight = '4px';
    prevBtn.style.padding = '6px';
    prevBtn.style.border = 'none';
    prevBtn.style.borderRadius = '6px';
    prevBtn.style.background = '#444';
    prevBtn.style.color = '#fff';
    prevBtn.style.cursor = 'pointer';
    prevBtn.onclick = () => {
      currentMonthOffset--;
      renderStats();
    };

    const nextBtn = document.createElement('button');
    nextBtn.textContent = 'Next Month →';
    nextBtn.style.flex = '1';
    nextBtn.style.marginLeft = '4px';
    nextBtn.style.padding = '6px';
    nextBtn.style.border = 'none';
    nextBtn.style.borderRadius = '6px';
    nextBtn.style.background = '#444';
    nextBtn.style.color = '#fff';
    nextBtn.style.cursor = 'pointer';
    nextBtn.onclick = () => {
      if (currentMonthOffset < 0) {
        currentMonthOffset++;
        renderStats();
      }
    };

    nav.appendChild(prevBtn);
    nav.appendChild(nextBtn);
    box.appendChild(nav);

    document.body.appendChild(box);
    return box;
  }

  async function renderStats() {
    const box = createBox();
    const content = document.getElementById(`${boxId}-content`);
    content.innerHTML = '📊 Loading monthly data...';

    const { from, to, label, y, m } = getDateRange(currentMonthOffset);
    const boardData = await fetchBoardData(from, to);
    const meritData = await fetchMeritData(y, m);

    if (!boardData) {
      content.innerHTML = '❌ Error loading posts.';
      return;
    }

    let html = `🧮 <b>Statistics for ${label}</b><br><br>`;
    html += `📝 <b>Posts written:</b> ${boardData.total_results_with_board}<br>`;
    boardData.boards.forEach(b => {
      html += `• ${b.name}: ${b.count}<br>`;
    });

    if (!meritData) {
      html += `<br>⭐ <b>Merits received:</b> Loading error.`;
    } else {
      html += `<br>⭐ <b>Merits received:</b> ${meritData.total}<br>`;
      const sorted = Object.entries(meritData.fromData).sort((a, b) => b[1] - a[1]);
      sorted.forEach(([name, count]) => {
        html += `• ${name}: ${count}<br>`;
      });
    }

    content.innerHTML = html;
  }

  if (location.href.includes(`u=${uid}`)) {
    renderStats();
  }
})();

Basta inserire UserID e UserNAME e lo script si avvia, viene visualizzato soltanto nella nostra pagina profilo

https://bitcointalk.org/index.php?action=profile;u=xxxxx

A voi le opinioni
Grazie in anticipo ☺️

Post
Topic
Board Italiano (Italian)
Re: [2025] Bitcoin Pizza Day su Bitcointalk 🍕
by
*Ace*
on 17/07/2025, 12:10:38 UTC
Wow veramente ci sono tutte queste teorie sul presunto satoshi?
Devo andare a cerca qualcosa su queste teorie
Post
Topic
Board Italiano (Italian)
Merits 3 from 1 user
Re: BITCOIN PUMP!
by
*Ace*
on 15/07/2025, 11:20:03 UTC
⭐ Merited by fillippone (3)
Curiosità storica:

All-time high Jul 14, 2025 (1 day ago) $123,091.61

All-time low Jul 14, 2010 (15 years ago) $0.04865

Preciso pure qua il nostro amico  Grin

Chissà se c'è ancora qualcuno che ha tenuto conservati i btc acquistati nel 2010
Saranno ormai miliardari, beati loro se ce ne sono 🤣
Post
Topic
Board Gambling
Re: [casino] list of all casinos -> https://casino.alttstats.casa/
by
*Ace*
on 15/07/2025, 09:23:54 UTC
Great idea babo. This tool will be useful for gamblers, add as much functionality as possible and you will get an indispensable tool for everyone
Post
Topic
Board Italiano (Italian)
Merits 1 from 1 user
Re: [2025] Bitcoin Pizza Day su Bitcointalk ?
by
*Ace*
on 15/07/2025, 06:39:33 UTC
⭐ Merited by Lillominato89 (1)


Esatto, anche perchè chi comprò le pizze (jercos) si trovava piuttosto distante da dove abitava laszlo, quindi sarebbe stato poco pratico!
Comunque la cosa bella di questo forum è che è tutto li, a disposizione di tutti! Basta andarsi a rileggere i messaggi.
Viviamo sulle spalle di giganti.


Adesso mi è venuto un flash in mente, io mi sono un po' diciamo immerso emotivamente da questo ritorno sul forum di Laszlo, forse per curiosità o per stima nei suoi confronti e dire wow abbiamo un visionario qui tra noi. Ma se al posto di Laszlo sarebbe tornato satoshi? Come sarebbe stata la reazione di tutta la community?

Comunque si hai ragione, questo forum è un registro di vita, puoi fisicamente e virtualmente sfogliare pagine di storia contemporanea