Catatan Cak Edy

Life and Technology

  • About
  • Kebijakan Privasi
  • Kontak
  • Referensi

limesurvey

Mengambil Data Participants dengan python Citric

06/08/2024

Saya belum ada waktu menerangkan panjang lebar.
Saya menggunakan bantuan dokumentasi dan jsoneditoronline buat membantu ekstraksi json.
Sementara skrip ini dulu aja buat catatan:

from citric import Client
import pandas as pd

survey_id = 452848
client = Client(
    'http://limesurvey6.test/index.php/admin/remotecontrol',
    'admin',
    'password'
)

participants = client.list_participants(survey_id, start=0, limit=5, unused=True, attributes= False, conditions=None)

print(participants)

Hasilnya sbb:

Namun apabila kita ingin mengambil attributes lain, caranya sbb:

participants = client.list_participants(survey_id, start=0, limit=5, unused=True, attributes= ["completed", "usesleft", "attribute_1"], conditions=None)

Dan hasilnya sbb:

Sekarang tinggal ekstrak pilih attribute yang mana.

Berikut jika kita ingin memasukkannya ke DataFrame:

from citric import Client
import pandas as pd

# Connect to your LimeSurvey instance
survey_id = 452848
client = Client(
    "http://limesurvey6.test/admin/remotecontrol",
     'admin', 
     'password'
)
participants = client.list_participants(survey_id, start=0, limit=5, unused=True, attributes= ["completed", "usesleft", "attribute_1"], conditions=None)

# karena participant mengandung sub array, maka kita harus emmbuatnya ke dalam array 2 2 dimensi agar bisa dimasukkan ke DataFrame
res = []
for field in participants:
        res.append({'tid':field['tid'],
           'attribute_1':field['attribute_1'],
           'firstname':field['participant_info']['firstname']
           })

df = pd.DataFrame(res)

# setelah itu bisa di print di export ke excel maupun ke sqlite
print(df)

Menurut saya method ini kurang asik. Mestinya ada cara ambil all fields in participants. Atau apa saya yang kurang ngerti caranya?

Posted in: Programing, Python Tagged: citric, limesurvey

Mengakses LimeSurvey API dengan Python Citric

30/07/2024

Kemarin kita telah mencoba menggunakan library limepy untuk mendapatkan data response survey. Sepengetahuan saya setelah mencobanya, limepy mempunyai method-method terbatas. Tidak ada cara bagaimana mengakses LimeSurvey API menggunakan library ini. Kelihatannya memang tidak ada. Dia hanya memanfaatkan sedikit LimeSurveyAPI untuk medukung fungsi-fungsi dia sendiri.

Tapi bukan Python namanya kalau berhenti disitu. Python itu surganya library. Kita mendapatkan library untuk memaksimalkan penggunaan LimeSurvey API: citric. Library ini bisa mengakses seluruh fungsi dalam Limesurvey. Nampaknya, ini mirip library limer  pada R.

Ok langsung saja …

Install Library Citric

Okey, cukup dengan pip install citric

Contoh menampilkan semua List Survey

from citric import Client

client = Client(
    "https://mylimesite.limequery.com/admin/remotecontrol",
    "myusername",
    "mypassword"
)

for survey in client.list_surveys():
    print(survey["surveyls_title"])

Contoh mengambil struktur pertanyaan menggunakan list_question

from citric import Client

# Connect to your LimeSurvey instance
client = Client(
    "https://mylimesite.limequery.com/admin/remotecontrol", 
    "myusername", 
    "mypassword"
)

# Choose a survey ID 
survey_id = 452848 

# List questions from the chosen survey
questions = client.list_questions(survey_id)

# Print the questions
for question in questions:
    print(f"Question ID: {question['qid']}, Question Text: {question['question']}")

Contoh mengambil data dalam format CSV

from citric import Client

client = Client(
    "https://mylimesite.limequery.com/admin/remotecontrol", 
    "myusername", 
    "mypassword"
)

survey_id = 452848  # Replace with your survey ID

export_response = client.save_responses(
    filename="responses.csv",
    survey_id=survey_id,
    file_format="csv",
    language=None,  # None will use the default language
    completion_status="all",  # all, incomplete, complete
    heading_type="code",  # code, abbreviated, full
    response_type="long",  # short, long
    from_response_id=None,  # None will export all responses
    to_response_id=None  # None will export all responses
)

