This is for text I use frequently incredibly rarely.

scots

edit

sco-1

edit

sco-2

edit

sco-3

edit

sco-4

edit

sco-N

edit
The code used to generate this
use std::{collections::HashMap, thread};

use chrono::{prelude::*, Duration};
use mediawiki::api_sync::ApiSync};

static ISO_8601_FMT: &str = "%Y-%m-%dT%H:%M:%SZ";

fn make_map(params: &[(&str, &str)]) -> HashMap<String, String> {
    params.iter().map(|(k, v)| (k.to_string(), v.to_string())).collect()
}

fn main() {
    let time_90_days_ago = Utc::now() - Duration::days(90);
    let time_str = time_90_days_ago.format(ISO_8601_FMT).to_string();

    for level in &["1", "2", "3", "4", "N"] {
        println!("== sco-{} ==", level);
        let category = format!("Category:User sco-{}", level);
        let users_query = make_map(&[
            ("action", "query"),
            ("list", "categorymembers"),
            ("cmtitle", &category),
            ("cmprop", "title"),
            ("cmnamespace", "2"), // user
        ]);
        let mut api = ApiSync::new("https://en.wikipedia.org/w/api.php").unwrap();
        api.set_user_agent("QueryActiveUsers/0.1 (https://en.wikipedia.org/wiki/User:Enterprisey) mediawiki_rs/0.2.0");
        let users = api.get_query_api_json_limit_iter(&users_query, None)
            .map(|user| user.unwrap())
            .filter_map(|user| user["query"]["categorymembers"][0]["title"].as_str().map(ToString::to_string));
        for user in users {
            let user = user.split_terminator('/').next().unwrap();
            let contribs_query = make_map(&[
                ("action", "query"),
                ("list", "usercontribs"),
                ("ucuser", &user),
                ("uclimit", "1"),
                ("ucprop", "timestamp"),
                ("ucend", &time_str),
            ]);
            let contribs = api.get_query_api_json_all(&contribs_query).unwrap();
            let contribs = contribs["query"]["usercontribs"].as_array().unwrap();
            if let Some(t) = contribs.get(0) {
                println!("* {{{{user|{}}}}} {}", user, t["timestamp"].as_str().unwrap().split_terminator('T').next().unwrap());
            }
            thread::sleep(std::time::Duration::from_millis(500));
        }
    }
}

Template for Template:Infobox MTR station replacement

edit
{{Infobox station
|name=
|native_name=
|native_name_lang=zh
|symbol_location=hk
|symbol=wrl
|type=[[Hong Kong]] [[MTR]] rapid transit station
|image=
|caption=
|address=
|borough=
|coordinates_display=inline,title
|latitude=
|longitude=
|line={{HK-MTR box|West Rail}}
|platforms=
|tracks=
|structure=
|code=
|opened={{Start date|YYYY|MM|DD|df=y}}
|services={{s-rail|title=HK-MTR}}
|map_type=Hong Kong MTR
}}

AfC "significant coverage" comment

edit

Please note that for [[WP:N|notability]] to be established, your topic must have received [[WP:GNG|significant coverage]] ([https://en.wikipedia.org/wiki/Wikipedia:Notability#cite_note-1 for example]) in [[WP:RS|reliable sources]]. Feel free to re-submit once you've added some sources that do this.

What "Input link" is commonly used for

edit

{{edit|Special:MyTalk|'''ask for help on your talk page'''|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}}

How to make a user script into an auto-gadget-installer

edit

if ( mw.user.options.get('gadget-prosesize') === null ) new mw.Api().saveOption('gadget-prosesize', '1'); (from Special:Diff/926105964)