Melihat Statistik Repository Github Menggunakan Python dan PyGithub

Tutorial melihat statistik repositori di github menggunakan Python dengan paket library PyGithub. Mencakup data cloning, view, fail populer, dll.

Melihat Statistik Repository Github Menggunakan Python dan PyGithub

Bismillaah Alhamdulillaah,

Apakah Anda memiliki repositori di Github? Ingin tahu data statistik dari setiap repositori yang Anda miliki? Yuk, ikuti tutorial berikut ini.


1. Pendahuluan

GitHub adalah platform khusus developer yang dibuat karena terinspirasi dari cara bekerja para programmer. Dari open source ke bisnis, kita bisa meng-host dan meninjau sebuah kode, mengelola proyek, dan membangun perangkat lunak bersama 56 juta lebih pengguna di seluruh dunia.

Gampangnya, GitHub merupakan manajemen proyek, sistem versioning code, sekaligus platform jaringan sosial bagi para developer seluruh dunia. Banyak sekali fungsi yang bisa digunakan oleh para developer, sehingga melalui platform ini memudahkan developer dalam mengembangkan sebuah karya - Dicoding.com .

Untuk melihat data statistik di sebuah repositori dalam Github - setelah login - kita dapat memilih salah satu repositori dari daftar repositori yang kita miliki. Cara paling mudah adalah dengan membukanya melalui menu Repositories.

image.png

Setelah halaman repositori terbuka, pilih menu Insights. image.png

Di bagian kiri halaman ada daftar submenu, pilih menu Traffic.

image.png

Datanya akan terlihat di bagian kanan halaman, contohnya seperti terlihat pada gambar berikut.

image.png image.png

Dan sayangnya belum ada fasilitas bawaan untuk melihat data statistik dari seluruh repositori sekaligus. Nah, dalam artikel ini akan disajikan bagaimana cara mengakses data statistik dari keseluruhan repositori yang sudah kita miliki di Github.


2. Instalasi PyGithub

Untuk mengakses data statistik repositori dalam Github dapat dilakukan melalui REST API (application programming interface) yang sudah disediakan.

API, atau antarmuka pemrograman aplikasi, adalah seperangkat aturan yang menentukan bagaimana aplikasi atau perangkat dapat terhubung dan berkomunikasi satu sama lain. REST API adalah API yang sesuai dengan prinsip desain REST (representational state transfer), atau gaya arsitektur transfer status representasional. Untuk alasan ini, REST API terkadang dirujuk ke RESTful API - IBM.com.

Dokumen terkait REST API dapat ditemukan di halaman web Github Docs. Adapun kali ini, kita akan menggunakan paket library PyGithub untuk memudahkan pengaksesan REST API yang tersedia.

Kode sumber PyGithub ada di sini , dan panduan lengkap penggunaannya ada di sini.

  • Instalasi paket.
$ pip install PyGithub
  • Uji coba pertama adalah menampilkan semua nama repositori yang sudah dimiliki dengan menggunakan template kode berikut.
from github import Github

# First create a Github instance:

# using an access token
g = Github("access_token")

# Github Enterprise with custom hostname
g = Github(base_url="https://{hostname}/api/v3", login_or_token="access_token")

# Then play with your Github objects:
for repo in g.get_user().get_repos():
    print(repo.name)

3. Membuat Token Akses

Untuk dapat mengakses REST API diperlukan semacam token akses yang dapat kita buat melalui pengaturan dalam Github.

  • Klik foto profil di bagian kanan atas, dan pilih Settings. github settings.jpg

  • Berikutnya adalah memilih submenu Developer Settings. github settings - developer settings.jpg

  • Pilih submenu Personal access tokens. github settings - developer settings - personal access tokens.jpg

  • Tekan tombol Generate new token untuk membuat token akses baru.

  • Berikutnya adalah isi note (keterangan), masa kadaluwarsa token, dan pilihan scope (jangkauan) hak akses. Dan tekan tombol Generate token. github settings - developer settings - generate token.jpg Dalam hal ini saya contohkan isi masa kadaluwarsanya 30 hari, dan scope-nya cukup dipilih yang repo saja.

  • Jika berhasil, akan memunculkan semacam kode yang merupakan token akses yang baru saja dibuat. Simpan baik-baik kode tersebut, karena halaman yang memunculkan token ini tidak akan dapat dilihat lagi. github settings - developer settings - generate token muncul.jpg

  • Jika kembali ke halaman Personal access tokens, maka akan memunculkan isi halaman yang contohnya seperti terdapat pada potongan gambar berikut. github settings - developer settings - generate token expiration.jpg

  • Kita juga dapat membangkitkan token akses baru lagi jika token sebelumnya terlupakan. Yaitu dengan cara klik tautan nama token tersebut. Anda juga dapat mengubah spesifikasi lainnya dan selanjutnya klik tombol Regenerate token. github settings - developer settings - generate token regeneration.jpg


4. Uji Coba PyGithub

