Created
July 13, 2011 23:05
-
Star
(180)
You must be signed in to star a gist -
Fork
(55)
You must be signed in to fork a gist
-
-
Save jcsrb/1081548 to your computer and use it in GitHub Desktop.
Revisions
-
jcsrb created this gist
Jul 13, 2011 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,123 @@ function get_avatar_from_service(service, userid, size) { // this return the url that redirects to the according user image/avatar/profile picture // implemented services: google profiles, facebook, gravatar, twitter, tumblr, default fallback // for google use get_avatar_from_service('google', profile-name or user-id , size-in-px ) // for facebook use get_avatar_from_service('facebook', vanity url or user-id , size-in-px or size-as-word ) // for gravatar use get_avatar_from_service('gravatar', md5 hash email@adress, size-in-px ) // for twitter use get_avatar_from_service('twitter', username, size-in-px or size-as-word ) // for tumblr use get_avatar_from_service('tumblr', blog-url, size-in-px ) // everything else will go to the fallback // google and gravatar scale the avatar to any site, others will guided to the next best version var url = ''; switch (service) { case "google": // see http://googlesystem.blogspot.com/2011/03/unedited-google-profile-pictures.html (couldn't find a better link) // available sizes: all, google rescales for you url = "http://profiles.google.com/s2/photos/profile/" + userid + "?sz=" + size; break; case "facebook": // see https://developers.facebook.com/docs/reference/api/ // available sizes: square (50x50), small (50xH) , normal (100xH), large (200xH) var sizeparam = ''; if (isNumber(size)) { if (size >= 200) { sizeparam = 'large' }; if (size >= 100 && size < 200) { sizeparam = 'normal' }; if (size >= 50 && size < 100) { sizeparam = 'small' }; if (size < 50) { sizeparam = 'square' }; } else { sizeparam = size; } url = "https://graph.facebook.com/" + userid + "/picture?type=" + sizeparam; break; case "gravatar": // see http://en.gravatar.com/site/implement/images/ // available sizes: all, gravatar rescales for you url = "http://www.gravatar.com/avatar/" + userid + "?s=" + size break; case "twitter": // see https://dev.twitter.com/docs/api/1/get/users/profile_image/%3Ascreen_name // available sizes: bigger (73x73), normal (48x48), mini (24x24), no param will give you full size var sizeparam = ''; if (isNumber(size)) { if (size >= 73) { sizeparam = 'bigger' }; if (size >= 48 && size < 73) { sizeparam = 'normal' }; if (size < 48) { sizeparam = 'mini' }; } else { sizeparam = size; } url = "http://api.twitter.com/1/users/profile_image?screen_name=" + userid + "&size=" + sizeparam; break; case "tumblr": // see http://www.tumblr.com/docs/en/api/v2#blog-avatar //TODO do something smarter with the ranges // available sizes: 16, 24, 30, 40, 48, 64, 96, 128, 512 var sizeparam = ''; if (size >= 512) { sizeparam = 512 }; if (size >= 128 && size < 512) { sizeparam = 128 }; if (size >= 96 && size < 128) { sizeparam = 96 }; if (size >= 64 && size < 96) { sizeparam = 64 }; if (size >= 48 && size < 64) { sizeparam = 48 }; if (size >= 40 && size < 48) { sizeparam = 40 }; if (size >= 30 && size < 40) { sizeparam = 30 }; if (size >= 24 && size < 30) { sizeparam = 24 }; if (size < 24) { sizeparam = 16 }; url = "http://api.tumblr.com/v2/blog/" + userid + "/avatar/" + sizeparam; break; default: // http://www.iconfinder.com/icondetails/23741/128/avatar_devil_evil_green_monster_vampire_icon // find your own url = "http://i.imgur.com/RLiDK.png"; // 48x48 } return url; } // helper methods function isNumber(n) { // see http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric return !isNaN(parseFloat(n)) && isFinite(n); }