{"id":23969088,"url":"https://github.com/jiab77/sl-friends","last_synced_at":"2026-04-15T20:03:04.947Z","repository":{"id":87588373,"uuid":"415905650","full_name":"Jiab77/sl-friends","owner":"Jiab77","description":"A simple script to see your Second Life friends connection status from terminal","archived":false,"fork":false,"pushed_at":"2024-08-12T17:08:55.000Z","size":72,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-07T00:59:18.120Z","etag":null,"topics":["bash","friends","secondlife"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jiab77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-11T11:56:12.000Z","updated_at":"2024-08-12T17:08:59.000Z","dependencies_parsed_at":"2023-09-25T00:23:46.180Z","dependency_job_id":"a1fe42a6-56a4-42ac-b715-31c30fd7b9d5","html_url":"https://github.com/Jiab77/sl-friends","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiab77%2Fsl-friends","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiab77%2Fsl-friends/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiab77%2Fsl-friends/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jiab77%2Fsl-friends/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jiab77","download_url":"https://codeload.github.com/Jiab77/sl-friends/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240498223,"owners_count":19811216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","friends","secondlife"],"created_at":"2025-01-07T00:59:48.759Z","updated_at":"2026-04-15T20:03:04.939Z","avatar_url":"https://github.com/Jiab77.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sl-friends\n\nA simple script to see your [Second Life](https://secondlife.com) friends connection status from terminal.\n\n\u003e [!NOTE]\n\u003e You can find a more modern and much better version of my work called __[sl-friends-tui](https://github.com/ohmymex/sl-friends-tui)__.\n\u003e It has been made by my very talented friend __[OhMyMex](https://github.com/ohmymex)__. Please take a look at his work :wink:\n\n## Research\n\nThis script is based on the research published [here](https://gist.github.com/Jiab77/6c38f6566d68784f4591b60c0269a8f0).\n\n## Features\n\n* Show online or offline friends in your terminal\n* Show subscribed groups and members count\n* Create desktop notification when given friend is connected\n* Print your owned L$ (_can be disabled_)\n\n## Screenshot\n\n![image](https://user-images.githubusercontent.com/9881407/136857941-cd9e5248-d325-45d5-bcbc-144769e23f67.png)\n\n\u003e The screenshot might be outdated.\n\n## Dependencies\n\nNormally `awk`, `grep`, `sed` and `watch` should be already available by default on every __Linux__ distributions but not [`htmlq`](https://github.com/mgdm/htmlq). To install it, simply run the following commands:\n\n```bash\n# Install 'cargo' (the Rust installer)\nsudo apt install -y cargo\n\n# Install 'htmlq' (the required Rust binary)\ncargo install htmlq\n\n# Create required symlink\nsudo ln -sfvn $(which htmlq) /usr/bin/htmlq\n```\n\n## Configuration\n\nYou can edit the script and modify the following values:\n\n```conf\nDEBUG=true\nSL_TOKEN=\"\"\nSL_TOKEN_ENCODED=false\nSL_STATUS_FILTER=\"online\"\nSL_GROUPS_URL=\"https://secondlife.com/my/widget-groups.php\"\nSL_FRIENDS_URL=\"https://secondlife.com/my/widget-friends.php\"\nSL_LINDENS_URL=\"https://secondlife.com/my/widget-linden-dollar.php\"\nSL_GROUPS_LIST_HTML_FILTER=\".group-status strong\"\nSL_GROUPS_MEMBERS_HTML_FILTER=\".group-status td\"\nSL_FRIENDS_HTML_FILTER=\"#widgetFriendsOnlineContent .friend-status .trigger.${SL_STATUS_FILTER} span[title]\"\nSL_LINDENS_HTML_FILTER=\".main-widget-content strong\"\nSL_INTERNAL_NAMES=false\nSL_GROUPS=false\nSL_LINDENS=false\nSL_NOTIFY=false\nCURL_USER_AGENT=\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36\"\nWATCH_TITLE=true\nUSE_TOR=false\n```\n\nOr simply rename the config template from `sl-friends.template.conf` to __`sl-friends.conf`__ at the root of the script.\n\nYou can also use the `-c` or `--config` argument to specifiy another path or config filename.\n\nMost of the configuration values can be also changed with the arguments described in the [usage](#usage) section.\n\n## Installation\n\n```bash\n# Make the script executable\nchmod -v +x sl-friends.sh\n\n# Make a symlink to /usr/bin (optional)\nsudo ln -sfvn `pwd`/sl-friends.sh /usr/bin/sl-friends\n```\n\n## Usage\n\n```\n$ ./sl-friends.sh -h\n\nUsage: ./sl-friends.sh\n\nArguments:\n\n    -c|--config \u003c/path/to/config/file\u003e (Default: ./sl-friends.conf)\n    -t|--token [session-token] (Warning: should not be used as the token will be stored in the command history!)\n    -f|--filter \u003conline|offline\u003e (Default: online)\n    -u|--url \u003csecond-life-friends-url\u003e (Default: https://secondlife.com/my/widget-friends.php)\n    -q|--html-id \u003csecond-life-html-id-to-target\u003e (Default: #widgetFriendsOnlineContent)\n    -a|--user-agent \u003cuser-agent string\u003e (Default: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36)\n    -b|--base64 (Decode base64 encoded session token. [implies -t|--token] - Default: false)\n    -i|--show-internal-names (Show Second Life internal names. Default: false)\n    -G|--show-groups-list (Show subscribed groups list. Default: false)\n    -g|--show-groups (Show subscribed groups. Default: false)\n    -l|--show-lindens (Show amount of owned linden dollars. Default: false)\n    -n|--no-title (Remove 'watch' command title displayed. Default: false)\n    -N|--notify \u003cuser\u003e (Notify when given user is connected.)\n    -r|--refresh \u003cseconds\u003e (Define 'watch' command refresh rate. Default: 5 seconds)\n    -h|--help (Show this message)\n    --tor (Proxy all requests to Tor using the SOCKS5 Hostname protocol)\n    --debug (Enable debug output when disabled by default)\n    -D (Disable debug output when enabled by default)\n\nExamples:\n\n    sl-friends.sh\n    sl-friends.sh -inr 10\n    sl-friends.sh --show-internal-names --no-title --refresh 10\n    sl-friends.sh --refresh 10 --notify john.doe\n    sl-friends.sh -r 10 -N john.doe\n    sl-friends.sh -t (it will ask for session-token)\n    sl-friends.sh --token (it will ask for session-token)\n    sl-friends.sh -bt \u003cbase64 encoded session-token\u003e\n    sl-friends.sh --base64 --token \u003cbase64 encoded session-token\u003e\n    sl-friends.sh -f offline\n    sl-friends.sh --filter offline\n\nNote:\n\nAs I am still pretty bad in arguments parsing, you might need to place arguments at the right position if you want to chain them...\n\nError codes:\n\n    1 - Missing required binary\n    2 - Missing Second Life session token\n    3 - Given config file does not exist\n\nAuthor:\n\nJiab77\n\n```\n\n## Notifications\n\nThere is now the possibility to send mobile notifications within the [ntfy.sh](https://ntfy.sh) service and the [ntfy](https://docs.ntfy.sh/#step-1-get-the-app) application.\n\nAll you need to do to enable this feature is the following:\n\n1. Create a new config file called `sl-notify.conf` and place it inside your `~/.config` folder, with the following content:\n\n```bash\nMOBILE_NOTIF=true\n```\n\n2. Install the [ntfy](https://docs.ntfy.sh/#step-1-get-the-app) application and add the given channel name from the script:\n\n```console\nNotification sent to: https://ntfy.sh/sl-[REDACTED]\n```\n\n\u003e [!NOTE]\n\u003e The `[REDACTED]` part will be replaced by your dedicated __User ID__, so keep it in private place and don't share it to anyone!\n\n\u003e [!IMPORTANT]\n\u003e If you share your generated __User ID__, anyone knowing it will have access to your connected friends from the notifications.\n\n3. You can test the dedicated script __[sl-notify.sh](sl-notify.sh)__ to verify that the notifications are correctly sent that way:\n\n```console\n# Remove existing test file (used to avoid spamming you with tons of notifications)\nrm -fv /tmp/.sl-user-connected\n\n# Run the notification script\n./sl-notify.sh \"single-friend\"\n\n# OR multiple friends\n./sl-notify.sh \"first-friend|second-friend|third-friend|and-so-on\"\n\n# Remove the created test file again (to avoid conflicting with the main 'sl-friends.sh' script)\nrm -fv /tmp/.sl-user-connected\n```\n\n\u003e [!NOTE]\n\u003e You normally don't have to run the __[sl-notify.sh](sl-notify.sh)__ script manually as it is automatically called from the __[sl-friends.sh](sl-friends.sh)__ script when called with `-N \"first-friend|second-friend|third-friend|and-so-on\"`.\n\n\u003e [!IMPORTANT]\n\u003e This feature is still quite experimental and may not work properly yet.\n\u003e A better implementation might be added in the __[sl-friends-tui](https://github.com/ohmymex/sl-friends-tui)__ version made by my friend __[OhMyMex](https://github.com/ohmymex)__.\n\n## Author\n\n* __Jiab77__\n\n## License\n\n[WFTPL](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiab77%2Fsl-friends","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiab77%2Fsl-friends","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiab77%2Fsl-friends/lists"}