{"id":3012,"date":"2021-02-19T22:05:37","date_gmt":"2021-02-19T13:05:37","guid":{"rendered":"http:\/\/matoken.org\/blog\/?p=3012"},"modified":"2021-02-19T22:05:37","modified_gmt":"2021-02-19T13:05:37","slug":"switch-from-ttytter-a-tty-twitter-client-to-oysttyer","status":"publish","type":"post","link":"https:\/\/matoken.org\/blog\/2021\/02\/19\/switch-from-ttytter-a-tty-twitter-client-to-oysttyer\/","title":{"rendered":"TTY Twitter\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306eTTYtter\u304b\u3089Oysttyer\u306b\u4e57\u308a\u63db\u3048"},"content":{"rendered":"<div class=\"paragraph\">\n<p>TTYtter\u3068\u3044\u3046Perl\u88fd\u3067cli\u3067\u52d5\u4f5c\u3059\u308bTwitter client\u304c\u3042\u308a\u307e\u3059\uff0e\u81ea\u4f5cTwitter\u6295\u7a3fscript\u304c\u30a2\u30ab\u30a6\u30f3\u30c8\u3092BAN\u3055\u308c\u3066API key\u304c\u4f7f\u3048\u306a\u304f\u306a\u3063\u305f\u5f8c\u3053\u308c\u3092\u4f7f\u3063\u3066\u81ea\u52d5\u6295\u7a3f\u306a\u3069\u3092\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0cDebian buster\u304b\u3089\u7121\u304f\u306a\u3063\u3066\u3044\u307e\u3059\uff0e<br \/>\n\u958b\u767a\u5143\u3092\u898b\u308b\u3068Oysttyer\u3068\u3044\u3046\u3082\u306e\u304c\u5909\u308f\u308a\u306b\u5b58\u5728\u3059\u308b\u3088\u3046\u306a\u306e\u3067\u305d\u3061\u3089\u306b\u4e57\u308a\u63db\u3048\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li><a href=\"http:\/\/www.floodgap.com\/software\/ttytter\/\">TTYtter is dead: Oysttyer is now the interactive console text-based command-line Twitter client and Perl platform (whew!)<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/oysttyer\/oysttyer\">oysttyer\/oysttyer: An interactive console text-based command-line Twitter client written in Perl<\/a><\/li>\n<li><a href=\"https:\/\/packages.debian.org\/search?keywords=ttytter\">Debian\u2009\u2014\u2009\u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009ttytter<\/a><\/li>\n<li><a href=\"https:\/\/packages.debian.org\/search?keywords=oysttyer\">Debian\u2009\u2014\u2009\u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009oysttyer<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>TTYtter\u304b\u3089Oysttyer\u306b\u4e57\u308a\u63db\u3048\u308b\u306b\u306f\u8a8d\u8a3c\u9375\u306a\u3069\u3092\u4f5c\u308a\u76f4\u3059\u5fc5\u8981\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e<br \/>\n<code>-oauthwizard<\/code> \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8a8d\u8a3c\u304c\u3067\u304d\u308b\u3088\u3046\u3067\u3059\uff0e<br \/>\n\u65e2\u5b9a\u5024\u3067\u306f\u8a8d\u8a3c\u60c5\u5831\u306f <code>~\/.oysttyerkey<\/code> \u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u304c\uff0c\u8907\u6570\u306eTwitter\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u5229\u7528\u3057\u305f\u3044\u306e\u3067 <code>-key=\u8a8d\u8a3c\u60c5\u5831\u683c\u7d0d\u30d5\u30a1\u30a4\u30eb<\/code> \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u533a\u5225\u3057\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"admonitionblock note\">\n<table  class=\" table table-hover\" >\n<tbody>\n<tr>\n<td class=\"icon\">\n<div class=\"title\">Note<\/div>\n<\/td>\n<td class=\"content\">\n<code>-keyf<\/code> \u306e\u30d1\u30b9\u306b <code>~<\/code> \u3092\u4f7f\u3046\u3068\u30a8\u30e9\u30fc\u306b\u306a\u308b\u3088\u3046\u3067\u3059\uff0e\u4eca\u56de\u306f\u4ee3\u308f\u308a\u306b <code>$HOME<\/code> \u3092\u4f7f\u3044\u307e\u3057\u305f\uff0e<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-shell\" data-lang=\"shell\">$ oysttyer -keyf=$HOME\/.oysttyerkey_kagolug_ml -oauthwizard <b class=\"conum\">(1)<\/b>\n-- using SSL for default URLs.\ntrying to find cURL ... \/usr\/bin\/curl\n-- Streaming API disabled (no -dostream) (oysttyer will use REST API only)\n-- no version check performed (use \/vcheck, or -vcheck to check on startup)\n\n+------------------------------------------------------------------------------+\n|| WELCOME TO oysttyer: Authorize oysttyer by signing into Twitter with OAuth ||\n+------------------------------------------------------------------------------+\nLooks like you're starting oysttyer for the first time, and\/or creating a\nkeyfile. Welcome to the most user-hostile, highly obfuscated, spaghetti code\ninfested and obscenely obscure Twitter client that's out there. You'll love it.\n\noysttyer generates a keyfile that contains credentials for you, including your\naccess tokens. This needs to be done JUST ONCE. You can take this keyfile with\nyou to other systems. If you revoke oysttyer's access, you must remove the\nkeyfile and start again with a new token. You need to do this once per account\nyou use with oysttyer; only one account token can be stored per keyfile. If you\nhave multiple accounts, use -keyf=... to specify different keyfiles. KEEP THESE\nFILES SECRET.\n\n** This wizard will overwrite ~\/.oysttyerkey_kagolug_ml\nPress RETURN\/ENTER to continue or CTRL-C NOW! to abort.\n<b class=\"conum\">(2)<\/b>\nRequest from https:\/\/api.twitter.com\/oauth\/request_token ... SUCCEEDED!\n\n1. Visit, in your browser, ALL ON ONE LINE,\n\nhttps:\/\/api.twitter.com\/oauth\/authorize?oauth_token=lfqqTgAAAAAAixnPABABd7YG56I <b class=\"conum\">(3)<\/b>\n\n2. If you are not already signed in, fill in your username and password.\n\n3. Verify that oysttyer is the requesting application, and that its permissions\nare as you expect (read your timeline, see who you follow and follow new\npeople, update your profile, post tweets on your behalf and access your\ndirect messages). IF THIS IS NOT CORRECT, PRESS CTRL-C NOW!\n\n4. Click Authorize app.\n\n5. A PIN will appear. Enter it below.\n\nEnter PIN&gt; 0901765 <b class=\"conum\">(4)<\/b>\n\nRequest from https:\/\/api.twitter.com\/oauth\/access_token ... SUCCEEDED!\nWritten keyfile \/home\/mk\/.oysttyerkey_kagolug_ml\n\nNow, restart oysttyer to use this keyfile.\n(To choose between multiple keyfiles other than the default .oysttyerkey,\ntell oysttyer where the key is using -keyf=... .)<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"colist arabic\">\n<ol>\n<li>\u8a8d\u8a3c\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3057\u3066\u8a8d\u8a3c\u51e6\u7406\u5b9f\u884c<\/li>\n<li>Enter\u3067\u7d9a\u884c<\/li>\n<li>URL\u3092\u30b3\u30d4\u30fc\u3057\u3066\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306b\u3066\u8a8d\u8a3c\u3057\u305f\u3044Twitter\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u8a31\u53ef\u3059\u308b<\/li>\n<li>\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306b\u8868\u793a\u3055\u308c\u308bPIN\u3092\u5165\u529b\u3057\u3066Enter<\/li>\n<\/ol>\n<\/div>\n<div class=\"paragraph\">\n<p>\u3053\u308c\u3067\u8a8d\u8a3c\u60c5\u5831\u304c\u6307\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>TTYtter\u3067\u306fScript\u4e2d\u304b\u3089\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066\u6295\u7a3f\u3092\u884c\u3063\u3066\u3044\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-shell\" data-lang=\"shell\">ttytter -keyf=\/home\/mk\/.ttytterkey-kagolug_ml -location -lat=31.5775639 -long=130.6667937 -status=\"$MESSAGE\"<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Oysttyer\u306e\u30e6\u30fc\u30b6\u30ac\u30a4\u30c9\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3059\u308b\u3068\u305d\u306e\u307e\u307e\u4f7f\u3048\u305d\u3046\u3067\u3059\uff0e<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li><a href=\"http:\/\/oysttyer.github.io\/docs\/userGuide.html\">oysttyer.github.io\/docs\/userGuide.html<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>\u30b3\u30de\u30f3\u30c9\u3068\u8a8d\u8a3c\u9375\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u66f4\u3059\u308b\u3060\u3051\u3067\u52d5\u4f5c\u3057\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>$ oysttyer -keyf=\/home\/mk\/.oysttyerkey_kagolug_ml -location -lat=31.5775639 -long=130.6667937 -status=\"\u6295\u7a3f\u30c6\u30b9\u30c8&#x1f4ee;\"\n-- using SSL for default URLs.\ntrying to find cURL ... \/usr\/bin\/curl\ntest-login SUCCEEDED!\npost attempt -- using lat\/long: (31.5775639, 130.6667937)\nSUCCEEDED!<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Script\u3082\u540c\u69d8\u306b\u30b3\u30de\u30f3\u30c9\u3068\u9375\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304d\u63db\u3048\u307e\u3057\u305f\uff0e\u3053\u308c\u3067buster\u4ee5\u964d\u3067\u3082\u5927\u4e08\u592b\u306a\u306f\u305a\u3067\u3059 :)<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">\u74b0\u5883<\/div>\n<div class=\"content\">\n<pre class=\"highlight\"><code class=\"language-shell\" data-lang=\"shell\">$ dpkg-query -W oysttyer chromium\nchromium        88.0.4324.146-1~deb10u1\noysttyer        2.10.0-1\n$ lsb_release -dr\nDescription:    Debian GNU\/Linux 10 (buster)\nRelease:        10\n$ uname -m\nx86_64<\/code><\/pre>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>TTYtter\u3068\u3044\u3046Perl\u88fd\u3067cli\u3067\u52d5\u4f5c\u3059\u308bTwitter client\u304c\u3042\u308a\u307e\u3059\uff0e\u81ea\u4f5cTwitter\u6295\u7a3fscript\u304c\u30a2\u30ab\u30a6\u30f3\u30c8\u3092BAN\u3055\u308c\u3066API key\u304c\u4f7f\u3048\u306a\u304f\u306a\u3063\u305f\u5f8c\u3053\u308c\u3092\u4f7f\u3063\u3066\u81ea\u52d5\u6295\u7a3f\u306a\u3069\u3092\u3057\u3066\u3044\u305f\u306e\u3067\u3059 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[428,7,6],"tags":[598,367,597,65],"class_list":["post-3012","post","type-post","status-publish","format-standard","hentry","category-buster","category-debian-linux","category-linux","tag-oysttyer","tag-tty","tag-ttytter","tag-twitter-2"],"_links":{"self":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/3012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/comments?post=3012"}],"version-history":[{"count":0,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/3012\/revisions"}],"wp:attachment":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/media?parent=3012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/categories?post=3012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/tags?post=3012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}