An open API service indexing awesome lists of open source software.

https://github.com/zenml-io/github-trending-backend

The backend for the "Was I On GitHub Trending" website.
https://github.com/zenml-io/github-trending-backend

Last synced: 3 months ago
JSON representation

The backend for the "Was I On GitHub Trending" website.

Awesome Lists containing this project

README

        

# Was I Trending?

This repository contains the backend for the website wasigithubtrending.com. It runs a GitHub Action every hour that collects
the trending data.

The repository is a hard fork of the awesome [stackcli repo by hedyhli](https://github.com/hedyhli/starcli/). All credit goes to
hedyhli for the amazing work done to query the data.

Below is the original README:

![Cover image](https://raw.githubusercontent.com/hedyhli/starcli/main/images/starcli-small-cover.png)

Browse trending projects on Github from your command line 💻

![checks](https://github.com/hedyhli/starcli/workflows/checks/badge.svg)
[![pypi version](https://img.shields.io/pypi/v/starcli)](https://pypi.org/project/starcli/)
[![pypi downloads per month](https://img.shields.io/pypi/dm/starcli)](https://pypi.org/project/starcli/)
[![Python Requirements](https://img.shields.io/pypi/pyversions/starcli)](https://pypi.org/project/starcli/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![GitHub license MIT](https://img.shields.io/github/license/hedyhli/starcli.svg)](https://github.com/hedyhli/starcli/blob/main/LICENSE)


![starcli demo.gif](https://raw.githubusercontent.com/hedyhli/starcli/main/images/starcli-demo2.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

```sh
pip3 install starcli
```

## Usage

```
Usage: starcli [OPTIONS]

Search and query GitHub repositories

Options:
-l, --lang TEXT Language filter eg: python
-S, --spoken-language TEXT Spoken Language filter eg: en for English,
zh for Chinese, etc
-c, --created TEXT Specify repo creation date in YYYY-MM-DD,
prefixing with >, <= etc is allowed
-t, --topic TEXT Search by topic, can be specified multiple
times
-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 Amount of stars required, default is
'>=100'. Can use 123, <10, etc.
-r, --limit-results INTEGER Limit the number of results. Default: 7
-o, --order [desc|asc] Order of repos by stars shown, 'desc' or
'asc', default: desc
--long-stats Print the actual stats number (1300 instead
of 1.3k)
-d, --date-range [today|this-week|this-month]
View stars received within time range,
choose from: today, this-week, this-month
-u, --user TEXT Search for trending repositories by username
--auth TEXT 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

### Filtering by language

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

```
starcli --lang python
```

Here, we used `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](./starcli/spoken-languages.json)

Note that (like `--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, you can change that!
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,
to specify date of creation, use `--created`, see below.

### Filter by stars daily, weekly or monthly

Wish to know what's trending this week?!
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.

### Specify the date of creation

Want to find newer, older, or just created repos?
Just use `--created` or `-c`, and then
provide 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 helps you to 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 this `--pushed` or `-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: [GitHub Docs](https://docs.github.com/en/github/searching-for-information-on-github/understanding-the-search-syntax#query-for-values-greater-or-less-than-another-value)

### 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,
provide a valid GitHub username after that, like:

```
starcli -u hedyhli
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 (bit like the [Hacker Tab Extension](https://chrome.google.com/webstore/detail/hacker-tab/ibomigipadcieapbemkegkmadbbanbgm?hl=en) 😆 ).

### GitHub Authentication

If you have used starcli too much in a specified amount of time, rate limit will be hit.
To avoid this, use authenticate using `--auth` and provide your username and password

```
starcli --auth "username:password"
```

[Read more](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token")

## 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 our [Product Hunt page](https://www.producthunt.com/posts/starcli), remember to be nice :)

## Development [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)

For contributing guidelines and how to set up your development environment, please
read [`CONTRIBUTING.md`](https://github.com/hedyhli/starcli/blob/main/CONTRIBUTING.md).
Remember that all contributions to this project should follow its
[CODE OF CONDUCT](https://github.com/hedyhli/starcli/blob/main/CODE_OF_CONDUCT.md).

## Uses

* CommandLine Argument parser: [Click](https://github.com/pallets/click)
* Colored and table console print: [`rich`](https://github.com/willmcgugan/rich) (with click and colorama)
* HTTP library to send requests: [`requests`](https://github.com/psf/requests)

## Contributors ✨

Thanks goes to all of these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):



Shagilton

💻

hexbee

🐛

Sam Wellander

💻

Shivam Sinha

💻

Will McGugan

💻

Ashik J M

💻

Yu-Lin Chao

💻



Saif Kazi

💻 📖

arcanearronax

⚠️ 💻

jSadoski

📖 💻

odmishien(Tetsuya MISHIMA)

💻

Neel Shah

💻

0xflotus

💻

Akash Dhanwani

💻



Ed Davis

💻

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

## Credits

This project was forked from
[`githunt` (python)](https://github.com/SriNandan33/githunt)
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 everyone!

---

Liked this project? Don't forget to give it a ⭐