Bagaimana cara melihat semua peringkat di Google Play Store?

8

Apakah ada cara untuk menampilkan semua peringkat di Play?

Anda dapat melihat beberapa peringkat diperintahkan turun :

masukkan deskripsi gambar di sini

tetapi untuk ratusan ribu ulasan itu tidak layak karena Anda hanya dapat membaca peringkat bintang 5 dengan cara ini.

Apakah ada cara lain yang lebih baik untuk melihat peringkat?

mungkin ini mungkin dengan Greasemonkey ?

rubo77
sumber

Jawaban:

4

Sama-sama frustrasi dengan kurangnya opsi pemfilteran / penyortiran yang layak di Google Play, dan terinspirasi oleh saran Anda bahwa skrip Greasemonkey dapat menyelesaikan masalah, saya memutuskan untuk menulis satu, yang telah saya unggah ke https://greasyfork.org/en/ script / 24667-google-play-review-rating-filter . Itu menambahkan lima kotak centang ke halaman aplikasi di play.google.com yang memungkinkan Anda untuk menyaring ulasan dengan peringkat bintang tertentu. Saya sudah mengujinya dengan Greasemonkey dan Unified Script Injector di Firefox, dan Tampermonkey di Chrome.

Daripada mereproduksi seluruh skrip di sini, saya akan menjelaskan pendekatan yang dilakukan untuk mereka yang mungkin tertarik. TL; DR: Jika Anda hanya menginginkan solusinya, instal add-on browser yang sesuai dan unduh skrip pengguna dari tautan di atas. Perhatikan bahwa jika Anda ingin menggunakannya di perangkat Android Anda sendiri, Anda mungkin perlu menggunakan Firefox dengan add-on USI (dan juga pilih Request Desktop Site dari menu), karena sebagian besar browser Android lainnya tidak mendukung add-on. ons atau skrip pengguna dan Greasemonkey saat ini tidak berfungsi di Firefox untuk Android - itu tidak akan berfungsi di aplikasi Google Play.

Saat Anda membolak-balik ulasan, GP (Google Play) memuat data untuk lebih banyak ulasan melalui permintaan AJAX ke URL /store/getreviewsmenggunakan POSTmetode HTTP . Jadi dengan mengaitkan panggilan AJAX ini, dimungkinkan untuk memodifikasi data yang dikembalikan ke GP.

XMLHttpRequest.prototype.opendapat diganti dengan fungsi yang akan memanggil yang asli, tetapi pertama-tama, jika permintaan untuk data ulasan, modifikasi objek XHR ( XMLHttpRequest) sehingga POSTbadan permintaan dapat ditangkap dan responsnya diubah. Sebuah sendproperti dapat ditugaskan ke objek XHR sebagai fungsi yang akan menyimpan POSTdata sebelum memanggil aslinya. The onreadystatechangeproperti dapat ditugaskan sebagai fungsi yang akan memodifikasi respon sebelum memanggil fungsi yang ditetapkan oleh GP untuk properti ini. Karena GP akan menetapkan onreadystatechangesetelah ini, Object.definePropertyperlu digunakan untuk mendefinisikan kembali properti sehingga nilai set GP disimpan daripada benar-benar ditugaskan ke properti internal. Dan karena responseTextproperti hanya baca, Object.definePropertyakan diperlukan untuk mengubah nilainya.

Data yang dikembalikan oleh GP adalah dalam format JSON, meskipun memiliki beberapa karakter sampah di awal yang harus direproduksi dengan setia dalam setiap data yang dimodifikasi.

Kode berikut menunjukkan ini, dan akan menampilkan ke jendela konsol pengembang browser badan permintaan dan data respons (meskipun tidak benar-benar memodifikasinya):

XMLHttpRequest.prototype.open = (function(open) {
  return function(method, url) {
    if (
      method === 'POST' &&
      url &&
      url.replace(/^https?:\/\/play\.google\.com/, '').split('?', 1)[0] ===
        '/store/getreviews'
    ) {
      var requestBody;
      var orgSend = this.send;
      var orgOnReadyStateChange = this.onreadystatechange;
      this.send = function(data) {
        requestBody = data;
        return orgSend.apply(this, arguments);
      };
      this.onreadystatechange = function() {
        if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
          var responseText = this.responseText;
          var nJunkChars = responseText.indexOf('[');
          try {
            var jsonData = JSON.parse(
              nJunkChars ? responseText.substr(nJunkChars) : responseText
            );
            // TODO: modify jsonData here
            console.log('Request: %o\nResponse: %o', requestBody, jsonData);
            Object.defineProperty(this, 'responseText', {
              value: responseText.substr(0, nJunkChars) +
                JSON.stringify(jsonData),
              configurable: true,
              enumerable: true
            });
          } catch (e) {
            console && console.log && console.log(e);
          }
        }
        if (orgOnReadyStateChange) {
          return orgOnReadyStateChange.apply(this, arguments);
        }
      };
      Object.defineProperty(this, 'onreadystatechange', {
        get: function() { return orgOnReadyStateChange; },
        set: function(v) { orgOnReadyStateChange = v; },
        configurable: true,
        enumerable: true
      });
    }
    return open.apply(this, arguments);
  };
})(XMLHttpRequest.prototype.open);

