{"id":15395495,"url":"https://github.com/stef/grindr","last_synced_at":"2026-01-07T12:04:37.428Z","repository":{"id":66440177,"uuid":"71680","full_name":"stef/grindr","owner":"stef","description":"tools to interact with websites, feeds and im","archived":false,"fork":false,"pushed_at":"2008-11-04T23:02:31.000Z","size":556,"stargazers_count":9,"open_issues_count":0,"forks_count":4,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-02-02T02:11:15.150Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://github.com/stef/grindr/wikis","language":null,"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/stef.png","metadata":{"files":{"readme":"README","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":"2008-11-04T23:00:13.000Z","updated_at":"2024-09-03T01:47:17.000Z","dependencies_parsed_at":"2023-02-20T04:05:14.742Z","dependency_job_id":null,"html_url":"https://github.com/stef/grindr","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/stef%2Fgrindr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stef%2Fgrindr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stef%2Fgrindr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stef%2Fgrindr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stef","download_url":"https://codeload.github.com/stef/grindr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245944062,"owners_count":20697948,"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-01T15:28:32.271Z","updated_at":"2026-01-07T12:04:37.388Z","avatar_url":"https://github.com/stef.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"munchr + friends\nvarious utils to enhance web2.0 productivity. Munchr provides tools to interact\nwith websites, rss feeds and instant messaging:\n\n    * nbox is a general widget for displaying information\n    * munchr fetches rss feeds (possibly to nbox)\n    * wachr combines nbox\u0026munchr for your convenience\n    * im_mcabber\u0026pidgin feed IM messages to nbox\n    * feedr POSTs data to websites\n    * gaskr is an input widget, that interacts with feedr\n    * bildr helps prepare gaskr configurations\n\nKeep it simple stupid was the main goal, so all components do only one thing.\nYou can mix and match the functionality to suit your needs. If you don’t like\nthe looks of gaskr it is easy to write another GUI frontend. Or you don’t like\ndzen? Your OS has something similar? Use that if you prefer.\n\nGenerally speaking for input related tasks you will end up with a bunch of\ndesktop or keyboard shortcuts to gaskr/feedr invocations. For output you will\nprobably have a wachr running, which polls rss feeds (munchr) and displays\n(nbox) various incomming information in the dzen window.\n\nSo which websites could be integrated more thightly into your desktop?\n\nAvailability\nmunchr+friends is released under the GPLv3 and avaible via git:\n   git clone git://github.com/stef/munchr.git\nthe script itself is very short, download it directly\n\nwow, another flexible framework, so what?\nsure it is a framework, but i am using it for daily work.\n\nUsing munchr I monitor a bunch of work related rss feeds (document changes in\nvarious document management systems, new sw releases, svn updates, etc), all\ninformation this is fed into the nbox.\n\nUsually I am using mcabber for my rather minimal instant messaging needs, so\nany new messages addressed at me, shows up also in the nbox.\n\nI use gaskr/feedr to submit new ideas, appointments and tasks into my online\ntodo list, which is based on the great tikiwiki and its trackers.\n\ninstallation\n    * dependencies:\n\n      apt-get install ksh dzen2 imagemagick python2.5 python-magic python-feedparser \\\n        python-yaml python-4suite-xml python-dbus python-egenix-mxdatetime\n\n    * use\n\n      ./setup\n\nunfortunately there is no packaging available. everything can be run from the\ndirectory where the source has been extracted.\n\nrelated files\n    * doc/munchrrc: basic configuration for all compontents\n    * setup: script to setup all files, directories and pipes for basic functioning.\n\nGetting Information\nFor daily work small RSS updates, IM messages and other various bits of\ninformation flow in. Munchr is a simple RSS parser which can collect data from\nrestricted websites. im_mcabber is an extension of the console im client\nmcabber, so that incomming IM messages are routed to nbox. nbox is a small GUI\ndisplay for all collected information. Initially it is only one line high, but\nif you move your cursor over it, it expands and you can scroll in the history,\nbehold the magic of dzen2 ;)\n\nnbox\nThis is is the widget displaying the various informations gathered by other\nutilities.\n\nnbox waits for information written to ~/.config/munchr/notifications and\ndisplays them in a dzen widget at the bottom right of your screen. Hover over\nthe widget and you get a scrollable backlog of all previous events. Comming up,\nklicking on events makes something meaningful.\n\nmunchr\nReads the contents of\n\n~/.config/munchr/feeds\n\n– one line per url, gets each feed and emits the new items to nbox\n\nmunchr can access sites using the HTTP Basic Authentication mechanism, so you\ncan also use munchr on restricted sites.\n\nwachr\nwachr is a convenience wrapper around nbox and munchr. wachr starts an nbox and\npolls munchr every 2 minutes.\n\npidgin\npidgin is an experimental feature to route pidgin/purple IM messages to nbox.\n\nim_mcabber\nim_mcabber routes IM messages from mcabber to nbox. mcabber needs to be\nconfigured to use im_mcabber by setting in ~/.mcabberrc:\n\n   set events_command = \u003cpathto\u003eim_mcabber\n   set event_log_files = 1\n   set event_log_dir = ~/.mcabber/event_files\n\nmake sure, that ~/.mcabber/event_files exists:\n\n   mkdir -p ~/.mcabber/event_files\n\nGiving Information\nThe other important aspect of munchr+friends is posting information to the net.\nThe primary way of doing this, is to post data on various webserver\napplications. For example it is possible to post a query to google and process\nit with munchr+friends.\n\nPosting information is done by feedr, it takes a set of parameters and values\nand submits it to the appropriate webservice. This set of parameters can be\nstatic – comming from a file. This is handy to automatize logins for example\n(beware to protect your files containing passwords). Other information might be\nasked from the user, gaskr provides a GUI to prepare data ready for feedr.\nUnfortunately we must know in advance what kind of data the webservice\nrequires, so we must set up some config files for gaskr. Scraping initial\ninformation for gaskr config files is the job of bildr, it can login onto sites\nand scrape all form data from html content. This information should be enough\nto start gaskr with, but it can be further customized by editing the config\nfiles directly.\n\nfeedr\nfeedr submits values via HTTP GET/POST requests to servers.\nfeedr gets the data to be submitted via files and standard input. The format is\nbased on YAML (yet another meta language – iirc).\n\nfeedr parses the output according to a specified xpath expression, matches\nprinted on completion.\nfeedr config files can be used to automate tasks that don’t need user input. It\nis also possible to store login credentials in such files. These files can then\nbe used to login to protected sites using the ‘-l ’ parameter.\n\n   { action: 'https://www.example.com/tiki-login.php',\n      resultxpath: 'string(//h:div[@class=\"simplebox error\"]/text())',\n      postfields: {\n         user: mstef,\n         pass: password,\n      }\n   }\n\ngaskr\ngaskr is a graphical frontend to feedr.\n\ngaskr parses a YAML configfile and displays the corresponding graphical input\nform. After submission of the form gaskr formats the results so that feedr can\nsend it to the webserver.\n\ngaskr configfiles always have ‘resultpath’, ‘action’ and ‘fields’ values.\nhere is an example of cfgs/gaskr/google:\n\n   resultxpath: '//h:h3[@class=\"r\"]/h:a'\n   action: 'http://www.google.com/search'\n   fields: [ \n      { type: hidden, name: hl, value: en, },\n      { type: text, label: Google Search, name: q, primari: 1},\n      { type: submit, name: btnG, value: Google Search, },\n      { type: submit, name: btnI, value: I'm Feeling Lucky, }, \n      ]\n\nbildr\nbildr helps you prepare configfiles for gaskr. bildr connects to the webserver\nand dumps all forms found on the page.\n\nbildr accepts a ‘-l ’ parameter, so it can help build config files for gaskr.\nIn the example below I prepare a configfile for an authenticated webbased task application:\n\n   ./bildr -l cfgs/feedr/company.site.login 'https://www.example.com/tiki-view_tracker.php?trackerId=3' \u003ecfgs/gaskr/company.addtodo\n\nthe result can be edited, e.g. * non-important fields deleted or * hide static values\n\nExamples\ncomplex example, query google feed results to nbox (needs links2 to dump html):\n\n   ./gaskr \u003ccfgs/gaskr/google | ./feedr -n |\n         sed 's/^$/\u003cbr \\/\u003e/' \u003e/tmp/asdf.html \u0026\u0026 \n         links2 -dump /tmp/asdf.html \u003e\u003e~/.config/munchr/notifications \u0026\u0026 \n         rm /tmp/asdf.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstef%2Fgrindr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstef%2Fgrindr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstef%2Fgrindr/lists"}