Greasy Fork API
 
Description:
Parse information on greatest.deepsurf.us  
Dependencies
- GM.xmlHttpRequest
 
- GM.openInTab
 
Docs
Static Values
languages
A list of languages
GreasyFork.languages // ['ar', 'bg', 'cs', 'da', …]
version
Current Greasy Fork API version.
GreasyFork.version // e.g. '1.2.3'
Static Methods
parseScriptNode
| Argument | 
Required | 
Type | 
Description | 
node | 
Yes | 
HTMLElement | 
A script node (element) that includes data attributes | 
Returns information about script based on it's element.
Note: If script node doesn't have rating info (such as libraries), then properties ratingsBad, raingsOk, ratingsGood will not be included.
GreasyFork.parseScriptNode(document.querySelector('[data-script-id="437291"]')) /* Example response:
{
    cssAvailableAsJs: false
    node: <li data-script-id="437291" …>
    ratingsBad: 0
    ratingsGood: 12
    ratingsOk: 1
    scriptAuthors: { 824432: "NotYou" }
    scriptCreatedDate: "2021-12-19"
    scriptDailyInstalls: 7
    scriptId: "437291"
    scriptLanguage: "js"
    scriptName: "Open-Source Alternative Redirector"
    scriptRatingScore: 71.7
    scriptTotalInstalls: 6738
    scriptType: "public"
    scriptUpdatedDate: "2023-01-09"
    scriptVersion: "11.2.0"
    sensitive: false
}
*/
parseScriptMetadata
Returns user-script's metadata.
| Argument | 
Required | 
Type | 
Description | 
code | 
Yes | 
string | 
A user-script code that includes metadata // ==UserScript== ... // ==/UserScript== | 
GreasyFork.getScriptCode('437291').then(code => {
    const metadata = GreasyFork.parseScriptMetadata(code) // <-- This method
    console.log(metadata) // { author: "NotYou", name: "Open-Source Alternative Redirector", …}
})
getScriptData
Returns user-script's info.
| Argument | 
Required | 
Type | 
Description | 
id | 
Yes | 
string | 
A string that only contains numeric characters. | 
GreasyFork.getScriptData('437291').then(data => {
    console.log(data)
    /*
    Example response:
    {
        bad_ratings: 0
        code_updated_at: "2023-01-09T11:03:42.000Z"
        code_url: "https://greatest.deepsurf.us/scripts/437291-open-source-alternativ…director/code/Open-Source%20Alternative%20Redirector.user.js"
        contribution_amount: null
        contribution_url: null
        created_at: "2021-12-19T16:18:00.000Z"
        daily_installs: 7
        deleted: false
        description: "Redirects you from proprietary web-services to ethical     alternatives(front-end)."
        fan_score: "71.7"
        good_ratings: 12
        id: 437291
        license: "GNU General Public License v3.0 or later"
        locale: "en"
        name: "Open-Source Alternative Redirector"
        namespace: "-"
        ok_ratings: 1
        support_url: null
        total_installs: 6738
        url: "https://greatest.deepsurf.us/scripts/437291-open-source-            alternative-redirector"
        users: Array [ {…} ]
        version: "11.2.0"
    }
    */
})
getScriptCode
Returns user-script's code.
| Argument | 
Required | 
Type | 
Description | 
id | 
Yes | 
string | 
A string that only contains numeric characters. | 
isLibrary | 
No | 
boolean | 
Set to true if script is library (Default: false). | 
GreasyFork.getScriptCode('437291').then(code => {
    console.log(code)
    /* Example response:
    // ==UserScript==
    // @name Open-Source Alternative Redirector
    …
    */
})
getScriptHistory
Returns user-script's history.
| Argument | 
Required | 
Type | 
Description | 
id | 
Yes | 
string | 
A string that only contains numeric characters. | 
GreasyFork.getScriptHistory('437291').then(data => {
    console.log(data)
    /* Example response:
    [
        { version: '11.2.0', … }
        { version: '11.1.1', … }
        { version: '11.1.0', … }
        …
    ]
    */
})
getScriptStats
Returns user-script's stats history.
| Argument | 
Required | 
Type | 
Description | 
id | 
Yes | 
string | 
A string that only contains numeric characters. | 
GreasyFork.getScriptStats('437291').then(data => {
    console.log(data)
    /* Example response:
    {
        '2021-12-19': { installs: 2, update_checks: 0 }
        '2021-12-20': { installs: 11, update_checks: 1 }
        '2021-12-21': { installs: 6, update_checks: 4 }
        …
    }
    */
})
getScriptSet
Returns set of scripts.
| Argument | 
Required | 
Type | 
Description | 
id | 
Yes | 
string | 
A string that only contains numeric characters. | 
page | 
No | 
number | 
Page of script set. (Default: 1) | 
GreasyFork.getScriptSet('1').then(data => {
    console.log(data)
    /* Example response:
    [
        { id: 436446, … }
        { id: 468633, … }
        { id: 438657, … }
        …
    ]
    */
})
getUserData
Returns user's data.
| Argument | 
Required | 
Type | 
Description | 
id | 
Yes | 
string | 
A string that only contains numeric characters. | 
GreasyFork.getUserData('824432').then(data => {
    console.log(data)
    /* Example response:
    {
        id: 824432
        name: "NotYou"
        scripts: [ {…}, {…}, {…}, … ]
        url: "https://greatest.deepsurf.us/users/824432-notyou"
    }
    */
})
searchScripts
Returns result of search request to find user-scripts by query.
Note: enter blank string to just list popular scripts.
| Argument | 
Required | 
Type | 
Description | 
query | 
Yes | 
string | 
A search query. | 
page | 
No | 
number | 
Page of scripts search. (Default: 1) | 
GreasyFork.searchScripts('dark theme', 2).then(data => {
    console.log(data)
    /* Example response:
    [
        { id: 25563, … }
        { id: 371158, … }
        { id: 435764, … }
        …
    ]
    */
})
searchUsers
Returns result of search request to find users by query.
Note: enter blank string to just list new users.
| Argument | 
Required | 
Type | 
Description | 
query | 
Yes | 
string | 
A search query. | 
page | 
No | 
number | 
Page of users search. (Default: 1) | 
GreasyFork.searchUsers('notyou').then(data => {
    console.log(data)
    /* Example response:
    [
        { id: 824432, … }
        { id: 1087451, … }
        { id: 1079658, … }
        …
    ]
    */
})
installScript
Opens installation tab of entity (user-script / user-style).
| Argument | 
Required | 
Type | 
Description | 
id | 
Yes | 
string | 
A string that only contains numeric characters. | 
type | 
No | 
'js' or 'css' | 
Language of entity. (Default: 'js') | 
GreasyFork.installScript('437291') // To install user-script
GreasyFork.installScript('439627', 'css') // to install user-style
/*
Note:
GreasyFork.installScript('437291') is same as
GreasyFork.installScript('437291', 'js')
*/
Instance
An instance can only be initialized at greatest.deepsurf.us or sleazyfork.org, at other hosts constructor will throw an error. To create an instance do this:
const GF = new GreasyFork()
Instance Methods
listScripts
Returns current script list and script list's type, if scirpt list doens't exist, then throws an error.
Note: There are only 3 script list's types. 1) browse — browsed user-scripts 2) user — script list in user page 3) unknown — in cases when script list is created in unknown list.
const GF = new GreasyFork()
GF.listScripts()
/* Example response:
{
    list: [ {…}, {…}, {…}, … ]
    type: 'user'
}
*/
signOut
Sign out from Greasy Fork account.
const GF = new GreasyFork()
GF.signOut()