{"id":37215483,"url":"https://github.com/krasoffski/lsgbc","last_synced_at":"2026-01-15T00:55:20.093Z","repository":{"id":57585461,"uuid":"111223307","full_name":"krasoffski/lsgbc","owner":"krasoffski","description":"Command line interface for couponsfromchina.com.","archived":false,"fork":false,"pushed_at":"2021-06-17T14:21:56.000Z","size":3914,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T14:28:05.871Z","etag":null,"topics":["cli","couponsfromchina","gearbest","golang"],"latest_commit_sha":null,"homepage":"https://couponsfromchina.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krasoffski.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}},"created_at":"2017-11-18T17:05:30.000Z","updated_at":"2021-06-17T14:21:59.000Z","dependencies_parsed_at":"2022-09-10T15:51:34.600Z","dependency_job_id":null,"html_url":"https://github.com/krasoffski/lsgbc","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/krasoffski/lsgbc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krasoffski%2Flsgbc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krasoffski%2Flsgbc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krasoffski%2Flsgbc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krasoffski%2Flsgbc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krasoffski","download_url":"https://codeload.github.com/krasoffski/lsgbc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krasoffski%2Flsgbc/sbom","scorecard":{"id":569572,"data":{"date":"2025-08-11","repo":{"name":"github.com/krasoffski/lsgbc","commit":"22ef5f50f7523b2bab02934e2fabd7036800f3ea"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.0.6 not signed: https://api.github.com/repos/krasoffski/lsgbc/releases/9998608","Warn: release artifact v0.0.5 not signed: https://api.github.com/repos/krasoffski/lsgbc/releases/9503668","Warn: release artifact v0.0.4 not signed: https://api.github.com/repos/krasoffski/lsgbc/releases/9223444","Warn: release artifact v0.0.2 not signed: https://api.github.com/repos/krasoffski/lsgbc/releases/9098819","Warn: release artifact v0.0.6 does not have provenance: https://api.github.com/repos/krasoffski/lsgbc/releases/9998608","Warn: release artifact v0.0.5 does not have provenance: https://api.github.com/repos/krasoffski/lsgbc/releases/9503668","Warn: release artifact v0.0.4 does not have provenance: https://api.github.com/repos/krasoffski/lsgbc/releases/9223444","Warn: release artifact v0.0.2 does not have provenance: https://api.github.com/repos/krasoffski/lsgbc/releases/9098819"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T15:56:33.386Z","repository_id":57585461,"created_at":"2025-08-20T15:56:33.386Z","updated_at":"2025-08-20T15:56:33.386Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28440841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:34:46.850Z","status":"ssl_error","status_checked_at":"2026-01-15T00:34:46.551Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cli","couponsfromchina","gearbest","golang"],"created_at":"2026-01-15T00:55:19.080Z","updated_at":"2026-01-15T00:55:20.071Z","avatar_url":"https://github.com/krasoffski.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e # Source site `https://couponsfromchina.com` might be down. That is why parser is not able to fetch required information.\n\n# lsgbc - List GearBest Coupons\n[![Build Status](https://travis-ci.org/krasoffski/lsgbc.svg?branch=master)](https://travis-ci.org/krasoffski/lsgbc)\n[![Code Climate](https://codeclimate.com/github/krasoffski/lsgbc/badges/gpa.svg)](https://codeclimate.com/github/krasoffski/lsgbc)\n[![Say Thanks!](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/krasoffski)\n\n## Objectivity\nIn short words, `lsgbs` is a command line interface for\nhttps://couponsfromchina.com/ which allows you to sort, include or exclude\ndifferent types of items for the best deal look up.\n\n## Installation\n\nThere are compiled binaries for `amd64` architecture for linux, windows and\ndarwin platforms with name like `lsgbc-linux-amd64`. Please, find these files in\nthe release menu of the project.\n\n### Manual installation\n\nFor creating binaries you need `Git` and `Golang` compiler with version equal\nor bigger than `1.8` installed. Please, make sure you have properly configured\n`GOPATH` and system path variables:\n - Add `$GOROOT/bin` to system path.\n - Add `$GOPATH/bin` to system path.\n\n#### Using `go get`\n\n```bash\n$ go get github.com/krasoffski/lsgbc\n```\n\n#### From sources\n\nBefore all, please clone this repository with command:\n\n```bash\n$ git clone https://github.com/krasoffski/lsgbc\n```\n\nOr download archive with source code.\n\n```bash\n$ wget https://github.com/krasoffski/lsgbc/archive/master.zip\n$ unzip master.zip\n```\n\nAnd change working directory to cloned repository: `cd lsgbc`\n\n\n#### Using `make all` target\n\nInstallation with `make all` target performs following steps (requires `make`):\n - Removes `bin` directory in the root of repository if any.\n - Creates binary with name `lsgbc` by default for host platform with in `bin`\n   directory.\n\n#### Using `make release` target\n\nInstallation with `make release` target performs following steps (requires\n`make`, `zip`, `md5sum`):\n - Removes `bin` directory in the root of repository if any.\n - Creates binaries with names like `lsgbc-windows-amd64` for each platform\n   (windows, linux, darwin).\n - Pack each binary to zip archive with names like\n   `lsgbc-v0.0.6-windows-amd64.zip`\n - Create file `md5sum.txt` for archived zip files.\n\n```bash\n$ ls -S -1 ./bin/\nlsgbc-darwin-amd64\nlsgbc-linux-amd64\nlsgbc-windows-amd64.exe\nlsgbc-v0.0.6-darwin-amd64.zip\nlsgbc-v0.0.6-linux-amd64.zip\nlsgbc-v0.0.6-windows-amd64.zip\nmd5sum.txt\n```\n\n#### Without `make` utility\n\nIf you get stuck with `make` command, e.g. on `windows` platform, you can\nperform all steps manually:\n\n - Build executable file for your platform from root directory of repository.\n    ```\n    $ go build\n    ```\n - Check created binary.\n    ```\n    $ ./lsgbc -h\n    Usage of ./lsgbc:\n      -B, --best=false: show only best deals\n      -C, --compact=false: use compact table representation\n      -F, --flash-sale=false: show only flash sale deals\n      -l, --list=\"flashlight\": used coupons list, one from: 3d,...,xiaomi\n      -M, --max-price=1000: maximum discount price\n      -m, --min-price=0: minimal discount price\n      -n, --names=\"*\": comma separated list of names (case insensitive), e.g. 'xx,y*,zz'\n      -S, --sort-by=\"price\": sort table by column, 'price' or 'discount'\n      -V, --version=false: show version and exit\n    ```\n\n## Usage\n\nFor example, you would like to know current price with coupon for `Jetbeam` and\n`Eagle Eye` flashlights with price less than `20 ye`. To sort out names you can\nspecify beginning of name like `-n jet`, this is equivalent of `-n \"Jet*\"`.\n\n\u003e __Note:__ by default rows are sorted by ascending the `PRICE`.\n\nThis can be achieved with following command:\n\n```\n$ ./lsgbc -M 20 -n jet,eagle\n\n  NU  |                  NAME                  | PRICE, $ | DISCOUNT, % | LOWEST, $\n+-----+----------------------------------------+----------+-------------+-----------+\n  155 | Jetbeam JET-u Flashlight               |     10.9 |           - |       7.0\n  108 | Eagle Eye X6 HOST Flashlight           |     14.1 |        10.0 |      11.0\n  156 | JETBeam JET-UV Flashlight              |     14.9 |           - |      11.6\n  152 | Jetbeam JET-I MK Flashlight            |     15.0 |           - |      10.0\n  150 | JETBeam i4 PRO Battery Charger EU Plug |     15.9 |        10.0 |      11.7\n  102 | Eagle Eye X2R 6000-6500K Flashlight    |     16.5 |        10.0 |      14.0\n  103 | Eagle Eye X2R NW Flashlight            |     16.9 |        10.0 |      12.5\n+-----+----------------------------------------+----------+-------------+-----------+\n                                                               ITEMS    |     7\n                                                          +-------------+-----------+\n\n```\n\nThere are following fields:\n\n - `NO`: number of product in the corresponding table.\n - `NAME`: product name from table.\n - `PRICE`: product price with applied coupon.\n - `DISCOUNT`: discount in percents comparing with regular price without coupon.\n - `LOWEST`: lowest price for this product during monitoring.\n\n### Compact representation\n\nWhen you get familiar with column names, you might want to use compact mode\n`-C/--compact` on small terminals.\n\n```\n$ ./lsgbc -M 20 -n Jet,Eagle --compact\n\n   #  |                   N                    | P, $ | D, % | L, $\n+-----+----------------------------------------+------+------+------+\n  155 | Jetbeam JET-u Flashlight               | 10.9 |    - |  7.0\n  108 | Eagle Eye X6 HOST Flashlight           | 14.1 | 10.0 | 11.0\n  156 | JETBeam JET-UV Flashlight              | 14.9 |    - | 11.6\n  152 | Jetbeam JET-I MK Flashlight            | 15.0 |    - | 10.0\n  150 | JETBeam i4 PRO Battery Charger EU Plug | 15.9 | 10.0 | 11.7\n  102 | Eagle Eye X2R 6000-6500K Flashlight    | 16.5 | 10.0 | 14.0\n  103 | Eagle Eye X2R NW Flashlight            | 16.9 | 10.0 | 12.5\n+-----+----------------------------------------+------+------+------+\n                                                                7\n                                                             +------+\n```\n\n### Flash sale and history\n\nAttentive users might have noticed that some items do not have corresponding\n`DISCOUNT` percent or `LOWEST` price values. Instead, this value might be\nreplaced with `-` char.\n\nDash `-` character as value has following meanings:\n\n- `DISCOUNT`: you can buy this item without using of coupon (flash sale).\n- `LOWEST`: there is no information about the lowest price for this item.\n\n### The best deal\n\n`lsgbc` allows to distinguish \"best\" deals with option `-B/--best`. This filter\nshows only items with current `PRICE` equal or less than `LOWEST*1.1`.\n\nFor example:\n\n```\n$ ./lsgbc --max-price=15 --names=convoy --best\n\n  NU |              NAME               | PRICE, $ | DISCOUNT, % | LOWEST, $\n+----+---------------------------------+----------+-------------+-----------+\n  70 | Convoy S2+ CW Flashlight [GW4]  |     12.0 |        11.8 |      11.0\n  62 | Convoy S2 V2-1A Flashlight      |     12.3 |           - |      12.3\n  60 | Convoy S2 U6-3A Grey Flashlight |     12.7 |           - |      12.0\n  61 | Convoy S2 U6-4B Flashlight      |     12.8 |           - |      12.6\n+----+---------------------------------+----------+-------------+-----------+\n                                                       ITEMS    |     4\n                                                  +-------------+-----------+\n```\nThis table contains only deals for:\n - Maximum `PRICE` is `$15`.\n - `CATEGORY` equals to `led-flashlights`.\n - `PRICE` is around of `LOWEST`.\n - Items sorted by ascending the `PRICE`.\n\nE.g. the `PRICE` of `Lumintop Tool Nichia 219BT Flashlight` is `$10` and this\nless than `LOWEST` price multiply by `1.1` (10.0 \u003c 10.01=9.1*1.1).\n\n### Sorting items\n\nYou can sort items by `PRICE` or by `DISCOUNT`. This can be done using option\n`-S/--sort-by` with value `discount` or `d` for shortness to sort by decreasing\nof `DISCOUNT` percents.\n\n```\n$ ./lsgbc -C -M 30 -c led -n Lumintop -S d\n\n   #  |                       N                        | P, $ | D, % | L, $\n+-----+------------------------------------------------+------+------+------+\n  184 | Lumintop Copper Tool AAA XP-G2 R5 Flashlight   | 21.0 | 30.0 | 20.0\n  188 | Lumintop IYP365 CW Flashlight                  | 10.0 | 20.7 | 10.0\n  183 | Lumintop Copper Tool AAA Nichia 219 Flashlight | 20.0 |    - | 20.0\n  189 | Lumintop IYP365 NW Flashlight                  | 12.0 |    - | 12.0\n  197 | Lumintop Tool LED Keychain Flashlight          | 10.0 |    - |  9.0\n  198 | Lumintop Tool Nichia 219BT Flashlight          | 10.0 |    - |  9.1\n+-----+------------------------------------------------+------+------+------+\n                                                                        6\n                                                                     +------+\n```\n\nItems with flash sale has empty discount field. As result, discount for these\nitems is replaced with `-` and shown at the end of the table (zero discount).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrasoffski%2Flsgbc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrasoffski%2Flsgbc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrasoffski%2Flsgbc/lists"}