Dalam tutorial kali ini saya akan mendemokan 5 tugas untuk mengakses data statistik repositori dalam Github, yaitu:

  • Melihat daftar nama repositori.
  • Memeriksa tipe repositori, yaitu antara tipe Private dan Public.
  • Melihat data jumlah cloning (salinan) repositori secara mentah.
  • Melihat data pekanan jumlah salinan dan jumlah view (tampilan) dari masing-masing repositori dengan data yang sudah agak dirapikan.
  • Melihat data statistik repositori harian agak lengkap, mencakup: nama, tipe, jumlah bintang, data clone, data view, data konten (path) populer, dan data referrer (perujuk).

a. Melihat daftar nama repositori.
Sintaks utamanya adalah pada kode berikut.

# import library
from github import Github
# masukkan token akses
g = Github("token")
# telusuri setiap repositori
for repo in g.get_user().get_repos():
    print(repo.name)

Contoh luarannya adalah:

Baca_Tulis_Bilangan
Cari_Buku
...
vb6-pencari-file
VB6_MySQL

b. Memeriksa tipe repositori.
Kode utamanya adalah:

# inisialisasi jml repo berdasarkan tipe (private atau public)
jmlRepoPrivate = 0
jmlRepoPublic = 0

# akses repository
aksesRepo = g.get_user().get_repos()

# menelusuri semua repo
for no, repo in enumerate(aksesRepo):
    if repo.private:
        jmlRepoPrivate += 1
        tipe = "Private"
    else:
        jmlRepoPublic += 1
        tipe = "Public"

    print(f"Repository ke-{no+1}: {repo.name}, tipe: {tipe}")

print(f"\nJumlah repository tipe Private: {jmlRepoPrivate}, "
      f"Public: {jmlRepoPublic}, "
      f"total: {aksesRepo.totalCount}")

Contoh luarannya adalah:

Repository ke-1: Baca_Tulis_Bilangan, tipe: Public
Repository ke-2: Cari_Buku, tipe: Public
...
Repository ke-14: vb6-pencari-file, tipe: Public
Repository ke-15: VB6_MySQL, tipe: Public

Jumlah repository tipe Private: 3, Public: 12, total: 15

c. Melihat data jumlah clone pekanan.
Kode utamanya adalah:

for no, repo in enumerate(aksesRepo):
    print(f"\nRepository ke-{no + 1}: {repo.name}")
    data_clone = repo.get_clones_traffic(per="week")
    print(data_clone)

Contoh luarannya:

...
Repository ke-13: vb6-mini-projects
{'count': 0, 'uniques': 0, 'clones': []}

Repository ke-14: vb6-pencari-file
{'count': 1, 'uniques': 1, 'clones': [Clones(uniques=1, timestamp=2021-11-08 00:00:00, count=1)]}

Repository ke-15: VB6_MySQL
{'count': 6, 'uniques': 4, 'clones': [Clones(uniques=3, timestamp=2021-11-01 00:00:00, count=3), Clones(uniques=2, timestamp=2021-11-08 00:00:00, count=3)]}

d. Melihat data pekanan jumlah clone dan view.
Kode utamanya (untuk view):

for no, repo in enumerate(aksesRepo):
    data_view = repo.get_views_traffic(per="week")
    print("Data View.")
    print(f"  Jumlah view total: {data_view['count']}")
    print(f"  Jumlah view unik: {data_view['uniques']}")
    if data_view:
        for i, data in enumerate(data_view['views']):
            print(f"    View ke-{i + 1} = tanggal: {data.timestamp}, total: {data.count}, jumlah unik: {data.uniques}")

Contoh luarannya (clone dan view):

...
Repository ke-11: python_list
Data Clone.
  Jumlah clone total: 13
  Jumlah clone unik: 10
    Clone ke-1 = tanggal: 2021-10-25 00:00:00, total: 12, jumlah unik: 9
    Clone ke-2 = tanggal: 2021-11-01 00:00:00, total: 1, jumlah unik: 1
Data View.
  Jumlah view total: 52
  Jumlah view unik: 6
    View ke-1 = tanggal: 2021-10-25 00:00:00, total: 45, jumlah unik: 5
    View ke-2 = tanggal: 2021-11-01 00:00:00, total: 4, jumlah unik: 2
    View ke-3 = tanggal: 2021-11-08 00:00:00, total: 3, jumlah unik: 1
...

e. Melihat data statistik harian agak lengkap.
Kode utamanya:

# jumlah bintang
print(f"  Jumlah bintang: {repo.stargazers_count}")
# sumber data clone harian
data_clone = repo.get_clones_traffic(per="day")
# sumber data view harian
data_view = repo.get_views_traffic(per="day")
# data populer
data_populer = repo.get_top_paths()
# top data referrer
data_referrer = repo.get_top_referrers()

Contoh luarannya. tugas_5.gif


Demikian tutorial mengakses data statistik repositori di Github menggunakan PyGithub. Selanjutnya dapat dikembangkan dalam bentuk antarmuka yang lebih user friendly dan enak dipandang.

Kode sumber selengkapnya dapat di cek di repositori Github saya.

Semoga bermanfaat. Terima kasih.

Web Utama · Blog · Github Pages · Medium