Il formato funscript, campo per campo
Il formato funscript è un oggetto JSON con una chiave essenziale, actions: una lista di coppie {"at", "pos"} che indicano una posizione da 0 a 100 in un istante espresso in millisecondi. Intorno ci sono version, inverted, range e metadata. Questa pagina definisce ogni campo, le convenzioni seguite dai file ed esattamente cosa fa AutoScript Sync quando ne legge e ne scrive uno.
Verificato sul codice dell'app il 21 settembre 2026. Descrive le convenzioni comuni, non una specifica formale.
La struttura
Un funscript è un oggetto JSON salvato come testo UTF-8 con estensione .funscript. Un piccolo file completo, nella forma in cui lo salva AutoScript Sync:
{
"version": "1.0",
"inverted": false,
"range": 100,
"metadata": {
"creator": "AutoScript Sync",
"format": "funscript"
},
"actions": [
{"at": 0, "pos": 50},
{"at": 350, "pos": 95},
{"at": 720, "pos": 5},
{"at": 1080, "pos": 95},
{"at": 1500, "pos": 5},
{"at": 5500, "pos": 5}
]
}
Gli ultimi due punti mantengono la stessa posizione per quattro secondi: una pausa si scrive come due punti con lo stesso pos, non come un vuoto. In JSON l'ordine delle chiavi non conta, e gli spazi sono liberi.
I campi
actions- Un array di punti, ciascuno un oggetto con
atepos. È l'unico campo di cui un player ha bisogno. Un file senza questo campo non è uno script utilizzabile. at- Il momento del punto in millisecondi dall'inizio del video, come intero.
1500è un secondo e mezzo dall'inizio. pos- La posizione da raggiungere in quel momento, come intero da 0 a 100. Cosa significano fisicamente 0 e 100 dipende dal dispositivo e dalle sue impostazioni; il file dice solo "a questo punto dell'escursione".
version- La versione del formato come stringa, di solito
"1.0". invertedtrueofalse. Se è true, le posizioni vanno lette capovolte, come100 − pos.range- Un numero, di solito
100, che descrive l'ampiezza dipos. La maggior parte dei file lo lascia a 100. metadata- Un oggetto per qualsiasi informazione sullo script: il programma che l'ha creato, un titolo, note, tag. Ai player non serve per riprodurre il file.
I file creati con gli editor contengono spesso chiavi aggiuntive di primo livello, come capitoli o segnalibri. Sono ammesse; un lettore che non le comprende dovrebbe ignorarle e, idealmente, conservarle.
Convenzioni seguite da un file ben formato
atè un numero intero di millisecondi, contati dall'inizio del video, mai negativo.posè un numero intero da 0 a 100.- Le azioni sono ordinate per
at, dalla prima all'ultima. - Nessuna coppia di azioni condivide lo stesso
at. - I numeri sono numeri JSON, non stringhe:
"at": 400, non"at": "400".
I programmi differiscono in quanto sono tolleranti quando un file viola queste regole. L'app desktop ripara ciò che può, come descritto qui sotto. Il nostro strumento per browser, Report Studio, non lo fa: presume che le azioni siano già ordinate, prende la durata dall'ultima azione, ignora inverted e range e rifiuta un file i cui valori at sono stringhe. Un file che segue tutte e cinque le convenzioni evita queste differenze.
Come AutoScript Sync legge un file
Quando apri uno script con Load Funscript…, lo trascini sulla finestra o apri un video con accanto uno script con lo stesso nome, l'app ripara le azioni invece di rifiutare il file:
- ordina le azioni per tempo;
- unisce le azioni che condividono lo stesso tempo, tenendo l'ultima;
- limita
posa 0–100 e porta a 0 i tempi negativi; - salta le voci che non riesce a leggere, senza dire quante sono;
- legge
rangema non lo usa mai per riscalare, quindi un file con un range diverso da 100 viene comunque trattato come 0–100; - mantiene
versioncosì com'è ("1.0"se manca).
Il prossimo aggiornamento (2.121.2, già compilato ma non ancora rilasciato) fa sì che il lettore accetti più file e conservi più del loro contenuto:
- i file salvati con un byte-order mark, o in UTF-16, si caricano invece di essere rifiutati;
inverted: trueviene applicato una volta al caricamento (100 − pos), con un avviso per te, e il file viene salvato di nuovo coninverted: false, così ogni altro player vede lo stesso movimento. L'app rilasciata ignora il flag, quindi un file invertito viene riprodotto al contrario;- i valori frazionari di
ateposvengono arrotondati al numero intero più vicino, e i valori NaN o infiniti vengono saltati; - le chiavi di primo livello sconosciute, come capitoli o segnalibri, vengono conservate e riscritte quando salvi; l'app rilasciata le scarta al salvataggio;
- un file che non è testo, non è JSON, non è un oggetto o non ha una lista
actionsriceve un messaggio in linguaggio semplice, e uno script senza azioni utilizzabili non viene associato al video.
Come AutoScript Sync scrive un file
Ogni script salvato dall'app, generato o modificato, segue le convenzioni sopra, qualunque cosa sia successa nell'editor:
- Azioni: sono scritte in ordine di tempo crescente, con tempi unici,
atcome numero intero non negativo di millisecondi eposcome numero intero da 0 a 100. Se due punti si arrotondano allo stesso millisecondo, vince il successivo. - Intestazione:
version,invertederangesono scritti così come sono; uno script generato riceve"1.0",falsee100. - Metadati:
creatorè sempre impostato su"AutoScript Sync"eformatsu"funscript". Salvare sopra lo script di un altro strumento ne sostituisce il creator. - Dettagli dell'analisi negli script generati: generatore, riepilogo del riconoscimento, tempi, percorso di tracciamento e un blocco
aicon l'etichetta del tipo di scena di ogni finestra di due secondi, la regione tracciata, quanto è stato riempito anziché misurato e i punteggi dell'elezione dell'ancora. - Salvataggio sicuro: il JSON viene scritto, indentato, in un file temporaneo e poi sostituito, così un crash a metà salvataggio non può corrompere lo script esistente.
- Backup: quando Generate salva accanto al video, uno script esistente viene prima copiato in
<name>.funscript.bak. Viene tenuto un solo backup; il Generate successivo lo sovrascrive.
Il file su disco non viene mai adattato a un dispositivo. Quando l'app invia uno script all'Autoblow AI Ultra, adatta una copia ai limiti del dispositivo e rimuove i metadati dell'analisi, mantenendo solo il movimento e alcuni campi dell'intestazione (generator, creator, format, version, range, stroke_expansion e un id se presente).
Errori comuni e come trovarli
Il validatore di funscript controlla ciascuno di questi nel tuo browser, senza caricare il file, ed elenca i problemi che trova.
- JSON non valido
- Una virgola o una parentesi mancante, oppure una virgola finale dopo l'ultima azione. Niente può leggere il file finché non viene corretto.
- Azioni mancanti o malformate
- Nessuna chiave
actions, oppure voci senzaateposnumerici. - Tempi fuori ordine
- Di solito deriva dall'unione di due script o dalla modifica a mano. I programmi che presumono azioni ordinate mostrano una durata sbagliata o salti nella riproduzione.
- Tempi ripetuti
- Due punti con lo stesso
ate posizioni diverse: un player non può trovarsi in due posti contemporaneamente. - Posizioni fuori da 0–100
- Un
possotto 0 o sopra 100 punta fuori dall'intervallo che un player mappa sul dispositivo. - Movimenti troppo veloci per il dispositivo
- Non è un errore di formato, ma un grande salto in poco tempo chiede più di quanto un dispositivo possa fare. Il validatore segnala i segmenti oltre un limite di velocità che imposti tu, 400 unità al secondo per impostazione predefinita.
Quando il file è JSON valido con una lista actions, il validatore offre una copia riparata: ordinata per tempo, con i tempi duplicati uniti, le posizioni limitate a 0–100 e i valori arrotondati, mantenendo tutto il resto del file. Non può riparare un JSON danneggiato o una lista actions mancante, e non rallenta i movimenti troppo veloci.
Domande
Esiste una specifica ufficiale del funscript?
Questa pagina descrive le convenzioni seguite dai file in circolazione e cosa AutoScript Sync legge e scrive. Non è uno standard formale, e non descriviamo come altri player gestiscono i casi limite.
Quanti punti al secondo dovrebbe avere uno script?
Il formato non fissa una frequenza. I punti vanno dove il movimento cambia direzione. Gli script generati da AutoScript Sync mettono un punto a ogni inversione del movimento misurato, quindi una scena lenta ne ha pochi e una veloce molti.
Perché il mio script dice "creator": "AutoScript Sync" se l'ha fatto qualcun altro?
L'app imprime il suo nome come creator a ogni salvataggio, anche quando salva sopra lo script di un altro strumento. Rimetti il nome dell'autore originale nei metadati, o nel tuo post, quando lo condividi.
AutoScript Sync conserva i capitoli e altre chiavi extra?
Nel prossimo aggiornamento (2.121.2), sì: le chiavi di primo livello sconosciute vengono conservate e riscritte. La versione rilasciata 2.121.1 le scarta al salvataggio, quindi tieni una copia dell'originale.
Da leggere dopo
- Controlla un file con il validatoreTrova gli errori descritti in questa pagina nel tuo browser e offre una copia riparata.
- Un'introduzione in linguaggio sempliceCos'è un funscript e come lo usa un dispositivo, senza il dettaglio dei campi.
- Come creare uno script, a mano o generatoIl flusso di lavoro dal video a un file salvato e controllato.
- L'hub di apprendimentoTutte e quattro le pagine di riferimento.
Genera script ben formati dai tuoi video
AutoScript Sync scrive funscript standard accanto ai tuoi video; la prova è l'app completa per un giorno.