c# - Flickr Automation For Actions Not in Available in Flickr API (Like Adding Contacts) -
edit: added bounty, if me figure out doing wrong, yours.
also, don't care how gets done. if there library can out, or of sort great.
since there no captcha involved, should theoretically able log flickr , add contact through code similar following...correct?
when run code , many many variants of when place supposed submit form verify adding contact, asks me log in. thing failure collect right cookie?
i have iehttpheader ie @ whats happening , trying best emulate it. can't find going wrong unless don't understand something.
flickr api can't this
all want login , add predefined contact.
//this kicks off process private void button2_click(object sender, eventargs e) { string user = "adampeditto"; //some random guy cookiecontainer cookies = new cookiecontainer(); cookies = loginyahoo(cookies, user); cookies = getcookies(cookies, user); cookies = clickflickrbutton(cookies, user); } private cookiecontainer clickflickrbutton(cookiecontainer cookies, string user) { try { string appurl = "http://www.flickr.com/people/" + user + "/relationship"; string strpostdata = "magic_cookie=a9dd9cd9fd23081f35b8bad2c0ba1878&done=1"; // setup http request. httpwebrequest wrwebrequest = webrequest.create(appurl) httpwebrequest; wrwebrequest.method = "post"; wrwebrequest.timeout = 10000; wrwebrequest.contentlength = strpostdata.length; wrwebrequest.contenttype = "application/x-www-form-urlencoded"; cookiecontainer cookiecontainer = cookies; wrwebrequest.cookiecontainer = cookiecontainer; // post login form. streamwriter swrequestwriter = new streamwriter(wrwebrequest.getrequeststream()); swrequestwriter.write(strpostdata); swrequestwriter.close(); // response. httpwebresponse hwrwebresponse = (httpwebresponse)wrwebrequest.getresponse(); // read response streamreader srresponsereader = new streamreader(hwrwebresponse.getresponsestream()); string strresponsedata = srresponsereader.readtoend(); srresponsereader.close(); return cookiecontainer; } catch (exception ex) { throw ex; } } private cookiecontainer loginyahoo(cookiecontainer cookies, string user) { string loginname = "yourloginname"; string password = "yourpassword"; string appurl = "https://login.yahoo.com/config/login?.src=flickr&.pc=5134&.scrumb=0&.pd=c%3de0.gahop2e4mjkx.5l2hgaolkpmypvccpvm-&.intl=us&.done=https%3a%2f%2flogin.yahoo.com%2fconfig%2fvalidate%3f.src%3dflickr%26.pc%3d5134%26.scrumb%3d0%26.pd%3dc%253de0.gahop2e4mjkx.5l2hgaolkpmypvccpvm-%26.intl%3dus%26.done%3dhttp%253a%252f%252fwww.flickr.com%252fsignin%252fyahoo%252f%253fredir%253d%25252fpeople%25252f" + user + "%25252frelationship%25252f&rl=1"; string strpostdata = ".tries=1&.src=flickr&.md5=&.hash=&.js=&.last=&promo=&.intl=us&.bypass=&.partner=&.u=0delt5h5l4df0&.v=0&.challenge=3dzf0dffqde0m.9mwncq6ljuz9gv&.yplus=&.emailcode=&pkg=&stepid=&.ev=&hasmsgr=1&.chkp=y&.done=https%3a%2f%2flogin.yahoo.com%2fconfig%2fvalidate%3f.src%3dflickr%26.pc%3d5134%26.scrumb%3d0%26.pd%3dc%253de0.gahop2e4mjkx.5l2hgaolkpmypvccpvm-%26.intl%3dus%26.done%3dhttp%253a%252f%252fwww.flickr.com%252fsignin%252fyahoo%252f%253fredir%253d%25252fpeople%25252f" + user + "%25252frelationship%25252f&.pd=flickr_ver%3d0%26c%3de0.gahop2e4mjkx.5l2hgaolkpmypvccpvm-%26ivt%3d%26sg%3d&login=" + loginname + "&passwd=" + password + "&.persistent=y&.save=sign+in"; // setup http request. httpwebrequest wrwebrequest = webrequest.create(appurl) httpwebrequest; wrwebrequest.allowautoredirect = true; wrwebrequest.method = "post"; wrwebrequest.contentlength = strpostdata.length; wrwebrequest.contenttype = "application/x-www-form-urlencoded"; cookiecontainer cookiecontainer = cookies; wrwebrequest.cookiecontainer = cookiecontainer; // post login form. streamwriter swrequestwriter = new streamwriter(wrwebrequest.getrequeststream()); swrequestwriter.write(strpostdata); swrequestwriter.close(); // response. httpwebresponse hwrwebresponse = (httpwebresponse)wrwebrequest.getresponse(); // read response streamreader srresponsereader = new streamreader(hwrwebresponse.getresponsestream()); string strresponsedata = srresponsereader.readtoend(); srresponsereader.close(); //you logged in yahoo! showinbrowser(strresponsedata); return cookiecontainer; } //these places sends upon autoredirect after run loginyahoo(), if set autoredirect true there should no need this... private cookiecontainer getcookies(cookiecontainer cookies, string user) { cookiecontainer cookiecontainer = cookies; string appurl = "http://login.yahoo.com/config/validate?.src=flickr&.pc=5134&.scrumb=6l14ni2pz3j&.pd=c%3de0.gahop2e4mjkx.5l2hgaolkpmypvccpvm-&.intl=us&.done=http%3a%2f%2fwww.flickr.com%2fsignin%2fyahoo%2f%3fredir%3d%252fpeople%252f" + user + "%252frelationship%252f"; httpwebrequest wrwebrequest = webrequest.create(appurl) httpwebrequest; wrwebrequest.cookiecontainer = cookiecontainer; wrwebrequest.allowautoredirect = false; httpwebresponse hwrwebresponse = (httpwebresponse)wrwebrequest.getresponse(); appurl = "http://flickr.com/signin/yahoo/?redir=%2fpeople%2f" + user + "%2frelationship%"; httpwebrequest wrwebrequest2 = webrequest.create(appurl) httpwebrequest; wrwebrequest2.cookiecontainer = cookiecontainer; wrwebrequest2.allowautoredirect = false; httpwebresponse hwrwebresponse2 = (httpwebresponse)wrwebrequest2.getresponse(); appurl = "http://flickr.com/cookie_check.gne?pass=%2fpeople%2f" + user + "%2frelationship%2f&fail=register_cookies.gne"; httpwebrequest wrwebrequest3 = webrequest.create(appurl) httpwebrequest; wrwebrequest3.cookiecontainer = cookiecontainer; wrwebrequest3.allowautoredirect = true; httpwebresponse hwrwebresponse3 = (httpwebresponse)wrwebrequest3.getresponse(); return cookiecontainer; }
i've done similar perl's www:mechanize library, that.
Comments
Post a Comment