• Stars
    star
    551
  • Rank 80,726 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created over 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

✨ Browse trending GitHub projects from your command line
  ___  ______    _     ____     ____   _     _
 / \ *   | |    /\    | |  \   / |  * | \   | \
 \  \    | |   /\ \   | |* /  |  |    | |   | |
  \  \   | |  /--\ \  | | \   |  |    | |   | |
 *_\./   ._| /    ._\ |_|  \_  \.|__. |_|_. |_|

Browse trending projects on Github from your command line $ _

checks pypi version pypi downloads per month Python Requirements Code style: black GitHub license MIT


starcli demo.gif

Features

  • Filters
    • Stars
    • Pushed date
    • Created date
    • User
    • Topic
    • Language
    • Spoken language
  • Use generic GitHub search API or GitHub trending
  • Auth token (optional)
  • Paged output
  • Different layouts

Prerequisites

  • Requires Python 3.6 or greater

Installation

pip3 install starcli

Usage

Usage: starcli [OPTIONS]

  Search and query GitHub repositories

Options:
  -l, --lang TEXT                 Language filter eg: python. (can be used
                                  multiple times)
  -S, --spoken-language TEXT      Spoken Language filter eg: en for English,
                                  zh for Chinese
  -c, --created TEXT              Specify repo creation date in YYYY-MM-DD,
                                  use >date, <=date etc to be more specific.
  -t, --topic TEXT                Date of last push in YYYY-MM-DD (>, <, >=,
                                  <= specifiers supported)
  -p, --pushed TEXT               Specify date of last push in YYYY-MM-DD, >=<
                                  allowed
  -L, --layout [list|table|grid]  The output format (list, table, or grid),
                                  default is list
  -s, --stars TEXT                Number of stars, default is '>=100'. eg:
                                  '>0', '123', '<50000
  -n, --num-results INTEGER       The number of items in the results. Default:
                                  7
  -o, --order [desc|asc]          Order of repos by stars, 'desc' or 'asc',
                                  default: desc
  --long-stats                    Print the actual stats number (1300 instead
                                  of 1.3k)
  -d, --date-range [day|week|month]
                                  View stars received within time, choose
                                  from: day, week, month. Uses GitHub trending
                                  for fetching results, hence some other
                                  filter options may not work.
  -u, --user TEXT                 Filter for trending repositories by username
  --auth TEXT                     Optionally use GitHub personal access token
                                  in the format 'username:password'.
  -P, --pager                     Use $PAGER to page output. (put -r in $LESS
                                  to enable ANSI styles)
  --debug                         Turn on debugging mode
  --help                          Show this message and exit.

Layouts

Switch layouts using --layout {list|table|grid}, or use the short option -L

list

demo list

table

grid

demo grid

All three of the layout options support clickable links for repository names. If your terminal supports links, you can directly click on the name and it will take you to the GitHub repository in your browser.

Filtering by language

For example, you only want to find popular Python repos: using --lang or -l:

starcli --lang python

Here's another example starcli -l python -L grid, which is python with grid layout:

demo grid

Filtering by spoken language

If you wanted to find repos in your native language, you can use --spoken-language or -S:

starcli --spoken-language zh

The above command lists down repos written in Chinese.

A full list of language codes is available here

Note that (as with --date-range) options like --topics, --pushed, --created won't take effect because -d uses a different search mechanism to find results.

Specify the number (or range) of stars

(Recommended to be used with --created)

The default range is >=100 stars.

Use --stars or -s to specify what you want, for example, if you want to find repos that has more than 100 stars, you can use:

starcli -s '>100'

Note that if you do something like >1000 not many repos can have more than 1000 and is created within around 200 days (which is the default for --created), to specify date of creation, use --created, see below.

Filter by stars daily, weekly or monthly

You can view the number of stars a repo received today, this week or this month by using the --date-range or -d option:

starcli -d this-week -L table

This command will also display the number of stars received for each repo this week in the form of a table.

