{"id":15663069,"url":"https://github.com/edsu/earls","last_synced_at":"2026-02-16T19:39:55.810Z","repository":{"id":27050499,"uuid":"30515798","full_name":"edsu/earls","owner":"edsu","description":"display urls being tweeted with an event hashtag","archived":false,"fork":false,"pushed_at":"2016-04-16T16:33:59.000Z","size":127,"stargazers_count":18,"open_issues_count":11,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-21T23:37:25.915Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edsu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-09T02:56:58.000Z","updated_at":"2023-02-21T18:34:44.000Z","dependencies_parsed_at":"2022-09-01T02:40:27.166Z","dependency_job_id":null,"html_url":"https://github.com/edsu/earls","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/edsu/earls","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fearls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fearls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fearls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fearls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edsu","download_url":"https://codeload.github.com/edsu/earls/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fearls/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29516176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T18:37:19.720Z","status":"ssl_error","status_checked_at":"2026-02-16T18:36:46.920Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T13:35:23.595Z","updated_at":"2026-02-16T19:39:55.786Z","avatar_url":"https://github.com/edsu.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"earls is a hack to display web resources that are being tweeted with a given hashtag.\nIt uses node and redis to watch Twitter for new tweets with urls, then fetches the web resource, attempts to pull the title out of the HTML, and then stashes away some results into a Redis database The idea\nis that it can help share information about what is being tweeted about at conferences, and other real or virtual events that people are tweeting at.\n\nWhen your event is over it is easy to create a static site of your earls \ninstance and turn off the node server and redis backend, and just let it be \nserved up as HTML, CSS and JavaScript.\n\n## Install\n\n1. install [redis](http://redis.io) and [node](http://nodejs.org)\n1. git clone https://github.com/edsu/earls\n1. cd earls\n1. npm install\n1. set Twitter credentials in environment: TWITTER\\_CONSUMER\\_KEY, TWITTER\\_CONSUMER\\_SECRET, TWITTER\\_ACCESS\\_TOKEN, TWITTER\\_ACCESS\\_TOKEN\\_SECRET\n1. ./earls.js '#c4l15'\n\n## Heroku\n\nTo get things to run on Heroku you'll need to set some environment variables\nbefore you can push there:\n\n```\nheroku config:set EARLS_TRACK=\"#c4l15\"\nheroku config:set TWITTER_CONSUMER_KEY=XXX\nheroku config:set TWITTER_CONSUMER_SECRET=XXX\nheroku config:set TWITTER_ACCESS_TOKEN=XXX\nheroku config:set TWITTER_ACCESS_TOKEN_SECRET=XXX\n```\n\n## Loading\n\nearls listens for new tweets. If you'd like to add some existing tweets that\nyou've collected with [twarc](http://github.com/edsu/twarc) you can load them\ninto redis like so:\n\n    ./load.js tweets.json \n\nThis will connect to a local redis instance by default. If you would like to \nload into a remote herkou redis db get the redis URI from the resources tab in \nthe Heroku admin, and then pass it in as a second parameter:\n\n    ./load.js tweets.json redis://redistogo:YOURPASSWORDHERE@mummichog.redistogo.com:10771\n\nLoading existing tweets is useful when you haven't been running earls since the\nbeginning of an event, and you would like to load some of this historical data.\n\n## Archiving\n\nOnce an event is over you can create a static snapshot very easily using \nwget, and host it yourself or create a permanent redirect to a Github Pages \nsite.\n\nFor example if you had an earls instance running at http://inkdroid.org/pda2015/\nyou could:\n\n    wget --page-requisites --no-host-directories --cut-dirs 1 http://inkdroid.org/pda2015/\n    git init \n    git add *\n    git commit -m 'snapshot of earls instance' -a\n    git remote add origin git@github.com:edsu/pda2015.git\n    git checkout -b gh-pages\n    git push origin gh-pages\n    # goto http://edsu.github.io/pda2015/\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsu%2Fearls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedsu%2Fearls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsu%2Fearls/lists"}