Unduh satu file dari GitHub


625

Saya kira sebagian besar dari Anda, pengembang, menggunakan VCS apa pun , dan saya harap beberapa dari Anda menggunakan Git. Apakah Anda memiliki tip atau trik bagaimana cara mendapatkan URL unduhan untuk satu file dalam repositori?

Saya tidak ingin URL untuk menampilkan file mentah; dalam kasus binari itu tidak ada artinya.

http://support.github.com/discussions/feature-requests/41-download-single-file

Apakah mungkin menggunakan GitHub sebagai "server unduh"?

Jika kami memutuskan untuk beralih ke Google Code, apakah fungsi yang disebutkan itu disajikan di sini?

Atau adakah hosting dan VCS gratis untuk proyek sumber terbuka?


3
Fitur GitHub Rilis telah melangkah untuk mengisi peran ini.
pkamb

@RadekSimko DownGit dapat membantu ANDA. Lihat jawaban ini .
Minhas Kamal

1
Untuk GitLab, lihat stackoverflow.com/a/51993087/6309 .
VonC

Ini tidak akan bekerja untuk semua orang, tetapi jika Anda menggunakan python panda, Anda dapat melakukan sesuatu seperti ini (berfungsi untuk file besar juga): klik "lihat mentah" dan kemudian salin url dari browser kemudian cukup lakukan ini: df = pd.read_csv ( ' raw.githubusercontent.com/t-davidson/… ')
Graham Hesketh

Coba Gitzip untuk github untuk chrome
subtleseeker

Jawaban:


580

Git tidak mendukung pengunduhan bagian repositori. Anda harus mengunduh semuanya. Tetapi Anda harus bisa melakukan ini dengan GitHub.

Ketika Anda melihat file itu memiliki tautan ke versi "mentah". The URL dibangun seperti begitu

https://raw.githubusercontent.com/user/repository/branch/filename

Dengan mengisi bagian yang kosong di URL, Anda dapat menggunakan Wget atau cURL (dengan -Lopsi, lihat di bawah) atau apa pun untuk mengunduh satu file. Sekali lagi, Anda tidak akan mendapatkan salah satu fitur kontrol versi bagus yang digunakan oleh Git dengan melakukan ini.

Pembaruan: Saya perhatikan Anda menyebutkan ini tidak berfungsi untuk file biner. Anda mungkin tidak boleh menggunakan file biner di repositori Git Anda, tetapi GitHub memiliki bagian unduhan untuk setiap repositori yang dapat Anda gunakan untuk mengunggah file. Jika Anda membutuhkan lebih dari satu biner, Anda dapat menggunakan file .zip. URL untuk mengunduh file yang diunggah adalah:

https://github.com/downloads/user/repository/filename

Perhatikan bahwa URL yang diberikan di atas, mulai dari tautan aktif github.com, akan dialihkan ke raw.githubusercontent.com. Anda tidak boleh langsung menggunakan URL yang diberikan oleh pengalihan HTTP 302 ini karena, per RFC 2616 : "Karena pengalihan mungkin kadang-kadang diubah, klien HARUS terus menggunakan URI-Permintaan untuk permintaan di masa mendatang."


16
Catatan untuk anak cucu: Saya baru saja mengujinya dan menggunakan raw works fine untuk file biner.
emmby

1
mencoba untuk file zip ~ 10 MB mendapat kesalahan: Kesalahan: gumpalan terlalu besar
ina

32
Format URL yang disarankan tidak berfungsi untuk saya. Saya menemukan bahwa https://raw.github.com/user/repository/branch/filename berfungsi.
Brian C.

5
@BrianC .: (Setidaknya pada 27 Agustus 2013) format URL yang disebutkan dalam jawaban ( rawsetelah nama repositori) sekarang secara otomatis dialihkan ke format yang Anda sebutkan (nama host raw.github.com). Jika ragu, telusuri file yang dimaksud di github.com dan klik tombol 'Raw'.
mklement0

10
jika Anda masih ingin menggunakan curl, ikuti pengalihan menggunakan opsi -L pada baris perintah: curl -L -O github.com/user/repository/raw/branch/filename
Lynx-Lab