print("Responses have been exported and saved to responses.csv")

Untuk dokumentasi citric, silahkan akses dimari …

Oke sedemikian dulu, nanti kita lanjutkan dengan kasus-kasus yang lebih implementatif. Enjoy …

Posted in: Python Tagged: limesurvey, python

Preparasi Pengolahan Data dengan LimeSurvey API, Python dan SQLite

29/07/2024

Ditempat saya bekerja, sudah biasa melakukan preparasi pengolahan data dengan cara mengambil data survey dalam format csv,  melalui LimeSurvey API dengan menggunakan bahasa R. Data dalam format csv itu kemudian di padukan dengan struktur kuesioner dan diolah.

Memang di Lime Survey penggunaan API menjadi penting karena kalau kita langsung mengakses database, kita akan mendapati sebuah pertanyaan text dengan kode A12 bisa menjadi 452848X96X2183. Nah kalau kita menggunakan API, maka kita bisa mendapatkan data dengan kolom kode pertanyaan.

Ok, saya akan menirukan cara diatas menggunakan Python dengan library limepy. beberapa prosedur yang akan saya lakukan adalah.

  1. Mendownload data menggunakan limepy ke dalam bentuk csv dengan nama respons.csv
  2. Mendwnload struktur pertanyaan dengan nama structure.lss melalui halaman belakang limesurvey.
  3. Menggabungkan keduanya menjadi sebuah file sqlite dengan tabel structure dan respons

Install limepy

Cara install limepy dengan cara pip install limepy

Download response menggunakan limepy

from pathlib import Path
from limepy import download

base_url = 'https://yourlimesurveypath.com/index.php/admin/remotecontrol'
user_name = 'admin'
password = 'yourpassword'
user_id =  1 # nggak tahu mengapa harus ada ini
sid = 868964

csv = download.get_responses(base_url, user_name, password, user_id, sid, lang=None,
                  document_type='csv', completion_status='all',
                  heading_type='short', response_type='long',
                  from_response_id=None, to_response_id=None, fields=None)

path = Path('responses.csv')
path.write_text(csv)

'''
Rerensi:

def get_responses(base_url, user_name, password, user_id, sid, lang=None,
                  document_type='csv', completion_status='all',
                  heading_type='code', response_type='short',
                  from_response_id=None, to_response_id=None, fields=None):
    """Get session key, download and store responses and close session.

    :param base_url: e.g. https://mywebsite.nl/survey.
    :param user_name: LimeSurvey user name
    :param password: LimeSurvey user password
    :param user_id: LimeSurvey user id
    :param sid: LimeSurvey survey id
    :param lang: language. (Default value = None)
    :param document_type: format for results (Default value = 'csv')
    :param completion_status: which responses to export, 'complete',
        'incomplete' or 'all' (Default value = 'all')
    :param heading_type: 'code', 'full' or 'abbreviated'
        (Default value = 'code')
    :param response_type: 'short' or 'long' (Default value = 'short')
    :param from_response_id: for partial export (Default value = None)
    :param to_response_id: for partial export (Default value = None)
    :param fields: for partial export (Default value = None)

'''

Download structure.lss melalui halaman login

Cari di menu Export pada survey yang diinginkan.

Buat data menjadi file SQLite

Mengapa harus dijadikan SQLite, nggak diolah menggunakan dataframe saja.  Alasannya memang cukup memalukan yaitu karena saya lupa sintak pandas karena lama tidak saya gunakan, Sedangkan SQL tidak lupa karena sering saya gunakan.

from limepy.wrangle import Survey, Question
import pandas as pd
import sqlite3
import datetime

df = pd.read_csv('responses.csv', sep=';', encoding='ISO-8859-1')
with open('structure.lss', encoding="ISO-8859-1") as f:
    my_structure = f.read()

my_survey = Survey(df, my_structure,language=None, strip_tags=True)

responses_df = my_survey.dataframe
question_df = my_survey.question_list

current_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
db_file = 'survey.sqlite3'
db_file = f"{current_time}_{db_file}"
conn = sqlite3.connect(db_file)

# Masukkan data dari DataFrame ke dalam tabel SQLite
table_name = 'responses'
responses_df.to_sql(table_name, conn, if_exists='replace', index=False)

table_name = 'questions'
question_df.to_sql(table_name, conn, if_exists='replace', index=False)

