{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/tag/twitter-2/feed/json -- and add it your reader.", "home_page_url": "https://matoken.org/blog/tag/twitter-2", "feed_url": "https://matoken.org/blog/tag/twitter-2/feed/json", "language": "ja", "title": "Twitter – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "https://matoken.org/blog/?p=4761", "url": "https://matoken.org/blog/2025/12/02/squawker-3-8-4-allows-authentication-again/", "title": "Squawker 3.8.4 \u3067\u518d\u5ea6\u8a8d\u8a3c\u53ef\u80fd\u306b", "content_html": "
\n

\"squawker

\n
\n
\n

\u975e\u516c\u5f0fTwitter client \u306e Squawker \u30d0\u30fc\u30b8\u30e7\u30f3 3.8.4 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

\u4eca\u56de\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u4ed5\u69d8\u5909\u66f4\u306b\u3088\u308b\u8a8d\u8a3c\u60c5\u5831\u306e\u53d6\u5f97\u3000\u7570\u5931\u6557\u3059\u308b\u554f\u984c\u304c\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

Release v3.8.4 \u00b7 j-fbriere/squawker

\n
\n
\n
\n
\n

Implement a new way to log (via the X web page, inspired by QuaX).

\n
\n
\n
\n

\n
\n

QuaX \u3092\u53c2\u8003\u306b\u3057\u3066\u5b9f\u88c5\u3055\u308c\u305f\u3088\u3046\u3067\u3059\uff0e
\n\u4eca\u56de\u306e\u554f\u984c\u3067QuaX \u306b\u4e57\u308a\u63db\u3048\u3088\u3046\u304b\u3068\u3082\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0cSquawker \u304b\u3089\u306e\u30c7\u30fc\u30bf\u79fb\u884c\u306f\u51fa\u6765\u307e\u3057\u305f\u304c\u305f\u304f\u3055\u3093\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8aad\u307f\u8fbc\u307f\u304c\u3046\u307e\u304f\u884c\u304b\u306a\u304b\u3063\u305f\u308a\u3068\u81ea\u5206\u306e\u4f7f\u3044\u65b9\u3067\u306fSquawker \u306e\u307b\u3046\u304c\u826f\u3055\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067\u65e9\u901f\u66f4\u65b0\uff0e
\nF-Froid \u304b\u3089\u5c0e\u5165\u3057\u3066\u3044\u305f\u306e\u3067\uff0cF-Droid \u30a2\u30d7\u30ea\u3067\u66f4\u65b0\u3092\u884c\u3044\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

\u8d77\u52d5\u3059\u308b\u3068\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5207\u308c\u305f\u8a8d\u8a3c\u60c5\u5831\u3092\u6d88\u3057\u3066\u304a\u3044\u305f\u305b\u3044\u304b Not logged in \u3068\u8a00\u308f\u308c\u307e\u3059 Login \u304b\u3089\u8a8d\u8a3c\u3092\u884c\u304a\u3046\u3068\u3057\u307e\u3057\u305f\u304c\uff0c

\n
\n
\n

\"squawker

\n
\n
\n

\u56de\u7dda\u304c\u30d7\u30a2\u306a\u305b\u3044\u3067\u4f55\u5ea6\u304b\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8

\n
\n
\n

\"squawker

\n
\n
\n

\u3068\u304b\u3084\u3063\u3066\u3044\u305f\u3089 Not logged in \u753b\u9762\u3092\u6d88\u3057\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u53f3\u4e0a\u306e\u6b6f\u8eca→account \u304b\u3089\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n

\"squawker

\n
\n
\n

Web\u8a8d\u8a3c\u753b\u9762\u306b\u9077\u79fb\u3059\u308b\u306e\u3067\u8a8d\u8a3c\u3092\u884c\u3046\u3068Squawker \u306b\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u767b\u9332\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n

\"squawker

\n
\n
\n

\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u767b\u9332\u304c\u3067\u304d\u308b\u3068\u6642\u7cfb\u5217\u3067Tweet \u3092\u898b\u305f\u308a\u51fa\u6765\u307e\u3059\uff0e

\n
\n
\n

\"squawker

\n
\n
\n

Nitter \u3068\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u3063\u3066\u3044\u3053\u3046\u304b\u3068\u601d\u3044\u307e\u3059\uff0e

\n
\n
\n
\u74b0\u5883
\n
\n
$ adb shell dumpsys package org.ca.squawker | grep versionName=\n    versionName=3.8.4\n$ adb shell dumpsys package org.fdroid.fdroid | grep versionName=\n    versionName=1.23.1\n$ adb shell getprop ro.build.version.release\n14\n$ adb shell getprop ro.build.version.sdk\n34\n$ adb shell getprop ro.build.id\nUTAS34.82-113-2\n$ adb shell getprop ro.product.model\nmoto g24
\n
\n
\n
\n
\u8ffd\u8a18
\n
\n
\n

\u4eca\u56de\u5165\u3063\u305f\u4ee5\u4e0b\u306e\u30d0\u30b0\u306e\u305b\u3044\u3067\u4f7f\u3044\u3065\u3089\u304f\uff0e\u524d\u8005\u306f\u6307\u3067\u3069\u3046\u306b\u304b\u64cd\u4f5c\u3067\u304d\u307e\u3059\u304c\u5f8c\u8005\u306f\u6307\u3067\u30bf\u30c3\u30d7\u3057\u3066\u304a\u3044\u3066\u3082\u5f37\u5236\u7684\u306btop \u306b\u79fb\u52d5\u3057\u3066\u3057\u307e\u3046\u306e\u3067\u30b9\u30ec\u30c3\u30c9\u306e\u6295\u7a3f\u304c\u8aad\u3081\u307e\u305b\u3093\uff0ev3.8.5 \u3067\u6cbb\u308b\u4e88\u5b9a\u3068\u306e\u3053\u3068\u306a\u306e\u3067\u30ea\u30ea\u30fc\u30b9\u3092\u5f85\u3061\u307e\u3057\u3087\u3046\uff0e

\n
\n\n
\n
\n
\n
\u8ffd\u8a182
\n
\n
\n

v3.8.5 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0eIssue #391 \u306f\u6cbb\u3063\u3066\u3044\u305d\u3046?

\n
\n\n
\n
\n", "content_text": "\u975e\u516c\u5f0fTwitter client \u306e Squawker \u30d0\u30fc\u30b8\u30e7\u30f3 3.8.4 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e\n\n\n\n\nj-fbriere/squawker: An open-source privacy oriented Twitter/X client\n\n\n\n\n\u4eca\u56de\u306e\u30ea\u30ea\u30fc\u30b9\u3067\u4ed5\u69d8\u5909\u66f4\u306b\u3088\u308b\u8a8d\u8a3c\u60c5\u5831\u306e\u53d6\u5f97\u3000\u7570\u5931\u6557\u3059\u308b\u554f\u984c\u304c\u89e3\u6c7a\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\n\n\nRelease v3.8.4 \u00b7 j-fbriere/squawker\n\n\n\n\nImplement a new way to log (via the X web page, inspired by QuaX).\n\n\n\n\n\nQuaX \u3092\u53c2\u8003\u306b\u3057\u3066\u5b9f\u88c5\u3055\u308c\u305f\u3088\u3046\u3067\u3059\uff0e\n\u4eca\u56de\u306e\u554f\u984c\u3067QuaX \u306b\u4e57\u308a\u63db\u3048\u3088\u3046\u304b\u3068\u3082\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0cSquawker \u304b\u3089\u306e\u30c7\u30fc\u30bf\u79fb\u884c\u306f\u51fa\u6765\u307e\u3057\u305f\u304c\u305f\u304f\u3055\u3093\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8aad\u307f\u8fbc\u307f\u304c\u3046\u307e\u304f\u884c\u304b\u306a\u304b\u3063\u305f\u308a\u3068\u81ea\u5206\u306e\u4f7f\u3044\u65b9\u3067\u306fSquawker \u306e\u307b\u3046\u304c\u826f\u3055\u305d\u3046\u3067\u3059\uff0e\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067\u65e9\u901f\u66f4\u65b0\uff0e\nF-Froid \u304b\u3089\u5c0e\u5165\u3057\u3066\u3044\u305f\u306e\u3067\uff0cF-Droid \u30a2\u30d7\u30ea\u3067\u66f4\u65b0\u3092\u884c\u3044\u307e\u3057\u305f\uff0e\n\n\n\n\nSquawker | F-Droid – Free and Open Source Android App Repository\n\n\n\n\n\u8d77\u52d5\u3059\u308b\u3068\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u5207\u308c\u305f\u8a8d\u8a3c\u60c5\u5831\u3092\u6d88\u3057\u3066\u304a\u3044\u305f\u305b\u3044\u304b Not logged in \u3068\u8a00\u308f\u308c\u307e\u3059 Login \u304b\u3089\u8a8d\u8a3c\u3092\u884c\u304a\u3046\u3068\u3057\u307e\u3057\u305f\u304c\uff0c\n\n\n\n\n\n\u56de\u7dda\u304c\u30d7\u30a2\u306a\u305b\u3044\u3067\u4f55\u5ea6\u304b\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\n\n\n\n\n\n\u3068\u304b\u3084\u3063\u3066\u3044\u305f\u3089 Not logged in \u753b\u9762\u3092\u6d88\u3057\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\u53f3\u4e0a\u306e\u6b6f\u8eca→account \u304b\u3089\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u8ffd\u52a0\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\n\nWeb\u8a8d\u8a3c\u753b\u9762\u306b\u9077\u79fb\u3059\u308b\u306e\u3067\u8a8d\u8a3c\u3092\u884c\u3046\u3068Squawker \u306b\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u767b\u9332\u3067\u304d\u307e\u3059\uff0e\n\n\n\n\n\n\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u767b\u9332\u304c\u3067\u304d\u308b\u3068\u6642\u7cfb\u5217\u3067Tweet \u3092\u898b\u305f\u308a\u51fa\u6765\u307e\u3059\uff0e\n\n\n\n\n\nNitter \u3068\u7d44\u307f\u5408\u308f\u305b\u3066\u4f7f\u3063\u3066\u3044\u3053\u3046\u304b\u3068\u601d\u3044\u307e\u3059\uff0e\n\n\n\u74b0\u5883\n\n$ adb shell dumpsys package org.ca.squawker | grep versionName=\n versionName=3.8.4\n$ adb shell dumpsys package org.fdroid.fdroid | grep versionName=\n versionName=1.23.1\n$ adb shell getprop ro.build.version.release\n14\n$ adb shell getprop ro.build.version.sdk\n34\n$ adb shell getprop ro.build.id\nUTAS34.82-113-2\n$ adb shell getprop ro.product.model\nmoto g24\n\n\n\n\u8ffd\u8a18\n\n\n\u4eca\u56de\u5165\u3063\u305f\u4ee5\u4e0b\u306e\u30d0\u30b0\u306e\u305b\u3044\u3067\u4f7f\u3044\u3065\u3089\u304f\uff0e\u524d\u8005\u306f\u6307\u3067\u3069\u3046\u306b\u304b\u64cd\u4f5c\u3067\u304d\u307e\u3059\u304c\u5f8c\u8005\u306f\u6307\u3067\u30bf\u30c3\u30d7\u3057\u3066\u304a\u3044\u3066\u3082\u5f37\u5236\u7684\u306btop \u306b\u79fb\u52d5\u3057\u3066\u3057\u307e\u3046\u306e\u3067\u30b9\u30ec\u30c3\u30c9\u306e\u6295\u7a3f\u304c\u8aad\u3081\u307e\u305b\u3093\uff0ev3.8.5 \u3067\u6cbb\u308b\u4e88\u5b9a\u3068\u306e\u3053\u3068\u306a\u306e\u3067\u30ea\u30ea\u30fc\u30b9\u3092\u5f85\u3061\u307e\u3057\u3087\u3046\uff0e\n\n\n\n\nSwiping through menus difficult to control \u00b7 Issue #390 \u00b7 j-fbriere/squawker\n\n\nForce-bumped to top of comment thread \u00b7 Issue #391 \u00b7 j-fbriere/squawker\n\n\n\n\n\n\n\u8ffd\u8a182\n\n\nv3.8.5 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0eIssue #391 \u306f\u6cbb\u3063\u3066\u3044\u305d\u3046?\n\n\n\n\nRelease v3.8.5 \u00b7 j-fbriere/squawker", "date_published": "2025-12-02T18:45:00+09:00", "date_modified": "2025-12-08T18:59:19+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Android", "Squawker", "Twitter", "x.com" ] }, { "id": "https://matoken.org/blog/?p=4315", "url": "https://matoken.org/blog/2024/12/31/wp-to-buffer/", "title": "Buffer\u3092\u7d4c\u7531\u3057\u3066old Twitter\u3078WordPress\u6295\u7a3f\u3092\u901a\u77e5", "content_html": "

\n
\n

\u3053\u306eweblog\u3092old Twitter\u3078\u306e\u6295\u7a3f\u3092Twitter API\u5229\u7528\u304cBAN\u3055\u308c\u3066IFTTT\u306b\u5207\u308a\u66ff\u3048\uff0cTwitter\u306e\u898f\u7d04\u5909\u66f4\u304b\u3089IFTTT\u6709\u6599\u5316\u3067selenium\u3092\u4f7f\u3063\u3066\u6295\u7a3f\u3059\u308b\u3088\u3046\u306b\uff0e\u3057\u304b\u3057\u56de\u7dda\u306e\u305b\u3044\u304b\u5931\u6557\u3059\u308b\u3053\u3068\u306e\u307b\u3046\u304c\u304c\u591a\u3044\u3067\u3059\uff0e\u3068\u3044\u3046\u3053\u3068\u3067\u6700\u8fd1\u306fBuffer\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n\n
\n

\n
\n

Buffer\u306eweb\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u8d77\u52d5\u3057\u3066\u6295\u7a3f\u3092\u3059\u308b\u306e\u306b\u56de\u7dda\u304c\u7d30\u3044\u3068\u6570\u5206\u304b\u304b\u308a\u9762\u5012\uff0e\u62e1\u5f35\u6a5f\u80fd\u3092\u4f7f\u3046\u30682\u56de\u76ee\u4ee5\u964d\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u5229\u3044\u3066\u3044\u308b\u3068\u7d50\u69cb\u3055\u304f\u3063\u3068\u6295\u7a3f\u3067\u304d\u3066\u3044\u3044\u611f\u3058\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n

\u66f4\u306b\u697d\u306b\u3059\u308b\u3088\u3046API\u3092\u53e9\u3044\u3066Buffer\u306b\u6e21\u3059\u30b3\u30de\u30f3\u30c9\u3092\u66f8\u3053\u3046\u304b\u3068\u601d\u3044\u307e\u3057\u305f\u304c\u3069\u3046\u30822019\u5e74\u306bBuffer API\u306e\u53d7\u4ed8\u306f\u7d42\u308f\u3063\u3066\u3057\u307e\u3063\u305f\u3088\u3046\u3067\u3059\uff0e
\n\u305d\u3053\u3067\u300cWP to Buffer\u300d\u3068\u3044\u3046WordPress plugin\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

WordPress plugin\u30da\u30fc\u30b8\u304b\u3089WP to Buffer\u3092\u5c0e\u5165\uff0c\u6709\u52b9\u5316\uff0c\u81ea\u52d5\u66f4\u65b0\u3082\u6709\u52b9\u5316\u3057\u307e\u3057\u305f\uff0e
\nWP to Buffer\u306e\u300cSettings\u300d\u306e\u300cAuthentication\u300d\u3067Buffer\u3068\u9023\u643a\u3057\u307e\u3059\uff0e
\n\u300c\u6295\u7a3f\u300d→\u300cDefaults\u300d\u306e\u300cPublish\u300d\u306e\u53f3\u4e0a\u306e\u300cEnabled\u300d\u306b\u30c1\u30a7\u30c3\u30af\u304c\u4ed8\u3044\u3066\u3044\u308b\u72b6\u614b\u3067\u6295\u7a3f\u5185\u5bb9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff0e\u3068\u308a\u3042\u3048\u305a\u898f\u5b9a\u5024\u306e\u307e\u307e\u3067\uff0e
\n\u300cPublish\u300d\u306e\u53f3\u96a3\u306e\u300cUpdate\u300d\u306e\u300cEnabled\u300d\u306f\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3057\u3066blog\u66f4\u65b0\u6642\u306b\u306f\u6295\u7a3f\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n

\u6295\u7a3f\u30bf\u30d6\u5de6\u5074\u306bBuffer\u9023\u643a\u6e08\u306eSNS\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\uff0c\u9023\u643a\u3057\u305f\u3044SNS\u3092\u62bc\u3057\u3066\u300cAccount Enabled\u300d\u306b\u30c1\u30a7\u30c3\u30af\u3092\u4ed8\u3051\u307e\u3059\uff0e

\n
\n
\n

\"WP

\n
\n
\n

\u3053\u308c\u3067\u6050\u3089\u304f\u6295\u7a3f\u6642\u306b\u30c1\u30a7\u30c3\u30af\u3092\u4ed8\u3051\u305fSNS\u306bBuffer\u7d4c\u7531\u3067\u6295\u7a3f\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3068\u601d\u3044\u307e\u3059\uff0e
\n\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u304c\u30c6\u30b9\u30c8\u3067\u3059\uff0c

\n
\n
\n

WP to Buffer\u306b\u8ab2\u91d1\u3057\u3066Pro\u306bUpgrade\u3059\u308b\u3068\u4fbf\u5229\u306a\u6a5f\u80fd\u304c\u8272\u3005\u3068\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n

\u3057\u304b\u3057\u3053\u30531\u6708\u306et.co\u304b\u3089\u306e\u30a2\u30af\u30bb\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u307f\u308b\u30682\u4ef6\u306a\u306e\u3067\u305d\u3082\u305d\u3082Twitter\u9023\u643a\u3092\u3059\u308b\u610f\u5473\u306f\u3042\u307e\u308a\u306a\u3044\u6c17\u304c\u3057\u3066\u304d\u307e\u3057\u305f\u2026\u2026\uff0e

\n
\n
\n

\u8ffd\u8a18)