560
  1. Buka file yang ingin Anda unduh.
  2. Klik untuk melihat konten dalam GitHub UI.
  3. Di bagian kanan atas, klik kanan pada Rawtombol.
  4. Simpan sebagai ...

22
Alih-alih "Simpan sebagai", salin URL. Itulah URL file tersebut. Anda sekarang dapat mengunduhnya dengan alat apa pun yang menggunakan URL untuk mengunduh: wget, browser Anda, dll.
jgomo3

1
@MattParkins Saya baru saja mencobanya dan saya pikir itu TIDAK berfungsi sekarang untuk file besar (bahkan file biner dengan peringatan "kita tidak dapat menampilkan file yang sebesar ini sekarang")
lmsurprenant

3
Berhenti melakukan langkah-langkah bertele-tele ini, gunakan ekstensi chrome ini untuk melakukannya. chrome.google.com/webstore/detail/github-mate/…
Cam Song

3
Ya Tuhan jawaban yang singkat, langsung, memotong-dan-kering, mudah dibaca dan dipahami yang tidak hanya masuk akal tetapi bekerja tanpa memerlukan BS pihak ketiga eksternal! Kalau saja semua jawaban StackOverflow langsung seperti ini. Terima kasih.
Padawan

2
Ini berfungsi untuk satu file C #. Mungkin github harus menambahkan tombol lain untuk mengunduh. Mengklik kanan sebuah tombol tidak terlalu intuitif.
Nick

39

Anda dapat menggunakan API V3 untuk mendapatkan file mentah seperti ini (Anda memerlukan token OAuth):

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path

Semua ini harus berjalan dalam satu baris. The -Opilihan menyimpan file dalam direktori saat ini. Anda dapat menggunakan -o filenameuntuk menentukan nama file yang berbeda.

Untuk mendapatkan token OAuth ikuti instruksi di sini: https://help.github.com/articles/creating-an-access-token-for-command-line-use

Saya telah menulis ini sebagai intis juga: https://gist.github.com/madrobby/9476733


4
Ini bagus, tapi sayangnya hanya mendukung file hingga 1 MiB.
Per Lundberg

1
Jika menjalankan ini dalam suatu program, pastikan User-Agent diatur.
Zugwalt

1
Bisakah Anda memberikan beberapa contoh jalan. Jika Anda repo adalah my-repo dan file yang ingin Anda dapatkan adalah di x / y / z.txt maka URL akan menjadi ... Sulit untuk mengetahui bahwa / owner / repo / harus diisi oleh saya. Terima kasih.
Gray

Ini berfungsi dengan baik tetapi ada kekurangan. Anda tidak selalu versi terbaru file. Cobalah untuk membuat modifikasi pada file, jangan menunggu terlalu banyak dan cobalah untuk mengambil file menggunakan metode ini. Anda hanya akan mendapatkan versi sebelumnya.
pacomix

34

Menurut intisari ini , Anda dapat menggunakan wget atau cURL:

  1. Klik nama file dalam repo GitHub.
  2. Klik Raw untuk menampilkan konten file.
  3. Salin URL di browser Anda.
  4. Di baris perintah, jalankan:

    • wget --no-check-certificate --content-disposition https://URL-from-step3/
    • curl -LJO https://URL-from-step3/

    Satu lagi: di RHEL7.6, jalankan yang berikut:

    • wget https://URL-from-step3/ --output-document=FILE_NAME

Saya menggunakan wgetdiikuti oleh jalur mentah ke file sumber C yang saya inginkan setelah melihat file di repositori github dan mengklik tombol Raw. Bekerja seperti seorang juara dengan Raspbian di Raspberry Pi 3.
Richard Chambers,

Saya agak terlambat ke permainan, tetapi ini bekerja dengan sempurna untuk saya. Melihat konten mentah dan mengklik kanan untuk mengunduh tidak berfungsi untuk kasus saya karena saya memerlukan file dalam format tertentu, yang tidak ditawarkan oleh komputer saya. Perintah dalam jawaban ini mengunduh semuanya apa adanya.
Seankala

16

GitHub Mate membuat pengunduhan file tunggal menjadi mudah, cukup klik ikon untuk mengunduh, saat ini hanya berfungsi di Chrome.