-d uses GitHub Trending search for repositories, hence options --topic, --pushed, --created won't take effect.

Specify the date of creation

--created/-c accepts a date in ISO8601 format: yyyy-mm-dd

For example, for repos created on 1st January 2014, use:

starcli --created 2014-01-01

To search for repos that are created on or after 1st January 2014, use:

starcli --created '>=2014-01-01'

Filtering by topics

This option lets you filter by topics. You can use --topics or -t to include a topic in search.

This option can be used multiple times.

starcli -l python -d 2020-07-06 -t deep-learning -t pytorch

Specifying last pushed date

Use --pushed/-p when you want to find popular repos that are last updated on a given date, say 2020-01-01 for 1st of Jan 2020:

starcli -p 2020-01-01

You can also prefix the value with ">=<" like:

starcli -p '>=2020-01-01'

This is find repos that have last pushed after or on January the 1st, 2020.

Read more about the >=< syntax on GitHub Docs.

Searching by user

Recommended to be used with --stars and/or --date-created.

Finding trending projects by GitHub username is supported too. Use --user or -u to do so.

Just provide a valid GitHub username after it, like:

starcli -u torvalds
starcli -u gvanrossum

Using date ranges

You can use --date-range or -d and specify today, this-week, or this-month, so that GitHub Trending search function will be used to find popular repos and tell you how much stars are gained this day/week/month depending on the option you used.

starcli -d this-week

demo date range

Note that (like --spoken-language) options like --topics, --pushed, --created won't take effect because -d uses a different search mechanism to find results.

Limit the number of results shown

Don't like the default 7? You can change it to something else, using --limit-results or -r followed by an integer:

starcli -r 2

The above will only give you two repos. This is useful if you want to put it in your .bashrc, .zshrc, or fish_greeting function.

Just add starcli -r 3 -L grid in there, and every time you open your terminal, you will find 3 trending repos printed neatly in a grid format, great way to start your day (a bit like the Hacker Tab Extension).

Paging

Result output can be displayed through your OS pager using the --pager/-p flag.

If you're using less, add R to your LESS environment variable so colors and styling can be displayed correctly.

GitHub Authentication

Rate limit may be hit if starcli sends many repeated requests to GitHub within a short perod of time.

To avoid this, provide an authentication token using --auth:

starcli --auth 'username:token'

Read more about authentication tokens on GitHub Docs

Issues, feature request, and feedback

  • Issues, bug reports, or feature request: Don't hesitate to open an issue in this repo
  • Feedback: any general feedback or questions about using StarCLI you can leave a comment on the Product Hunt page

Development PRs Welcome

For contributing guidelines and how to set up your development environment, please read CONTRIBUTING.md. Remember that all contributions to this project should follow its CODE OF CONDUCT.

Uses

  • CommandLine Argument parser: Click
  • Colored and table console print: rich (with click and colorama)
  • HTTP library to send requests: requests

Contributors

Thanks goes to all of these wonderful people (emoji key):

Shagilton
Shagilton

💻
hexbee
hexbee

🐛
Sam Wellander
Sam Wellander

💻
Shivam Sinha
Shivam Sinha

💻
Will McGugan
Will McGugan

💻
Ashik J M
Ashik J M

💻
Yu-Lin Chao
Yu-Lin Chao

💻
Saif Kazi
Saif Kazi

💻 📖
arcanearronax
arcanearronax

⚠️ 💻
jSadoski
jSadoski

📖 💻
odmishien(Tetsuya MISHIMA)
odmishien(Tetsuya MISHIMA)

💻
Neel Shah
Neel Shah

💻
0xflotus
0xflotus

💻
Akash Dhanwani
Akash Dhanwani

💻
Ed Davis
Ed Davis

💻
Jeff Chiang
Jeff Chiang

💻
Dmitry Kankalovich
Dmitry Kankalovich

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Credits

This project was forked from githunt (python) and its initial intention was to rewrite that project to use Rich instead of colorama + tabulate, but now it has so much more features than before, thanks to everyone's contributions 🙌