# Tutup koneksi ke database
conn.close()

print(f"Data has been inserted into table in {db_file} database.")

Nah. hasilnya akan didapatkan file SQLite yang siap diQuery

Ok, segitu dulu, selamat mencoba ….

Posted in: Python, Uncategorized Tagged: limepy, limesurvey, sqlite

LimeSurvey 6.5 CE Minimum Requirement

09/07/2024

Saat ini Lime Survey sudah mengalami perkembangan versi sampai 6.5. Mulai versi 6, tampilannya sudah banyak berubah, semakin memanfaatkan fungsional Javascript.

Hari ini akan ada meeting dan satu hal yang akan ditanyakan adalah minimum requirement yang dibutuhkan ketika kita mau melakukan instalasi LimeSurvey 6   CE Edition.

Saya nggak mendapatkan informasi yang enak di situs mereka. Terpaksa install LimeSurvey 6.5 dan melihat requirementnya di halaman awal saat instalasi.

Tapi jangan salah, minimum requirement pada kenyataannya nggak cukup. Lime Survey itu aplikasi berat. Apalagi kalau ada survey dengan ratusan kolom pada database dengan responden besar.

Iseng, bertanya pada ChatGPT ternyata malah lebih informatif dibanding situs asline hehehe. Begini katanya:

Untuk menjalankan LimeSurvey 6.5, ada beberapa persyaratan minimum yang harus dipenuhi untuk memastikan bahwa perangkat lunak ini berjalan dengan baik dan aman:

  1. Server:
    • Web Server: Apache, Nginx, atau IIS
    • PHP: Versi 7.4 atau lebih baru, tetapi versi terbaru selalu direkomendasikan PHP 8.3
    • Database: MySQL 5.7+, MariaDB 10.2+, PostgreSQL 9.5+, atau MSSQL Server 2012+
  2. Ekstensi PHP yang Diperlukan:
    • mbstring
    • pdo_mysql/pdo_pgsql/pdo_sqlsrv (tergantung pada database yang digunakan)
    • zip
    • gd
    • fileinfo
  3. Konfigurasi Server:
    • SSL: Disarankan untuk menggunakan SSL terutama jika Anda mengumpulkan data sensitif.
    • File Permissions: Pastikan bahwa direktori dan file memiliki izin yang sesuai. Direktori seperti application/config, tmp, dan upload harus dapat ditulis oleh web server user.
  4. Persyaratan Lain:
    • Memori PHP: Minimum 256MB, tetapi 512MB atau lebih disarankan untuk memastikan performa yang baik. Tapi saya sarankan minimal 4 GB (cakedy)
    • Processior 4 core tapi saya sarankan 8 core (cakedy)
    • Ruang Disk: Tergantung pada jumlah dan ukuran survei, tetapi disarankan untuk memiliki setidaknya 100MB ruang kosong untuk instalasi dasar tanpa data.

Mengikuti persyaratan ini akan membantu memastikan bahwa LimeSurvey berjalan dengan lancar dan aman di lingkungan server Anda. (Help Center)​​ (LimeSurvey)​.

Posted in: Aplikasi Tagged: limesurvey

Donasi. Jika kamu terbantu dengan blog ini dan ingin berdonasi, silahkan berdonasi melalui link ini: Donasi

Kategori

  • Aplikasi (14)
  • Aplikasi Server (11)
  • Catatan (22)
  • Cerita Inspiratif (4)
  • Data Science (26)
  • Database (5)
  • Hardware (2)
  • Internet of Thing (6)
  • JavaScript (2)
  • Management (5)
  • Media (4)
  • Pendidikan (8)
  • PHP (13)
  • Programing (22)
  • Python (14)
  • Scientech (1)
  • Server (11)
  • Teknologi (50)
  • Uncategorized (60)
  • Utility (1)

Tulisan terbaru

  • Membuat TailScale Sendiri26/05/2025
  • Laravel vs CodeIgniter26/05/2025
  • NextCloud vs OwnCloud22/05/2025
  • Blockchain20/05/2025
  • OpenResty Suck!18/05/2025

cakedy.penamedia.com

  • Ketika Uang di Rekeningmu Setipis Tisu
  • Etos Kerja
  • Fokus ke Diri Sendiri
  • Blogging Tiap Hari?
  • Hasil

Copyright © 2025 Catatan Cak Edy.

Me WordPress Theme by themehall.com