Umkhawulo
Kunomkhawulo onjalo ku-LinkedIn -
Ingqikithi yomkhawulo ukuthi uma usebenzisa usesho lwabantu abangaphandle koxhumana nabo kaningi (awekho amamethrikhi aqondile, i-algorithm inquma ngokusekelwe ezenzweni zakho - ukuthi useshe kangaki futhi kangakanani, wengeza abantu), bese kuba umphumela wosesho. izokhawulelwa kumaphrofayili amathathu, esikhundleni sika-1000 (amakhasi ayi-100 azenzakalelayo, amaphrofayili ayi-10 ngekhasi ngalinye). Umkhawulo usethwa kabusha ekuqaleni kwenyanga ngayinye. Ngokwemvelo,
Kodwa kungekudala, ngephrojekthi yezilwane ezifuywayo, ngaqala ukudlala kakhulu ngosesho lwe-LinkedIn futhi ngokuzumayo ngathola lo mkhawulo. Ngokwemvelo, angizange ngikuthande kakhulu lokhu, ngoba angizange ngiyisebenzise noma yiziphi izinjongo zokuthengisa, ngakho-ke umcabango wami wokuqala kwakuwukufunda umkhawulo bese uzama ukuzungeza.
[Ukucaciswa okubalulekile: izinto eziku-athikili zethulwa kuphela ngezinjongo zolwazi nezemfundo. Umbhali akakukhuthazi ukusetshenziswa kwazo ngezinjongo zokuthengisa.]
Sifunda inkinga
Sine: esikhundleni samaphrofayili ayishumi ane-pagination, ukusesha kubuyisela amathathu kuphela, emva kwalokho ibhulokhi "enesincomo" se-akhawunti ye-premium ifakiwe futhi ngezansi kukhona amaphrofayili alufiphele futhi angachofozeki.
Ngokushesha, isandla sifinyelela kukhonsoli yonjiniyela ukuze sibheke lawa maphrofayela afihliwe - mhlawumbe singasusa izitayela ezithile ezifiphalisayo, noma sikhiphe ulwazi kubhulokhi kumakhaphu. Kodwa, ngokulindelekile, lawa maphrofayili alungile
Kulungile, manje ake sibheke ithebhu Yenethiwekhi bese sibheka ukuthi eminye imiphumela yosesho ebuyisela amaphrofayili amathathu kuphela iyasebenza yini. Sithola isicelo esinentshisekelo kuso sokuthi "/api/search/blended" futhi sibheke impendulo.
Amaphrofayili afika ngohlelo `luhlanganisiwe`, kodwa sekunezinhlaka eziyi-15 kulo, ezintathu zokuqala ziyizinto ezinolwazi olwengeziwe, into ngayinye iqukethe ulwazi ngephrofayili ethile (isibonelo, noma ngabe iphrofayili iyiprimiyamu. ).
Ezilandelayo eziyi-12 zingamaphrofayili angempela - imiphumela yosesho, emithathu kuphela esizoyiboniswa. Njengoba usuvele uqagele, kukhombisa kuphela labo abathola ulwazi olwengeziwe (izinto ezintathu zokuqala). Isibonelo, uma uthatha impendulo kuphrofayili ngaphandle komkhawulo, uzothola izinhlangano ezingama-28 - izinto eziyi-10 ezinokungeziwe. ulwazi kanye namaphrofayili angu-18.
Phendula iphrofayela ngaphandle komkhawulo
Kungani kufika amaphrofayili angaphezu kwe-10, nakuba kucelwe i-10 ngqo, futhi abahlanganyeli noma iyiphi indlela ekubonisweni, ngisho nasekhasini elilandelayo ngeke abe khona - angazi okwamanje. Uma uhlaziya i-URL yesicelo, ungabona ukuthi count=10 (mangakhi amaphrofayili azobuyiselwa empendulweni, umkhawulo ongu-49).
Ngingajabula ukuthola noma yikuphi ukuphawula ngalolu daba.
Ake sizame
Kulungile, into ebaluleke kakhulu manje esiyazi ngokuqinisekile ukuthi kukhona amaphrofayli amaningi empendulweni kunaleyo asibonisa yona. Lokhu kusho ukuthi singathola idatha eyengeziwe, ngaphandle komkhawulo. Ake sizame ukudonsa i-API ngokwethu, ngqo kusuka kukhonsoli, sisebenzisa ukulanda.
Njengoba kulindelekile, sithola iphutha, 403. Lokhu kungenxa yokuphepha, lapha asithumeli ithokheni ye-CSRF (
Ingakopishwa kusuka kunoma yisiphi esinye isicelo esiphumelele noma kumakhukhi, lapho igcinwe khona emkhakheni we-'JSESSIONID'.
Ungathola kuphi ithokheniIsihloko sesinye isicelo:
Noma kusuka kumakhukhi, ngqo ngekhonsoli:
Ake sizame futhi, kulokhu sidlulisa izilungiselelo okufanele sizilande, lapho sicacisa ithokheni yethu ye-csrf njengepharamitha kunhlokweni.
Impumelelo, sithola wonke amaphrofayili ayi-10. :tada:
Ngenxa yomehluko kumaheda, ukwakheka kwempendulo kuhluke kancane kulokho okutholwa esicelweni sokuqala. Ungathola isakhiwo esifanayo uma wengeza okuthi 'Accept:'application/vnd.linkedin.normalized+json+2.1' entweni yethu, eduze nethokheni ye-csrf.
Isibonelo sempendulo enesihloko esengeziwe
Okuningi mayelana nesihloko esithi Yamukela
Yini okulandelayo?
Khona-ke ungakwazi ukuhlela (ngesandla noma ngokuzenzakalelayo) ipharamitha `yokuqala`, ekhomba inkomba, kusukela lapho sizonikezwa amaphrofayili angu-10 (okuzenzakalelayo = 0) kuwo wonke umphumela wosesho. Ngamanye amazwi, ngokuyikhulisa ngo-10 ngemva kwesicelo ngasinye, sithola okukhiphayo okujwayelekile kwekhasi nekhasi, amaphrofayili ayi-10 ngesikhathi.
Kulesi sigaba nginedatha eyanele nenkululeko yokuqhubeka nokusebenza kuphrojekthi yezilwane ezifuywayo. Kodwa bekuzoba yisono ukungazami ukuveza le datha khona lapho, ngoba ibivele ikhona. Ngeke singene ku-Ember, esetshenziswa ngaphambili. I-jQuery ixhunywe kusayithi, futhi ngemva kokukhipha ulwazi lwe-syntax eyisisekelo ememori, ungakha okulandelayo emizuzwini embalwa.
ikhodi ye-jQuery
/* ΡΠ΅Π½Π΄Π΅Ρ Π±Π»ΠΎΠΊΠ°, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ ΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π±Π»ΠΎΠΊ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ */
const createProfileBlock = ({ headline, publicIdentifier, subline, title }) => {
$('.search-results__list').append(
`<li class="search-result search-result__occluded-item ember-view">
<div class="search-entity search-result search-result--person search-result--occlusion-enabled ember-view">
<div class="search-result__wrapper">
<div class="search-result__image-wrapper">
<a class="search-result__result-link ember-view" href="/zu/in/${publicIdentifier}/">
<figure class="search-result__image">
<div class="ivm-image-view-model ember-view">
<img class="lazy-image ivm-view-attr__img--centered EntityPhoto-circle-4 presence-entity__image EntityPhoto-circle-4 loaded" src="http://www.userlogos.org/files/logos/give/Habrahabr3.png" />
</div>
</figure>
</a>
</div>
<div class="search-result__info pt3 pb4 ph0">
<a class="search-result__result-link ember-view" href="/zu/in/${publicIdentifier}/">
<h3 class="actor-name-with-distance search-result__title single-line-truncate ember-view">
${title.text}
</h3>
</a>
<p class="subline-level-1 t-14 t-black t-normal search-result__truncate">${headline.text}</p>
<p class="subline-level-2 t-12 t-black--light t-normal search-result__truncate">${subline.text}</p>
</div>
</div>
</div>
<li>`
);
};
// Π΄Π΅ΡΠ³Π°Π΅ΠΌ Π°ΠΏΠΈ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠΌ ΠΏΡΠΎΡΠΈΠ»ΠΈ
const fetchProfiles = () => {
// ΡΠΎΠΊΠ΅Π½
const csrf = 'ajax:9082932176494192209';
// ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠΎΠΊΠ΅Π½
const settings = { headers: { 'csrf-token': csrf } }
// ΡΡΠ» Π·Π°ΠΏΡΠΎΡΠ°, Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΡΡΠ°ΡΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅
const url = `https://www.linkedin.com/voyager/api/search/blended?count=10&filters=List(geoRegion-%3Ejp%3A0,network-%3ES,resultType-%3EPEOPLE)&origin=FACETED_SEARCH&q=all&queryContext=List(spellCorrectionEnabled-%3Etrue,relatedSearchesEnabled-%3Etrue)&start=${nextItemIndex}`;
/* Π΄Π΅Π»Π°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡ, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ Π² ΠΎΡΠ²Π΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠ΅Π½Π΄Π΅Ρ Π±Π»ΠΎΠΊΠ°, ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ ΡΡΠ°ΡΡΠΎΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π° 10 */
fetch(url, settings).then(response => response.json()).then(data => {
data.elements[0].elements.forEach(createProfileBlock);
nextItemIndex += 10;
});
};
// ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π²ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°
$('.search-results__list').find('li').remove();
// Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ
$('.search-results__list').after('<button id="load-more">Load More</button>');
// Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ
$('#load-more').addClass('artdeco-button').on('click', fetchProfiles);
// ΡΡΠ°Π²ΠΈΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠΎΡΠΈΠ»Ρ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ°
window.nextItemIndex = 0;
Uma wenza lokhu ngokuqondile kukhonsoli ekhasini lokusesha, izongeza inkinobho elayisha amaphrofayela amasha angu-10 ngokuchofoza ngakunye futhi iwanikeze ohlwini. Kunjalo, shintsha ithokheni ne-URL kube kwedingekayo ngaphambi kokwenza lokhu. Ibhulokhi yephrofayela izoqukatha igama, indawo, indawo, isixhumanisi sephrofayela kanye nesithombe sesibambi.
isiphetho
Ngakho, ngomzamo omncane, sakwazi ukuthola indawo ebuthaka futhi saphinde safuna ngaphandle kwemingcele. Kwanele ukuhlaziya idatha kanye nendlela yayo, bheka isicelo ngokwaso.
Angikwazi ukusho ukuthi lokhu kuyinkinga enkulu ye-LinkedIn, ngoba ayifaki usongo. Inzuzo enkulu elahlekile ngenxa yalezo "zokusebenza", ezikuvumela ukuthi ugweme ukukhokhela i-premium. Mhlawumbe impendulo enjalo yeseva iyadingeka ekusebenzeni okulungile kwezinye izingxenye zesayithi, noma kumane kuwubuvila babathuthukisi kanye nokuntuleka kwezinsiza ezingakuvumeli ukuthi kwenziwe kahle. (Umkhawulo uvele ngoJanuwari 2015; ngaphambi kwalokhu kwakungekho mkhawulo).
PS
Ngokwemvelo, ikhodi ye-jQuery iyisibonelo sakudala samakhono. Okwamanje ngidale isandiso sesiphequluli esifanelana nezidingo zami. Yengeza izinkinobho zokulawula futhi inikeze amaphrofayili agcwele anezithombe, inkinobho yesimemo nokuxhumana okuvamile. Futhi, iqoqa ngamandla izihlungi zezindawo, izinkampani, nezinye izinto, futhi ithola ithokheni kumakhukhi. Ngakho-ke asikho isidingo sokwenza i-hardcode noma yini. Yebo, yengeza izinkambu zezilungiselelo ezengeziwe, elithi "mangaki amaphrofayili ongawacela ngesikhathi, kuze kufike ku-49."
Ngisalungisa lokhu kwengezwa futhi ngihlela ukukudedela emphakathini. Bhala uma unentshisekelo.
Source: www.habr.com