Unduh GitHub Mate


1
@ jcollum Diperiksa sekarang, bekerja untuk saya. Bisakah Anda memastikan Anda menggunakan versi terbaru? atau beri tahu saya kesalahannya. Senang membantu Anda membuatnya bekerja.
Cam Song

2
Saya menggunakan Chrome versi terbaru, 34.0.1847.116, dan ini pasti tidak berhasil. Sistem operasi apa yang Anda gunakan? Saya pada OS X Mavericks.
Jahkobi Digital

Saya menguji Chrome 34 di Windows 7 dan OS X Mavericks, keduanya berfungsi. cukup aneh kalau tidak bekerja ya? Harap perhatikan bahwa folder tidak dapat diunduh. Mungkin Anda dapat mencoba pada mesin yang berbeda.
Lagu Cam

ok, metode itu hanya akan berfungsi jika Anda memiliki ekstensi chrome. chrome.google.com/webstore/detail/github-mate/…
humazed

Dari tampilan ini, cukup klik kanan dan simpan sebagai file
Thierry Dalon

16

Anda bisa menggunakan curlcara ini:

curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file

Oberarti curl mengunduh konten
Lberarti curl mengikuti arahan ulang


15

Ini sekarang dimungkinkan di GitHub untuk file apa pun. Anda perlu menerjemahkan file Anda ke raw.github.com. Misalnya, jika file Anda ada di repositori Anda di:

https://github.com/<username>/<repo>/some_directory/file.rb

Menggunakan wget Anda dapat mengambil file mentah dari:

https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb

Rails Composer adalah contoh yang bagus untuk ini.


2
Beberapa file di-host di raw.githubusercontent.com
jcollum

1
dan beberapa kali ini raw2.github.com hanya fyi
jeremy.bass

11

Ada ekstensi chrome yang disebut Enhanced Github

Ini akan menambahkan tombol unduh langsung ke kanan setiap file.

masukkan deskripsi gambar di sini


Ini lebih baik daripada Github Mate semata-mata karena tidak meminta izin "Baca semua riwayat penelusuran Anda"! Jangan lupa klik kanan pada tombol unduh> Simpan tautan sebagai.
Gh0sT

Penting untuk menambahkan token dari akun GitHub Anda.
BartusZak

ini aman digunakan?
Arian saputra

1
@Ariansaputra Saya sudah menggunakannya sejak lama, tidak pernah menemukan masalah. Itu harus aman. Saya tidak mengerti mengapa itu tidak terjadi
Abraham Murciano Benzadon

@AbrahamMurcianoBenzadon terima kasih
Arian saputra

10

Untuk menindaklanjuti apa yang dikatakan thomasfuchs tetapi sebagai gantinya untuk pengguna GitHub Enterprise inilah yang dapat Anda gunakan.

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://your_domain/api/v3/repos/owner/repo/contents/path

Juga inilah dokumentasi API https://developer.github.com/v3/repos/contents


1
Bisakah Anda memberikan beberapa contoh jalan. Jika Anda repo adalah my-repo dan file yang ingin Anda dapatkan adalah di x / y / z.txt maka URL akan menjadi ... Terima kasih
Gray

1
@ Greyhttps://your_domain/api/v3/repos/{owner}/my-repo/contents/x/y/z.txt
Gregory Suvalian

jika saya ingin mengunduh file dari cabang? bagaimana saya bisa melakukannya?
Carlos Andres

@CarlosAndres menggunakan pengembang
Drew Michel

9

Jika Anda ingin mengunduh file zip githubmenggunakanwget

wget -O filename.zip https://github.com/downloads/user/repository/filename.zip?raw=true

lihat situs web ini untuk lebih jelasnya


Anda dapat mengunduh file apa pun, bukan hanya .zip.
enriquetaso

6

Metode ini berfungsi untuk Windows karena saya belum pernah menggunakan MAC jadi saya tidak tahu apa kunci alternatif di MAC untuk kunci yang akan saya sebutkan di bawah ini.

