• Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

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

Repository Details

Wraps github api for openly available information about an organization, user, or repo

Giggity - grab hierarchical data about a github organization, user, or repo

Get information about an organization, user, or repo on github. Stores all data in a json file, organized in a tree of dictionaries for easy database transfer or data analysis. All done through the github api, with or without authentication (authentication highly recommended).

Warning: Github API still supports v3 (what this script uses), however they are making the shift to graphql in v4. Here is a post on migrating from v3. I don't know if I will update this script before it becomes deprecated, but beware.

Setup

pip3 install giggity

or clone the repository and run:

pip3 install -r requirements.txt

Operation

giggity.py [-h] [-v] [-a] [-u] [-o] [-O OUTPUT] path

positional arguments:
  path                  name of organization or user (or url of repository)

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         increase output verbosity
  -a, --authenticate    allows github authentication to avoid ratelimiting
  -u, --user            denotes that given input is a user
  -o, --org             denotes that given input is an organization
  -O OUTPUT, --outfile OUTPUT
                        location to put generated json file

Example of Scraping a User

python3 giggity.py -a -O needmorecowbell.json -v -u needmorecowbell
  • This will ask for authentication credentials, put the program into verbose mode, scrape github for the user needmorecowbell, then put the results into needmorecowbell.json

Example of Scraping an Organization

python3 giggity.py -a -o github -O github.json
  • This will ask for authentication, scrape the github organization on github, then put out the results in github.json

Giggity as a Module

  • giggity can also be used as a module -- all data is stored within orgTree as a nested dict.
from giggity import giggity

g = giggity("username","password")
data = g.getUsers("organization-name", followers=True)

print("List of users in organization: ")
for user, info in data.items():
    print(user)

data = g.getEmails("username", verbose=True) # Get any emails found

Other examples of how to use giggity are available in the util folder.

Example Output

When python3 giggity.py -a -u geohot -O output.json is used..

output.json contains:

{
    "emails": [
        "[email protected]",
        "other emails taken out of example"
    
    ],
    "names": [
        "Charles Ellis",
        "George Hotz"
    ],
    "repos": {
        "ORB_SLAM2": {
            "created_at": "2017-04-08T00:21:13Z",
            "description": "ORBSLAM2 running on Mac OS X cause I was on a plane and bored and maybe useful for someone?",
            "fork": true,
            "name": "ORB_SLAM2",
            "updated_at": "2018-10-22T23:51:28Z",
            "url": "https://github.com/geohot/ORB_SLAM2"
        },
        { Many more repositories cut out for the example },
        "xnu-deps-linux": {
            "created_at": "2013-10-02T00:36:29Z",
            "description": "Mig/cctools for Linux combo makefile thingy",
            "fork": true,
            "name": "xnu-deps-linux",
            "updated_at": "2016-05-01T16:04:45Z",
            "url": "https://github.com/geohot/xnu-deps-linux"
        }
    }
}

More Repositories

1

Hamburglar

Hamburglar -- collect useful information from urls, directories, and files
YARA
315
star
2

Funnel

Funnel is a lightweight yara-based feed scraper
Python
39
star
3

jumper

Automated Reverse TCP tunneling using a digitalocean instance and aploium's shootback repo (https://github.com/aploium/shootback)
Python
13
star
4

pindrop

GPSD Command Line Client
Python
9
star
5

exif-pp

A tool for injecting json objects into the exif data of images
Python
7
star
6

dookie-slinger

Batch Templated e-mail sender
Python
6
star
7

CryptoScripts

Collection of scripts designed for the purpose of crypto currency analysis, trend spotting, and automation.
Python
4
star
8

Igor

the network tool that can act like a worm
Python
3
star
9

gmail2md

Sync your Gmail messages labeled as receipts into your obsidian vault
Python
3
star
10

neptune-apex-dashboard

bootstrap website for data visualization and statistics coming from the Neptune Apex Reef Aquarium Controller. Using an admin dashboard template for a base to get it running faster.
JavaScript
3
star
11

gc2md

Google Contacts CSV to Markdown Contacts
Python
2
star
12

yara-simple-scanner

Compiles all files in rules folder, then matches them against any files in target folder
Python
2
star
13

EMLHound

Collect and Analyze Emails
Python
2
star
14

isExitNode

Simple script for checking if an ip is known to be a tor exit node
Python
1
star
15

hq

Plugin-oriented Data Logging Headquarters
Python
1
star
16

wotd

CLI script for Merriam Webster's Word of The Day
Python
1
star
17

obsidian-react-force-directed-graph

JavaScript
1
star
18

RandomPythonScripts

A collection of a few random python programs I've done and forgot about.
Python
1
star
19

ProxyRot

Proxy Rotation wrapper for the request library
Python
1
star
20

tunnel_dash

reverse tunnel monitor
JavaScript
1
star
21

CS122-final-hw

Data Structures and Algorithms Class: A Complicated Calculator
Python
1
star
22

spotify_playlist_to_markdown

Syncs a spotify playlist to individual markdown files for each track
Python
1
star
23

email-threatkb

use cloudflare's email routing, a worker,KV, and a golang yara processor to selectively forward email.
JavaScript
1
star