Frecent
⏳ Track and rank objects by their "frecency"
Install / Use
/learn @johnsylvain/FrecentREADME
Frecent
Manage the "frencency" of objects
What is frecency?
Frecency is a heuristic that combines frequency and recency into a single measure. It is useful for predicting the likelihood of users revisiting certain links, websites, etc.
More information can be found here
Features
- Simple API
- Lightweight
Methods
frecent.load(items)
Load an array of
itemsthat you wish to be tracked. Ideally, this should be an array of Objects.
frecent.visit(prop, attr, [cb])
Visit an item by passing the property path you wish to target (
prop) and the value of that target property (attr). Optional callback (cb).
Example:
frecent.visit('data.name.first', 'John'). The first argument tells frecent the path to the target path. The second argument should be the expected value to the path specified. See Usage for more details.
frecent.get()
Retrieve the ranked objects. See Usage to see the returned data structure.
Usage
import Frecent from 'frecent'
const frecent = new Frecent()
// initialize with custom decay time
// Options: hour, day, week, month
// default: day
const frecent = new Frecent({
decay: 'hour'
})
// Items to be tracked can be loaded from localStorage, a DB, etc
const itemsToTrack = [
{ url: 'https://example.com' },
{ url: 'https://example.org' }
]
// Alternatively, you can load previously parsed data
const itemsToTrack = [
{
body: {url: 'https://example.com' },
_visits: 2,
_lastVisited: [Date|Timestamp],
_weight: 140
},
{
body: {url: 'https://example.org' },
_visits: 1,
_lastVisited: [Date|Timestamp],
_weight: 90
}
]
frecent.load(itemsToTrack)
// 'Visit' a item (will increase the weight of the item.
// Therefore increasing the likelihood of revisiting)
frecent.visit('url', 'https://example.com')
// Example: if object has nested properties
// use dot or bracket syntax to notate nested properties
frecent.visit('data.url', 'https://example.com')
// Retrieve items ranked by 'Frecency'
const ranked = frecent.get()
// [
// {
// body: { url: 'https://example.com' },
// _visits: 1,
// _lastVisited: [Date],
// _weight: 100,
// }
// ]
Releases
1.0.4: Specify a custom decay time
1.0.3: Use dot or bracket notation in visit method via object-path-resolve
Contributing
You can request a new feature by submitting an issue. If you would like to implement a new feature feel free to issue a Pull Request.
License
Frecent is protected under the MIT License
Related Skills
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
342.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