\n
\n
\n

\u3053\u3093\u306a\u611f\u3058\u3067Buffer\u306eQueue\u306b\u767b\u9332\u3055\u308c\uff0c\u9806\u6b21\u6295\u7a3f\u3055\u308c\u308b\u3088\u3046\u3067\u3059\uff0eWP to Buffer\u3092Pro\u306b\u3059\u308b\u3068\u3053\u306e\u8fba\u308a\u306e\u6295\u7a3f\u30bf\u30a4\u30df\u30f3\u30b0\u3082\u6307\u5b9a\u3067\u304d\u305d\u3046\u3067\u3059\uff0e(\u672a\u78ba\u8a8d)

\n
\n
\n

\"Buffer
\n\"Buffer

\n
\n", "content_text": "\u3053\u306eweblog\u3092old Twitter\u3078\u306e\u6295\u7a3f\u3092Twitter API\u5229\u7528\u304cBAN\u3055\u308c\u3066IFTTT\u306b\u5207\u308a\u66ff\u3048\uff0cTwitter\u306e\u898f\u7d04\u5909\u66f4\u304b\u3089IFTTT\u6709\u6599\u5316\u3067selenium\u3092\u4f7f\u3063\u3066\u6295\u7a3f\u3059\u308b\u3088\u3046\u306b\uff0e\u3057\u304b\u3057\u56de\u7dda\u306e\u305b\u3044\u304b\u5931\u6557\u3059\u308b\u3053\u3068\u306e\u307b\u3046\u304c\u304c\u591a\u3044\u3067\u3059\uff0e\u3068\u3044\u3046\u3053\u3068\u3067\u6700\u8fd1\u306fBuffer\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\nBuffer: Social media management for everyone\n\n\n\n\n\nBuffer\u306eweb\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u8d77\u52d5\u3057\u3066\u6295\u7a3f\u3092\u3059\u308b\u306e\u306b\u56de\u7dda\u304c\u7d30\u3044\u3068\u6570\u5206\u304b\u304b\u308a\u9762\u5012\uff0e\u62e1\u5f35\u6a5f\u80fd\u3092\u4f7f\u3046\u30682\u56de\u76ee\u4ee5\u964d\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u5229\u3044\u3066\u3044\u308b\u3068\u7d50\u69cb\u3055\u304f\u3063\u3068\u6295\u7a3f\u3067\u304d\u3066\u3044\u3044\u611f\u3058\u3067\u3059\uff0e\n\n\n\n\nExtensions | Buffer\n\n\n\n\n\u66f4\u306b\u697d\u306b\u3059\u308b\u3088\u3046API\u3092\u53e9\u3044\u3066Buffer\u306b\u6e21\u3059\u30b3\u30de\u30f3\u30c9\u3092\u66f8\u3053\u3046\u304b\u3068\u601d\u3044\u307e\u3057\u305f\u304c\u3069\u3046\u30822019\u5e74\u306bBuffer API\u306e\u53d7\u4ed8\u306f\u7d42\u308f\u3063\u3066\u3057\u307e\u3063\u305f\u3088\u3046\u3067\u3059\uff0e\n\u305d\u3053\u3067\u300cWP to Buffer\u300d\u3068\u3044\u3046WordPress plugin\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\nAuto Post, Auto Publish and Schedule to Twitter, LinkedIn and Social Media \u2013 WP to Buffer \u2013 WordPress \u30d7\u30e9\u30b0\u30a4\u30f3 | WordPress.org \u65e5\u672c\u8a9e\n\n\n\n\nWordPress plugin\u30da\u30fc\u30b8\u304b\u3089WP to Buffer\u3092\u5c0e\u5165\uff0c\u6709\u52b9\u5316\uff0c\u81ea\u52d5\u66f4\u65b0\u3082\u6709\u52b9\u5316\u3057\u307e\u3057\u305f\uff0e\nWP to Buffer\u306e\u300cSettings\u300d\u306e\u300cAuthentication\u300d\u3067Buffer\u3068\u9023\u643a\u3057\u307e\u3059\uff0e\n\u300c\u6295\u7a3f\u300d→\u300cDefaults\u300d\u306e\u300cPublish\u300d\u306e\u53f3\u4e0a\u306e\u300cEnabled\u300d\u306b\u30c1\u30a7\u30c3\u30af\u304c\u4ed8\u3044\u3066\u3044\u308b\u72b6\u614b\u3067\u6295\u7a3f\u5185\u5bb9\u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff0e\u3068\u308a\u3042\u3048\u305a\u898f\u5b9a\u5024\u306e\u307e\u307e\u3067\uff0e\n\u300cPublish\u300d\u306e\u53f3\u96a3\u306e\u300cUpdate\u300d\u306e\u300cEnabled\u300d\u306f\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3057\u3066blog\u66f4\u65b0\u6642\u306b\u306f\u6295\u7a3f\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u307e\u3057\u305f\uff0e\n\n\n\u6295\u7a3f\u30bf\u30d6\u5de6\u5074\u306bBuffer\u9023\u643a\u6e08\u306eSNS\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\uff0c\u9023\u643a\u3057\u305f\u3044SNS\u3092\u62bc\u3057\u3066\u300cAccount Enabled\u300d\u306b\u30c1\u30a7\u30c3\u30af\u3092\u4ed8\u3051\u307e\u3059\uff0e\n\n\n\n\n\n\u3053\u308c\u3067\u6050\u3089\u304f\u6295\u7a3f\u6642\u306b\u30c1\u30a7\u30c3\u30af\u3092\u4ed8\u3051\u305fSNS\u306bBuffer\u7d4c\u7531\u3067\u6295\u7a3f\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3068\u601d\u3044\u307e\u3059\uff0e\n\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u304c\u30c6\u30b9\u30c8\u3067\u3059\uff0c\n\n\nWP to Buffer\u306b\u8ab2\u91d1\u3057\u3066Pro\u306bUpgrade\u3059\u308b\u3068\u4fbf\u5229\u306a\u6a5f\u80fd\u304c\u8272\u3005\u3068\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\n\u3057\u304b\u3057\u3053\u30531\u6708\u306et.co\u304b\u3089\u306e\u30a2\u30af\u30bb\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u307f\u308b\u30682\u4ef6\u306a\u306e\u3067\u305d\u3082\u305d\u3082Twitter\u9023\u643a\u3092\u3059\u308b\u610f\u5473\u306f\u3042\u307e\u308a\u306a\u3044\u6c17\u304c\u3057\u3066\u304d\u307e\u3057\u305f\u2026\u2026\uff0e\n\n\n\u8ffd\u8a18)\n\n\n\u3053\u3093\u306a\u611f\u3058\u3067Buffer\u306eQueue\u306b\u767b\u9332\u3055\u308c\uff0c\u9806\u6b21\u6295\u7a3f\u3055\u308c\u308b\u3088\u3046\u3067\u3059\uff0eWP to Buffer\u3092Pro\u306b\u3059\u308b\u3068\u3053\u306e\u8fba\u308a\u306e\u6295\u7a3f\u30bf\u30a4\u30df\u30f3\u30b0\u3082\u6307\u5b9a\u3067\u304d\u305d\u3046\u3067\u3059\uff0e(\u672a\u78ba\u8a8d)", "date_published": "2024-12-31T18:18:53+09:00", "date_modified": "2025-01-01T06:06:28+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Buffer", "Twitter", "WordPress" ] }, { "id": "https://matoken.org/blog/?p=3901", "url": "https://matoken.org/blog/2023/05/24/twitter-client-friter-and_quacker/", "title": "Twitter\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306eFritter\u306e\u5fa9\u6d3b\u3068Feed\u306e\u524a\u9664\u3068\uff0cFeed\u306e\u4f7f\u3048\u308bfork\u306eQuacker", "content_html": "
\n

Fritter\u3068\u3044\u3046\u30ed\u30b0\u30a4\u30f3\u4e0d\u8981\u3067Twitter\u306e\u8cfc\u8aad\u304c\u3067\u304d\u308bAndroid\u7528\u306eTwitter client\u304c\u3042\u308a\u307e\u3059\uff0e

\n
\n
\n\n
\n
\n

\u65e2\u5b58Twitter\u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u30d5\u30a9\u30ed\u30fc\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u308a\uff0c\u8cfc\u8aad\u30b0\u30eb\u30fc\u30d7\u3092\u8907\u6570\u4f5c\u6210\u3057\u305f\u308a\u3068\u4fbf\u5229\u306a\u306e\u3067\u3059\u304c\uff0c\u5b89\u5b9a\u7248\u306f\u8fd1\u3054\u308d\u306eTwitter\u306e\u4ed5\u69d8\u5909\u66f4\u306a\u3069\u306b\u3088\u308a\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e
\nNitter\u306f\u5bfe\u5fdc\u3057\u3066\u3044\u305f\u306e\u3067\u305d\u306e\u3046\u3061\u5bfe\u5fdc\u3055\u308c\u308b\u304b\u3082\u3068\u601d\u3063\u3066\u3044\u305f\u3089\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u901a\u77e5\u304c\uff0e

\n
\n
\n

\"An

\n
\n
\n
\n
\n

An update for Fritter is available!\"\ud83d\ude80\"
\nUpdate to v3.0.0-beta9 through your FDroid client

\n
\n
\n
\n
\n

\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u51fa\u305f\u3088\u3046\u3067\u3059\uff0e\u65e9\u901fF-Droid\u3092\u8d77\u52d5\u3057\u3066\u66f4\u65b0\u3057\u307e\u3059\u2026\u2026\uff0e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u66f4\u65b0\u3057\u3066\u3082\u66f4\u65b0\u306b\u51fa\u3066\u304d\u307e\u305b\u3093\uff0e
\nF-Droid\u306eFritter\u306e\u30da\u30fc\u30b8\u306e\u4e0b\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30bf\u30c3\u30d7\u3057\u3066\uff0cv3.0.0-beta9\u3092\u9078\u3093\u3067\u5c0e\u5165\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

\"f

\n
\n
\n

\u5c0e\u5165\u5f8c\u8d77\u52d5\u3059\u308b\u3068\uff0c\u5404\u30e6\u30fc\u30b6\u306e\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u95b2\u89a7\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f :)

\n
\n
\n

\u3057\u304b\u3057\uff0c\u4ee5\u524d\u3042\u3063\u305ffeed\u30bf\u30d6\u304c\u898b\u5f53\u305f\u308a\u307e\u305b\u3093\uff0e\u8a2d\u5b9a\u306b\u3082\u7279\u306b\u7121\u3055\u305d\u3046\uff0e
\nissue\u3092\u78ba\u8a8d\u3057\u305f\u3068\u3053\u308d\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3082\u306e\u304c\uff0efeed\u6a5f\u80fd\u306f\u524a\u9664\u3055\u308c\u305f\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n
\n
\n

TLDR; I\u2019m not going to be reinstating the feed, as it\u2019s too hard to maintain and bad for people\u2019s mental health.

\n
\n
\n
\n
\n

\u307e\u3042\u308f\u304b\u308b\u3051\u3069\u4e00\u4eba\u3072\u3068\u308a\u78ba\u8a8d\u3059\u308b\u306e\u306f\u4e0d\u4fbf\u3067\u3059\uff0e

\n
\n
\n

Fritter\u3092fork\u3057\u3066feed\u6a5f\u80fd\u3092\u5fa9\u6d3b\u3055\u305b\u305f\u65b9\u304c\u3044\u307e\u3057\u305f\uff0eQuacker\u3068\u3044\u3046\u3088\u3046\u3067\u3059\uff0e\"\ud83e\udd86\"

\n
\n
\n\n
\n
\n

\"Quacker\"/

\n
\n
\n

\u30a2\u30d2\u30eb\u306e\u30a2\u30a4\u30b3\u30f3\u304c\u53ef\u611b\u3044\u3067\u3059\u306d\uff0e

\n
\n
\n

Quacker\u306fF-Droid\u898f\u5b9a\u5024\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u4e2d\u306b\u306f\u306a\u3044\u3088\u3046\u3067\u3059\uff0e\u4ee5\u4e0b\u304b\u3089\u624b\u52d5\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u304b\uff0c

\n
\n
\n\n
\n
\n

F-Droid\u306b\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0( https://apt.izzysoft.de/fdroid/repo )\u3057\u3066\uff0c\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u66f4\u65b0\u3057\u3066Quacker\u3092\u691c\u7d22\u3057\u3066\u5c0e\u5165\u3057\u307e\u3059\uff0e

\n
\n
\n

\"F
\n\"F

\n
\n
\n

\u3042\u3068\u306fFritter\u304b\u3089\u8a2d\u5b9a\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u3066\uff0cQuacker\u3067\u8a2d\u5b9a\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u3067\u4ee5\u524d\u306eFritter\u306e\u3088\u3046\u306b\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n

\u307e\u3042\uff0cTwitter\u306b\u3088\u308a\u307e\u305f\u3059\u3050\u306b\u52d5\u304b\u306a\u304f\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u2026\u2026\uff0e

\n
\n", "content_text": "Fritter\u3068\u3044\u3046\u30ed\u30b0\u30a4\u30f3\u4e0d\u8981\u3067Twitter\u306e\u8cfc\u8aad\u304c\u3067\u304d\u308bAndroid\u7528\u306eTwitter client\u304c\u3042\u308a\u307e\u3059\uff0e\n\n\n\nFritter: A privacy-friendly Twitter frontend for mobile devices\n\n\n\n\u65e2\u5b58Twitter\u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u30d5\u30a9\u30ed\u30fc\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u305f\u308a\uff0c\u8cfc\u8aad\u30b0\u30eb\u30fc\u30d7\u3092\u8907\u6570\u4f5c\u6210\u3057\u305f\u308a\u3068\u4fbf\u5229\u306a\u306e\u3067\u3059\u304c\uff0c\u5b89\u5b9a\u7248\u306f\u8fd1\u3054\u308d\u306eTwitter\u306e\u4ed5\u69d8\u5909\u66f4\u306a\u3069\u306b\u3088\u308a\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e\nNitter\u306f\u5bfe\u5fdc\u3057\u3066\u3044\u305f\u306e\u3067\u305d\u306e\u3046\u3061\u5bfe\u5fdc\u3055\u308c\u308b\u304b\u3082\u3068\u601d\u3063\u3066\u3044\u305f\u3089\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u901a\u77e5\u304c\uff0e\n\n\n\n\n\n\n\nAn update for Fritter is available!\nUpdate to v3.0.0-beta9 through your FDroid client\n\n\n\n\n\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u51fa\u305f\u3088\u3046\u3067\u3059\uff0e\u65e9\u901fF-Droid\u3092\u8d77\u52d5\u3057\u3066\u66f4\u65b0\u3057\u307e\u3059\u2026\u2026\uff0e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u66f4\u65b0\u3057\u3066\u3082\u66f4\u65b0\u306b\u51fa\u3066\u304d\u307e\u305b\u3093\uff0e\nF-Droid\u306eFritter\u306e\u30da\u30fc\u30b8\u306e\u4e0b\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30bf\u30c3\u30d7\u3057\u3066\uff0cv3.0.0-beta9\u3092\u9078\u3093\u3067\u5c0e\u5165\u3057\u307e\u3057\u305f\uff0e\n\n\n\nFritter | F-Droid – Free and Open Source Android App Repository\n\n\n\n\n\n\n\u5c0e\u5165\u5f8c\u8d77\u52d5\u3059\u308b\u3068\uff0c\u5404\u30e6\u30fc\u30b6\u306e\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u95b2\u89a7\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f :)\n\n\n\u3057\u304b\u3057\uff0c\u4ee5\u524d\u3042\u3063\u305ffeed\u30bf\u30d6\u304c\u898b\u5f53\u305f\u308a\u307e\u305b\u3093\uff0e\u8a2d\u5b9a\u306b\u3082\u7279\u306b\u7121\u3055\u305d\u3046\uff0e\nissue\u3092\u78ba\u8a8d\u3057\u305f\u3068\u3053\u308d\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3082\u306e\u304c\uff0efeed\u6a5f\u80fd\u306f\u524a\u9664\u3055\u308c\u305f\u3088\u3046\u3067\u3059\uff0e\n\n\n\nRemoval of the feed \u00b7 jonjomckay/fritter \u00b7 Discussion #699\n\n\n\n\n\nTLDR; I\u2019m not going to be reinstating the feed, as it\u2019s too hard to maintain and bad for people\u2019s mental health.\n\n\n\n\n\u307e\u3042\u308f\u304b\u308b\u3051\u3069\u4e00\u4eba\u3072\u3068\u308a\u78ba\u8a8d\u3059\u308b\u306e\u306f\u4e0d\u4fbf\u3067\u3059\uff0e\n\n\nFritter\u3092fork\u3057\u3066feed\u6a5f\u80fd\u3092\u5fa9\u6d3b\u3055\u305b\u305f\u65b9\u304c\u3044\u307e\u3057\u305f\uff0eQuacker\u3068\u3044\u3046\u3088\u3046\u3067\u3059\uff0e\n\n\n\nTheHCJ/Quacker: A better way to browse Twitter\n\n\n\n\n\n\n\u30a2\u30d2\u30eb\u306e\u30a2\u30a4\u30b3\u30f3\u304c\u53ef\u611b\u3044\u3067\u3059\u306d\uff0e\n\n\nQuacker\u306fF-Droid\u898f\u5b9a\u5024\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u4e2d\u306b\u306f\u306a\u3044\u3088\u3046\u3067\u3059\uff0e\u4ee5\u4e0b\u304b\u3089\u624b\u52d5\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u304b\uff0c\n\n\n\nQuacker – IzzyOnDroid F-Droid Repository\n\n\n\nF-Droid\u306b\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u8ffd\u52a0( https://apt.izzysoft.de/fdroid/repo )\u3057\u3066\uff0c\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u66f4\u65b0\u3057\u3066Quacker\u3092\u691c\u7d22\u3057\u3066\u5c0e\u5165\u3057\u307e\u3059\uff0e\n\n\n\n\n\n\n\u3042\u3068\u306fFritter\u304b\u3089\u8a2d\u5b9a\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u3066\uff0cQuacker\u3067\u8a2d\u5b9a\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u3067\u4ee5\u524d\u306eFritter\u306e\u3088\u3046\u306b\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\u307e\u3042\uff0cTwitter\u306b\u3088\u308a\u307e\u305f\u3059\u3050\u306b\u52d5\u304b\u306a\u304f\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u2026\u2026\uff0e", "date_published": "2023-05-24T05:45:00+09:00", "date_modified": "2023-05-24T05:45:05+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "699", "Android", "Twitter" ] }, { "id": "https://matoken.org/blog/?p=3812", "url": "https://matoken.org/blog/2023/01/16/change-twidere-to-twidere-x-api-key/", "title": "Twidere\u3092Twidere X\u306eAPI Key\u306b\u5909\u66f4\u3057\u3066\u6295\u7a3f\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b 2023-01-16", "content_html": "
\n

