Skip to content

seanbreckenridge/oh-my-stars

 
 

Repository files navigation

This fork simplifies the summary to one line each, and doesn't print a count/summary, and just prints the matches one after another; that makes it easier to process with common shell tools like grep or fzf.

Example:

 $ mystars mint
kevinschaich/mintable [https://github.com/kevinschaich/mintable] TypeScript 🍃 Automate your personal finances – for free, with no ads, and no data collection.
# just print all results
$ mystars --list
...
$ mystars --list | wc -l
139

I commonly use the following script, to search for a repo I've starred and copy the link to my clipboard.

#!/bin/bash
# https://github.com/seanbreckenridge/oh-my-stars
PICKED="$(mystars "$@" | fzf --ansi)" || exit $?
printf '%s\n' "${PICKED}"
URL="$(echo "${PICKED}" | urlextract)"
# if a URL was extracted, copy it to my clipboard
[[ -n "${URL}" ]] && {
	printf '%s' "${URL}" | clipcopy
	printf '%s\n' "${URL}"
}

I've also removed the limit for the number of entries the -3 flag returns (JSON), so this can be used with jq to parse/search the results:

mystars --list -c=never -3 | jq -r '.items | .[16]'
{
  "title": "tmcw/big",
  "subtitle": "presentations for busy messy hackers [JavaScript]",
  "arg": "https://github.com/tmcw/big"
}
mystars --list -c=never -3 | jq -r '.items | .[] | .arg' | shuf -n5
https://github.com/bootandy/dust
https://github.com/karlicoss/HPI
https://github.com/jameslittle230/stork
https://github.com/ripienaar/free-for-dev
https://github.com/paulgalow/albumart-dl

To Install:

pip install git+https://github.com/seanbreckenridge/oh-my-stars

This also lets you set a custom location for the ~/.netrc file instead of having it at ~/.netrc, to avoid possible conflicts with other applications/tools. To do so, you can set the OH_MY_STARS_NETRC environment variable to the location of your ~/.netrc file


oh-my-stars

Search your stars locally.

usage: mystars [-h] [-l LANGUAGE [LANGUAGE ...]] [-u] [-r] [-a] [-3] [-i]
                   [-v]
                   [keywords [keywords ...]]

a CLI tool to search your starred Github repositories.

positional arguments:
  keywords              Search by keywords

optional arguments:
  -h, --help            show this help message and exit
  -l LANGUAGE [LANGUAGE ...], --language LANGUAGE [LANGUAGE ...]
                        Filter by language
  -u, --update          Create(first time) or update the local stars index
  -r, --reindex         Re-create the local stars index
  -c WHEN, --color WHEN
                        Colorize the output; WHEN can be 'always' (default if
                        omitted), 'auto', or 'never'
  -a, --alfred          Format search result as Alfred Script Filter output
  -3, --three           Alfred 3 support
  -i, --install         Import Alfred workflow
  -v, --version         show program's version number and exit

oh-my-stars

Works with Alfred Workflow

oh-my-stars-alfred-workflow

Configuration

You can avoid entering your GitHub API credentials every time you update the index, by adding them to the ~/.netrc file as follows:

machine api.github.com
    login ‹GH_USERNAME›
    password ‹GH_API_TOKEN›

Use an API token as the password – you can create one via Settings » Developer settings » Personal access tokens in the GitHub web interface.

Once you have stored credentials, you can also automate the index update by adding a job with crontab -e:

# GitHub stars
0 6 * * *	~/.local/bin/mystars -u

Installation (Mac OSX)

$ pip install oh-my-stars --upgrade --user
$ mystars --help
$ mystars --update
$ mystars angular upload
$ mystars --language python
$ mystars awesome python

if install failed, try following commands

$ pip uninstall distribute
$ pip install setuptools
$ pip install --upgrade setuptools

Integration with Alfred

$ mystars -i -3

For Alfred v2

$ mystars -i

Change logs

v1.5.1

  • Fix error 'IOError: [Errno 32] Broken pipe'
v1.5.0
  • Disable the pagination and add a --color option. Thanks for the suggestions from @jhermann
  • Speed up result display with CachingMiddleware of TinyDB
v1.4.9
  • Fix workflow for Alfred v2
v1.4.8
  • Fix Alfred XML output
  • Rewrite Alfred workflow script
v1.4.5
  • Drop Python 2.6 Support
  • Update docs: using ~/.netrc + cron. @jhermann
v1.3.5
  • Output Alfred 3 JSON ouput with "-a -3" option.
  • Import Alfred Workflow with "-i" (append "-3" for Alfred 3) option.
v1.2.3
  • Get user + password from netrc. @jhermann.
  • Use pipenv to manage project requirements.
v1.1.3
  • Upgrade to TinyDB 3.7.0.
  • Build index when updating.
  • Search result pagination.

Note

  • Uninstall existing version.
  • Rebuild existing index with mystars -r.
v1.0.2
  • Rename to oh-my-stars.
v1.0.1
  • Support Github two-factor authentication. @yanyaoer
v1.0.0
  • Replace kc with TinyDB, no more non-python dependencies.
  • Only update stars since last time.

About

An offline CLI tool to search your GitHub Stars.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 98.1%
  • Shell 1.9%