More Repositories

1

outline.nvim

Code outline sidebar powered by LSP. Forked from symbols-outline.nvim.
Lua
592
star
2

hedyhli

Yet another profile readme.
64
star
3

gtrending

⚡ Python library for the GitHub Trending page
Python
33
star
4

markdown-toc.nvim

Generate and auto-update table of contents list for markdown
Lua
14
star
5

dotfiles

$HOME sweet /home/ — mostly neovim, emacs, and shell scripts
Lua
13
star
6

passibility

✅ Control the probability of this Github action from passing/failing!
JavaScript
7
star
7

gelim

minimalist gemini/spartan client, feels a bit like a shell tbh
Go
7
star
8

spsrv

full-featured spartan server capable of serving static files, ~user directories, CGI, and more
Go
7
star
9

todomvc-tui

TodoMVC, but for TUI frameworks and libraries. Here to satiate your pursuit of that "hot new framework" cravings.
Rust
5
star
10

aosr

forked from linanwx/aosr // better spaced repetition in obsidian
TypeScript
4
star
11

github-dl

WIP!! Download anything on GitHub from your command line. Python Library API included.
Python
3
star
12

randomiz-bot

A discord bot that helps you to get random integers, choices, rolls dice, flips coins, and more
Python
3
star
13

site

🌐 my website and gemini capsule (mirror of git.sr.ht/~hedy/site)
CSS
3
star
14

tree-sitter-cognate

TS grammar for the Cognate language
Emacs Lisp
3
star
15

cognate-playground

A fully client-side playground for the cognate programming language.
JavaScript
3
star
16

gatsby-hello

WIP: Gatsby Hello-World site. Deployed to netlify and Vercel
JavaScript
2
star
17

js-prac

JavaScript
2
star
18

print-hello-to-console

NPM package that prints 'Hello! ' to the console screen.
JavaScript
2
star
19

vim-bun

vim syntax highlighting and filetype detect for bun
Vim Script
2
star
20

git-simple-history

A simple git repo with 3 simple git commits.
2
star
21

citekit.py

📑 Python Library to Cite URLs, like citethisforme.com
Python
2
star
22

lambda-calculus

An interactive lambda calculus tutorial with elisp
Emacs Lisp
2
star
23

print-hello-to-console-py

Python
1
star
24

python-typer-examples

Python
1
star
25

pytest-examples

Easy and simple example usages of Pytest, the testing module for Python.
Python
1
star
26

hello-flask

Hello world website using Flask
Python
1
star
27

react-to-netlify

JavaScript
1
star
28

adventofcode

let's see how long it takes for me to catch up
Python
1
star
29

goreleasertest

Go
1
star
30

react-myapp

A react app published to GitHub Pages.
JavaScript
1
star
31

django-blog

Hello World ✨
JavaScript
1
star
32

django-polls

My polls app with the Django tutorials
Python
1
star
33

shortcuts-app

[WIP] Useful programs for the iOS Shortcuts app.
1
star
34

python-rich-playground

Python
1
star
35

deno-datefmt

Unambiguous Golang-style date formatting library for Deno.
TypeScript
1
star
36

vento-plugin-trim-self

Automatically remove a trailing newline and indent around each template tag for Vento, intelligently, based on context.
TypeScript
1
star
37

hyperapp-todomvc

TodoMVC implementation in Hyperapp in a single HTML file
HTML
1
star
38

google-foobar

if you use my messy code to get yourself an interview, that's your problem ;)
Python
1
star
39

passibility-test

1
star
40

hello-world

Following the guide
Python
1
star
41

gby-contentful-blog

Gatsby starter for a Contentful project from the community.
JavaScript
1
star
42

not-2048

A 2D tiles game made with LÖVE (in Lua) that, contrary to popular opinion, isn't actually 2048.
Lua
1
star
43

picogit

My own DIY git in Python
Python
1
star