\u6700\u8fd1\u306eTwitter\u306e\u4f7f\u3044\u65b9\u306f\u3053\u3093\u306a\u611f\u3058

\n
\n
\n\n
\n

\n
\n

\u3053\u306eTwidere\u3067\u306eTwitter\u6295\u7a3f\u304c\u5931\u6557\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e
\nTwitter\u306f\u6700\u8fd1\u8272\u3005\u3068\u5909\u308f\u3063\u305f\u308a\u3057\u3066\u3044\u308b\u3057\u305d\u306e\u3046\u3061\u6cbb\u308b\u304b\u306a\u3068\u601d\u3063\u305f\u3051\u3069\u6cbb\u308a\u307e\u305b\u3093\uff0e

\n
\n
\n

\u4ed6\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3069\u3046\u3060\u308d\u3046\u3068oysttyer\u3092\u8a66\u3059\u3068post\u51fa\u6765\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

\u8a8d\u8a3c\u3057\u76f4\u3057\u305f\u3089\u884c\u3051\u308b\u306e\u304b\u306a?\u3068Twidere\u3067\u30ed\u30b0\u30a4\u30f3\u3057\u76f4\u305d\u3046\u3068\u3059\u308b\u3068\u8a8d\u8a3c\u3067\u304d\u307e\u305b\u3093\uff0e
\n\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8a8d\u8a3c\u65b9\u5f0f\u306e\u9055\u3044\u306e\u305b\u3044\u306a\u306e\u304b\u306a?\u3068Twidere\u306eissue\u3092\u898b\u308b\u3068Twidere X\u306eTwitter API key\u306b\u5909\u66f4\u3059\u308b\u3068\u52d5\u304f\u3088\u3046\u306b\u306a\u308b\u3068\u3044\u3046\u3082\u306e\u304c\u6709\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n
\n
\n

What worked for me is:

\n
\n
\n

Go to Settings > Network > Avanced > Default API Settings
\nReplace the consumer key and consumer secret with those above and save
\nGo to Accounts and click the + in the top right
\nChoose Twitter > User Settings
\nClick Register, then the Sign In button, this should take you to an authorization page
\nGo through the authorization steps
\nRefresh your timelines

\n
\n
\n
\n
\n

\u3053\u308c\u3092\u8a66\u3059\u3068\u6295\u7a3f\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\u3068\u3044\u3046\u3053\u3068\u306fTwitter\u306f\u7279\u5b9a\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u62d2\u5426\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u308b\u307f\u305f\u3044\u3067\u3059\u306d\u2026\u2026\uff0e
\n\u307e\u3042\u660e\u65e5\u306b\u306f\u5909\u308f\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\uff0e

\n
\n
\n

\u4ee5\u4e0b\u65e5\u672c\u8a9e\u74b0\u5883\u3067\u306e\u30e1\u30e2\uff0e

\n
\n
\n

\"twidere
\n\"twidere
\n\"twidere
\n\"twidere
\n\"twidere
\n\"twidere
\n\"twidere
\n\"twidere
\n\"twidere
\n\"twidere
\n\"twidere

\n
\n", "content_text": "\u6700\u8fd1\u306eTwitter\u306e\u4f7f\u3044\u65b9\u306f\u3053\u3093\u306a\u611f\u3058\n\n\n\nNitter\u3084Fritte\u3067\u95b2\u89a7\n\n\nzedeus/nitter: Alternative Twitter front-end\nNitter \u2013 matoken\u2019s meme\nFritter: A privacy-friendly Twitter frontend for mobile devices\n\n\n\nTwidere\u3067Twitter\u3068ActivityPub\u3078\u30af\u30ed\u30b9\u30dd\u30b9\u30c8\n\n\nGet Twidere | Twidere\n\n\n\n\n\n\n\n\u3053\u306eTwidere\u3067\u306eTwitter\u6295\u7a3f\u304c\u5931\u6557\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\nTwitter\u306f\u6700\u8fd1\u8272\u3005\u3068\u5909\u308f\u3063\u305f\u308a\u3057\u3066\u3044\u308b\u3057\u305d\u306e\u3046\u3061\u6cbb\u308b\u304b\u306a\u3068\u601d\u3063\u305f\u3051\u3069\u6cbb\u308a\u307e\u305b\u3093\uff0e\n\n\n\u4ed6\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3069\u3046\u3060\u308d\u3046\u3068oysttyer\u3092\u8a66\u3059\u3068post\u51fa\u6765\u307e\u3057\u305f\uff0e\n\n\n\noysttyer\u2009\u2014\u2009An interactive console text-based command-line Twitter client written in Perl\n\n\n\n\u8a8d\u8a3c\u3057\u76f4\u3057\u305f\u3089\u884c\u3051\u308b\u306e\u304b\u306a?\u3068Twidere\u3067\u30ed\u30b0\u30a4\u30f3\u3057\u76f4\u305d\u3046\u3068\u3059\u308b\u3068\u8a8d\u8a3c\u3067\u304d\u307e\u305b\u3093\uff0e\n\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8a8d\u8a3c\u65b9\u5f0f\u306e\u9055\u3044\u306e\u305b\u3044\u306a\u306e\u304b\u306a?\u3068Twidere\u306eissue\u3092\u898b\u308b\u3068Twidere X\u306eTwitter API key\u306b\u5909\u66f4\u3059\u308b\u3068\u52d5\u304f\u3088\u3046\u306b\u306a\u308b\u3068\u3044\u3046\u3082\u306e\u304c\u6709\u308a\u307e\u3057\u305f\uff0e\n\n\n\nGetting authentication error. Can\u2019t find where/how to sign out and sign back in \u00b7 Issue #1475 \u00b7 TwidereProject/Twidere-Android\n\n\n\n\n\nWhat worked for me is:\n\n\nGo to Settings > Network > Avanced > Default API Settings\nReplace the consumer key and consumer secret with those above and save\nGo to Accounts and click the + in the top right\nChoose Twitter > User Settings\nClick Register, then the Sign In button, this should take you to an authorization page\nGo through the authorization steps\nRefresh your timelines\n\n\n\n\n\u3053\u308c\u3092\u8a66\u3059\u3068\u6295\u7a3f\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\u3068\u3044\u3046\u3053\u3068\u306fTwitter\u306f\u7279\u5b9a\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092\u62d2\u5426\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u308b\u307f\u305f\u3044\u3067\u3059\u306d\u2026\u2026\uff0e\n\u307e\u3042\u660e\u65e5\u306b\u306f\u5909\u308f\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\uff0e\n\n\n\u4ee5\u4e0b\u65e5\u672c\u8a9e\u74b0\u5883\u3067\u306e\u30e1\u30e2\uff0e", "date_published": "2023-01-16T23:49:27+09:00", "date_modified": "2023-01-16T23:49:28+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Twidere", "Twitter", "Android" ] }, { "id": "http://matoken.org/blog/?p=3544", "url": "https://matoken.org/blog/2022/03/17/download-twitter-spaces-and-cut-the-silence-to-listen/", "title": "Twitter Spaces\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u7121\u97f3\u90e8\u5206\u3092\u30ab\u30c3\u30c8\u3057\u3066\u805e\u304f", "content_html": "
\n

Twitter Scapes\u3068\u3044\u3046\u97f3\u58f0\u914d\u4fe1\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308a\u307e\u3059\u304c\uff0c\u57fa\u672c\u7684\u306b\u30e9\u30a4\u30d6\uff0e\u8074\u304d\u305f\u3044\u3082\u306e\u304c\u3042\u3063\u305f\u306e\u3067\u3059\u304c\uff0c\u4f53\u8abf\u4e0d\u826f\u3067\u5bdd\u3066\u3044\u3066\u805e\u3051\u307e\u305b\u3093\u3067\u3057\u305f\uff0e
\n\u3067\u308230\u65e5\u30a2\u30fc\u30ab\u30a4\u30d6\u304c\u6b8b\u308b\u3068\u306e\u3053\u3068\u306a\u306e\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30b9\u30de\u30db\u3067\u805e\u3044\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n
\n

\u914d\u4fe1\u6700\u5f8c\u307e\u3067\u304a\u8074\u304d\u3044\u305f\u3060\u304d\u3042\u308a\u304c\u3068\u3046\u3054\u3056>\u3044\u307e\u3057\u305f\u3002\u30a2\u30fc\u30ab\u30a4\u30d6\u306f 30\u65e5\u9593\u6b8b\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u8074\u304d\u9003\u3057\u305f\u65b9\u306f\u305c\u3072\u3069\u3046\u305e\u3002\u4eca\u5f8c\u3068\u3082\u30dd\u30c3\u30c9\u30ad\u30e3\u30b9\u30c8 #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec \u3092\u3088\u308d\u3057\u304f\u304a\u9858\u3044\u3057\u307e\u3059\uff01\uff01 https://t.co/wUrkGp7nzy

\n

\u2014 Masafumi Negishi (@MasafumiNegishi) March 15, 2022

\n

\n
\n
\n\n
\n
\n

\n
\n
\n

\u307e\u305a\u306f\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\uff0cYoutube-dl, yt-dlp\u3092\u8a66\u3057\u307e\u3057\u305f\u304c\u307e\u3060\u672a\u5bfe\u5fdc\u306e\u3088\u3046\uff0e

\n
\n
\n

\u4eca\u56deTwspace-dl\u3068\u3044\u3046\u3082\u306e\u3092\u8a66\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n
\n
$ virtualenv .\n$ source bin/activate\n$ pip install twspace-dl\n$ twspace_dl\nusage: twspace_dl [-h] [-v] [-s] [-k] [-l] [--input-cookie-file COOKIE_FILE] [--username USERNAME]\n                  [--password PASSWORD] [--output-cookie-file OUTPUT_COOKIE_FILE] [-i SPACE_URL | -U USER_URL]\n                  [-d DYN_URL] [-f URL] [-M PATH] [-o FORMAT_STR] [-m] [-p] [-u] [--write-url URL_OUTPUT]\n\nScript designed to help download twitter spaces\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -v, --verbose\n  -s, --skip-download\n  -k, --keep-files\n  -l, --log             create logfile\n  --input-cookie-file COOKIE_FILE\n\ninput:\n  -i SPACE_URL, --input-url SPACE_URL\n  -U USER_URL, --user-url USER_URL\n  -d DYN_URL, --from-dynamic-url DYN_URL\n                        use the dynamic url for the processes(useful for ended spaces) example: https://prod-\n                        fastly-ap-\n                        northeast-1.video.pscp.tv/Transcoding/v1/hls/zUUpEgiM0M18jCGxo2eSZs99p49hfyFQr1l4cdze-\n                        Sp4T-DQOMMoZpkbdyetgfwscfvvUkAdeF-I5hPI4bGoYg/non_transcode/ap-northeast-1/periscope-\n                        replay-direct-prod-ap-northeast-1-public/audio-space/dynamic_playlist.m3u8?type=live\n  -f URL, --from-master-url URL\n                        use the master url for the processes(useful for ended spaces) example: https://prod-\n                        fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/YRSsw6_P5xUZHMualK5-ihvePR6o4Qmo\n                        ZVOBGicKvmkL_KB9IQYtxVqm3P_vpZ2HnFkoRfar4_uJOjqC8OCo5A/non_transcode/ap-\n                        northeast-1/periscope-replay-direct-prod-ap-northeast-1-public/audio-\n                        space/master_playlist.m3u8\n  -M PATH, --input-metadata PATH\n                        use a metadata json file instead of input url (useful for very old ended spaces)\n\noutput:\n  -o FORMAT_STR, --output FORMAT_STR\n  -m, --write-metadata  write the full metadata json to a file\n  -p, --write-playlist  write the m3u8 used to download the stream(e.g. if you want to use another downloader)\n  -u, --url             display the master url\n  --write-url URL_OUTPUT\n                        write master url to file\n\nlogin:\n  --username USERNAME\n  --password PASSWORD\n  --output-cookie-file OUTPUT_COOKIE_FILE
\n
\n
\n
\n

\u65e9\u901f\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9

\n
\n
\n
\n
$ twspace_dl -i https://twitter.com/i/spaces/1ypKdEXLdLqGW\n\n2022-03-16 15:42:16,496 [INFO] ./tmp6swcs0w5/(\u8fbb \u4f38\u5f18 (nobuhiro tsuji))\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.m3u8 written to disk\n[hls @ 0x55f2ea4a9800] Changing ID3 metadata in HLS audio elementary stream is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.\nsize=   51141kB time=01:13:21.68 bitrate=  95.2kbits/s speed=10.6x\n2022-03-16 15:49:14,334 [INFO] Finished downloading\n$ ffprobe -i ./\\(\u8fbb\\ \u4f38\u5f18\\ \\(nobuhiro\\ tsuji\\)\\)\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec\\ #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.m4a\nffprobe version 4.4.1-3+b2 Copyright (c) 2007-2021 the FFmpeg developers\n  built with gcc 11 (Debian 11.2.0-18)\n  configuration: --prefix=/usr --extra-version=3+b2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared\n  libavutil      56. 70.100 / 56. 70.100\n  libavcodec     58.134.100 / 58.134.100\n  libavformat    58. 76.100 / 58. 76.100\n  libavdevice    58. 13.100 / 58. 13.100\n  libavfilter     7.110.100 /  7.110.100\n  libswscale      5.  9.100 /  5.  9.100\n  libswresample   3.  9.100 /  3.  9.100\n  libpostproc    55.  9.100 / 55.  9.100\nInput #0, mov,mp4,m4a,3gp,3g2,mj2, from './(\u8fbb \u4f38\u5f18 (nobuhiro tsuji))\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.m4a':\n  Metadata:\n    major_brand     : M4A\n    minor_version   : 512\n    compatible_brands: M4A isomiso2\n    title           : \u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec\n    artist          : \u8fbb \u4f38\u5f18 (nobuhiro tsuji)\n    encoder         : Lavf58.76.100\n    episode_id      : 1ypKdEXLdLqGW\n  Duration: 01:13:21.71, start: 0.000000, bitrate: 95 kb/s\n  Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)\n    Metadata:\n      handler_name    : SoundHandler\n      vendor_id       : [0][0][0][0]
\n
\n
\n
\n

\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3057\u305f\uff0e\u518d\u751f\u3057\u3066\u307f\u308b\u3068\u97f3\u304c\u51fa\u306a\u3044??\u5148\u982d\u306b\u7121\u97f3\u304c\u5165\u3063\u3066\u308b\u305b\u3044\u3067\u5c11\u3057\u9032\u3081\u308b\u3068\u97f3\u304c\u51fa\u307e\u3057\u305f\uff0e

\n
\n
\n

\u3066\u3053\u3068\u3067\u5148\u65e5\u3082\u4f7f\u3063\u305f ffmppeg \u306e silenceremove \u30d5\u30a3\u30eb\u30bf\u3067\u7121\u97f3\u90e8\u5206\u3092\u30ab\u30c3\u30c8\u3057\u307e\u3059\uff0e

\n
\n
\n\n
\n
\n

\u3057\u304d\u3044\u5024\u306f\u524d\u56de\u3068\u540c\u3058 -90dB \u3060\u3068\u307b\u3068\u3093\u3069\u30ab\u30c3\u30c8\u3067\u304d\u307e\u305c\u3093\u3067\u3057\u305f\uff0e -50dB \u3067\u3044\u3044\u611f\u3058\u306b\u306a\u3063\u305f\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
$ ffmpeg -i ./\\(\u8fbb\\ \u4f38\u5f18\\ \\(nobuhiro\\ tsuji\\)\\)\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec\\ #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.m4a -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-50dB -acodec libopus ./\\(\u8fbb\\ \u4f38\u5f18\\ \\(nobuhiro\\ tsuji\\)\\)\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec\\ #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.opus
\n
\n
\n
\n

01:13:21.71 \u2192 01:09:51.71 \u306b\u306a\u308a\u307e\u3057\u305f\uff0e\u3066\u3053\u3068\u3067\u3053\u308c\u3067\u30b9\u30de\u30db\u306b\u8ee2\u9001\u3057\u3066\u805e\u304f\u3053\u3068\u304c\u51fa\u6765\u307e\u3057\u305f\uff0e

