Skip to content

Commit 64e8afe

Browse files
authoredFeb 1, 2021
Add plugin_anilist_limit_characters and plugin_languages_threshold options (#89)
1 parent eb89bc3 commit 64e8afe

File tree

8 files changed

+39
-5
lines changed

8 files changed

+39
-5
lines changed
 

‎source/plugins/anilist/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,5 @@ These sections can also be filtered by media type, which can be either `anime`,
3737
plugin_anilist_limit: 2 # Limit to 2 entry per section (characters section excluded)
3838
plugin_anilist_shuffle: yes # Shuffle data for more varied outputs
3939
plugin_anilist_user: .user.login # Use same username as GitHub login
40+
plugin_anilist_limit_characters: 22 # Limit to 22 characters in characters section (🚧 @master feature)
4041
```

‎source/plugins/anilist/index.mjs

+9-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
return null
88

99
//Load inputs
10-
let {limit, medias, sections, shuffle, user} = imports.metadata.plugins.anilist.inputs({data, account, q})
10+
let {limit, "limit.characters":limit_characters, medias, sections, shuffle, user} = imports.metadata.plugins.anilist.inputs({data, account, q})
1111

1212
//Initialization
1313
const result = {user:{stats:null, genres:[]}, lists:Object.fromEntries(medias.map(type => [type, {}])), characters:[], sections}
@@ -79,11 +79,18 @@
7979
const {data:{data:{User:{favourites:{characters:{nodes, pageInfo:cursor}}}}}} = await imports.axios.post("https://graphql.anilist.co", {variables:{name:user, page}, query:queries.anilist.characters()})
8080
page++
8181
next = cursor.hasNextPage
82-
for (const {name:{full:name}, image:{medium:artwork}} of nodes)
82+
for (const {name:{full:name}, image:{medium:artwork}} of nodes) {
83+
console.debug(`metrics/compute/${login}/plugins > anilist > processing ${name}`)
8384
characters.push({name, artwork:artwork ? await imports.imgb64(artwork) : "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mOcOnfpfwAGfgLYttYINwAAAABJRU5ErkJggg=="})
85+
}
8486
} while (next)
8587
//Format and save results
8688
result.characters = shuffle ? imports.shuffle(characters) : characters
89+
//Limit results
90+
if (limit_characters > 0) {
91+
console.debug(`metrics/compute/${login}/plugins > anilist > keeping only ${limit_characters} characters`)
92+
result.characters.splice(limit_characters)
93+
}
8794
}
8895

8996
//Results

‎source/plugins/anilist/metadata.yml

+8
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ inputs:
4242
default: 2
4343
min: 0
4444

45+
# Number of entries to display in characters section
46+
# Set to 0 to disable limitations
47+
plugin_anilist_limit_characters:
48+
description: Maximum number of entries to display in characters section
49+
type: number
50+
default: 22
51+
min: 0
52+
4553
# Shuffle AniList data for varied outputs
4654
plugin_anilist_shuffle:
4755
description: Shuffle AniList data

‎source/plugins/anilist/tests.yml

+2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
token: NOT_NEEDED
4646
plugin_anilist: yes
4747
plugin_anilist_limit: 0
48+
plugin_anilist_limit_characters: 10
4849
plugin_anilist_shuffle: no
4950
plugin_anilist_user: user
5051

@@ -56,5 +57,6 @@
5657
plugin_anilist_medias: manga, anime
5758
plugin_anilist_sections: favorites, watching, reading, characters
5859
plugin_anilist_limit: 0
60+
plugin_anilist_limit_characters: 22
5961
plugin_anilist_shuffle: no
6062
plugin_anilist_user: user

‎source/plugins/languages/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ It is also possible to use a predefined set of colors from [colorsets.json](colo
3030
plugin_languages_skipped: my-test-repo # List of repositories to skip
3131
plugin_languages_colors: "0:orange, javascript:#ff0000, ..." # Make most used languages orange and JavaScript red
3232
plugin_languages_details: bytes-size, percentage # Additionally display total bytes size and percentage
33+
plugin_languages_threshold: 2% # Hides all languages less than 2% (🚧 @master feature)
3334
```

‎source/plugins/languages/index.mjs

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
return null
88

99
//Load inputs
10-
let {ignored, skipped, colors, details} = imports.metadata.plugins.languages.inputs({data, account, q})
10+
let {ignored, skipped, colors, details, threshold} = imports.metadata.plugins.languages.inputs({data, account, q})
11+
threshold = (Number(threshold.replace(/%$/, ""))||0)/100
1112

1213
//Custom colors
1314
const colorsets = JSON.parse(`${await imports.fs.readFile(`${imports.__module(import.meta.url)}/colorsets.json`)}`)
@@ -41,7 +42,7 @@
4142

4243
//Compute languages stats
4344
console.debug(`metrics/compute/${login}/plugins > languages > computing stats`)
44-
languages.favorites = Object.entries(languages.stats).sort(([an, a], [bn, b]) => b - a).slice(0, 8).map(([name, value]) => ({name, value, size:value, color:languages.colors[name], x:0}))
45+
languages.favorites = Object.entries(languages.stats).sort(([an, a], [bn, b]) => b - a).slice(0, 8).map(([name, value]) => ({name, value, size:value, color:languages.colors[name], x:0})).filter(({value}) => value/languages.total > threshold)
4546
const visible = {total:Object.values(languages.favorites).map(({size}) => size).reduce((a, b) => a + b, 0)}
4647
for (let i = 0; i < languages.favorites.length; i++) {
4748
languages.favorites[i].value /= visible.total

‎source/plugins/languages/metadata.yml

+7-1
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,10 @@ inputs:
4747
values:
4848
- bytes-size # Languages total size written in bytes
4949
- percentage # Languages proportions in %
50-
default: ""
50+
default: ""
51+
52+
# Minimum threshold (in percentage) to reach for languages to be displayed
53+
plugin_languages_threshold:
54+
description: Minimum threshold
55+
type: string
56+
default: 0%

‎source/plugins/languages/tests.yml

+8
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@
3333
plugin_languages: yes
3434
plugin_languages_details: percentage
3535

36+
- name: Language plugin (with threshold)
37+
uses: lowlighter/metrics@latest
38+
with:
39+
token: MOCKED_TOKEN
40+
plugin_languages: yes
41+
plugin_languages_threshold: 2%
42+
3643
- name: Language plugin (complete)
3744
uses: lowlighter/metrics@latest
3845
with:
@@ -42,3 +49,4 @@
4249
plugin_languages_skipped: metrics
4350
plugin_languages_colors: rainbow
4451
plugin_languages_details: bytes-size, percentage
52+
plugin_languages_threshold: 2%

0 commit comments

Comments
 (0)
Failed to load comments.