はてなキーワード: アンカーとは
小学生の時、5年と6年が出場する郡の陸上大会の校内選考会があって、俺はマラソンも短距離も遅くソフトボール投げもできない陰のものだったから諦めてた。
そんで種目一覧を見たら走り高跳びってあって、今までやったこともなかったから家帰って買ってもらったばかりのパソコンで調べた。色々調べた結果「ベリーロールならいけるんじゃないか」と思って、イメトレして夜に町の体育館借りて親と練習したんだよ。
そんで走り高跳びなんて運動神経抜群の人たちも小学校じゃ経験ないし、ハサミ跳びしか見本見してくれなかったからみんなあんまり跳べなかった。俺は練習のおかげで100cmを跳べた。
そのおかげで「運動できるやつ」の勲章として見られている「郡大会出場者のゼッケン」を貰うことができた。肝心の本番じゃ入賞できなかったけどマラソンや短距離やリレーアンカーとして活躍する人らと一緒にそのゼッケン着て集合写真撮っただけで冴えない女の子たちからは好かれるようになって嬉しかったぜ。
そんで、パレードでは女子で作った即席のカラーガード隊が小さな旗持って踊り、6年生の男子7、8人で作ったカラーガード隊がでかい旗持ってそれを回したらしながら先頭を歩くわけ。
俺は小さい頃からそれに憧れたから、募集があった時にすぐ手を挙げたわけ。陰キャだったけど勇気を出してね。
そんで周り見たら、俺と同じような陰キャが数人手を挙げてた。人数的にはちょうどぴったりくらい。
そしたら学年主任が苦笑いして「もっと他にやりたい奴はいないのか?毎年カラーガードはすごい人気なんだぞ!」と繰り返すわけ。
人数的にはぴったりで、他に誰も手を挙げないのに教師たちは一向に決定しようとしない。
ついに痺れを切らした教師が「〇〇!お前も立候補な!〇〇!お前もだ!」とか言って、次々と地元サッカークラブで活躍してたり毎年リレーのアンカーに選ばれるようなイケメン陽キャ集団を指名するわけ。
そいつらは「えー!いやだ!面倒くさい!やりたくない!」って嫌がるんだけど、教師は「お前ら立候補決定!」とか言うわけ。
そんで立候補者が決まると「よし!じゃあカラーガード隊は…〇〇!〇〇!〇〇!…」とか言って、自分が強制的に立候補させた奴らをカラーガードのメンバーに選んで行った。
俺含め当初立候補してた奴らは誰も選ばれなかった。
そんで運動会当日、マーチングのカラーガード隊はやっぱりかっこよかった。家に帰った後に母親から「あれ私の時もあったんだよ!かっこよかったね!あんたもやればよかったのに!」と言われた。
泣いた。
グロ画像を織り交ぜつつアンカーつきが多く混じる1行レスをランダムに書き込むスクリプトなー
あれ、書き込む文章は自動生成ではなくどこかのスレから適当に引っ張ってきているんだと思ってたけど違うのか
1行の書き込みだけを抽出するから微妙に意味が通りそうにも読めるのが面白いと思ってた
ただ現在の番号より先の番号へレスしてしまうので、それでスクリプトとバレる。あれもわざとだったんだろうか
しかし今はtalk強制移住騒動でそれどころではない。残った5chのスレたちもスクリプトで荒らされたところで、わざわざWebブラウザから5chに書き込む人はほとんどいないだろう
未来人を自称する人が、2chが5chになることを誰一人語らなかったことで朝とバレたように、talkになることも知らない未来人がいない時点でタイムマシンが現在に来ることはないとわかってしまうのだった
・アンカーV4
AGE好き。世間評価と一番乖離してると思っているがだいぶ好き。AGEの象徴はコイツだから。
・ブルーディスティニー1号機
GジェネF遊んだときに一目惚れして以来好きなんだけど原作遊ばずに小説と漫画しか知らないのいい加減どうにかしないとなあ。
・ダギ・イルス
キンケドゥが「アンナマリーさんから預かってたものだ」とザビーネに何かを渡すも、マジでザビーネは覚えてないって言う妄想して泣いちゃう。あんな男に気持ちを向けるのが間違いだったと思うな。
・ザクII改
俺の好きの原点かもしれん。
武力による戦争根絶、それこそがソレスタルビーイング、ガンダムがそれをなす、俺と共に、そうだ、俺が、俺達が、ガンダムだ! のところの刹那が好きすぎて泣くんだけど、そのままシーズン2を見直すと、その象徴たるエクシアがこんなになるまで戦い続けることにまた泣いちゃうんだなあ。
地球寮VSグラスレー回の一連のシーケンス大好きで、どこ切り取っても好きなんだけど、まあやっぱこの機体のとこかなあ。
ミオリネの作戦勝ちってとこ込みだから、チュチュ先輩どうのはあんまりない。
・ギラ・ドーガ[C]
ビルドファイターズトライのこと好きじゃないし、この回のことも大好きなクロスボーンガンダムの扱いがアレでぐぬぬってなるんだけど、実はこの時の二人は鋼鉄の七人が木星へ侵攻する時に一瞬だけ立ち寄った小惑星で暮らすネオジオン残党兵達の生まれ変わりという二次創作を書いて心を落ち着かせたので。
アストレイのどれが好きかは割と気分によるんだけど、今日はロウが「王道でない」という言葉を語るXアストレイが大好きな気分。
全くいっさい触れたことのないスポーツで、始めようと思ったきっかけはもはや覚えていない。
タイトル回収だけど、マジで部内で1番ド下手クソだが楽しかったしアーチェリーが好きだった。覚えているあるあるネタを記すのでアーチェリーをやりたいと思う人たち、やってきた人たちに届いてほしい。ちなみにコンパウンドじゃなくてリカーブね。
◯高い
弓具はいちいちなんでも高い。
リム、タブ、ノック、ベイン、弦、その他諸々一式揃えるのに30万は見てほしい。
矢一本で3000円とか平気でする。貴族の遊びなんだな、貧乏学生には向かないスポーツだなと感じた覚えがある。
自分は普段下手クソな癖に、なんでもない練習の時にやけにグルーピング(※1)し継ぎ矢(※2)するので、矢にかける金半端なかった。矢がないと練習にもならないしね。最低6本ないと点取り(※3)もできないしね。
(※1…矢が同じところに集まること)
(※2…すでに矢が刺さってるところに矢が刺さること。矢が大破されて最悪なことになる)
(※3…アーチェリーのSHでは、50m地点からと30m地点から36本ずつ的に射ち、当たった合計点数を競う。一気に36本は打てないので、各回6本ずつ射つのを繰り返す。)
射つための環境を整えるのが大変。我らは写真立てみたいな三脚?に畳を乗せて的を貼って練習していた。畳を運ぶのが大変。(常時射てる環境になってる学校もある)うちの場合、いちいち準備しないと練習できなかったし、練習が終わるたび片付けるので、設置して片付けて設置しての繰り返し。
大会や試合は夏でも冬でも強風でも大雨でも平気で開催される。延期になるのは的を貼る畳がひっくり返るくらいの強風や、雷が落ちる恐れがある時くらい。
◯筋力が大事
弓は重い。
メチャクチャ重い。
弓を引いた重さをポンドって単位で測るんだけど、そもそも弓の本体も重い。
何もしてない成人男性が引けて20ポンドと聞いたことがある。大学男子は大抵36〜42くらいを弾いてたかな。
今思うと自分は圧倒的に筋力が足りず低ポンドの弓を引いていた。当たり前だが低ポンドから繰り出される矢は、風や雨、少しの射形の乱れに方向を大いに左右される。外的要因に弱い。
ある程度高いポンドならもう少し当たってたんかな。筋トレサボっちゃいけないな。
◯場所取りすぎ
弓一個出来上がると部屋めちゃ狭くなる。スタビライザー長い。狭い通路から移動するときとか神経を擦り減らす。
◯顔不細工になる
アーチェリーは狙いを定めて打つために、弦を顔に固定するのが一般的な手法(アンカーと言う)。多くの人は鼻から唇に押し付けて、固定させる。
上手い人は力入らないから、ちょっと押し付けるくらいで済むけど、
人によってはめちゃくちゃ押し付けて鼻や唇が潰れる感じになったりする。
射形によっては好きな奴の前で射つの恥ずい。
◯同じ動きを72回繰り返せばいいだけ
アーチェリーで大切なのは再現性と言われていて、正直どんな射ち方でもいい。どんなやり方でもいいから的の真ん中に当てて点が取れる奴の勝ち。同じ射ち方さえ守れば矢は同じところに飛ぶので、”自分との闘い”感が強いスポーツだと思う。
自分は見かけは綺麗な射形とよく言われていたが再現性に欠けていたので、点が取れなかった。ダサい。恥ずい。
ボーリングやダーツが上手い人はアーチェリーも上手いらしいよ。
◯実際射てるようになるまでが長い
まず弓を持って弦を引く動きを単純計算で72回出来ないと話にならないため、始めたての頃は筋トレしまくる。射ち方の流れを覚えるために、素引きと言って矢をつがえずに、一連の弓の引き方を体に刻んでいく。
矢を射った次の瞬間、弓がクルッと手元で回るのを見たことはあるだろうか。上手く説明できるか挑戦するが、弦を引いて離すと、その反動で弓が飛び出る。弦を引いて離した力をそのまま矢に伝えるには、自然に弓を飛び出させる必要がある。飛び出たまんまにすると地面に弓が落ちちゃうので、ボウストリングと言う紐で手に繋ぐ。で、紐はなんでもいいので、好きなデザインの靴紐で代用する学生が多かった。
◯音が好き
矢を放つ瞬間の弦の音がイイ。
クリッカーが落ちる音がイイ。
リム装着した時鳴る音がイイ。
矢の羽が擦れる時の音がイイ。
ずっっっと引いてないので、もう一度始めるならまた筋トレからになるな。
専門用語が多くてそれとなく用語を口にするだけでカッコ良いよね。
◯親ほんとにありがとう
学生の頃を思い出すたび、高いお金を立て替えてくれた親には感謝しかなく、活躍できなかったことを申し訳なく思う。
でも一生続けられるスポーツだとも思う。こんなスポーツを始められたのは親のおかげ。お金返すからね。
みんなもlet's!archery!
※引く の漢字が 弾くになってた。奏でてた。すまん。
俺は違うのでこうやってる
まず食事だが、俺は「味」「満足感」を優先する
というのは、低カロリー高タンパクの食生活はあまり美味しくなく、続かないからだ
ある程度は気にするが、普通に鳥もも肉を食べるし、お菓子も少しは食べるし、パンもご飯も食べる
そうしないと長期的に続かないからだ
パルスイートなどの甘味料も試したが、満足感が得られないので普通の砂糖を使っている
次は筋トレ
自分はムキムキになるつもりはなく、時間もお金もかけたくないので自重トレーニングにしている
自重でも工夫すればそれなりに筋肉が付くし、自分としては問題ない
3日に1回、9種の自重の筋トレをしている。これくらいが気持ち的も楽しくやれる
15センチの高さの踏み台昇降を3000円程度で買って、アマプラ見ながら30分やってる
筋トレしない日にやってるから週4〜5日くらい。疲れてる日はやらない。
スマートウォッチを見るとこれで250kcal消費しているから、これくらいで十分
結果どうなったか?
腹筋は少し割れている
体重はアンカーの体重計でスマホにデータが保存されてるから見やすい
まあこんな感じで気楽にやっている
凡人は凡人なりのやり方があると思っている
ボクサーを撲殺したのは僕さ
これから満で数つけるわ
ナンを何枚も食べるのなんて、なんでもないよ
新患の新幹線に関する新刊に新館を立てて震撼し信管が作動する。
ケニアに行ったら生贄や
柑橘類の香りに歓喜し、換気を喚起したが乾季が訪れたので、寒気がした。
塗装を落とそうか。
観光客がフイルムに感光させた写真を刊行することが慣行になった。
サボってサボタージュ
景気が良くなりケーキを食べる契機を伺う徳川慶喜(とくがわけいき)
夫を成敗するオットセイ
つまらない妻の話
竹の丈は高ぇなー
餅を用いて持ち上げる
ロストしたローストビーフ
サボテンの植え替えサボってんな
過度な稼働は可動範囲を狭める
伯爵が博士の拍手に拍車をかけて迫真の爆死をし白寿の白人を白紙にもどす。
紅葉を見て高揚する
甲子園で講師をする公私混同した孔子の実力行使には格子窓も耐えられない。
死んでんのか?「心電図を取ってみよう!」
夜祭で野菜を食べる。
信玄餅を食べながら震源を特定するように進言する新元素を発見した人。
蜂の巣(honeycomb)を見てはにかむ
五反田で地団駄を踏む
ようやく要約が終わった
海溝で邂逅
豪華な業
甲板で甲板をかじる
甲板で乾パンをかじる
店頭で転倒
大枚をはたいてタイ米を買う
醤油をかける人「えっっ?」
神田でした噛んだ
少食な小職
牛の胆嚢の味を堪能する
あの娘にはどう告っても(どうこくっても)慟哭する結果に終わるだろう。
キーンという高音の起因が掴めない。
こんな誤謬は秒でわかるだろ
壊疽した箇所が治るというのは絵空事だ
経口補酔液
痴的好奇心
セントーサ島に行くのは正恩が先頭さ
軽微な警備
冬眠する島民
ベットは別途用意してください
The deserted desert in desert desert.
九尾のキュービズム
罹災者へのリサイタル
画家の画架
不納が富農になるのは不能だ
理工がRICOHに利口な履行
I sensed tha it is in a sense sense.
私はそれをある面では扇子だと感じた。
鯖を食べている人と、それを見ている人の会話
鯖 ça va?
ça va 鯖
ça va
ゆめゆめゆめをみるわけにはいけない
早漏で候
凪に難儀
東上線に搭乗した東條が登場
高校を後攻で煌々と口腔で孝行
蝉が転んでセミコロン
道徳をどう説く
写真はフォトんど撮りません
ダリ「絵ぇかくのだりぃなあ」
華美な花瓶のカビに過敏に反応
檻に入っておりいった話をする
夏のおサマー
夜は寝ナイト
渦中のカチューム
渦中のカチューシャ
リスボンでリスがborn
どうないはどないなってんねん
苫小牧でてんてこ舞い
市内を復旧しないと
石狩の石を借りる
おが置いてあるのを見た人「おはおっかねぇーから置かねぇ方がいいぞ」
砂がどしゃーw
東上線に登場した東條が登場
飽きない商い
おなか吹田市
観劇で感激する
側転に挑戦し即、転倒
別件を瞥見
凹地のお家
魚を初めてみた人「うぉー」
カラヤンの頭の空やーんw
豚をぶった仏陀
只見線をタダ見w
菊名でそんなこと聞くなよ
五秒で死んで御廟に埋葬
がらんとした伽藍
有給を使いすぎて悠久の時が流れた
長谷に想いを馳せる
Thinkerの真価
不具の河豚
暗記のanxious
半世紀にわたる半生での藩政を反省
タンチョウが単調増加
ショック死内親王w
カルカッタの石軽かった
天皇のこと知ってんのー
蒋介石を紹介した商会を照会した商會の船で哨戒する
其方のソナタ
先王に洗脳される
防潮堤で膨張した傍聴人
砂漠で鯖食う鯖を裁く
筒に入った膵島
サイコロを使った心理テスト(psychological test)
カラシニコフが辛子個踏んだ
皇帝の高弟が公邸の校庭の高低差を肯定する工程に拘泥した記録を校訂
にようかで酔うか?
うるさい人が売るサイ
どんなもんだい、を、どんなムンバイ、と言い間違える人
透徹した饕餮の眼球
チャカで茶菓を破壊
slimyなすり身
ゆうほど広くない遊歩道
いにしえのイニシエーション
コーランをご高覧ください
K殻の傾角を測定する計画
協賛した共産党員に強酸をかける
負けたのは聖者の静寂のせいじゃ
裏地見るウラジミール
カミオカンデの上に紙置かんでw
県大会がおわり倦怠感を感じる
夕暮れのユーグレナ
ストライキをする公務員に呼びかける人「 Stay calm(公務)」
エド・はるみの穢
祭壇を裁断
腐卵ダースの犬
全然人が集まらないクラブの人「参加数人は我々の十八番ですから。だけに。」
四苦fuck
都バスが人を跳ね飛ばす
怒るカロテン「なにカロテンねん」
嫌がる慰安婦「いやんっ」
かえるがえる帰る蛙
沈厳な青梗菜
トリコロールの虜
布陣を組む夫人
栗けっとばすクリケット🦗
婉容と遠洋漁業
アマルガムで余るガム
ハラスメントの疑いを晴らす
滋賀を書けない人を歯牙にも掛けない
他意はないタイ人の鯛の態度
鯛が蛇足
ダジャレではない↑
割と面白い
ハラッパーの原っぱ
紫に関して思案を巡らす
Huluが夏の風物詩だと思っている人「Huluですなぁ」(風流)
下調べのムニエル
わからないので
意味ない諱
よく分からんリポーター「うわぁ〜美味しそうですね!少なくとも不味そうには全く見えません!」
どうしても下がりたくない人「黄色い線の内側は、境界を含みますか??」
計算ができない人
着ていく服を決めた高橋是清「これ着よ」
enough、enoughは工夫がenough
負け負け山(カチカチ山)
薬師丸せま子
トーマス・マンの書いたふるさと「うさぎ〜おーいし、魔の山〜♫」
その心は
焼結が猖獗を極める
これはstaleだから捨てるか
衒学的な弦楽を減額
完全な勧善懲悪
イボ人の疣痔
イブに慰撫
(訳 ぬるぬるしてるありふれた魚)
盲いるのに飯いるの?
アーヘンで阿片を吸った人「あー変」
毒吐く独白
明借りるアスカリ(車)
丁寧な砂浜「Could you九里浜」
ゴーンと奉公
その心は
サンクチュアリに山窟あり
熟れたウレタンは売れたんか?
清澄な声調を静聴し成長
プエルトリコで増える虜
象さんを増産
兄弟が今die
Dose heで始まる疑問文に答える京都人、Yea, he どす
ソフィカルのソロカル
美人局に筒持たせる
十把一絡あげ
篤信な特進が涜神を得心
これは何という植物かな?ムユウジュでは?あそっか、なるほど。
クートゥを食うとぅいいよ
マイソールで昧爽に埋葬
ドクサは毒さ
暗殺で朝死んだ
クラシックについて語る人をそしる人「弦楽なんてペダンチックだなあ」
凛々しいリリシズム
衛生的な俳人
御髪も亂とはオクシモロンだ
コロナ後の世界を分析する学問→postcoronialism
影響が色濃いイロコイ諸族
あてのあてないアテナイ
自動で安価をつけて返信するプログラムでもこんなに長く複雑になる(一部抜粋)
/**************************************
以下のCSV_DIR, FILE_PATHS, SETTINGSを書き換えてね。 <h3>o- *************************************/</h3>
//CSVファイルが置かれてるディレクトリのパス。投稿前にエラー出たら大体ここの設定ミス。 例:"C:\\Users\\sakuraimasahiro\\Documents\\iMacros\\Macros\\rentou\\";
'C:\\Users\\USER\\Desktop\\iMacros\\Macros\\rentou\\';
//ファイルのパス。CSVは絶対パスで、拡張子も必要。iimは相対パスでよく、拡張子不要。
const FILE_PATHS = {
textCsv: CSV_DIR + 'textNoAnker.csv',
//レス用投稿文が書かれたCSV。通常とレス用で分けないなら同じファイルを使えばいい。
replyTextCsv: CSV_DIR + 'textReply.csv',
};
baseWaitTime: 5,
//baseWaitTime+0~waitTimeRange(ランダム)だけ待つ
waitTimeRange: 5,
//連投しすぎだと忠告された場合に処理を一時停止させる時間(秒)
waitTimeForAvoidingPunishment: 60 * 30,
//メール
mail: 'sage',
//名前設定
name: '',
//以下、偽装ワッチョイ設定。浪人でワッチョイを非表示にしてるときだけtrueにしてね。
//妙なニックネーム(ワッチョイ、アウアウウーなど)をランダムで決めて付加するかどうか。true=付加する。false=付加しない。
//妙なニックネームの後に付く8桁の文字列をランダムで決めて付加するかどうか。
},
//アンカー無し投稿をするならtrue。しないならfalse。noAnkerPostかreplyPostのどちらかはtrueにすること(両方trueでもOK)。
//アンカー付き投稿(返信)をするならtrue。しないならfalse。もしnoAnkerPostとreplyPostの両方がtrueの場合、投稿は返信が優先され、返信対象が見つからなくなったらアンカー無し投稿をする。
//最初に取得するアンカー無し投稿文CSVファイルの行番号。もし返信用と同じCSVファイルを使うなら-1と入力。
noAnkerPostTextCsvStartRow: 1,
//最初に取得する返信用投稿文CSVファイルの行番号。もしアンカー無しと同じCSVファイルを使うなら-1と入力。
//テキストCSV/返信用テキストCSVの取得行が最終行に達したら最初の行まで戻るかどうか。true=戻る。false=マクロ終了。
//返信する場合、これより小さなレス番には返信しない。返信を投稿すると、この数値は前回の返信先のレス番に更新される。
minAnker: 895,
//返信する場合、名前に以下の文字列を含む投稿にアンカーをつけて返信する(ワッチョイやIPなど名前フィールドにあるものならなんでも可)。配列で複数指定可能。指定無しなら空配列([])。filterNamesとfilterNamesNotIncluded共に無指定ならレス番1から順に返信していく(minAnkerが設定されてればそこから順に)。以下のfilter系は全て併用可能。
//↑とは逆に、名前に以下の文字列を含まない投稿にアンカーをつけて返信する。↑と併用も可能。
//返信する場合、本文に以下の文字列を含む投稿にアンカーをつけて返信する。
filterText: ['自演かな', '自演わらわら', 'スクリプト使うの', '安価ガバ', '>>660', '自演で擁護', '最後' ,'あいうえお', 'かきくけこ', 'さしすせそ', 'なにぬねの', 'はひふへほ', 'まみむめも', 'やいゆえよ', 'やゆよ', 'らりるれろ', 'わいうえを', 'わをん', 'わいうえをん'],
},
//自分のIPアドレスの確認。VPNとかでIPを変更してマクロを動かしてるとき、突然VPNが作動しなくなってIPが元に戻ったときにマクロを止めるためのもの。
//以下の文字列が自分の現在のIPアドレスに含まれている場合、マクロを一時停止する。基本的に自分の本当のIPアドレスを入力。
},
//浪人設定。最後に動作を確認したのは5年くらい前で、今も同じように動作するかは、浪人を持ってないから確認できずわからない。
//浪人にログインしてるかどうかをチェックするかどうか。trueならする。falseならしない。trueにしていてもし浪人にログインしていないことを確認したらログインしにいく。
password: '1234',
},
};
/**************************************
設定箇所終わり。
https://info.5ch.net/index.php/%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E6%97%A9%E8%A6%8B%E8%A1%A8 <h3>o- *************************************/</h3>
/**************************************
・NULL演算子(??)は使えない。論理積(&&)は使える。
・オブジェクトの分割代入はできない。
・importはできない。 <h3>o- *************************************/</h3>
/**************************************
関数 <h3>o- *************************************/</h3>
/**
* ここから始まる。
*/
checkSettings();
var _TextCsvCursors = new TextCsvCursors(
SETTINGS.postSettings.noAnkerPostTextCsvStartRow > 0
? SETTINGS.postSettings.noAnkerPostTextCsvStartRow - 1
: SETTINGS.postSettings.noAnkerPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
SETTINGS.postSettings.replyPostTextCsvStartRow > 0
? SETTINGS.postSettings.replyPostTextCsvStartRow - 1
: SETTINGS.postSettings.replyPostTextCsvStartRow,
SETTINGS.postSettings.textCsvLoop,
),
);
var _LoopStatuses = new LoopStatuses(0, SETTINGS.postSettings.minAnker);
const _MyPosterName = new MyPosterName({
name: SETTINGS.nameSettings.name,
});
const _ThreadUrl = openPromptThreadUrl();
//ループ
while (true) {
SETTINGS.ipSettings.checkIp && checkCurrentIpNotTheIp();
//スレを開く
openUrl(_ThreadUrl.fullUrlHttps());
//浪人にログインする設定なら、浪人にログインしているかどうかを確認し、していなければログインしにいく。
if (SETTINGS.roninSettings.checkLogin) {
}
}
if (SETTINGS.postSettings.replyPost) {
const targetAnkerNumber = createPostDOMList()
.filterPostnumberHigher(_LoopStatuses.currentMinAnker())
.filterByPostername(SETTINGS.postSettings.filterNames)
.filterByPosternameNotIncluded(
SETTINGS.postSettings.filterNamesNotIncluded,
)
.filterByText(SETTINGS.postSettings.filterText)
if (targetAnkerNumber !== null) {
const r = _TextCsvCursors.takeNextRowTextAsReply(targetAnkerNumber);
messageDisplay(`返信対象有り。アンカー先: ${targetAnkerNumber}`);
return {
...r,
updatedLoopStatuses:
_LoopStatuses.updateMinAnker(targetAnkerNumber),
};
}
}
if (SETTINGS.postSettings.noAnkerPost) {
//返信対象無し、或いは返信しない設定の場合。アンカー無し投稿文を作る。
const r = _TextCsvCursors.takeNextRowTextAsNoAnker();
messageDisplay('返信対象無し。アンカー無し投稿。');
return {
...r,
updatedLoopStatuses: _LoopStatuses,
};
}
return null;
})();
if (p) {
//投稿。
nickname: SETTINGS.nameSettings.nickname,
korokoro: SETTINGS.nameSettings.korokoro,
area: SETTINGS.nameSettings.area,
}),
SETTINGS.mail,
p.text,
);
//_TextCsvCursorsと_LoopStatusesを更新。
_TextCsvCursors = p.updatedTextCsvCursors;
_LoopStatuses = p.updatedLoopStatuses.incrementPostCount();
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
} else {
`返信対象が現われるのを待機中...。`,
`投稿回数: ${_LoopStatuses.currentPostCount()}`,
`minAnker: ${_LoopStatuses.currentMinAnker()}`,
`今回アンカー無し投稿取得行: ${_TextCsvCursors.currentRows().noAnker}`,
`今回アンカー有り投稿取得行: ${_TextCsvCursors.currentRows().reply}`,
]);
}
wait(SETTINGS.baseWaitTime + randomRange(0, SETTINGS.waitTimeRange));
}
}
/**
* 投稿処理と投稿結果を見てリトライしたりマクロ終了したり。
* @param {string} serverName サーバー名
* @param {MyPosterName} _MyPosterName
* @param {string} postMail メール
*/
serverName,
postMail,
_MyText,
retryTimes = 0,
) {
const r =
retryTimes === 0
? new ValuesOfPost(serverName, _MyPosterName, postMail, _MyText).post(
postTo5chTread,
)
serverName,
postMail,
_MyText,
).postSubstring(retryTimes, postTo5chTread, postConfirm);
if (r) {
back();
return;
}
wait(7);
const error = createPostErrorMessage().analyze();
messageDisplay(error.message);
if (error.order === 'KILL') {
kill();
} else if (error.order === 'SKIP') {
return;
} else if (error.order === 'TRUNCATE') {
back();
serverName,
postMail,
_MyText,
retryTimes + 1,
);
} else if (error.order === 'WAIT') {
wait(SETTINGS.waitTimeForAvoidingPunishment);
serverName,
postMail,
_MyText,
retryTimes,
);
} else if (error.order === 'LOGIN') {
serverName,
postMail,
_MyText,
retryTimes,
);
}
return;
}
/**
* 現在のIPアドレスに、SETTINGS.ipSettings.avoidTheIpの値が含まれていないことを確認する。含まれていたらマクロを一時停止。
* @returns
*/
function checkCurrentIpNotTheIp() {
openUrl('https://www.cman.jp/network/support/go_access.cgi');
const _IpAdress = createIpAdressFromCMan();
if (_IpAdress.includes(SETTINGS.ipSettings.avoidTheIp)) {
pause('現在のIPに指定した値が含まれていることを確認。');
}
return;
}
/**
* @returns
*/
if (
SETTINGS.postSettings.noAnkerPost === false &&
SETTINGS.postSettings.replyPost === false
) {
return kill('設定エラー。noAnkerPostとreplyPost両方ともfalseになってる。');
}
if (
SETTINGS.postSettings.noAnkerPostTextCsvStartRow < 0 &&
SETTINGS.postSettings.replyPostTextCsvStartRow < 0
) {
return kill(
'設定エラー。noAnkerPostTextCsvStartRowとreplyPostTextCsvStartRow両方とも-1になってる。',
);
}
if (
SETTINGS.postSettings.noAnkerPostTextCsvStartRow === 0 ||
SETTINGS.postSettings.replyPostTextCsvStartRow === 0
) {
return kill(
'設定エラー。noAnkerPostTextCsvStartRow/replyPostTextCsvStartRowの初期値は-1或いは1以上で。',
);
}
}
/**
* 入力フォームを表示して入力されたスレのURLを受け取る。
*/
function openPromptThreadUrl() {
const url = prompt('スレURLを入力');
}
/**
* 開いてるスレのレス全て読み取ってPostListインスタンスを作って返す。
* 重すぎるので使うのやめ。どうやらインスタンスの大量生成が原因な模様。
*/
const posts = window.document.getElementsByClassName('post');
return new PostList(Array.from(posts).map((e) => new Post(e)));
}
/**
* 開いてるスレのレス全て取得してPostDOMListに格納して返す。
* @returns
*/
function createPostDOMList() {
const posts = window.document.getElementsByClassName('post');
for (let index = 0; index < posts.length; index++) {
//HTMLCollectionからElementを1つずつ抽出して配列に。
arrPostDOMList.push(posts.item(index));
}
return new PostDOMList(arrPostDOMList);
}
/**
* 開いてる投稿結果画面に表示されてるエラーを読み取ってPostErrorMessageインスタンスを作って返す。
*/
function createPostErrorMessage() {
window.document