\n
\n
\n

\"Twitter

\n
\n
\n

\u3061\u306a\u307f\u306b\u4eca\u56de\u8a66\u3057\u305f\u914d\u4fe1\u306fPodcast\u306e\u300c\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec\u300d\u306e\u300c\u30b5\u30a4\u30d0\u30fc\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u95a2\u3059\u308b\u7dcf\u52d9\u5927\u81e3\u5968\u52b1\u8cde\u300d\u306e\u53d7\u8cde\u8a18\u5ff5\u914d\u4fe1\u7684\u306a\u3082\u306e\u3067\u3057\u305f\uff0e\u3044\u3064\u3082\u306f\u9031\u4e00\u304f\u3089\u3044\u3067Podcast\u3092\u914d\u4fe1\u3055\u308c\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n\n
\n
\n

\uff03\u6700\u8fd1\u306fPodcast\u306e\u9732\u51fa\u304c\u5897\u3048\u3066\u3044\u308b\u611f\u3058\uff0e\u904e\u53bb\u306b\u914d\u4fe1\u3057\u3066\u6b62\u307e\u3063\u3066\u3044\u308b\u756a\u7d44\u3082\u5fa9\u6d3b\u3057\u306a\u3044\u304b\u306a\u96fb\u30ab\u30fc\u3068\u304b\u3061\u3093\u3055\u3093\u3068\u304b\u2026\u2026\uff0e

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W python3 ffmpeg\nffmpeg  7:4.4.1-3+b2\npython3 3.9.8-1\n$ lsb_release -dr\naDescription:   Debian GNU/Linux bookworm/sid\nRelease:        unstable\n$ arch\nx86_64
\n
\n
\n", "content_text": "Twitter Scapes\u3068\u3044\u3046\u97f3\u58f0\u914d\u4fe1\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308a\u307e\u3059\u304c\uff0c\u57fa\u672c\u7684\u306b\u30e9\u30a4\u30d6\uff0e\u8074\u304d\u305f\u3044\u3082\u306e\u304c\u3042\u3063\u305f\u306e\u3067\u3059\u304c\uff0c\u4f53\u8abf\u4e0d\u826f\u3067\u5bdd\u3066\u3044\u3066\u805e\u3051\u307e\u305b\u3093\u3067\u3057\u305f\uff0e\n\u3067\u308230\u65e5\u30a2\u30fc\u30ab\u30a4\u30d6\u304c\u6b8b\u308b\u3068\u306e\u3053\u3068\u306a\u306e\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30b9\u30de\u30db\u3067\u805e\u3044\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\u914d\u4fe1\u6700\u5f8c\u307e\u3067\u304a\u8074\u304d\u3044\u305f\u3060\u304d\u3042\u308a\u304c\u3068\u3046\u3054\u3056>\u3044\u307e\u3057\u305f\u3002\u30a2\u30fc\u30ab\u30a4\u30d6\u306f 30\u65e5\u9593\u6b8b\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u8074\u304d\u9003\u3057\u305f\u65b9\u306f\u305c\u3072\u3069\u3046\u305e\u3002\u4eca\u5f8c\u3068\u3082\u30dd\u30c3\u30c9\u30ad\u30e3\u30b9\u30c8 #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec \u3092\u3088\u308d\u3057\u304f\u304a\u9858\u3044\u3057\u307e\u3059\uff01\uff01 https://t.co/wUrkGp7nzy\n\u2014 Masafumi Negishi (@MasafumiNegishi) March 15, 2022\n\n\n\n\nTwitter\u30b9\u30da\u30fc\u30b9\u306b\u3064\u3044\u3066\n\n\n\n\n\n\n\u307e\u305a\u306f\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\uff0cYoutube-dl, yt-dlp\u3092\u8a66\u3057\u307e\u3057\u305f\u304c\u307e\u3060\u672a\u5bfe\u5fdc\u306e\u3088\u3046\uff0e\n\n\n\u4eca\u56deTwspace-dl\u3068\u3044\u3046\u3082\u306e\u3092\u8a66\u3057\u307e\u3057\u305f\uff0e\n\n\n\nRyu1845/twspace-dl: A python module to download twitter spaces.\n\n\n\n\n$ virtualenv .\n$ source bin/activate\n$ pip install twspace-dl\n$ twspace_dl\nusage: twspace_dl [-h] [-v] [-s] [-k] [-l] [--input-cookie-file COOKIE_FILE] [--username USERNAME]\n [--password PASSWORD] [--output-cookie-file OUTPUT_COOKIE_FILE] [-i SPACE_URL | -U USER_URL]\n [-d DYN_URL] [-f URL] [-M PATH] [-o FORMAT_STR] [-m] [-p] [-u] [--write-url URL_OUTPUT]\n\nScript designed to help download twitter spaces\n\noptional arguments:\n -h, --help show this help message and exit\n -v, --verbose\n -s, --skip-download\n -k, --keep-files\n -l, --log create logfile\n --input-cookie-file COOKIE_FILE\n\ninput:\n -i SPACE_URL, --input-url SPACE_URL\n -U USER_URL, --user-url USER_URL\n -d DYN_URL, --from-dynamic-url DYN_URL\n use the dynamic url for the processes(useful for ended spaces) example: https://prod-\n fastly-ap-\n northeast-1.video.pscp.tv/Transcoding/v1/hls/zUUpEgiM0M18jCGxo2eSZs99p49hfyFQr1l4cdze-\n Sp4T-DQOMMoZpkbdyetgfwscfvvUkAdeF-I5hPI4bGoYg/non_transcode/ap-northeast-1/periscope-\n replay-direct-prod-ap-northeast-1-public/audio-space/dynamic_playlist.m3u8?type=live\n -f URL, --from-master-url URL\n use the master url for the processes(useful for ended spaces) example: https://prod-\n fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/YRSsw6_P5xUZHMualK5-ihvePR6o4Qmo\n ZVOBGicKvmkL_KB9IQYtxVqm3P_vpZ2HnFkoRfar4_uJOjqC8OCo5A/non_transcode/ap-\n northeast-1/periscope-replay-direct-prod-ap-northeast-1-public/audio-\n space/master_playlist.m3u8\n -M PATH, --input-metadata PATH\n use a metadata json file instead of input url (useful for very old ended spaces)\n\noutput:\n -o FORMAT_STR, --output FORMAT_STR\n -m, --write-metadata write the full metadata json to a file\n -p, --write-playlist write the m3u8 used to download the stream(e.g. if you want to use another downloader)\n -u, --url display the master url\n --write-url URL_OUTPUT\n write master url to file\n\nlogin:\n --username USERNAME\n --password PASSWORD\n --output-cookie-file OUTPUT_COOKIE_FILE\n\n\n\n\u65e9\u901f\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n\n\n\n$ twspace_dl -i https://twitter.com/i/spaces/1ypKdEXLdLqGW\n\n2022-03-16 15:42:16,496 [INFO] ./tmp6swcs0w5/(\u8fbb \u4f38\u5f18 (nobuhiro tsuji))\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.m3u8 written to disk\n[hls @ 0x55f2ea4a9800] Changing ID3 metadata in HLS audio elementary stream is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.\nsize= 51141kB time=01:13:21.68 bitrate= 95.2kbits/s speed=10.6x\n2022-03-16 15:49:14,334 [INFO] Finished downloading\n$ ffprobe -i ./\\(\u8fbb\\ \u4f38\u5f18\\ \\(nobuhiro\\ tsuji\\)\\)\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec\\ #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.m4a\nffprobe version 4.4.1-3+b2 Copyright (c) 2007-2021 the FFmpeg developers\n built with gcc 11 (Debian 11.2.0-18)\n configuration: --prefix=/usr --extra-version=3+b2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared\n libavutil 56. 70.100 / 56. 70.100\n libavcodec 58.134.100 / 58.134.100\n libavformat 58. 76.100 / 58. 76.100\n libavdevice 58. 13.100 / 58. 13.100\n libavfilter 7.110.100 / 7.110.100\n libswscale 5. 9.100 / 5. 9.100\n libswresample 3. 9.100 / 3. 9.100\n libpostproc 55. 9.100 / 55. 9.100\nInput #0, mov,mp4,m4a,3gp,3g2,mj2, from './(\u8fbb \u4f38\u5f18 (nobuhiro tsuji))\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.m4a':\n Metadata:\n major_brand : M4A\n minor_version : 512\n compatible_brands: M4A isomiso2\n title : \u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec\n artist : \u8fbb \u4f38\u5f18 (nobuhiro tsuji)\n encoder : Lavf58.76.100\n episode_id : 1ypKdEXLdLqGW\n Duration: 01:13:21.71, start: 0.000000, bitrate: 95 kb/s\n Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)\n Metadata:\n handler_name : SoundHandler\n vendor_id : [0][0][0][0]\n\n\n\n\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3057\u305f\uff0e\u518d\u751f\u3057\u3066\u307f\u308b\u3068\u97f3\u304c\u51fa\u306a\u3044??\u5148\u982d\u306b\u7121\u97f3\u304c\u5165\u3063\u3066\u308b\u305b\u3044\u3067\u5c11\u3057\u9032\u3081\u308b\u3068\u97f3\u304c\u51fa\u307e\u3057\u305f\uff0e\n\n\n\u3066\u3053\u3068\u3067\u5148\u65e5\u3082\u4f7f\u3063\u305f ffmppeg \u306e silenceremove \u30d5\u30a3\u30eb\u30bf\u3067\u7121\u97f3\u90e8\u5206\u3092\u30ab\u30c3\u30c8\u3057\u307e\u3059\uff0e\n\n\n\nYouTube\u52d5\u753b\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u7121\u97f3\u90e8\u5206\u3092\u30ab\u30c3\u30c8\u3057\u305f\u30aa\u30fc\u30c7\u30a3\u30aa\u30c7\u30fc\u30bf\u306b\u3057\u3066\u805e\u304f \u2013 matoken\u2019s meme\n\n\n\n\u3057\u304d\u3044\u5024\u306f\u524d\u56de\u3068\u540c\u3058 -90dB \u3060\u3068\u307b\u3068\u3093\u3069\u30ab\u30c3\u30c8\u3067\u304d\u307e\u305c\u3093\u3067\u3057\u305f\uff0e -50dB \u3067\u3044\u3044\u611f\u3058\u306b\u306a\u3063\u305f\u3088\u3046\u3067\u3059\uff0e\n\n\n\n$ ffmpeg -i ./\\(\u8fbb\\ \u4f38\u5f18\\ \\(nobuhiro\\ tsuji\\)\\)\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec\\ #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.m4a -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-50dB -acodec libopus ./\\(\u8fbb\\ \u4f38\u5f18\\ \\(nobuhiro\\ tsuji\\)\\)\u3086\u304f\u30a2\u30ec\u3001\u304f\u308b\u30a2\u30ec\\ #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec-1ypKdEXLdLqGW.opus\n\n\n\n01:13:21.71 \u2192 01:09:51.71 \u306b\u306a\u308a\u307e\u3057\u305f\uff0e\u3066\u3053\u3068\u3067\u3053\u308c\u3067\u30b9\u30de\u30db\u306b\u8ee2\u9001\u3057\u3066\u805e\u304f\u3053\u3068\u304c\u51fa\u6765\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\u3061\u306a\u307f\u306b\u4eca\u56de\u8a66\u3057\u305f\u914d\u4fe1\u306fPodcast\u306e\u300c\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec\u300d\u306e\u300c\u30b5\u30a4\u30d0\u30fc\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u95a2\u3059\u308b\u7dcf\u52d9\u5927\u81e3\u5968\u52b1\u8cde\u300d\u306e\u53d7\u8cde\u8a18\u5ff5\u914d\u4fe1\u7684\u306a\u3082\u306e\u3067\u3057\u305f\uff0e\u3044\u3064\u3082\u306f\u9031\u4e00\u304f\u3089\u3044\u3067Podcast\u3092\u914d\u4fe1\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\n\n\n\npodcast – #\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30a2\u30ec – \u3086\u308b\u30fc\u3044\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30dd\u30c3\u30c9\u30ad\u30e3\u30b9\u30c8\u3067\u3059\u3088\u3002\n\n\n\u7dcf\u52d9\u7701\uff5c\u5831\u9053\u8cc7\u6599\uff5c\u300c\u30b5\u30a4\u30d0\u30fc\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306b\u95a2\u3059\u308b\u7dcf\u52d9\u5927\u81e3\u5968\u52b1\u8cde\u300d\u306e\u53d7\u8cde\u8005\u306e\u516c\u8868\n\n\n\n\n\n\n\uff03\u6700\u8fd1\u306fPodcast\u306e\u9732\u51fa\u304c\u5897\u3048\u3066\u3044\u308b\u611f\u3058\uff0e\u904e\u53bb\u306b\u914d\u4fe1\u3057\u3066\u6b62\u307e\u3063\u3066\u3044\u308b\u756a\u7d44\u3082\u5fa9\u6d3b\u3057\u306a\u3044\u304b\u306a\u96fb\u30ab\u30fc\u3068\u304b\u3061\u3093\u3055\u3093\u3068\u304b\u2026\u2026\uff0e\n\n\n\u74b0\u5883\n\n$ dpkg-query -W python3 ffmpeg\nffmpeg 7:4.4.1-3+b2\npython3 3.9.8-1\n$ lsb_release -dr\naDescription: Debian GNU/Linux bookworm/sid\nRelease: unstable\n$ arch\nx86_64", "date_published": "2022-03-17T06:09:36+09:00", "date_modified": "2022-03-17T06:14:05+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "ffmpeg", "podcast", "Twitter", "TwitterSpaces", "Debian", "Linux", "sid" ] }, { "id": "http://matoken.org/blog/?p=3052", "url": "https://matoken.org/blog/2021/03/06/build-the-latest-version-3-5-0-of-twitter-client-sayaka-on-linux/", "title": "Twitter\u30af\u30e9\u30a4\u30a2\u30f3\u30c8sayaka\u3061\u3083\u3093\u306e\u6700\u65b0\u7248(3.5.0)\u3092Linux\u3067\u30d3\u30eb\u30c9\u3059\u308b", "content_html": "
\n

\u8ffd\u8a182021-03-09)
\nRaspberry Pi OS buster armhf \u53ca\u3073 Ubuntu 21.04 (development branch) amd64\u3067\u3082\u540c\u69d8\u306b\u30d3\u30eb\u30c9\u3067\u304d\u307e\u3057\u305f :)

\n

\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u52d5\u4f5c\u3059\u308bTwitter\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u3057\u3066sayaka\u3061\u3083\u3093\u3068\u3044\u3046\u3082\u306e\u304c\u3042\u308a\u307e\u3059\uff0eNetBSD\u306e\u5165\u3063\u305fSHARP X68030\u3067\u3082\u52d5\u4f5c\u3059\u308b\u3068\u3044\u3046\u8efd\u91cf\u306a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\uff0cSIXEL\u3067\u753b\u50cf\u304c\u8868\u793a\u3067\u304d\u305f\u308a\u30b9\u30c8\u30ea\u30fc\u30e0\u30e2\u30fc\u30c9\u304c\u3042\u3063\u3066\u30cf\u30c3\u30b7\u30e5\u30bf\u30b0\u306a\u3069\u3092\u5782\u308c\u6d41\u3059\u306e\u306b\u4fbf\u5229\u306b\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

\u4eca\u65e5\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30ab\u30f3\u30d5\u30a1\u30ec\u30f3\u30b92021 Online/Spring 2\u65e5\u76ee\u304c\u3042\u3063\u3066 @ebijun\u3055\u3093\u306e\u300cNetBSD\u306e\u3054\u7d39\u4ecb\u300d \u3092\u8996\u8074\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0c\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e 3.5.0 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305f\u3068\u306e\u3053\u3068\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n
isaki68k/sayaka
\n
\n
twitter \u30af\u30e9\u30a4\u30a2\u30f3\u30c8 sayaka \u3061\u3083\u3093 version 3.5.0 (2021/03/03)\n\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u7279\u5316\u3057\u305f twitter \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3059\u3002\n\n\u30d5\u30a3\u30eb\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u5782\u308c\u6d41\u3057\u304c\u51fa\u6765\u307e\u3059\u3002\n\u30d5\u30a3\u30eb\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u3088\u308b\u7591\u4f3c\u30db\u30fc\u30e0\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u8868\u793a\u3067\u304d\u307e\u3059\u3002\nmlterm \u306a\u3069\u306e SIXEL \u5bfe\u5fdc\u30bf\u30fc\u30df\u30ca\u30eb\u7528\u3067\u3059\u3002\nX68030/25MHz\u3001\u30e1\u30e2\u30ea12MB \u3067\u3082\u5feb\u9069(?)\u52d5\u4f5c\u3002\n\u66f4\u65b0\u5c65\u6b74\n3.5.0 (2021/03/03) \u2026 C++ \u306b\u79fb\u884c\u3057 vala \u7248\u5ec3\u6b62\u3002 \u753b\u50cf\u306f\u73fe\u5728\u306e\u3068\u3053\u308d JPEG, PNG \u306e\u307f\u5bfe\u5fdc\u3002 \u30bf\u30fc\u30df\u30ca\u30eb\u80cc\u666f\u8272\u306e\u81ea\u52d5\u53d6\u5f97\u3092\u5b9f\u88c5\u3002 --protect\u3001--support-evs \u30aa\u30d7\u30b7\u30e7\u30f3\u5ec3\u6b62\u3002 --noimg \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5ec3\u6b62 (--no-image \u306b\u5909\u66f4)\u3002 userstream \u6642\u4ee3\u306e\u9332\u753b\u30c7\u30fc\u30bf\u306e\u518d\u751f\u6a5f\u80fd\u5ec3\u6b62\u3002
\n
\n
\n
\n
\n
\n

