[FOORUM] Kasutajate andmete hankimine

Vaata eelmist teemat Vaata järgmist teemat Go down

Tonight
Tonight

[FOORUM] Kasutajate andmete hankimine Vetera11
Liitus : 19/02/2012
Postitusi : 18000

PostitamineTonight 09.03.15 0:52

[FOORUM] Kasutajate andmete hankimine 14258710

Foorumi omanikuna võib vahel tekkida tahtmine teha erinevat statistikat, kuid kasutajate andmete hankimine on üsnagi tülikas. Õnneks saab selle lihtsa scripti abil automaatseks muuta.
Loo uus HTML lehekülg (ACP -> Modules -> HTML & JAVASCRIPT -> HTML pages management -> Create in advanced mode (HTML))
Kood:
<script type="text/javascript">requestTime = 3000</script>
<style type="text/css">
.fieldLabel {
  display:inline-block;
  width:150px;
}
#orderData {
  width:100%;
  margin:4px 0;
}
</style><div style="width:50%;margin:0 auto;">
  <div><span class="fieldLabel">Kasutajate arv: </span><input id="memCount" placeholder="0" type="text"/></div>
  <div><span class="fieldLabel">Lahter 1: </span><input id="data1" placeholder="#field_id-6" type="text"/></div>
  <div><span class="fieldLabel">Lahter 2 (valikuline): </span><input id="data2" placeholder="#field_id-13" type="text"/></div>
  
  <input id="initData" type="button" value="Alusta" />
  <br/><br/>
  <strong>Progress: </strong><span id="progress"></span>
  <br/>
  <strong>Staatus: </strong><span id="status"></span>
  <br/>
  <textarea id="orderData" style="height:100px;" onclick="this.select()"></textarea>
  <div id="loadData" style="display:none"></div>
</div>

<script type="text/javascript">var mem_now = 1, mem_end, time = 0, data1 = document.getElementById('data1'), data2 = document.getElementById('data2'), total = 0, statusI = document.getElementById('status');
document.getElementById('initData').onclick = function() {
  mem_end = Number(document.getElementById('memCount').value);
  if (data1.value.length == 0 && data2.value.length == 0) return alert('Pole piisavalt andmeid');
  if (data1.value.length > 0) total += 1;
  if (data2.value.length > 0) total += 1;
  
  init();
  statusI.innerHTML = 'Töötan.';
  statusI.style.color = 'brown';
  _timer = window.setInterval(function() {
    if (time == 3) {
      statusI.innerHTML = 'Töötan.';
      time = 0;
    } else {
      statusI.innerHTML += '.';
      time += 1;
    }
  },500);
};
  
function init() {
  var d1 = document.getElementById('data1').value, d2 = document.getElementById('data2').value, txt = document.getElementById('orderData');
  
  document.getElementById('progress').innerHTML = mem_now + ' / ' + mem_end;
  document.getElementById('initData').style.display = 'none';
  
  $('#loadData').load('/u' + mem_now + ' title, ' + d1 + ', ' + d2, function() {
  
    if (total == 1) {
      if (mem_now == 1) txt.value += '[table]\n[tr][td]Kasutajanimi[/td][td]'+ $(this).find('dl dt').text() +'[/td][/tr]\n[tr][td][url=http://'+ window.location.host + '/u' + mem_now +']'+ $(this).find('title').text().replace(/.*?- (.*?)/,'$1') +'[/url][/td][td]'+ $(this).find('dl dd .field_uneditable').text() +'[/td][/tr]';
      else if (mem_now != mem_end) txt.value += '\n[tr][td][url=http://'+ window.location.host + '/u' + mem_now +']'+ $(this).find('title').text().replace(/.*?- (.*?)/,'$1') +'[/url][/td][td]'+ $(this).find('dl dd .field_uneditable').text() +'[/td][/tr]';
      if (mem_now == mem_end) txt.value += '\n[tr][td][url=http://'+ window.location.host + '/u' + mem_now +']'+ $(this).find('title').text().replace(/.*?- (.*?)/,'$1') +'[/url][/td][td]'+ $(this).find('dl dd .field_uneditable').text() +'[/td][/tr]\n[/table]';
    }
    if (total == 2) {
      if (mem_now == 1) txt.value += '[table]\n[tr][td]Kasutajanimi[/td][td]'+ $(this).find('dl:eq(0) dt').text() +'[/td][td]'+ $(this).find('dl:eq(1) dt').text() +'[/td][/tr]\n[tr][td][url=http://'+ window.location.host + '/u' + mem_now +']'+ $(this).find('title').text().replace(/.*?- (.*?)/,'$1') +'[/url][/td][td]'+ $(this).find('dl:eq(0) dd .field_uneditable').text() +'[/td][td]'+ $(this).find('dl:eq(1) dd .field_uneditable').text() +'[/td][/tr]';
      else if (mem_now != mem_end) txt.value += '\n[tr][td][url=http://'+ window.location.host + '/u' + mem_now +']'+ $(this).find('title').text().replace(/.*?- (.*?)/,'$1') +'[/url][/td][td]'+ $(this).find('dl:eq(0) dd .field_uneditable').text() +'[/td][td]'+ $(this).find('dl:eq(1) dd .field_uneditable').text() +'[/td][/tr]';
      if (mem_now == mem_end) txt.value += '\n[tr][td][url=http://'+ window.location.host + '/u' + mem_now +']'+ $(this).find('title').text().replace(/.*?- (.*?)/,'$1') +'[/url][/td][td]'+ $(this).find('dl:eq(0) dd .field_uneditable').text() +'[/td][td]'+ $(this).find('dl:eq(1) dd .field_uneditable').text() +'[/td][/tr]\n[/table]';
    }
  
    txt.style.height = Number(txt.style.height.replace(/px/,'')) + 15 + 'px';
    if (mem_now < mem_end) {
      mem_now += 1;
      setTimeout(function() { init() },requestTime);
    } else if (mem_now == mem_end) {
      statusI.innerHTML = 'Tehtud!';
      statusI.style.color = 'green';
      window.clearInterval(_timer);
    }
  });
}</script>
Et asi töötaks, pead sa sellel HTML lehel aktiveerima ka foorumi päise ja jaluse.
[FOORUM] Kasutajate andmete hankimine Seaded10
Salvesta oma töö ja mine tehtud HTML-lehele.

Andmete hankimiseks pead sa teadma profiililahtri unikaalset nime. Üks lihtsamaid meetodeid selle leidmiseks on Inspectori (Firefoxis Ctrl + Shift + C) kasutamine. Sul tuleb minna hiirega lihtsalt vastava profiililahtri peale ning sulle kuvatakse ID.
[FOORUM] Kasutajate andmete hankimine 45610
Kui oled nime kindlaks teinud, siis sisesta HTML-lehel kasutajate arv (näiteks kui valid 50, siis viimaseks hangitavaks on 50. liituja andmed) ja vajalik lahter ning oledki valmis genereerimiseks.
NB! Seda lehte on soovitatav kasutada väljalogituna.

Näide:
[FOORUM] Kasutajate andmete hankimine Nyide11

Vaata eelmist teemat Vaata järgmist teemat Tagasi üles

Soovid vestluses osaleda?

Selleks logi sisse või tee endale kasutaja.

Liitu foorumiga

Tee endale kasutaja ning osale aruteludes.


Tee uus kasutaja

Logi sisse

Omad foorumis juba kasutajat? Logi sisse.


Logi sisse

 
Permissions in this forum:
Sa ei saa vastata siinsetele teemadele