PowerShell szkript Facebook profilképek letöltésére

Korábban szükségem volt egyszer arra, hogy letöltsem az összes Facebook ismerősöm profilképét. Természetesen nem szerettem volna egyesével végigkattintgatni a képeket:) A Facebook szerencsére ad egy webes API-t, amivel le lehet adatokat kérdezni. Összetákoltam rá egy PowerShell + wget + egyéb szkriptet némi kézi lépésekkel megtűzdelve, és kész is volt. Aztán el is felejtettem, de most az egyik tantárgyunkban pont jó példa volt, úgyhogy elővettem újra. Az elmúlt egy évben kijött a PowerShell 3 végleges verziója, és azzal gyerekjáték volt megoldani.

Feladat: töltsük le az összes FB ismerősünk profilképét lehetőleg valami nagyobb méretben.

Facebook API: a Facebook oldalán egész jó kis leírás van erről (Graph API). A lényeg annyi, hogy a következő kéréssel tudjuk lekérdezni az ismerősök adatait:

https://graph.facebook.com/me/friends?access_token=XXXXX

Itt az access_token helyébe kell generáltatni egy hozzáférési tokent a saját felhasználónak (lásd itt, de a legegyszerűbben a példákra kattintva tudunk kérni egy érvényes tokent).

Az ismerősök adatait JSON formában kapjuk vissza:

{
 "data": [
 {
 "name": "Kis Bela",
 "id": "123456"
 },
 {
 "name": "Nagy Bela",
 "id": "1234567"
 }
 ],
 "paging": {
 "next": "https://graph.facebook.com/..."
 }
}

Azaz a data részben vannak a (name, id) párok, és ha túl sok ismerősünk lenne, akkor a paging-ben lévő next linken lehetne elkérni a következő adagot.

A PowerShell v3-ban már van egy ConvertFrom-Json cmdlet, de az ezt nem tudta beolvasni. A .NET osztályok között kezdtem el körbenézni, de ott se volt annyira triviális, több helyen a Json.NET könyvtárat ajánlották. Aztán szerencsére rájöttem, hogy nem is kell a JSON köztes formátummal küzdeni, ugyanis van egy sokkal kényelmesebb megoldás:

Invoke-RestMethod -Uri https://graph.facebook.com/...

Így szépen egy PSCustomObject objektumban visszakapjuk a hívás eredményét, aminek van egy data és egy paging tulajdonsága is.

Ezek után már csak a képeket kellett letölteni, ehhez csak a következő URI kell:

https://graph.facebook.com/<person id>/picture?type=large

A letöltéshez használható az új Invoke-WebRequest cmdlet.

Ezzel az egész kb. 3 sorból megoldható:)

Egy kommentezett, paraméterezhető változata megtalálható itt: Get-FaceBookFriendsPicture.ps1

Advertisements
Kategória: Tech
Címke:
Közvetlen link a könyvjelzőhöz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s