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

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -