{"id":16653568,"url":"https://github.com/norm/tunnelvision","last_synced_at":"2026-04-23T15:32:50.062Z","repository":{"id":493562,"uuid":"120054","full_name":"norm/tunnelvision","owner":"norm","description":"Twitter Filter","archived":false,"fork":false,"pushed_at":"2010-09-18T09:56:06.000Z","size":140,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-19T10:32:37.722Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/norm.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2009-02-02T19:06:22.000Z","updated_at":"2021-04-04T08:30:43.000Z","dependencies_parsed_at":"2022-07-07T14:03:37.609Z","dependency_job_id":null,"html_url":"https://github.com/norm/tunnelvision","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Ftunnelvision","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Ftunnelvision/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Ftunnelvision/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Ftunnelvision/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/norm","download_url":"https://codeload.github.com/norm/tunnelvision/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243266662,"owners_count":20263777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-12T09:45:54.548Z","updated_at":"2025-12-25T15:37:43.173Z","avatar_url":"https://github.com/norm.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"tunnelvision - a twitter filter\n===============================\n*tunnelvision* is a group of perl scripts and library code to deal with\nfetching, storing, categorising and rebroadcasting tweets.\n\nThis is better (for me, anyway) than a simple iPhone or OS X twitter client\nbecause I can program it to do other, cleverer, things than just show me\ntweets. For example:\n\n* mark things as \"seen\", so I don't end up reading the same tweet over again\n  on different devices\n* mail a summary of the things I might deem important that I haven't seen\n  recently for those periods when I am not paying attention\n* send tweets that mention me, or new results for a saved search, straight to\n  my phone as an alert using [Prowl][prowl]\n* \"snooze\" a user doing something distasteful (such as liveblogging an event I\n  am not interested in), rather than unfollow and have to remember to refollow\n  later\n* roll up tweets that mention the same URL (a la retweeting)\n\nDo note that whilst I am running this code 24/7 for myself, it is not\ndocumented (other than this readme) and probably not ready for prime-time just\nyet. To illustrate, it currently expects to run out of the check-out\ndirectory.\n\nBroad architecture\n------------------\nConceptually, *tunnelvision* is split into three distinct types of code:\n\n* _Collectors_: fetch new tweets from Twitter and save them to the\n  database\n* _Classifiers_: categorise new tweets according to priority, spamminess,\n  group, etc.\n* _Circulators_: broadcast tweets back to me, either directly (eg. via\n  [Prowl][prowl]) or in the form of a website\n\nPre-requisites\n--------------\n### Database\n*tunnelvision* uses [CouchDB][couchdb] to store tweets. It currently expects\nto connect to 'localhost' on the standard port and use a database called\n'twitter'.\n\n### CPAN modules\nI am using a *lot* of external CPAN modules in this project.\n\n* Moose\n* MooseX::FollowPBP\n* MooseX::Method::Signatures\n* Net::Twitter\n* AnyEvent::Twitter::Stream\n* DB::CouchDB\n* Plack\n* ... and many more (this list is definitely *not* complete)\n\nIf you are playing with this, I recommend installing any CPAN modules with the\ntruly excellent [cpanm][cpanm] script, like so:\n\n    sudo cpanm Moose MooseX::FollowPBP MooseX::Method::Signatures \\\n               Net::Twitter AnyEvent::Twitter::Stream DB::CouchDB \\\n               Plack ...\n\nTODO\n----\nFinish writing the code (the more verbose todo list is kept in\n`tunnelvision.taskpaper`).\n\n\n\n[prowl]:http://prowl.weks.net/\n[couchdb]:http://couchdb.apache.org/\n[cpanm]:http://cpanmin.us/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorm%2Ftunnelvision","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnorm%2Ftunnelvision","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorm%2Ftunnelvision/lists"}