{"id":16881664,"url":"https://github.com/benbjohnson/grapevine","last_synced_at":"2025-03-22T07:32:14.657Z","repository":{"id":66318080,"uuid":"1224961","full_name":"benbjohnson/grapevine","owner":"benbjohnson","description":"Trending topics for stuff you care about","archived":false,"fork":false,"pushed_at":"2011-05-20T15:29:54.000Z","size":2084,"stargazers_count":80,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-15T23:56:14.337Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/benbjohnson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","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":"2011-01-06T00:54:22.000Z","updated_at":"2024-05-16T12:24:42.000Z","dependencies_parsed_at":"2023-02-20T02:15:39.971Z","dependency_job_id":null,"html_url":"https://github.com/benbjohnson/grapevine","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benbjohnson%2Fgrapevine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benbjohnson%2Fgrapevine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benbjohnson%2Fgrapevine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benbjohnson%2Fgrapevine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benbjohnson","download_url":"https://codeload.github.com/benbjohnson/grapevine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244925175,"owners_count":20532873,"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-13T16:04:41.215Z","updated_at":"2025-03-22T07:32:14.107Z","avatar_url":"https://github.com/benbjohnson.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Grapevine - Message Aggregator\n==============================\n\n## DESCRIPTION\n\nGrapevine is a server for loading messages from various sources, aggregating and\ntrending messages into topics, and then sending notifications for trending\ntopics to Twitter.\n\nGrapevine follows the rules of [Semantic Versioning](http://semver.org/).\n\n\n## RUNNING\n\nTo install Grapevine, simply install the gem:\n\n\t$ [sudo] gem install grapevine\n\nAnd then install the DataMapper adapter you'll be using. By default, Grapevine\nwill use a SQLite3 database at `~/grapevine.db`. You can change this in the\nconfiguration file.\n\n\t$ gem install dm-sqlite-adapter\n\t$ gem install dm-mysql-adapter\n\nThen run the `grapevine` command to manage your server.\n\n\t$ grapevine start\n\t$ grapevine stop\n\t$ grapevine restart\n\nGrapevine also comes with a command line interface to find more information on\nyour messages and topics. The following commands are available:\n\n\t$ grapevine load\n\t$ grapevine notify\n\t$ grapevine show messages\n\t$ grapevine show notifiers\n\t$ grapevine show notifier [NAME]\n\t$ grapevine show sources\n\t$ grapevine show tags\n\t$ grapevine show topics\n\t$ grapevine show topic [NAME]\n\nFor more information on each command, you can view the inline help:\n\n\t$ grapevine help [COMMAND]\n\n\n## SOURCES \u0026 NOTIFIERS\n\nGrapevine has a pluggable architecture that allows any message sources to be\nmatched up with any set of topic notification mechanisms.\n\nCurrently Grapevine supports the following sources:\n\n* `twitter-trackback` - Retrieves tweets for a given site.\n* `twitter-github` - Retrieves tweets associated with GitHub projects. Allows\n  filtering of projects based on programming language.\n\nAnd the following notification mechanisms are available:\n\n* `twitter` - Tweets a message to a specified account for the most popular\n  aggregated topic at the moment. Frequency of tweets and windowing options can\n  be specified.\n\n\n## CONFIGURATION\n\nSources, notification mechanisms and other options can be specified in the\n`~/grapevine.yml` file. Global configuration options for the Bit.ly API key and\nTwitter API consumer keys are listed at the top.\n\nThe following is an example configuration file:\n\n\tdatabase: mysql://user@pass:localhost/my_grapevine_db\n\t\n\tbitly_username: johndoe\n\tbitly_api_key: R_ae81e4e8ef7d10728725a57e90e1933\n\n\ttwitter_consumer_key: YpHAA9xFYruS06yk2Jvxy\n\ttwitter_consumer_secret: aMYXpyl4Sa89xx4YD5UwftkveuSfjtoDZlarJHR1ZHH\n\n\tsources:\n\t  - name: my_github_source\n\t    type:  twitter-github\n\t    frequency: 1h\n\n\tnotifiers:\n\t  - name: github_js\n\t    type: twitter\n\t    username: github_js\n\t    oauth_token: 1023929394-M8wtmerAMnI7ndH9x0ADzHTOWOD0sxx9UsjvgcxNNx\n\t    oauth_token_secret: m6Ryi8h7Y6yBxa0x0ffsaWUybE2vrxx8a9sYFnDB9QFG\n\t    source: my_github_source\n\t    frequency: 1h30m\n\t    window: 6M\n\t    tags: [language:javascript]\n\t\n\t  - name: github_rb\n\t    type: twitter\n\t    username: github_rb\n\t    oauth_token: 310128260-VKGv2UDYMNF0x0A0fsfqZh3QwxiMkd0xfa0sf3vv\n\t    oauth_token_secret: GAfa9xk6wyQ98mjXmXfrPN0as00zxkStjxdzwTlEt\n\t    source: my_github_source\n\t    frequency: 2h\n\t    window: 8M\n\t    tags: [language:ruby]\n\nThis configuration file sets up a single source to retrieve messages from\nTwitter that mention GitHub projects. It then sets up two notifiers to send out\ntrending topics pulled from `my_github_source` that are tagged with the\n`javascript` and `ruby` languages, respectively. The Twitter authorization is\nspecified for each notifier with the `username`, `oauth_token` and\n`oauth_token_secret` settings.\n\nThe `frequency` property sets how often topics will be sent out. In this example\nthe `github_js` Twitter account will send out every hour and a half while the\n`github_rb` Twitter account will send out every two hours. The `window` property\nspecifies how long until a trending topic can be mentioned again. In this\nexample, topics can be mentioned again six months after their last mention.\n\nThe `frequency` and `window` properties are time periods that can be defined\nin a short hand. The following are the available time periods:\n\n* `y` - Years\n* `M` - Months\n* `w` - Weeks\n* `d` - Days\n* `h` - Hours\n* `m` - Minutes\n* `s` - Seconds\n\n\n## TWITTER AUTHORIZATION\n\nOAuth is not an easy process for people who are not familiar with it. Luckily,\nthere is [Authoritarian](https://github.com/benbjohnson/authoritarian).\n\nTo start, register your Twitter application here:\n\n[Twitter Developers](http://dev.twitter.com/)\n\nThen install Authoritarian and add your application:\n\n\t$ gem install authoritarian\n\t$ authoritarian add application\n\t# Follow the prompts\n\nYou can find your Consumer Key and Consumer Secret on your Twitter application's\npage at the Twitter Developers site mentioned above.\n\nNext add the Twitter users you want to authorize:\n\n\t$ authoritarian add user\n\t# Input your username and password\n\nOnce you've added all your users, you can find the OAuth token and token secrets\nby listing all your users:\n\n\t$ authoritarian show users --all\n\nSimple copy the consumer token and secret to your Grapevine configuration.\n\n\n## CONTRIBUTE\n\nIf you'd like to contribute to Grapevine, start by forking the repository\non GitHub:\n\nhttp://github.com/benbjohnson/grapevine\n\nThen follow these steps to send your changes:\n\n1. Clone down your fork\n1. Create a topic branch to contain your change\n1. Code\n1. All code must have MiniTest::Unit test coverage.\n1. If you are adding new functionality, document it in the README\n1. If necessary, rebase your commits into logical chunks, without errors\n1. Push the branch up to GitHub\n1. Send me a pull request for your branch","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenbjohnson%2Fgrapevine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenbjohnson%2Fgrapevine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenbjohnson%2Fgrapevine/lists"}