Mari kita bicara tentang file CSV. JIKA Anda ingin mengunduh file CSV:

  1. Pergi ke dataset tertentu yang ingin Anda unduh dan klik padanya.
  2. Anda akan melihat tombol "Raw" di sisi kanan atas dataset.
  3. Tekan "Alt" dan kemudian klik kiri tombol "Raw".
  4. Seluruh CSV akan diunduh di sistem Anda.

Ingat, Anda harus menekan Alt dan klik kiri secara bersamaan. Cukup mengklik tombol "Raw" akan membuka CSV di browser.

Saya harap itu membantu.


5

Anda harus melakukannya dengan rawURL file Anda.

Misalnya untuk mengunduh README dari AFNetworking:

curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md 

Karena ini adalah repo publik, Anda tidak perlu kredensial. Harap perhatikan jenis url:raw.githubusercontent.com/path/to/file


4

Ringkasan 2019

Ada berbagai cara untuk menangani ini, tergantung pada seberapa besar file tersebut, apakah Anda perlu mengunduh folder di samping file, dan apakah Anda berencana untuk melakukan ini secara manual atau terprogram.

Ada enam opsi yang dirangkum di bawah ini. Dan bagi mereka yang lebih menyukai penjelasan langsung, saya telah membuat video YouTube: Unduh File dan Folder Individual dari GitHub .

Juga, saya telah memposting jawaban yang serupa pada StackOverflow untuk mereka yang perlu mengunduh folder / direktori tunggal dari GitHub (sebagai lawan dari file).


1. Antarmuka Pengguna GitHub

  • Ada tombol unduh pada sebagian besar gambar.
  • Ada tombol unduh di beranda repositori. Tentu saja, ini mengunduh seluruh repo, setelah itu Anda harus menghapus zip unduhan dan kemudian secara manual menyeret file tertentu yang Anda butuhkan.

2. Menu Konteks Browser

  • Buka file di GitHub, klik kanan pada tombol "Raw" untuk membuka menu konteks browser. Dari sana, jika Anda menggunakan Google Chrome, pilih "Simpan Tautan Sebagai ...". Peramban lain akan memiliki UI yang serupa, tetapi deskripsi pemilihannya mungkin berbeda. Misalnya, itu akan terdaftar sebagai "Unduh File Terkait" dan "Unduh File Terkait Sebagai" di Safari.

3. Alat Pihak Ketiga

  • Ada berbagai ekstensi browser dan aplikasi web yang dapat menangani hal ini, dengan DownGit menjadi salah satunya. Cukup tempelkan URL GitHub ke file dan tekan tombol "Unduh". Perhatikan bahwa tautan tersebut haruslah tampilan repositori yang dihosting GitHub.com, sebagai lawan dari tautan file langsung. File link contoh: https://github.com/babel/babel-eslint/blob/master/lib/parse.js.

4. Subversi

  • GitHub tidak mendukung git-arsip (fitur git yang memungkinkan kami mengunduh file tertentu). Namun GitHub, mendukung berbagai fitur Subversion, salah satunya dapat kita gunakan untuk tujuan ini. Subversion adalah sistem kontrol versi (alternatif untuk git). Anda perlu menginstal Subversion. Ambil URL GitHub untuk file yang ingin Anda unduh. Anda harus memodifikasi URL ini. Anda ingin tautan ke repositori, diikuti oleh kata "trunk", dan diakhiri dengan path ke file bersarang. Dengan kata lain, menggunakan tautan file yang sama yang saya sebutkan di atas, kami akan mengganti "gumpalan / master" dengan "trunk". Terakhir, buka terminal, navigasikan ke direktori yang Anda inginkan agar kontennya diunduh, ketikkan perintah berikut (mengganti URL dengan URL yang Anda buat):svn export https://github.com/babel/babel-eslint/trunk/lib/parse.js

5. CURL

  • Anda harus menginstal CURL. Buka file di GitHub.com, klik kiri pada tombol "Raw" untuk menuju ke tautan file langsung, salin URL ini, buka terminal, arahkan ke direktori yang Anda inginkan agar kontennya diunduh, ketik perintah berikut, mengganti nama file dengan apa pun yang Anda ingin nama itu, dan mengganti URL dengan satu Anda hanya disalin: curl -o parse.js https://raw.githubusercontent.com/babel/babel-eslint/master/lib/parse.js.