watch\u3057\u3066\u305f\u3051\u3069\u30e1\u30fc\u30eb\u5c4a\u3044\u3066\u3044\u306a\u3044\u3088\u3046\u3067\u3059?

\n
\n
\n

\"sayaka

\n
\n
\n
\n
\n

\u73fe\u5728\u306e\u30d0\u30fc\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\uff0e1\u3064\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u307d\u3044\u3067\u3059\u306d\uff0e

\n
\n
\n
\n
$ sayaka --version\nsayaka.vala 3.4.6 (2020/11/10)
\n
\n
\n
\n

\u30d3\u30eb\u30c9\u3092\u8a66\u307f\u307e\u3059\uff0e

\n
\n
\n
\n
$ git clone https://github.com/isaki68k/sayaka/ (1)\n$ cd sayaka\n$ git checkout 3.5.0\nHEAD is now at 958f630 ver 3.5.0 (2021/03/03)\n$ ./configure (2)
\n
\n
\n
\n
    \n
  1. sayaka\u306esource\u3092clone
  2. \n
  3. configure
  4. \n
\n
\n
\n

\u8db3\u308a\u306a\u3044\u3082\u306e\u304c\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3067\u8868\u793a\u3055\u308c\u3066\u52a9\u304b\u308a\u307e\u3059 :)

\n
\n
\n
\n
configure: error: *** mbedtls not found.\n        On Ubuntu, sudo apt install libmbedtls-dev
\n
\n
\n
\n
\n
configure: error: *** mbedtls not found.\n        On Ubuntu, sudo apt install libmbedtls-dev
\n
\n
\n
\n

./configure \u304c\u901a\u3063\u305f\u3089make\u2026\u2026\u5931\u6557\u3067\u3059\uff0e

\n
\n
\n
\n
$ make\n(cd src; make all)\nmake[1]: Entering directory '/home/matoken/src/sayaka/src'\nMakefile:3: *** missing separator.  Stop.\nmake[1]: Leaving directory '/home/matoken/src/sayaka/src'\nmake: *** [Makefile:2: all] Error 2
\n
\n
\n
\n

\u5fc5\u8981\u306a\u3082\u306e\u3092\u3088\u304f\u898b\u308b\u3068\uff0cGNU make\u3067\u306f\u306a\u304f BSD make \u304c\u5fc5\u8981\u3068\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e(3.4.6\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3053\u306e\u3068\u304d\u306fGNU make\u306a\u306e\u3067\u4eca\u56de\u5909\u308f\u3063\u305f\u3088\u3046\u3067\u3059)

\n
\n
\n
\n
\u5fc5\u8981\u306a\u3082\u306e\nC++17 compiler\njpeg (libjpeg)\nlibpng\nmbedtls (2.9.0 or later?)\nBSD make (not GNU make)
\n
\n
\n
\n

BSD make\u3092\u5c0e\u5165\u3057\u3066GNU make\u3067\u306f\u306a\u304fBSD make\u3092\u4f7f\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo apt install bmake (1)\n$ bmake sayaka (2)\n$ src/sayaka --version (3)\nsayaka version 3.5.0 (2021/03/03)\n$ install src/sayaka ~/bin/ (4)
\n
\n
\n
\n
    \n
  1. BSD make\u3092\u5c0e\u5165
  2. \n
  3. BSD make\u3067sayaka\u3092make
  4. \n
  5. \u51fa\u6765\u4e0a\u304c\u3063\u305fsayaka\u3092\u53e9\u3044\u3066\u307f\u308b
  6. \n
  7. sayaka\u3092\u9069\u5f53\u306a\u5834\u6240( ~/bin )\u306b\u30b3\u30d4\u30fc\u306binstall
  8. \n
\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067sayaka 3.5.0 \u306b\u3067\u304d\u307e\u3057\u305f :)

\n
\n
\n

\u79c1\u306fmlterm\u7b49\u306eSIXEL\u5bfe\u5fdc\u7aef\u672b\u3067\u691c\u7d22\u3057\u305f\u3044\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u7e4b\u3052\u3066\u3044\u3063\u3066\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306e\u6a2a\u306b\u304a\u3044\u3066\u304a\u304f\u3068\u3044\u3063\u305f\u611f\u3058\u3067\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

mlterm+sayaka\u3068youtube-dl+ffplay \u3067 #osc21on.spring pic.twitter.com/fjyOk0NNKJ

\n

\u2014 matoken (@matoken1) March 6, 2021

\n

\n
\n
\u74b0\u5883
\n
\n
$ sayaka --version\nsayaka version 3.5.0 (2021/03/03)\n$ ldd src/sayaka | cut -f1 -d\"(\" | cut -f3 -d\" \" | xargs -n1 apt-file search | cut -f1 -d: | uniq | xargs dpkg-query -W | grep amd64\nlibbsd0:amd64   0.11.3-1\nlibc6:amd64     2.31-9\nlibgcc-s1:amd64 10.2.1-6\nlibjpeg62-turbo:amd64   1:2.0.6-2\nlibmbedcrypto3:amd64    2.16.9-0.1\nlibmbedtls12:amd64      2.16.9-0.1\nlibmbedx509-0:amd64     2.16.9-0.1\nlibmd0:amd64    1.0.3-3\nlibpng16-16:amd64       1.6.37-3\nlibstdc++6:amd64        10.2.1-6\nzlib1g:amd64    1:1.2.11.dfsg-2\n$ dpkg-query -W bmake build-essential\nbmake   20200710-7\nbuild-essential 12.9\n$ lsb_release -dr\nDescription:    Debian GNU/Linux bullseye/sid\nRelease:        unstable\n$ uname -m\nx86_64
\n
\n
\n", "content_text": "\u8ffd\u8a182021-03-09)\nRaspberry Pi OS buster armhf \u53ca\u3073 Ubuntu 21.04 (development branch) amd64\u3067\u3082\u540c\u69d8\u306b\u30d3\u30eb\u30c9\u3067\u304d\u307e\u3057\u305f :)\n\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u52d5\u4f5c\u3059\u308bTwitter\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u3057\u3066sayaka\u3061\u3083\u3093\u3068\u3044\u3046\u3082\u306e\u304c\u3042\u308a\u307e\u3059\uff0eNetBSD\u306e\u5165\u3063\u305fSHARP X68030\u3067\u3082\u52d5\u4f5c\u3059\u308b\u3068\u3044\u3046\u8efd\u91cf\u306a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\uff0cSIXEL\u3067\u753b\u50cf\u304c\u8868\u793a\u3067\u304d\u305f\u308a\u30b9\u30c8\u30ea\u30fc\u30e0\u30e2\u30fc\u30c9\u304c\u3042\u3063\u3066\u30cf\u30c3\u30b7\u30e5\u30bf\u30b0\u306a\u3069\u3092\u5782\u308c\u6d41\u3059\u306e\u306b\u4fbf\u5229\u306b\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\u4eca\u65e5\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30ab\u30f3\u30d5\u30a1\u30ec\u30f3\u30b92021 Online/Spring 2\u65e5\u76ee\u304c\u3042\u3063\u3066 @ebijun\u3055\u3093\u306e\u300cNetBSD\u306e\u3054\u7d39\u4ecb\u300d \u3092\u8996\u8074\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0c\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e 3.5.0 \u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305f\u3068\u306e\u3053\u3068\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\nisaki68k/sayaka\n\ntwitter \u30af\u30e9\u30a4\u30a2\u30f3\u30c8 sayaka \u3061\u3083\u3093 version 3.5.0 (2021/03/03)\n\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u7279\u5316\u3057\u305f twitter \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3067\u3059\u3002\n\n\u30d5\u30a3\u30eb\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u5782\u308c\u6d41\u3057\u304c\u51fa\u6765\u307e\u3059\u3002\n\u30d5\u30a3\u30eb\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u3088\u308b\u7591\u4f3c\u30db\u30fc\u30e0\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u304c\u8868\u793a\u3067\u304d\u307e\u3059\u3002\nmlterm \u306a\u3069\u306e SIXEL \u5bfe\u5fdc\u30bf\u30fc\u30df\u30ca\u30eb\u7528\u3067\u3059\u3002\nX68030/25MHz\u3001\u30e1\u30e2\u30ea12MB \u3067\u3082\u5feb\u9069(?)\u52d5\u4f5c\u3002\n\u66f4\u65b0\u5c65\u6b74\n3.5.0 (2021/03/03) \u2026 C++ \u306b\u79fb\u884c\u3057 vala \u7248\u5ec3\u6b62\u3002 \u753b\u50cf\u306f\u73fe\u5728\u306e\u3068\u3053\u308d JPEG, PNG \u306e\u307f\u5bfe\u5fdc\u3002 \u30bf\u30fc\u30df\u30ca\u30eb\u80cc\u666f\u8272\u306e\u81ea\u52d5\u53d6\u5f97\u3092\u5b9f\u88c5\u3002 --protect\u3001--support-evs \u30aa\u30d7\u30b7\u30e7\u30f3\u5ec3\u6b62\u3002 --noimg \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5ec3\u6b62 (--no-image \u306b\u5909\u66f4)\u3002 userstream \u6642\u4ee3\u306e\u9332\u753b\u30c7\u30fc\u30bf\u306e\u518d\u751f\u6a5f\u80fd\u5ec3\u6b62\u3002\n\n\n\n\n\nwatch\u3057\u3066\u305f\u3051\u3069\u30e1\u30fc\u30eb\u5c4a\u3044\u3066\u3044\u306a\u3044\u3088\u3046\u3067\u3059?\n\n\n\n\n\n\n\n\u73fe\u5728\u306e\u30d0\u30fc\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\uff0e1\u3064\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u307d\u3044\u3067\u3059\u306d\uff0e\n\n\n\n$ sayaka --version\nsayaka.vala 3.4.6 (2020/11/10)\n\n\n\n\u30d3\u30eb\u30c9\u3092\u8a66\u307f\u307e\u3059\uff0e\n\n\n\n$ git clone https://github.com/isaki68k/sayaka/ (1)\n$ cd sayaka\n$ git checkout 3.5.0\nHEAD is now at 958f630 ver 3.5.0 (2021/03/03)\n$ ./configure (2)\n\n\n\n\nsayaka\u306esource\u3092clone\nconfigure\n\n\n\n\u8db3\u308a\u306a\u3044\u3082\u306e\u304c\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u3067\u8868\u793a\u3055\u308c\u3066\u52a9\u304b\u308a\u307e\u3059 :)\n\n\n\nconfigure: error: *** mbedtls not found.\n On Ubuntu, sudo apt install libmbedtls-dev\n\n\n\n\nconfigure: error: *** mbedtls not found.\n On Ubuntu, sudo apt install libmbedtls-dev\n\n\n\n./configure \u304c\u901a\u3063\u305f\u3089make\u2026\u2026\u5931\u6557\u3067\u3059\uff0e\n\n\n\n$ make\n(cd src; make all)\nmake[1]: Entering directory '/home/matoken/src/sayaka/src'\nMakefile:3: *** missing separator. Stop.\nmake[1]: Leaving directory '/home/matoken/src/sayaka/src'\nmake: *** [Makefile:2: all] Error 2\n\n\n\n\u5fc5\u8981\u306a\u3082\u306e\u3092\u3088\u304f\u898b\u308b\u3068\uff0cGNU make\u3067\u306f\u306a\u304f BSD make \u304c\u5fc5\u8981\u3068\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e(3.4.6\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3053\u306e\u3068\u304d\u306fGNU make\u306a\u306e\u3067\u4eca\u56de\u5909\u308f\u3063\u305f\u3088\u3046\u3067\u3059)\n\n\n\n\u5fc5\u8981\u306a\u3082\u306e\nC++17 compiler\njpeg (libjpeg)\nlibpng\nmbedtls (2.9.0 or later?)\nBSD make (not GNU make)\n\n\n\nBSD make\u3092\u5c0e\u5165\u3057\u3066GNU make\u3067\u306f\u306a\u304fBSD make\u3092\u4f7f\u3044\u307e\u3059\uff0e\n\n\n\n$ sudo apt install bmake (1)\n$ bmake sayaka (2)\n$ src/sayaka --version (3)\nsayaka version 3.5.0 (2021/03/03)\n$ install src/sayaka ~/bin/ (4)\n\n\n\n\nBSD make\u3092\u5c0e\u5165\nBSD make\u3067sayaka\u3092make\n\u51fa\u6765\u4e0a\u304c\u3063\u305fsayaka\u3092\u53e9\u3044\u3066\u307f\u308b\nsayaka\u3092\u9069\u5f53\u306a\u5834\u6240( ~/bin )\u306b\u30b3\u30d4\u30fc\u306binstall\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067sayaka 3.5.0 \u306b\u3067\u304d\u307e\u3057\u305f :)\n\n\n\u79c1\u306fmlterm\u7b49\u306eSIXEL\u5bfe\u5fdc\u7aef\u672b\u3067\u691c\u7d22\u3057\u305f\u3044\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u7e4b\u3052\u3066\u3044\u3063\u3066\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306e\u6a2a\u306b\u304a\u3044\u3066\u304a\u304f\u3068\u3044\u3063\u305f\u611f\u3058\u3067\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\nmlterm+sayaka\u3068youtube-dl+ffplay \u3067 #osc21on.spring pic.twitter.com/fjyOk0NNKJ\n\u2014 matoken (@matoken1) March 6, 2021\n\n\n\u74b0\u5883\n\n$ sayaka --version\nsayaka version 3.5.0 (2021/03/03)\n$ ldd src/sayaka | cut -f1 -d\"(\" | cut -f3 -d\" \" | xargs -n1 apt-file search | cut -f1 -d: | uniq | xargs dpkg-query -W | grep amd64\nlibbsd0:amd64 0.11.3-1\nlibc6:amd64 2.31-9\nlibgcc-s1:amd64 10.2.1-6\nlibjpeg62-turbo:amd64 1:2.0.6-2\nlibmbedcrypto3:amd64 2.16.9-0.1\nlibmbedtls12:amd64 2.16.9-0.1\nlibmbedx509-0:amd64 2.16.9-0.1\nlibmd0:amd64 1.0.3-3\nlibpng16-16:amd64 1.6.37-3\nlibstdc++6:amd64 10.2.1-6\nzlib1g:amd64 1:1.2.11.dfsg-2\n$ dpkg-query -W bmake build-essential\nbmake 20200710-7\nbuild-essential 12.9\n$ lsb_release -dr\nDescription: Debian GNU/Linux bullseye/sid\nRelease: unstable\n$ uname -m\nx86_64", "date_published": "2021-03-06T22:32:34+09:00", "date_modified": "2021-03-09T23:13:54+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "CLI", "sayaka", "terminal", "Twitter", "Debian", "Linux", "sid" ] }, { "id": "http://matoken.org/blog/?p=3012", "url": "https://matoken.org/blog/2021/02/19/switch-from-ttytter-a-tty-twitter-client-to-oysttyer/", "title": "TTY Twitter\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306eTTYtter\u304b\u3089Oysttyer\u306b\u4e57\u308a\u63db\u3048", "content_html": "
\n

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
\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

\n
\n
\n\n
\n
\n

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
\n-oauthwizard \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8a8d\u8a3c\u304c\u3067\u304d\u308b\u3088\u3046\u3067\u3059\uff0e
\n\u65e2\u5b9a\u5024\u3067\u306f\u8a8d\u8a3c\u60c5\u5831\u306f ~/.oysttyerkey \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 -key=\u8a8d\u8a3c\u60c5\u5831\u683c\u7d0d\u30d5\u30a1\u30a4\u30eb \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u533a\u5225\u3057\u307e\u3059\uff0e

\n
\n
\n\n\n\n\n\n\n\n
\n
Note
\n
\n-keyf \u306e\u30d1\u30b9\u306b ~ \u3092\u4f7f\u3046\u3068\u30a8\u30e9\u30fc\u306b\u306a\u308b\u3088\u3046\u3067\u3059\uff0e\u4eca\u56de\u306f\u4ee3\u308f\u308a\u306b $HOME \u3092\u4f7f\u3044\u307e\u3057\u305f\uff0e
\n
\n
\n
\n
$ oysttyer -keyf=$HOME/.oysttyerkey_kagolug_ml -oauthwizard (1)\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(2)\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 (3)\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> 0901765 (4)\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=... .)
\n
\n
\n
\n
    \n
  1. \u8a8d\u8a3c\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3057\u3066\u8a8d\u8a3c\u51e6\u7406\u5b9f\u884c
  2. \n
  3. Enter\u3067\u7d9a\u884c
  4. \n
  5. 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
  6. \n
  7. \u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306b\u8868\u793a\u3055\u308c\u308bPIN\u3092\u5165\u529b\u3057\u3066Enter
  8. \n
\n
\n
\n

\u3053\u308c\u3067\u8a8d\u8a3c\u60c5\u5831\u304c\u6307\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\uff0e

\n
\n
\n

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

\n
\n
\n
\n
ttytter -keyf=/home/mk/.ttytterkey-kagolug_ml -location -lat=31.5775639 -long=130.6667937 -status=\"$MESSAGE\"
\n
\n
\n
\n

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

\n
\n
\n\n
\n
\n

\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

\n
\n
\n
\n
$ oysttyer -keyf=/home/mk/.oysttyerkey_kagolug_ml -location -lat=31.5775639 -long=130.6667937 -status=\"\u6295\u7a3f\u30c6\u30b9\u30c8📮\"\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!
\n
\n
\n
\n

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 :)