Data yang dikembalikan oleh GP terdiri dari array dari satu elemen yang merupakan array dari empat elemen sebagai berikut:

  • String "ecr";
  • 1jika ada lebih banyak ulasan, 2jika ini adalah 'halaman' ulasan terakhir, 3jika terjadi kesalahan;
  • HTML yang berisi 'halaman' ulasan (dan balasan pengembang mana pun) - saat ini 40 ulasan dikembalikan per halaman;
  • Nomor halaman, sesuai dengan pageNumparameter di badan permintaan POST.

HTML dapat dimodifikasi untuk menghapus ulasan (dan balasan pengembang terkait) dengan peringkat bintang selain yang menarik. Ulasan cocok dengan pemilih div.single-reviewdan memiliki keturunan yang cocok div.current-ratingdengan gaya inline di mana properti lebar CSS adalah persentase yang sesuai dengan peringkat ( 20%untuk 1 bintang, 40%untuk 2 bintang, dll). Balasan pengembang cocok dengan pemilih div.developer-replydan saudara kandung segera setelah ulasan.

Menambahkan kotak centang ke UI untuk memungkinkan memilih peringkat bintang ulasan yang akan ditampilkan cukup mudah. Namun, ketika pilihan mereka diubah, ulasan harus diambil lagi. Mengubah urutan sortir menyebabkan hal ini terjadi, seperti halnya bahkan memilih urutan sortir yang sama seperti sebelumnya. Jadi untuk mencapai ini secara otomatis, setiap kali kotak centang diubah, clickperistiwa dapat dipicu pada elemen urutan sortir yang saat ini dipilih, yang dapat ditemukan dengan pemilih .id-review-sort-filter .dropdown-child.selected. Ketika halaman aplikasi pada GP awalnya dimuat, halaman pertama ulasan sudah termasuk dan tidak dimuat melalui AJAX, tetapi selama semua kotak centang pada awalnya diperiksa, itu tidak masalah.

Kadang-kadang halaman (40) ulasan tidak berisi apa pun dengan peringkat yang diinginkan. Jika tidak ada elemen dalam HTML yang dikembalikan, GP tidak akan meminta halaman lagi. Jadi untuk memenuhi hal ini, perlu mengambil halaman ulasan tambahan (melalui API AJAX yang sama, tetapi memodifikasi pageNumparameter) sampai ada beberapa ulasan untuk dikembalikan. Dan untuk halaman berikutnya, pageNumparameter perlu diterjemahkan ke akun untuk ini.

Ketika urutan pengurutan yang dipilih adalah 'Peringkat', mungkin ada banyak halaman ulasan bintang 5 sebelum apa pun dengan peringkat yang diinginkan. Pengambilan berulang-ulang dan membuang halaman dan halaman ulasan akan menjadi tidak efisien (dan dapat memicu blok IP sementara oleh Google). Dalam hal ini, ketika reviewSortOrderparameternya adalah 1, pencarian biner dapat digunakan untuk menemukan halaman berikutnya dengan ulasan yang lebih cepat untuk dikembalikan. Elemen halaman yang cocok dengan pemilih span.reviews-numdapat diperiksa untuk menemukan jumlah total ulasan dan dengan demikian menentukan jumlah halaman yang terikat. Meskipun, saat ini ternyata, permintaan untuk halaman di luar halaman 111 menerima respons HTTP 400.

Jake
sumber
Skrip yang sangat membantu; Terima kasih!
Brock Adams
1

Ini berfungsi untuk aplikasi Google Play untuk Android dan perangkat saja, tetapi sebagian besar Google Play tidak lagi untuk desktop di web. Melalui Google, lihat peringkat & ulasan aplikasi Anda, Anda dapat melihat peringkat aplikasi Anda dan meninjau data dengan mengekspornya ke file CSV.

Dengan mengekspor peringkat dan ulasan dari Konsol Pengembang, Anda dapat menganalisis tren secara massal untuk memahami umpan balik pengguna Anda dengan lebih baik. Laporan dihasilkan setiap hari, terakumulasi dalam file CSV bulanan, dan disimpan dalam ember Google Cloud Storage.

Ada judul bagian, Format file untuk data ulasan .

Field                 Format                    Optional    Example
Package Name          String                        NO      com.company.app
App Version Code      int32                         YES 
Star Rating           int32 (between 1 and 5)       NO  
Review Title    
Review Text String
Review Link String                                  NO      https://play.google.com/apps/publish/?dev_acc=<...>#ReviewPlace:id=<..>

Coba ini juga, lihat statistik aplikasi individual , Peringkat.

Ellie Kesselman
sumber
-1

Saya merekomendasikan App Annie untuk ini. Mereka memungkinkan Anda memantau aplikasi Anda sendiri secara gratis, dan membayar untuk mendapatkan informasi tentang aplikasi pesaing Anda.

Untuk ulasan khususnya, mereka memiliki tombol "Unduh CSV" yang mudah dan bagus. Mereka bahkan memiliki data historis, jadi jika Anda mendaftar hari ini Anda harus bisa mendapatkan akses langsung ke ulasan sebelumnya.

Dan Fabulich
sumber
Ini banyak dibaca seperti iklan. Jika Anda berafiliasi dengan produk, harap ungkapkan dalam jawaban dan rumuskan kembali untuk menjawab bagaimana produk tersebut sesuai dengan tugas aktual yang ingin dilakukan OP.
jonsca