package im.meizhi.net; import android.text.TextUtils; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.toolbox.HttpHeaderParser; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; public abstract class GalleryRequest extends Request<List<Album>> { public GalleryRequest() { super(Method.GET, "http://meizhi.im", null); } @Override protected Response<List<Album>> parseNetworkResponse(NetworkResponse response) { try { List<Album> albums = new ArrayList<>(); Document document = Jsoup.parse(new String(response.data, HttpHeaderParser.parseCharset(response.headers))); for (Element box : document.select(".container.main .box")) { Elements link = box.select("a[href]"); if (link.isEmpty()) { continue; } String url = link.attr("href"); if (!url.startsWith("/m/")) { continue; } Elements img = link.select("img"); if (img.isEmpty()) { continue; } String cover = img.attr("src"); if (TextUtils.isEmpty(cover)) { continue; } if (cover.contains("?imageView2")) { cover = cover.substring(0, cover.indexOf("?imageView2")); } Album album = new Album(); album.id = url.substring(3); album.cover = cover; albums.add(album); } return Response.success(albums, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } } public void enqueue(RequestQueue queue) { queue.add(this); } }