\n
\n
\n
\u74b0\u5883
\n
\n
$ 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
\n
\n
\n", "content_text": "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\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\n\n\n\nTTYtter is dead: Oysttyer is now the interactive console text-based command-line Twitter client and Perl platform (whew!)\noysttyer/oysttyer: An interactive console text-based command-line Twitter client written in Perl\nDebian\u2009\u2014\u2009\u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009ttytter\nDebian\u2009\u2014\u2009\u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009oysttyer\n\n\n\nTTYtter\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\n-oauthwizard \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8a8d\u8a3c\u304c\u3067\u304d\u308b\u3088\u3046\u3067\u3059\uff0e\n\u65e2\u5b9a\u5024\u3067\u306f\u8a8d\u8a3c\u60c5\u5831\u306f ~/.oysttyerkey \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 -key=\u8a8d\u8a3c\u60c5\u5831\u683c\u7d0d\u30d5\u30a1\u30a4\u30eb \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u533a\u5225\u3057\u307e\u3059\uff0e\n\n\n\n\n\n\nNote\n\n\n-keyf \u306e\u30d1\u30b9\u306b ~ \u3092\u4f7f\u3046\u3068\u30a8\u30e9\u30fc\u306b\u306a\u308b\u3088\u3046\u3067\u3059\uff0e\u4eca\u56de\u306f\u4ee3\u308f\u308a\u306b $HOME \u3092\u4f7f\u3044\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\n$ oysttyer -keyf=$HOME/.oysttyerkey_kagolug_ml -oauthwizard (1)\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(2)\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 (3)\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> 0901765 (4)\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=... .)\n\n\n\n\n\u8a8d\u8a3c\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3057\u3066\u8a8d\u8a3c\u51e6\u7406\u5b9f\u884c\nEnter\u3067\u7d9a\u884c\nURL\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\n\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306b\u8868\u793a\u3055\u308c\u308bPIN\u3092\u5165\u529b\u3057\u3066Enter\n\n\n\n\u3053\u308c\u3067\u8a8d\u8a3c\u60c5\u5831\u304c\u6307\u5b9a\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\uff0e\n\n\nTTYtter\u3067\u306fScript\u4e2d\u304b\u3089\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066\u6295\u7a3f\u3092\u884c\u3063\u3066\u3044\u307e\u3057\u305f\uff0e\n\n\n\nttytter -keyf=/home/mk/.ttytterkey-kagolug_ml -location -lat=31.5775639 -long=130.6667937 -status=\"$MESSAGE\"\n\n\n\nOysttyer\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\n\n\n\noysttyer.github.io/docs/userGuide.html\n\n\n\n\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\n\n\n\n$ oysttyer -keyf=/home/mk/.oysttyerkey_kagolug_ml -location -lat=31.5775639 -long=130.6667937 -status=\"\u6295\u7a3f\u30c6\u30b9\u30c8📮\"\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!\n\n\n\nScript\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 :)\n\n\n\u74b0\u5883\n\n$ 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", "date_published": "2021-02-19T22:05:37+09:00", "date_modified": "2021-02-19T22:05:37+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Oysttyer", "TTY", "TTYtter", "Twitter", "buster", "Debian", "Linux" ] }, { "id": "http://matoken.org/blog/?p=3007", "url": "https://matoken.org/blog/2021/02/17/self-hosting-the-lightweight-twitter-front-end-nitter/", "title": "\u8efd\u91cfTwitter\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306eNitter\u3092\u30bb\u30eb\u30d5\u30db\u30b9\u30c8", "content_html": "
\n
\n
\n

Nitter\u3068\u3044\u3046Twitter\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u304c\u3042\u308a\u307e\u3059\uff0e\u6700\u8fd1\u306fTwitter\u304c\u91cd\u304f\u3066\u306a\u306b\u304b\u691c\u7d22\u3057\u3088\u3046\u3068\u601d\u3063\u3066\u3082\u5f85\u3061\u9577\u304b\u3063\u305f\u308a\u753b\u50cf\u8aad\u307f\u8fbc\u307f\u5931\u6557\u3057\u305f\u308a\u3068\u3044\u3063\u305f\u3053\u3068\u3082\u3088\u304f\u3042\u308a\u307e\u3059(PC\u306e\u30b9\u30da\u30c3\u30af\u3068\u56de\u7dda\u304c\u7d30\u3044\u305b\u3044\u3082\u5927\u304d\u3044\u3067\u3059\u304c)\uff0e\u8efd\u91cf\u30d6\u30e9\u30a6\u30b6\u3092\u4f7f\u3063\u305f\u308a\u3082\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u305d\u3046\u3059\u308b\u3068\u898b\u305f\u76ee\u3084\u4f7f\u3044\u52dd\u624b\u304c\u3044\u307e\u3044\u3061\uff0e

\n
\n
\n

\u305d\u3057\u3066\u73fe\u5728\u305d\u3046\u3044\u3063\u305f\u8efd\u91cf\u30d6\u30e9\u30a6\u30b6\u306f\u5229\u7528\u3082\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
\n

This browser is no longer supported.
\nPlease switch to a supported browser to continue using twitter.com. You can see a list of supported browsers in our Help Center.

\n
\n
\n
\n
\n

\u305d\u3053\u3067 Nitter \u3092\u8a66\u3057\u3066\u307f\u305f\u3068\u3053\u308d\u8efd\u304f\u3066\u3044\u3044\u611f\u3058\u3067\u3059\uff0e

\n
\n\n
\n

\u73fe\u5728\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u306f\u306a\u3044\u306e\u3067\uff0c\u6295\u7a3f\u3084\u975e\u516c\u958bTweet\u3084\u975e\u516c\u958b\u30ea\u30b9\u30c8\u306a\u3069\u306f\u4f7f\u3048\u307e\u305b\u3093\u304c\uff0c\u30a4\u30d9\u30f3\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u30bf\u30b0\u3092\u8ffd\u3063\u305f\u308a\uff0c\u904e\u53bb\u306etweet\u3092\u691c\u7d22\u3068\u3044\u3063\u305f\u3053\u3068\u3092\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\uff0e

\n
\n
\n

RSS\u5f62\u5f0f\u3067\u306e\u51fa\u529b\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

\u8efd\u91cf\u3067\u4fbf\u5229\u306a\u306e\u3067\u30ed\u30ab\u30fc\u30eb\u30de\u30b7\u30f3\u3067Nitter\u3092\u52d5\u304b\u3057\u3066\u5916\u306bURL\u3092\u5171\u6709\u3059\u308b\u3068\u304d\u306f https://nitter.net/ \u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\uff0e

\n
\n
\n

\u3068\u3044\u3046\u8a71\u3092\u4ee5\u524d\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30ab\u30f3\u30d5\u30a1\u30ec\u30f3\u30b92020\u798f\u5ca1\u5185\u306e\u9e7f\u5150\u5cf6\u3089\u3050\u306e\u30b3\u30de\u3067\u767a\u8868\u3057\u307e\u3057\u305f\uff0e

\n
\n\n
\n

\u3057\u304b\u3057\uff0c\u6700\u8fd1\u306f https://nitter.net/ \u304cTwitter\u306e\u5236\u9650\u306b\u639b\u304b\u3063\u3066\u5229\u7528\u3067\u304d\u306a\u3044\u3053\u3068\u304c\u591a\u304f\u306a\u3063\u3066\u304d\u307e\u3057\u305f\uff0e\u306a\u306e\u3067\u81ea\u5206\u306eVPS\u4e0a\u306b\u30db\u30b9\u30c8\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n\n\n\n\n\n\n\n
\n
Note
\n
\n\u540c\u3058\u624b\u9806\u3067 Raspberry Pi OS buster armhf \u3084 Debian sid(nim\u306fDebina\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u3082\u306e\u5229\u7528)\u3067\u3082\u52d5\u4f5c\u3057\u307e\u3057\u305f\uff0e
\n
\n
\n
\n
\n

Nitter\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u74b0\u5883\u306e\u7528\u610f

\n
\n
\n

Nitter\u304c\u4f9d\u5b58\u3057\u3066\u3044\u308b Redis \u3068 libsass \u3092\u5c0e\u5165\u3057\u3066\u304a\u304d\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo apt install redis-server libsass-dev
\n
\n
\n
\n

Nitter\u3092\u5c02\u7528\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u52d5\u304b\u3057\u305f\u3044\u306e\u3067 nitter \u30e6\u30fc\u30b6\uff0c\u30b0\u30eb\u30fc\u30d7\u3092\u4f5c\u3063\u3066\u305d\u306e\u30e6\u30fc\u30b6\u3067\u64cd\u4f5c\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo groupadd nitter (1)\n$ sudo useradd -m -g nitter nitter (2)\n$ sudo -iu nitter (3)
\n
\n
\n
\n
    \n
  1. nitter \u30b0\u30eb\u30fc\u30d7\u3092\u4f5c\u6210
  2. \n
  3. nitter \u30e6\u30fc\u30b6\u3092\u4f5c\u6210
  4. \n
  5. nitter \u30e6\u30fc\u30b6\u306e\u30b7\u30a7\u30eb\u3092\u958b\u304f
  6. \n
\n
\n
\n
\n
\n

nim\u306e\u7528\u610f

\n
\n
\n

Nitter\u306fnim-lang\u3067\u51fa\u6765\u3066\u3044\u307e\u3059\uff0eNitter\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u306b\u306fnim 1.2.0\u4ee5\u4e0a\u304c\u5fc5\u8981\u3067\u3059\u304c\uff0cDebian buster\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u7248\u306enim\u306f 0.19.4 \u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u51fa\u6765\u307e\u305b\u3093\uff0ebuster-backports \u3082 1.0.4-1~bpo10+1 \u3068\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\uff0e(bullseye\u306f1.4.2)

\n
\n
\n
\n
$ nimble build -d:release\n  Verifying dependencies for nitter@0.1.0\n       Tip: 2 messages have been suppressed, use --verbose to show them.\n     Error: Unsatisfied dependency: nim (>= 1.2.0)\n$ dpkg-query -W nim\nnim     0.19.4-1
\n
\n
\n\n
\n

\u3068\u308a\u3042\u3048\u305anim\u306e\u516c\u5f0f\u30b5\u30a4\u30c8\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u5229\u7528\u3057\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\uff0e

\n
\n\n
\n
\n
$ wget https://nim-lang.org/download/nim-1.4.2-linux_x64.tar.xz \\\nhttps://nim-lang.org/download/nim-1.4.2-linux_x64.tar.xz.sha256 (1)\n$ sha256sum -c ./nim-1.4.2-linux_x64.tar.xz.sha256 (2)\nnim-1.4.2-linux_x64.tar.xz: OK\n$ tar tvf nim-1.4.2-linux_x64.tar.xz | lv (3)\n$ tar xvf nim-1.4.2-linux_x64.tar.xz (4)
\n
\n
\n
\n
    \n
  1. nim\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9
  2. \n
  3. hash\u78ba\u8a8d
  4. \n
  5. \u30a2\u30fc\u30ab\u30a4\u30d6\u78ba\u8a8d
  6. \n
  7. \u30a2\u30fc\u30ab\u30a4\u30d6\u5c55\u958b
  8. \n
\n
\n
\n
\n
\n

Nitter\u306e\u30b3\u30f3\u30d1\u30a4\u30eb

\n
\n
\n

Nitter\u306esource\u3092clone\u3057\u3066\u3055\u3063\u304d\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u5c55\u958b\u3057\u305fnim\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ git clone https://github.com/zedeus/nitter\n$ cd nitter\n$ PATH=~/nim-1.4.2/bin:$PATH nimble build -d:release\n$ PATH=~/nim-1.4.2/bin:$PATH nimble scss\n$ mkdir ./tmp
\n
\n
\n
\n

Redis \u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u306e\u3092\u78ba\u8a8d\u3057\u3066 nitter \u3092\u8d77\u52d5\u3057\u3066\u307f\u307e\u3059\uff0e\u3053\u306e\u72b6\u614b\u3067 8080 \u30dd\u30fc\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066 Nitter \u304c\u5229\u7528\u3067\u304d\u308b\u306e\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e\u30dd\u30fc\u30c8\u756a\u53f7\u306a\u3069\u306f nitter.conf \u3067\u5909\u66f4\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n
\n
$ ps -ef|grep -i redis (1)\nredis    11786     1  0 Feb11 ?        00:15:28 /usr/bin/redis-server 127.0.0.1:6379\n$ ./nitter & (2)\n$ w3m http://localhost:8080/ (3)\n$ kill %1 (4)\n$ exit (5)
\n
\n
\n
\n
    \n
  1. Redis\u304c\u52d5\u3044\u3066\u3044\u308b\u306e\u3092\u78ba\u8a8d
  2. \n
  3. Nitter\u3092\u8d77\u52d5
  4. \n
  5. Nitter\u306e\u52d5\u4f5c\u3092\u78ba\u8a8d
  6. \n
  7. Nitter\u3092\u7d42\u4e86
  8. \n
  9. nitter \u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u629c\u3051\u308b
  10. \n
\n
\n
\n
\n
\n

Nitter\u306e\u8d77\u52d5\u8a2d\u5b9a

\n
\n
\n

\u6b21\u306bNitter\u306b\u8d77\u52d5\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\uff0eSystemd\u74b0\u5883\u306a\u306e\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b5\u30fc\u30d3\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n
/etc/systemd/system/nitter.service
\n
\n
[Unit]\nDescription=Nitter (An alternative Twitter front-end)\nAfter=syslog.target\nAfter=network.target\n\n[Service]\nType=simple\n\n# set user and group\nUser=nitter\nGroup=nitter\n\n# configure location\nWorkingDirectory=/home/nitter/nitter\nExecStart=/home/nitter/nitter/nitter\n\nRestart=always\nRestartSec=15\n\n[Install]\nWantedBy=multi-user.target
\n
\n
\n
\n

\u30b5\u30fc\u30d3\u30b9\u3092\u6709\u52b9\u306b\u3057\u3066Nitter\u3092\u8d77\u52d5\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo systemctl enable --now nitter.service\n$ systemctl status nitter\n\u25cf nitter.service - Nitter (An alternative Twitter front-end)\n   Loaded: loaded (/etc/systemd/system/nitter.service; enabled; vendor preset: enabled)\n   Active: active (running) since Wed 2021-02-17 01:13:07 JST; 34s ago\n Main PID: 19702 (nitter)\n    Tasks: 1 (limit: 4696)\n   Memory: 3.6M\n   CGroup: /system.slice/nitter.service\n           \u2514\u250019702 /home/nitter/nitter/nitter\n$ w3m http://localhost:8080/
\n
\n
\n
\n

\u5916\u306b\u516c\u958b\u305b\u305a\uff0c\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u4f5c\u3055\u305b\u308b\u5834\u5408\u306f\u3053\u3053\u307e\u3067\u306e\u624b\u9806\u3067OK\u3067\u3059\uff0e

\n
\n
\n
\n
\n

\u30c9\u30e1\u30a4\u30f3\u3068SSL\u8a3c\u660e\u66f8\u306e\u7528\u610f

\n
\n
\n

\u203b\u3053\u306e\u624b\u9806\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u304b\u3059\u5834\u5408\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\uff0e

\n
\n
\n

\u4eca\u56de\u306f\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0eDNS\u3092\u8a2d\u5b9a\u3057\u3066 nitter.matoken.org \u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e\u8a2d\u5b9a\u30df\u30b9\u3057\u305f\u3068\u304d\u306b\u30ea\u30ab\u30d0\u30ea\u3057\u3084\u3059\u3044\u3088\u3046\u306bTTl\u3092\u77ed\u304f\u8a2d\u5b9a\u3057\u3066\u3046\u307e\u304f\u884c\u3063\u305f\u3089\u3044\u3064\u3082\u306e\u9577\u3055\u306b\u3057\u307e\u3059\uff0e

\n
\n
\n

\u8a3c\u660e\u66f8\u306fcertbot\u3092\u4f7f\u3044Let\u2019s encrypt\u3067\u4f5c\u6210\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ sudo certbot certonly -d nitter.matoken.org
\n
\n
\n
\n
\n
\n

apache httpd\u306e\u7528\u610f

\n
\n
\n

\u203b\u3053\u306e\u624b\u9806\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u304b\u3059\u5834\u5408\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\uff0e

\n
\n
\n

Nitter\u3092\u305d\u306e\u307e\u307e\u5916\u306b\u516c\u958b\u3059\u308b\u306e\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u7684\u306b\u826f\u304f\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\uff0capache httpd\u3067httpd\u306e\u51e6\u7406\u3092\u3057\u3066Nitter\u306e8080\u306b\u8ee2\u9001\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n

Nitter\u7528\u306eapache httpd\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\uff0e

\n
\n
\n
/etc/apache2/sites-available/nitter.matoken.org.conf
\n
\n
<VirtualHost *:80>\n        ServerName nitter.matoken.org\n        Redirect permanent / https://nitter.matoken.org/\n</VirtualHost>\n<IfModule mod_ssl.c>\n<VirtualHost *:443>\n        ServerName nitter.matoken.org\n        ServerAdmin webmaster@matoken.org\n\n        <Proxy *>\n                Order deny,allow\n                Allow from all\n        </Proxy>\n\n        ProxyPreserveHost On\n        ProxyPass / http://127.0.0.1:8080/ nocanon\n        ProxyPassReverse / http://127.0.0.1:8080/\n        AllowEncodedSlashes On\n\n        ErrorLog ${APACHE_LOG_DIR}/error.nitter.matoken.org.log\n        CustomLog ${APACHE_LOG_DIR}/access.nitter.matoken.org.log combined\n\n        SSLCertificateFile /etc/letsencrypt/live/nitter.matoken.org/fullchain.pem\n        SSLCertificateKeyFile /etc/letsencrypt/live/nitter.matoken.org/privkey.pem\n\n</VirtualHost>\n</IfModule>
\n
\n
\n
\n

\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3057\u3066\u30c6\u30b9\u30c8\u5f8c\u53cd\u6620\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo a2ensite nitter.matoken.org.conf (1)\n$ sudo apache2ctl configtest (2)\n$ sudo systemctl reload apache2 (3)
\n
\n
\n
\n
    \n
  1. \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u6709\u52b9\u306b\u3059\u308b
  2. \n
  3. \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30c6\u30b9\u30c8
  4. \n
  5. apache httpd\u306e\u8a2d\u5b9a\u53cd\u6620
  6. \n
\n
\n
\n

\u3053\u306e\u72b6\u614b\u3067 http://nitter.matoken.org/ \u53ca\u3073 https://nitter.matoken.org/ \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u307f\u3066 Nitter \u304c\u5229\u7528\u3067\u304d\u305f\u3089OK\u3067\u3059\uff0e

\n
\n
\n

\u3068\u308a\u3042\u3048\u305a\u4e00\u822c\u516c\u958b\u3057\u3066\u304a\u304d\u307e\u3059\u304c\uff0c\u4eca\u306e https://nitter.net \u307f\u305f\u3044\u306b\u30a2\u30af\u30bb\u30b9\u5236\u9650\u304c\u3057\u3087\u3063\u3061\u3085\u3046\u304b\u304b\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3089\u5236\u9650\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e

\n
\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
\n
$ git -C ~nitter/nitter log -1\ncommit f392b6ca37e66c7c759aa98db23e0bdc62b39c3d (HEAD -> master, origin/master, origin/HEAD)\nAuthor: Lukas Winkler <github@lw1.at>\nDate:   Sun Feb 14 12:49:09 2021 +0100\n\n    run optipng -o 9 on all images (#337)\n$ dpkg-query -W apache2 redis* libsass-dev certbot\napache2 2.4.38-3+deb10u4\ncertbot 0.31.0-1+deb10u1\nlibsass-dev:amd64       3.5.5-4\nredis-server    5:5.0.3-4+deb10u2\nredis-tools     5:5.0.3-4+deb10u2\n$ lsb_release -dr\nDescription:    Debian GNU/Linux 10 (buster)\nRelease:        10\n$ uname -m\nx86_64
\n
\n
\n
\n
\n", "content_text": "Nitter\u3068\u3044\u3046Twitter\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u304c\u3042\u308a\u307e\u3059\uff0e\u6700\u8fd1\u306fTwitter\u304c\u91cd\u304f\u3066\u306a\u306b\u304b\u691c\u7d22\u3057\u3088\u3046\u3068\u601d\u3063\u3066\u3082\u5f85\u3061\u9577\u304b\u3063\u305f\u308a\u753b\u50cf\u8aad\u307f\u8fbc\u307f\u5931\u6557\u3057\u305f\u308a\u3068\u3044\u3063\u305f\u3053\u3068\u3082\u3088\u304f\u3042\u308a\u307e\u3059(PC\u306e\u30b9\u30da\u30c3\u30af\u3068\u56de\u7dda\u304c\u7d30\u3044\u305b\u3044\u3082\u5927\u304d\u3044\u3067\u3059\u304c)\uff0e\u8efd\u91cf\u30d6\u30e9\u30a6\u30b6\u3092\u4f7f\u3063\u305f\u308a\u3082\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u305d\u3046\u3059\u308b\u3068\u898b\u305f\u76ee\u3084\u4f7f\u3044\u52dd\u624b\u304c\u3044\u307e\u3044\u3061\uff0e\n\n\n\u305d\u3057\u3066\u73fe\u5728\u305d\u3046\u3044\u3063\u305f\u8efd\u91cf\u30d6\u30e9\u30a6\u30b6\u306f\u5229\u7528\u3082\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n\nThis browser is no longer supported.\nPlease switch to a supported browser to continue using twitter.com. You can see a list of supported browsers in our Help Center.\n\n\n\n\n\u305d\u3053\u3067 Nitter \u3092\u8a66\u3057\u3066\u307f\u305f\u3068\u3053\u308d\u8efd\u304f\u3066\u3044\u3044\u611f\u3058\u3067\u3059\uff0e\n\n\n\nzedeus/nitter: Alternative Twitter front-end\n\n\n\n\u73fe\u5728\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u306f\u306a\u3044\u306e\u3067\uff0c\u6295\u7a3f\u3084\u975e\u516c\u958bTweet\u3084\u975e\u516c\u958b\u30ea\u30b9\u30c8\u306a\u3069\u306f\u4f7f\u3048\u307e\u305b\u3093\u304c\uff0c\u30a4\u30d9\u30f3\u30c8\u306e\u30cf\u30c3\u30b7\u30e5\u30bf\u30b0\u3092\u8ffd\u3063\u305f\u308a\uff0c\u904e\u53bb\u306etweet\u3092\u691c\u7d22\u3068\u3044\u3063\u305f\u3053\u3068\u3092\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\uff0e\n\n\nRSS\u5f62\u5f0f\u3067\u306e\u51fa\u529b\u306b\u3082\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\uff0e\n\n\n\u8efd\u91cf\u3067\u4fbf\u5229\u306a\u306e\u3067\u30ed\u30ab\u30fc\u30eb\u30de\u30b7\u30f3\u3067Nitter\u3092\u52d5\u304b\u3057\u3066\u5916\u306bURL\u3092\u5171\u6709\u3059\u308b\u3068\u304d\u306f https://nitter.net/ \u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\uff0e\n\n\n\u3068\u3044\u3046\u8a71\u3092\u4ee5\u524d\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u30ab\u30f3\u30d5\u30a1\u30ec\u30f3\u30b92020\u798f\u5ca1\u5185\u306e\u9e7f\u5150\u5cf6\u3089\u3050\u306e\u30b3\u30de\u3067\u767a\u8868\u3057\u307e\u3057\u305f\uff0e\n\n\n\nTwitter\u3092\u3061\u3063\u3061\u3083\u3044\u30ea\u30bd\u30fc\u30b9\u3067 | edocr\nTwitter\u3092\u3061\u3063\u3061\u3083\u3044\u30ea\u30bd\u30fc\u30b9\u3067 – Speaker Deck\nnitter\n\n\n\n\u3057\u304b\u3057\uff0c\u6700\u8fd1\u306f https://nitter.net/ \u304cTwitter\u306e\u5236\u9650\u306b\u639b\u304b\u3063\u3066\u5229\u7528\u3067\u304d\u306a\u3044\u3053\u3068\u304c\u591a\u304f\u306a\u3063\u3066\u304d\u307e\u3057\u305f\uff0e\u306a\u306e\u3067\u81ea\u5206\u306eVPS\u4e0a\u306b\u30db\u30b9\u30c8\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\nNote\n\n\n\u540c\u3058\u624b\u9806\u3067 Raspberry Pi OS buster armhf \u3084 Debian sid(nim\u306fDebina\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u3082\u306e\u5229\u7528)\u3067\u3082\u52d5\u4f5c\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\n\nNitter\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u74b0\u5883\u306e\u7528\u610f\n\n\nNitter\u304c\u4f9d\u5b58\u3057\u3066\u3044\u308b Redis \u3068 libsass \u3092\u5c0e\u5165\u3057\u3066\u304a\u304d\u307e\u3059\uff0e\n\n\n\n$ sudo apt install redis-server libsass-dev\n\n\n\nNitter\u3092\u5c02\u7528\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u52d5\u304b\u3057\u305f\u3044\u306e\u3067 nitter \u30e6\u30fc\u30b6\uff0c\u30b0\u30eb\u30fc\u30d7\u3092\u4f5c\u3063\u3066\u305d\u306e\u30e6\u30fc\u30b6\u3067\u64cd\u4f5c\u3057\u307e\u3059\uff0e\n\n\n\n$ sudo groupadd nitter (1)\n$ sudo useradd -m -g nitter nitter (2)\n$ sudo -iu nitter (3)\n\n\n\n\nnitter \u30b0\u30eb\u30fc\u30d7\u3092\u4f5c\u6210\nnitter \u30e6\u30fc\u30b6\u3092\u4f5c\u6210\nnitter \u30e6\u30fc\u30b6\u306e\u30b7\u30a7\u30eb\u3092\u958b\u304f\n\n\n\n\n\nnim\u306e\u7528\u610f\n\n\nNitter\u306fnim-lang\u3067\u51fa\u6765\u3066\u3044\u307e\u3059\uff0eNitter\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u306b\u306fnim 1.2.0\u4ee5\u4e0a\u304c\u5fc5\u8981\u3067\u3059\u304c\uff0cDebian buster\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u7248\u306enim\u306f 0.19.4 \u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u51fa\u6765\u307e\u305b\u3093\uff0ebuster-backports \u3082 1.0.4-1~bpo10+1 \u3068\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\uff0e(bullseye\u306f1.4.2)\n\n\n\n$ nimble build -d:release\n Verifying dependencies for nitter@0.1.0\n Tip: 2 messages have been suppressed, use --verbose to show them.\n Error: Unsatisfied dependency: nim (>= 1.2.0)\n$ dpkg-query -W nim\nnim 0.19.4-1\n\n\n\n\nDebian\u2009\u2014\u2009\u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009nim\n\n\n\n\u3068\u308a\u3042\u3048\u305anim\u306e\u516c\u5f0f\u30b5\u30a4\u30c8\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u5229\u7528\u3057\u3066\u30b3\u30f3\u30d1\u30a4\u30eb\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\uff0e\n\n\n\nNim Programming Language\n\n\nUnix installation – Nim Programming Language\n\n\n\n\n\n\n\n$ wget https://nim-lang.org/download/nim-1.4.2-linux_x64.tar.xz \\\nhttps://nim-lang.org/download/nim-1.4.2-linux_x64.tar.xz.sha256 (1)\n$ sha256sum -c ./nim-1.4.2-linux_x64.tar.xz.sha256 (2)\nnim-1.4.2-linux_x64.tar.xz: OK\n$ tar tvf nim-1.4.2-linux_x64.tar.xz | lv (3)\n$ tar xvf nim-1.4.2-linux_x64.tar.xz (4)\n\n\n\n\nnim\u306e\u30d0\u30a4\u30ca\u30ea\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\nhash\u78ba\u8a8d\n\u30a2\u30fc\u30ab\u30a4\u30d6\u78ba\u8a8d\n\u30a2\u30fc\u30ab\u30a4\u30d6\u5c55\u958b\n\n\n\n\n\nNitter\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\n\n\nNitter\u306esource\u3092clone\u3057\u3066\u3055\u3063\u304d\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u5c55\u958b\u3057\u305fnim\u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u307e\u3059\uff0e\n\n\n\n$ git clone https://github.com/zedeus/nitter\n$ cd nitter\n$ PATH=~/nim-1.4.2/bin:$PATH nimble build -d:release\n$ PATH=~/nim-1.4.2/bin:$PATH nimble scss\n$ mkdir ./tmp\n\n\n\nRedis \u304c\u8d77\u52d5\u3057\u3066\u3044\u308b\u306e\u3092\u78ba\u8a8d\u3057\u3066 nitter \u3092\u8d77\u52d5\u3057\u3066\u307f\u307e\u3059\uff0e\u3053\u306e\u72b6\u614b\u3067 8080 \u30dd\u30fc\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066 Nitter \u304c\u5229\u7528\u3067\u304d\u308b\u306e\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e\u30dd\u30fc\u30c8\u756a\u53f7\u306a\u3069\u306f nitter.conf \u3067\u5909\u66f4\u3067\u304d\u307e\u3059\uff0e\n\n\n\n$ ps -ef|grep -i redis (1)\nredis 11786 1 0 Feb11 ? 00:15:28 /usr/bin/redis-server 127.0.0.1:6379\n$ ./nitter & (2)\n$ w3m http://localhost:8080/ (3)\n$ kill %1 (4)\n$ exit (5)\n\n\n\n\nRedis\u304c\u52d5\u3044\u3066\u3044\u308b\u306e\u3092\u78ba\u8a8d\nNitter\u3092\u8d77\u52d5\nNitter\u306e\u52d5\u4f5c\u3092\u78ba\u8a8d\nNitter\u3092\u7d42\u4e86\nnitter \u30a2\u30ab\u30a6\u30f3\u30c8\u304b\u3089\u629c\u3051\u308b\n\n\n\n\n\nNitter\u306e\u8d77\u52d5\u8a2d\u5b9a\n\n\n\u6b21\u306bNitter\u306b\u8d77\u52d5\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\uff0eSystemd\u74b0\u5883\u306a\u306e\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b5\u30fc\u30d3\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e\n\n\n/etc/systemd/system/nitter.service\n\n[Unit]\nDescription=Nitter (An alternative Twitter front-end)\nAfter=syslog.target\nAfter=network.target\n\n[Service]\nType=simple\n\n# set user and group\nUser=nitter\nGroup=nitter\n\n# configure location\nWorkingDirectory=/home/nitter/nitter\nExecStart=/home/nitter/nitter/nitter\n\nRestart=always\nRestartSec=15\n\n[Install]\nWantedBy=multi-user.target\n\n\n\n\u30b5\u30fc\u30d3\u30b9\u3092\u6709\u52b9\u306b\u3057\u3066Nitter\u3092\u8d77\u52d5\u3057\u307e\u3059\uff0e\n\n\n\n$ sudo systemctl enable --now nitter.service\n$ systemctl status nitter\n\u25cf nitter.service - Nitter (An alternative Twitter front-end)\n Loaded: loaded (/etc/systemd/system/nitter.service; enabled; vendor preset: enabled)\n Active: active (running) since Wed 2021-02-17 01:13:07 JST; 34s ago\n Main PID: 19702 (nitter)\n Tasks: 1 (limit: 4696)\n Memory: 3.6M\n CGroup: /system.slice/nitter.service\n \u2514\u250019702 /home/nitter/nitter/nitter\n$ w3m http://localhost:8080/\n\n\n\n\u5916\u306b\u516c\u958b\u305b\u305a\uff0c\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u4f5c\u3055\u305b\u308b\u5834\u5408\u306f\u3053\u3053\u307e\u3067\u306e\u624b\u9806\u3067OK\u3067\u3059\uff0e\n\n\n\n\n\u30c9\u30e1\u30a4\u30f3\u3068SSL\u8a3c\u660e\u66f8\u306e\u7528\u610f\n\n\n\u203b\u3053\u306e\u624b\u9806\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u304b\u3059\u5834\u5408\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\uff0e\n\n\n\u4eca\u56de\u306f\u30b5\u30d6\u30c9\u30e1\u30a4\u30f3\u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0eDNS\u3092\u8a2d\u5b9a\u3057\u3066 nitter.matoken.org \u3092\u7528\u610f\u3057\u307e\u3057\u305f\uff0e\u8a2d\u5b9a\u30df\u30b9\u3057\u305f\u3068\u304d\u306b\u30ea\u30ab\u30d0\u30ea\u3057\u3084\u3059\u3044\u3088\u3046\u306bTTl\u3092\u77ed\u304f\u8a2d\u5b9a\u3057\u3066\u3046\u307e\u304f\u884c\u3063\u305f\u3089\u3044\u3064\u3082\u306e\u9577\u3055\u306b\u3057\u307e\u3059\uff0e\n\n\n\u8a3c\u660e\u66f8\u306fcertbot\u3092\u4f7f\u3044Let\u2019s encrypt\u3067\u4f5c\u6210\u3057\u307e\u3057\u305f\uff0e\n\n\n\n$ sudo certbot certonly -d nitter.matoken.org\n\n\n\n\n\napache httpd\u306e\u7528\u610f\n\n\n\u203b\u3053\u306e\u624b\u9806\u306f\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u304b\u3059\u5834\u5408\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\uff0e\n\n\nNitter\u3092\u305d\u306e\u307e\u307e\u5916\u306b\u516c\u958b\u3059\u308b\u306e\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u7684\u306b\u826f\u304f\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u3067\uff0capache httpd\u3067httpd\u306e\u51e6\u7406\u3092\u3057\u3066Nitter\u306e8080\u306b\u8ee2\u9001\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u305f\uff0e\n\n\nNitter\u7528\u306eapache httpd\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3059\uff0e\n\n\n/etc/apache2/sites-available/nitter.matoken.org.conf\n\n<VirtualHost *:80>\n ServerName nitter.matoken.org\n Redirect permanent / https://nitter.matoken.org/\n</VirtualHost>\n<IfModule mod_ssl.c>\n<VirtualHost *:443>\n ServerName nitter.matoken.org\n ServerAdmin webmaster@matoken.org\n\n <Proxy *>\n Order deny,allow\n Allow from all\n </Proxy>\n\n ProxyPreserveHost On\n ProxyPass / http://127.0.0.1:8080/ nocanon\n ProxyPassReverse / http://127.0.0.1:8080/\n AllowEncodedSlashes On\n\n ErrorLog ${APACHE_LOG_DIR}/error.nitter.matoken.org.log\n CustomLog ${APACHE_LOG_DIR}/access.nitter.matoken.org.log combined\n\n SSLCertificateFile /etc/letsencrypt/live/nitter.matoken.org/fullchain.pem\n SSLCertificateKeyFile /etc/letsencrypt/live/nitter.matoken.org/privkey.pem\n\n</VirtualHost>\n</IfModule>\n\n\n\n\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3057\u3066\u30c6\u30b9\u30c8\u5f8c\u53cd\u6620\u3057\u307e\u3059\uff0e\n\n\n\n$ sudo a2ensite nitter.matoken.org.conf (1)\n$ sudo apache2ctl configtest (2)\n$ sudo systemctl reload apache2 (3)\n\n\n\n\n\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u6709\u52b9\u306b\u3059\u308b\n\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u30c6\u30b9\u30c8\napache httpd\u306e\u8a2d\u5b9a\u53cd\u6620\n\n\n\n\u3053\u306e\u72b6\u614b\u3067 http://nitter.matoken.org/ \u53ca\u3073 https://nitter.matoken.org/ \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u307f\u3066 Nitter \u304c\u5229\u7528\u3067\u304d\u305f\u3089OK\u3067\u3059\uff0e\n\n\n\u3068\u308a\u3042\u3048\u305a\u4e00\u822c\u516c\u958b\u3057\u3066\u304a\u304d\u307e\u3059\u304c\uff0c\u4eca\u306e https://nitter.net \u307f\u305f\u3044\u306b\u30a2\u30af\u30bb\u30b9\u5236\u9650\u304c\u3057\u3087\u3063\u3061\u3085\u3046\u304b\u304b\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3089\u5236\u9650\u3059\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e\n\n\n\n\n\u74b0\u5883\n\n\n\n$ git -C ~nitter/nitter log -1\ncommit f392b6ca37e66c7c759aa98db23e0bdc62b39c3d (HEAD -> master, origin/master, origin/HEAD)\nAuthor: Lukas Winkler <github@lw1.at>\nDate: Sun Feb 14 12:49:09 2021 +0100\n\n run optipng -o 9 on all images (#337)\n$ dpkg-query -W apache2 redis* libsass-dev certbot\napache2 2.4.38-3+deb10u4\ncertbot 0.31.0-1+deb10u1\nlibsass-dev:amd64 3.5.5-4\nredis-server 5:5.0.3-4+deb10u2\nredis-tools 5:5.0.3-4+deb10u2\n$ lsb_release -dr\nDescription: Debian GNU/Linux 10 (buster)\nRelease: 10\n$ uname -m\nx86_64", "date_published": "2021-02-17T22:34:23+09:00", "date_modified": "2021-02-17T22:34:23+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Nitter", "self-host", "Twitter", "buster", "Debian", "Linux" ] }, { "id": "http://matoken.org/blog/?p=1322", "url": "https://matoken.org/blog/2016/04/08/troubled-bot-of-will-be-locked/", "title": "twitter\u306ebot\u304c\u30ed\u30c3\u30af\u3055\u308c\u3066\u3057\u307e\u3044\u56f0\u308b", "content_html": "
\n

\u6700\u8fd1\u9e7f\u5150\u5cf6\u3089\u3050\u306eML\u306e\u6295\u7a3f\u3092\u3064\u3076\u3084\u304f\u3060\u3051\u306e @kagolug_ml \u3068\u3044\u3046bot\u3092\u52d5\u304b\u3057\u59cb\u3081\u305f\u306e\u3067\u3059\u304c\uff0c\u6570\u4ef6post\u3057\u305f\u5f8c\u6295\u7a3f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff0e\u4e00\u7dd2\u306bLingr\u306b\u3082post\u3057\u3066\u3044\u307e\u3059\u304c\u305d\u3061\u3089\u306f\u6295\u7a3f\u3055\u308c\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

\u624b\u52d5\u3067\u53e9\u3044\u3066\u307f\u308b\u3068\u3053\u306e\u3088\u3046\u306a\u30a8\u30e9\u30fc\u304c\u5e30\u3063\u3066\u304d\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
*** server reports: \"To protect our users from spam and other malicious activity, this account is temporarily locked. Please log in to https://twitter.com to unlock your account.\"\r\ncheck your password or configuration.\r\naccess failure on: https://api.twitter.com/1.1/statuses/home_timeline.json\r\nto automatically wait for a connect, use -hold.
\n
\n
\n
\n

twitter\u306bspam\u30a2\u30ab\u30a6\u30f3\u30c8\u3060\u3068\u7591\u308f\u308c\u3066\u30ed\u30c3\u30af\u3055\u308c\u3057\u307e\u3063\u305f\u3088\u3046\u3067\u3059orz

\n
\n
\n

web\u3092\u898b\u308b\u3068\u3053\u3093\u306a\u753b\u9762\u306b\uff0e

\n
\n
\n

\"25702345904

\n
\n
\n

\u30a2\u30f3\u30ed\u30c3\u30af\u306b\u306fSMS\u8a8d\u8a3c\u304c\u5fc5\u8981\u3067\u3057\u305f\uff0e

\n
\n
\n

\"26281259996

\n
\n
\n

\u8a8d\u8a3c\u5f8c\u96fb\u8a71\u756a\u53f7\u304c\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u767b\u9332\u3055\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u304c\uff0c\u524a\u9664\u306f\u53ef\u80fd\u3067\u3057\u305f\uff0e

\n
\n
\n

\"26281260076

\n
\n
\n

\u3057\u304b\u3057\u672a\u3060\u6570\u4ef6\u3057\u305f\u6295\u7a3f\u3057\u3066\u3044\u306a\u3044\u3057\u6295\u7a3f\u9593\u9694\u3082\u5341\u5206\u958b\u3044\u3066\u3044\u305f\u306e\u3067\u554f\u984c\u7121\u3044\u3068\u601d\u3046\u306e\u3067\u3059\u304c\u30d5\u30a9\u30ed\u30ef\u30fc\u304c\u5c11\u306a\u3044\u306e\u304c\u3044\u3051\u306a\u3044\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306d\u2026\u2026\uff0e

\n
\n\n

\n", "content_text": "\u6700\u8fd1\u9e7f\u5150\u5cf6\u3089\u3050\u306eML\u306e\u6295\u7a3f\u3092\u3064\u3076\u3084\u304f\u3060\u3051\u306e @kagolug_ml \u3068\u3044\u3046bot\u3092\u52d5\u304b\u3057\u59cb\u3081\u305f\u306e\u3067\u3059\u304c\uff0c\u6570\u4ef6post\u3057\u305f\u5f8c\u6295\u7a3f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff0e\u4e00\u7dd2\u306bLingr\u306b\u3082post\u3057\u3066\u3044\u307e\u3059\u304c\u305d\u3061\u3089\u306f\u6295\u7a3f\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\n\n\n\u624b\u52d5\u3067\u53e9\u3044\u3066\u307f\u308b\u3068\u3053\u306e\u3088\u3046\u306a\u30a8\u30e9\u30fc\u304c\u5e30\u3063\u3066\u304d\u307e\u3057\u305f\uff0e\n\n\n\n*** server reports: \"To protect our users from spam and other malicious activity, this account is temporarily locked. Please log in to https://twitter.com to unlock your account.\"\r\ncheck your password or configuration.\r\naccess failure on: https://api.twitter.com/1.1/statuses/home_timeline.json\r\nto automatically wait for a connect, use -hold.\n\n\n\ntwitter\u306bspam\u30a2\u30ab\u30a6\u30f3\u30c8\u3060\u3068\u7591\u308f\u308c\u3066\u30ed\u30c3\u30af\u3055\u308c\u3057\u307e\u3063\u305f\u3088\u3046\u3067\u3059orz\n\n\nweb\u3092\u898b\u308b\u3068\u3053\u3093\u306a\u753b\u9762\u306b\uff0e\n\n\n\n\n\n\u30a2\u30f3\u30ed\u30c3\u30af\u306b\u306fSMS\u8a8d\u8a3c\u304c\u5fc5\u8981\u3067\u3057\u305f\uff0e\n\n\n\n\n\n\u8a8d\u8a3c\u5f8c\u96fb\u8a71\u756a\u53f7\u304c\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u767b\u9332\u3055\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u304c\uff0c\u524a\u9664\u306f\u53ef\u80fd\u3067\u3057\u305f\uff0e\n\n\n\n\n\n\u3057\u304b\u3057\u672a\u3060\u6570\u4ef6\u3057\u305f\u6295\u7a3f\u3057\u3066\u3044\u306a\u3044\u3057\u6295\u7a3f\u9593\u9694\u3082\u5341\u5206\u958b\u3044\u3066\u3044\u305f\u306e\u3067\u554f\u984c\u7121\u3044\u3068\u601d\u3046\u306e\u3067\u3059\u304c\u30d5\u30a9\u30ed\u30ef\u30fc\u304c\u5c11\u306a\u3044\u306e\u304c\u3044\u3051\u306a\u3044\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306d\u2026\u2026\uff0e", "date_published": "2016-04-08T22:26:31+09:00", "date_modified": "2016-04-08T22:26:31+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "bot", "Twitter", "\u672a\u5206\u985e" ] }, { "id": "http://matoken.org/blog/?p=724", "url": "https://matoken.org/blog/2015/02/07/terminal_twitter_client_rainbowstream/", "title": "\u7aef\u672b\u3067\u52d5\u304fTwitterClient Rainbowstream", "content_html": "
\n

\u78ba\u304bOSSJ\u3067\u898b\u304b\u3051\u3066\u77e5\u3063\u305f\u306e\u3060\u3068\u601d\u3046\u306e\u3067\u3059\u304c\uff0c

\n\n

\u7aef\u672b\u4e0a\u3067\u52d5\u4f5c\u3059\u308bTwitter\u306eRainbowstream\u3068\u3044\u3046\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u77e5\u308a\u307e\u3057\u305f\uff0e

\n\n

\u30e6\u30fc\u30b6\u30fc\u30b9\u30c8\u30ea\u30fc\u30e0\u5bfe\u5fdc\u3067\u7aef\u672b\u4e0a\u306b\u30e6\u30fc\u30b6\u30b9\u30c8\u30ea\u30fc\u30e0\u3084\u691c\u7d22\u7d50\u679c\u30ea\u30b9\u30c8\u306a\u3069\u304c\u8868\u793a\u3067\u304d\u307e\u3059\uff0e\u753b\u50cf\u3092\u30a2\u30b9\u30ad\u30fc\u30a2\u30fc\u30c8\u3067\u8868\u793a\u3059\u308b\u6a5f\u80fd\u3082\u3042\u308a\u307e\u3059\uff0e

\n

\u5c0e\u5165

\n

pip\u3067\u5165\u308b

\n
$ sudo apt-get install python-pip python-dev\r\n$ sudo pip install rainbowstream PySocks Pillow\r\n
\n

\u521d\u56de\u8d77\u52d5\u6642\u306b\u8a8d\u8a3c\u306e\u305f\u3081\u30d6\u30e9\u30a6\u30b6\u304c\u8d77\u52d5\u3059\u308b\uff0e\u8a8d\u8a3c\u3054\u8868\u793a\u3055\u308c\u305fpin\u3092\u7aef\u672b\u306b\u8cbc\u308a\u4ed8\u3051\u308b\uff0e\u8a8d\u8a3c\u60c5\u5831\u306f ~/.rainbow_oauth \u306b\u4fdd\u5b58\u3055\u308c\u308b\u306e\u3067\u8981\u3089\u306a\u304f\u306a\u3063\u305f\u3089\u6d88\u3059\uff0e
\u7121\u304f\u3066\u3082\u52d5\u304f\u3051\u3069\u7121\u3044\u3068\u8a2d\u5b9a\u5909\u66f4\u304c\u51fa\u6765\u306a\u3044\u306e\u3067\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u7528\u610f\u3092\u3059\u308b\uff0e

\n
% wget https://raw.githubusercontent.com/DTVD/rainbowstream/master/rainbowstream/colorset/config -O /tmp/config\r\n% mv /tmp/config ~/.rainbow_config.json\r\n
\n

GNU Screen \u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u5206\u5272\u30e2\u30fc\u30c9\u3060\u3068\u5d29\u308c\u3066\u3057\u307e\u3046\u306e\u3067\uff0c\u5c0f\u3055\u3081\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a\u3059\u308b\u3068\u3044\u3044\u611f\u3058\u3067\u3059\uff0e\u4ee5\u4e0b\u306e\u753b\u50cf\u306fawesome \u3067\u7aef\u672b\u30922\u3064\u8868\u793a\u3057\u3066Rainbowstream\u3092\u5b9f\u884c\u3057\u305f\u7aef\u672b\u3092\u5c0f\u3055\u304f\u3057\u3066\u3044\u308b\u3068\u3053\u308d\u3067\u3059\uff0e
\"20150202_07:02:05-608\"

\n

\u753b\u50cf\u306e\u30a2\u30b9\u30ad\u30fc\u30a2\u30fc\u30c8\u8868\u793a\u306f\u697d\u3057\u3044\u306e\u3067\u3059\u304c\uff0c\u4e00\u6c17\u306b\u30ed\u30b0\u304c\u6d41\u308c\u3066\u3057\u307e\u3046\u306e\u3067off\u306b\u3057\u3061\u3083\u3044\u307e\u3057\u305f\uff0e
\u81ea\u4f5c\u306ePerl Script \u3067\u6614\u4f5c\u3063\u305f\u3082\u306e\u304c\u3042\u308b\u306e\u3067\u3059\u304c\uff0cRainbowstream\u306e\u307b\u3046\u304c\u30ab\u30e9\u30d5\u30eb\u3067\u898b\u305f\u76ee\u304c\u3044\u3044\u611f\u3058\u3067\u3059\uff0e

\n

\n", "content_text": "\u78ba\u304bOSSJ\u3067\u898b\u304b\u3051\u3066\u77e5\u3063\u305f\u306e\u3060\u3068\u601d\u3046\u306e\u3067\u3059\u304c\uff0c\n\nOSS Japan – OSS\u958b\u767a\u8005\u304c\u3064\u304f\u308bOSS\u30e6\u30fc\u30b6\u30fc\u306e\u305f\u3081\u306eOSS\u7dcf\u5408\u60c5\u5831\u30b5\u30a4\u30c8\n\n\u7aef\u672b\u4e0a\u3067\u52d5\u4f5c\u3059\u308bTwitter\u306eRainbowstream\u3068\u3044\u3046\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u77e5\u308a\u307e\u3057\u305f\uff0e\n\nRainbowstream\nDTVD/rainbowstream\n\n\u30e6\u30fc\u30b6\u30fc\u30b9\u30c8\u30ea\u30fc\u30e0\u5bfe\u5fdc\u3067\u7aef\u672b\u4e0a\u306b\u30e6\u30fc\u30b6\u30b9\u30c8\u30ea\u30fc\u30e0\u3084\u691c\u7d22\u7d50\u679c\u30ea\u30b9\u30c8\u306a\u3069\u304c\u8868\u793a\u3067\u304d\u307e\u3059\uff0e\u753b\u50cf\u3092\u30a2\u30b9\u30ad\u30fc\u30a2\u30fc\u30c8\u3067\u8868\u793a\u3059\u308b\u6a5f\u80fd\u3082\u3042\u308a\u307e\u3059\uff0e\n\u5c0e\u5165\npip\u3067\u5165\u308b\n$ sudo apt-get install python-pip python-dev\r\n$ sudo pip install rainbowstream PySocks Pillow\r\n\n\u521d\u56de\u8d77\u52d5\u6642\u306b\u8a8d\u8a3c\u306e\u305f\u3081\u30d6\u30e9\u30a6\u30b6\u304c\u8d77\u52d5\u3059\u308b\uff0e\u8a8d\u8a3c\u3054\u8868\u793a\u3055\u308c\u305fpin\u3092\u7aef\u672b\u306b\u8cbc\u308a\u4ed8\u3051\u308b\uff0e\u8a8d\u8a3c\u60c5\u5831\u306f ~/.rainbow_oauth \u306b\u4fdd\u5b58\u3055\u308c\u308b\u306e\u3067\u8981\u3089\u306a\u304f\u306a\u3063\u305f\u3089\u6d88\u3059\uff0e\u7121\u304f\u3066\u3082\u52d5\u304f\u3051\u3069\u7121\u3044\u3068\u8a2d\u5b9a\u5909\u66f4\u304c\u51fa\u6765\u306a\u3044\u306e\u3067\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u7528\u610f\u3092\u3059\u308b\uff0e\n% wget https://raw.githubusercontent.com/DTVD/rainbowstream/master/rainbowstream/colorset/config -O /tmp/config\r\n% mv /tmp/config ~/.rainbow_config.json\r\n\nGNU Screen \u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u5206\u5272\u30e2\u30fc\u30c9\u3060\u3068\u5d29\u308c\u3066\u3057\u307e\u3046\u306e\u3067\uff0c\u5c0f\u3055\u3081\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8868\u793a\u3059\u308b\u3068\u3044\u3044\u611f\u3058\u3067\u3059\uff0e\u4ee5\u4e0b\u306e\u753b\u50cf\u306fawesome \u3067\u7aef\u672b\u30922\u3064\u8868\u793a\u3057\u3066Rainbowstream\u3092\u5b9f\u884c\u3057\u305f\u7aef\u672b\u3092\u5c0f\u3055\u304f\u3057\u3066\u3044\u308b\u3068\u3053\u308d\u3067\u3059\uff0e\n\u753b\u50cf\u306e\u30a2\u30b9\u30ad\u30fc\u30a2\u30fc\u30c8\u8868\u793a\u306f\u697d\u3057\u3044\u306e\u3067\u3059\u304c\uff0c\u4e00\u6c17\u306b\u30ed\u30b0\u304c\u6d41\u308c\u3066\u3057\u307e\u3046\u306e\u3067off\u306b\u3057\u3061\u3083\u3044\u307e\u3057\u305f\uff0e\u81ea\u4f5c\u306ePerl Script \u3067\u6614\u4f5c\u3063\u305f\u3082\u306e\u304c\u3042\u308b\u306e\u3067\u3059\u304c\uff0cRainbowstream\u306e\u307b\u3046\u304c\u30ab\u30e9\u30d5\u30eb\u3067\u898b\u305f\u76ee\u304c\u3044\u3044\u611f\u3058\u3067\u3059\uff0e", "date_published": "2015-02-07T08:30:35+09:00", "date_modified": "2015-02-08T21:28:07+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Debian", "Jessie", "Linux", "Python", "Twitter" ] } ] }