6. API GitHub

  • Inilah sebenarnya yang digunakan DownGit di bawah tenda. Menggunakan API REST GitHub , buat permintaan GET ke titik akhir konten. Endpoint dapat dibangun sebagai berikut: https://api.github.com/repos/:owner/:repo/contents/:path. Setelah mengganti placeholder, contoh endpoint adalah: https://api.github.com/repos/babel/babel-eslint/contents/lib/parse.js. Ini memberi Anda data JSON untuk file itu, termasuk URL unduhan (URL unduhan yang sama yang kami gunakan dalam contoh CURL di atas). Metode ini tidak terlalu berguna untuk satu file, (Anda akan lebih cenderung menggunakannya untuk mengunduh folder tertentu, seperti yang dijelaskan dalam jawaban yang saya tautkan di atas).

ini pemahaman saya bahwa tombol unduh tidak mengunduh seluruh repo ... saya bisa salah. inilah sebuah contoh: github.com/googleapis/google-api-php-client jika Anda mengunduh repositori, Anda tidak akan mendapatkan direktori contoh; Anda harus mengubah cabang untuk melakukan itu.
albert

1
@Albert Tangkapan yang bagus. Itu sebenarnya karena mereka secara khusus mengecualikan folder / file tertentu dalam file .gitattributes: github.com/googleapis/google-api-php-client/blob/master/…
jabacchetta

bagus, terima kasih sudah berbagi itu! TIL ...
albert

4

Fitur Rilis GitHub

Daripada menautkan untuk mengunduh file tertentu dalam repo, Anda harus menggunakan fitur Rilis GitHub untuk mengaitkan data yang dapat diunduh (seperti binari yang dikompilasi) dengan versi tag kode sumber yang digunakan untuk menghasilkan data tersebut.

https://github.com/blog/1547-release-your-software

Kami senang mengumumkan Siaran, alur kerja untuk perangkat lunak pengiriman kepada pengguna akhir. Rilis adalah objek kelas satu dengan changelogs dan aset biner yang menyajikan sejarah proyek penuh di luar artefak Git.

Rilis disertai dengan catatan rilis dan tautan untuk mengunduh perangkat lunak atau kode sumber.

Mengikuti konvensi banyak proyek Git, rilis terkait dengan tag Git. Anda dapat menggunakan tag yang ada, atau membiarkan rilis membuat tag saat diterbitkan.

masukkan deskripsi gambar di sini


1
Iya! Ini adalah solusi paling sederhana, dapat dilakukan langsung dari browser Anda! 1. Dari halaman utama repositori Anda, pilih releases2. Klik pada nomor komit. 3. Temukan file yang Anda inginkan, klik pada tiga titik ...dan pilih View file4. Klik View rawuntuk mengunduh file !!!
Jonathan Benn

3

Ini pasti akan berhasil. Paling tidak di Chrome. Klik kanan pada ikon "Raw" -> Save Link As .


1
Ini menyimpan file HTML dari halaman github, yang mencakup pembungkus github di sekitar file.
Gregor Thomas

@ Gregor - FYI, Seharusnya tidak, setidaknya untuk halaman yang TEKS. Jika ragu, klik KIRI pada ikon "Raw". Ini harus membuka file teks di browser, TANPA HTML apa pun. Sekarang klik kanan di mana saja di halaman, dan lakukan "Simpan Sebagai ...". (Atau pilih Select-All / Copy, lalu Paste di mana pun Anda inginkan)
ToolmakerSteve

3

Untuk mengunduh file dari repo Github, gunakan perintah 'curl' dengan tautan ke file mentah.

curl https://raw.githubusercontent.com/user/repo/filename --output filename

Tambahkan opsi --output diikuti oleh nama file baru untuk mengunduh file mentah ke file yang baru dibuat.


2
  1. Halaman yang Anda tautkan untuk menjawab pertanyaan pertama.

  2. GitHub juga memiliki fasilitas pengunduhan untuk hal-hal seperti rilis.

  3. Google Code tidak memiliki Git sama sekali.

  4. GitHub, Google Code dan SourceForge , hanya untuk memulai, adalah hosting gratis. SourceForge mungkin masih melakukan CVS .


2

Saya baru-baru ini menemukan layanan yang dipanggil gitzipdan juga open source:

situs - http://kinolien.github.io/gitzip/

repo - https://github.com/KinoLien/gitzip

Kunjungi situs di atas, masukkan URL repo atau direktori, Anda dapat mengunduh file individual atau seluruh direktori sebagai file zip.


Tetapi bagaimana saya hanya mengunduh jszip.min.jsdari repositori itu? wajah troll
Levi Fuller

buka file di github dan kemudian pergi ke raw. Anda harus melihat kemudian kode sumber file dan kemudian Anda dapat mengunduhnya menggunakan browser dengan klik kanan mouse dan simpan sebagai. Ini bekerja untuk saya.
Boris



1

Jika Anda kebetulan menggunakan curl dan firefox ... Anda bisa menggunakan add-on cliget yang menghasilkan panggilan curl termasuk semua mekanisme otentikasi (alias cookies).

Jadi klik kanan pada rawkliget tombol -> "salin url untuk tautan" dan kemudian rekatkan ke shell. Anda akan mendapatkan file Anda bahkan jika Anda harus masuk untuk melihatnya.


0
  1. Di sebelah kanan di bawah "Klon di Desktop" tertulis "Unduh file Zip"
  2. Unduh File Zip
  3. Ekstrak file tersebut

Apakah ada cara untuk melakukan ini sedemikian rupa sehingga Anda memiliki konten file lfs?
Burung hantu


0

Atau coba ini

const https = require('https');
const fs = require('fs');
const DOMAIN = 'raw.githubusercontent.com';

function writeFile(data, fileName) {
  fs.appendFile(fileName, data.toString(), err => {
    if (err) {
      console.log('error in writing file', err);
    }
  });
}

function EOF(data) {
  console.log('EOF');
}

function getFileName(pathToFile) {
  var result = pathToFile.split('/');
  var splitLength = result.length;
  return result[splitLength - 1];
}
function getFile(branchName, username, repoName, ...pathToFile) {
  pathToFile.forEach(item => {
    const path = `/${username}/${repoName}/${branchName}/${item}`;
    const URL = `${DOMAIN}${path}`;
    const options = {
      hostname: DOMAIN,
      path: path
    };
    var fileName = getFileName(item);

    https
      .get(options, function(res) {
        console.log(res.statusCode);
        /* if file not found */
        if (res.statusCode === 404) {
          console.log('FILE NOT FOUND');
        } else {
          /* if file found */
          res.on('data', data => writeFile(data, fileName));
          res.on('end', data => EOF(data));
        }
      })
      .on('error', function(res) {
        console.log('error in reading URL');
      });
  });
}
getFile('master', 'bansalAyush', 'InstagramClone', '.babelrc', 'README.md');

0

Saya menggunakan format berikut, dan saya merasa penting untuk memberi tahu tentang path.

https://github.com/user/repository/raw/branch/filename

^^^ hal di atas tidak terlalu lengkap dalam pikiranku

https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true

beberapa mengatakan raw.github.com atau raw bukannya blob, tetapi baris ke-2 bekerja untuk saya dan saya harap akan membantu orang lain ...

2 ¢


0

Anda dapat mencoba github-files-fetcher , ini adalah alat baris perintah yang mengunduh satu folder atau file dari repo GitHub.

Pikirkan skenario nyata: Anda mengunjungi halaman web berikut dan ingin mengunduh asyncsubdirektori sendirian.

https://github.com/reduxjs/redux/tree/master/examples

maaf karena tidak diizinkan memposting gambar.

Dengan The github-files-fetcher, Anda harus terlebih dahulu menyalin urlhalaman itu, yaitu https://github.com/reduxjs/redux/tree/master/examples/async , dan kemudian jalankan perintah di bawah ini di baris perintah:

fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async


-2

Inilah yang bekerja untuk saya sekarang ...

  1. Buka file mentah di tab terpisah.

  2. Salin semuanya di notepad Anda di file baru.

  3. Simpan file dalam ekstensi yang awalnya

diuji dengan file php yang saya unduh tadi (pada saat jawaban)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.