[{"data":1,"prerenderedAt":282},["ShallowReactive",2],{"project-22788236":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":33,"aspects":34,"strip":39,"post_text":41,"what":42,"said":76,"maker_in_thread":147,"shape":155,"grid":159,"attempts":244,"same_week":245,"maker_shows":31,"maker_hidden":273,"reader_version":274,"card":275},"22788236","getHNFavorites.js","Export HN Favorites to a CSV File","title","Show HN: Export HN Favorites to a CSV File",null,"gabrielsroka",1586117307,2020,240,39,205,3028,7,"notable","dev_tools","browser script","other",[23,24,25,26],"hacker news","favorites export","csv export","scraper","loved",0.452,{"positive":30,"neutral":31,"mixed":32,"critical":32},6,4,0,10,{"idea":35,"execution":37},{"positive":36,"critical":32},3,{"positive":38,"critical":32},1,[36,32,32,32,40,40,32,32,32,32,32,32,32,32,32,32,32,32,32,40,32,40,32,36,32,32,36,32,32,36,32,40,32,32,32,32,40,32,32],5,"I wrote a short JavaScript snippet to export HN Favorites to a CSV file.\n\nIt runs in your browser like a browser extension. It scrapes the HTML and navigates from page to page.\n\nSetup and usage instructions are in the file.\n\nCheck out https:\u002F\u002Fgabrielsroka.github.io\u002FgetHNFavorites.js or to view the source code, see getHNFavorites.js on https:\u002F\u002Fgithub.com\u002Fgabrielsroka\u002Fgabrielsroka.github.io",{"problem":43,"audience":53,"pricing":9,"motivation":61,"time_to_build":9,"stack":68,"openness":73,"stage":74,"team_size":75},{"value":44,"source":45,"evidence":46},"HN has no API for favorites, so users cannot easily export them","inferred",[47,51],{"id":48,"by":49,"text":50},"22788482","simonw","It's a shame favorites aren't exposed in the official HN API: https:\u002F\u002Fgithub.com\u002FHackerNews\u002FAPI - this is a smart workaround.",{"id":52},"post",{"value":54,"source":45,"evidence":55},"Hacker News users who want their favorites as data",[56,57],{"id":48,"by":49,"text":50},{"id":58,"by":59,"text":60},"22788781","dvfjsdhgfv","This is smart. I'm adding this to my HN favorites.",{"value":62,"source":63,"evidence":64},"Show people it is possible and easy to get to their own data","maker",[65],{"id":66,"by":10,"text":67},"22788698","Thanks Simon. I'd originally written this script to export my DVD ratings from Netflix, since there's no API for that either. It was easy to adapt it to HN. I wanted to show…",[69],{"value":70,"source":63,"evidence":71},"JavaScript",[72],{"id":52},"open_source","launched","unknown",{"praise":77,"objections":91,"requests":98,"questions":112,"alternatives":123},[78,84],{"value":79,"source":80,"evidence":81},"Smart workaround for missing favorites API","commenter",[82,83],{"id":48,"by":49,"text":50},{"id":58,"by":59,"text":60},{"value":85,"source":80,"evidence":86},"Browser-run script needs no install",[87],{"id":88,"by":89,"text":90},"22792253","amjd","It's four years old so the page HTML structure must have likely changed. I'll take a look at it when I'm free and update the script. Thanks for your PR, I'll review and merge the…",[92],{"value":93,"source":63,"evidence":94},"Scraping tools like Scraper did not paginate",[95],{"id":96,"by":10,"text":97},"22793822","Thanks for the tip. I gave the \"Scraper\" extension a try, and 1) I got an error, 2) it only seems to scrape 1 page -- it doesn't paginate (or, did I miss something?). I used the…",[99,106],{"value":100,"source":80,"evidence":101},"Convert to a Python script",[102],{"id":103,"by":104,"text":105},"22789488","app4soft","Could someone convert it to Python-script?",{"value":107,"source":80,"evidence":108},"Turn into a Chrome extension",[109],{"id":110,"by":10,"text":111},"22788823","Thanks dvfjsdhgfv. If there's sufficient interest, I can easily turn it into a Chrome extension. (Edit: haha, I see what you just did there. A little recursive humor.)",[113],{"value":114,"source":80,"evidence":115},"Will HN expose favorites or upvoted items in its API",[116,120],{"id":117,"by":118,"text":119},"22788526","dang","Our plan is for the next version of HN's API to simply serve a JSON version of every page. I'm hoping to get to that this year.",{"id":121,"by":89,"text":122},"22790972","That's great! Is there any plan of exposing authenticated content through the API too? Mainly talking about upvoted stories.",[124,133,140],{"value":125,"source":80,"evidence":126},"Dogsheep hacker-news-to-sqlite",[127,130],{"id":128,"by":49,"text":129},"22788585","That would be amazing! I've been having some fun with the API recently building this tool: https:\u002F\u002Fgithub.com\u002Fdogsheep\u002Fhacker-news-to-sqlite",{"id":131,"by":49,"text":132},"22791308","My tool here can export all of a user's comments: https:\u002F\u002Fgithub.com\u002Fdogsheep\u002Fhacker-news-to-sqlite Not upvoted yet as they aren't in the API I am using.",{"value":134,"source":80,"evidence":135},"Reactual hacker-news-favorites-api",[136],{"id":137,"by":138,"text":139},"22788852","sbr464","I made an API for favorites a while back. https:\u002F\u002Fgithub.com\u002Freactual\u002Fhacker-news-favorites-api Here's an example query: https:\u002F\u002Freactual.api.stdlib.com\u002Fhnfavs\u002F?id=sbr464&limit=1",{"value":141,"source":80,"evidence":142},"jaytaylor hn-utils",[143],{"id":144,"by":145,"text":146},"22790305","jaytaylor","This is cool, I love HN metadata, too :) Plug for a related golang tool I wrote and use which exports favorites upvotes as structured JSON: https:\u002F\u002Fgithub.com\u002Fjaytaylor\u002Fhn-utils…",{"comments":148,"answered":31,"key":149},8,[150,153,154],{"id":151,"text":152},"22788954","Ok, now that's really smart! Would a client using your API paginate to fetch, say, 50 pages? When I tried it using ?limit=50, I got a 504 error. Thanks! (Edit, never mind, I see…",{"id":66,"text":67},{"id":110,"text":111},{"commenters":156,"max_depth":17,"maker_replies":148,"first_comment_mins":157,"lifespan_hours":158},18,28,45,[160,162,164,166,169,171,174,176,179,181,182,185,187,188,191,193,196,198,199,201,202,203,206,208,211,212,215,216,218,220,222,224,227,229,231,233,235,237,240],[137,32,36,161,138,32],"project\u002Fneutral\u002Fnone",[151,32,32,163,10,38],"commenter\u002Fneutral\u002Fnone",[165,32,32,163,138,32],"22788987",[167,32,32,163,168,32],"22790278","wildduck",[144,38,40,170,145,32],"project\u002Fpositive\u002Fnone",[48,172,40,173,49,32],2,"project\u002Fpositive\u002Fidea",[117,172,32,175,118,32],"other\u002Fneutral\u002Fnone",[177,172,32,175,178,32],"22788575","death-by-ppt",[180,172,32,175,118,32],"22788678",[128,172,32,175,49,32],[183,172,32,175,184,32],"22789172","bhl",[186,172,32,175,118,32],"22791224",[131,172,32,175,49,32],[189,172,32,175,190,32],"22789789","gitgud",[192,172,32,175,118,32],"22790092",[194,172,32,175,195,32],"22791148","saagarjha",[197,172,32,175,118,32],"22791221",[121,172,32,175,89,32],[66,172,32,200,10,38],"maker\u002Fneutral\u002Fnone",[58,36,40,173,59,32],[110,36,32,161,10,38],[204,31,40,173,205,32],"22790986","catchmeifyoucan",[207,31,32,175,205,32],"22791002",[209,40,36,161,210,32],"22792334","zerop",[96,40,32,175,10,38],[213,30,32,175,214,32],"22805442","rtcoms",[103,17,36,161,104,32],[217,17,32,161,10,38],"22790039",[219,17,32,175,178,32],"22790244",[221,17,36,161,104,32],"22794600",[223,17,32,161,10,38],"22795044",[225,17,40,226,104,32],"22796055","maker\u002Fpositive\u002Fnone",[228,17,32,161,10,38],"22800222",[230,17,32,163,104,32],"22802940",[232,17,32,175,89,32],"22790964",[234,17,32,163,10,38],"22791281",[88,17,40,236,89,32],"project\u002Fpositive\u002Fexecution",[238,148,32,175,239,32],"22789181","abdullahkhalids",[241,148,32,242,243,32],"22790051","other\u002Fneutral\u002Fprivacy","tzs",[],[246,251,256,260,264,269],{"id":247,"name":248,"points":249,"category":250},"22811653","FalsiScan",770,"productivity",{"id":252,"name":253,"points":254,"category":255},"22758217","Learn GNU Awk one-liners ebook",539,"languages",{"id":257,"name":258,"points":259,"category":255},"22776753","33 line React",418,{"id":261,"name":262,"points":263,"category":19},"22790425","DNS over Wikipedia",398,{"id":265,"name":266,"points":267,"category":268},"22777397","Treendly",343,"web_saas",{"id":270,"name":271,"points":272,"category":19},"22763656","Pdf.js Express",334,false,"v2",{"id":276,"name":5,"line":6,"ai":273,"cat":19,"year":12,"points":13,"comments":14,"rec":27,"s":277,"top":17,"kw":278,"maker":10,"domain":279,"tier":18,"attempts":32,"strip":280,"url":-1,"mix":281,"praise":79,"objection":93,"sub":20},22788236,0.45,[23,24,25,26],"","300055000000000000050503003003050000500",[30,31,32,32],1794036588612]