選挙の話
僕が選挙についてよく知ってるのは、知り合いでかつ恩人だった人がその昔選挙に出たことがあってね、恩もあったし若干の経験もあったから、選挙事務所の事務局を手伝ったことがあったんですよ。てかまあ、肩書はなかったけど事実上の事務局長だったわけですよ。で、ここからが怖い話なんだけど。
— びしょ⋉⋊ (@vipshota) July 20, 2019
選挙戦も終盤になってくると、いろんな情勢が入ってきて、あの候補よりは前に行ってるとか、あの地域の票はまとめたとか、まあほんとくだらない情報が沢山入ってくるの。僕としては、最後まで違反せずに気を抜かずに戦い抜くこと、まあそれだけしかできんかったわな。
— びしょ⋉⋊ (@vipshota) July 20, 2019
実際、最後まで僕も情勢が分からなかった。っていうか、事務局にいるから情勢なんて分かるわけがない。ハガキの名簿をまとめ、宣車のドライバーとウグイス嬢に指示を出し、辛い電話作戦をお願いし、事務所に届く有象無象の品を隠し、とにかく忙しかった。
— びしょ⋉⋊ (@vipshota) July 20, 2019
結果は
— びしょ⋉⋊ (@vipshota) July 20, 2019
5票差で負けたんです。
当時、たまたま話題になった政党から出てきた、地元のことを何もしらない若造に、ただ政党の知名度で、5票差で負けたんです。
事務所で結果を聞いたとき、何が起きたのか分からなかった。次に思ったのは、もっと本気を出していれば、5票差はひっくり返せたよなと。
当時の候補者は、今は普通に就職して、政治とは無関係な所で普通に働いています。アルバイトをしながら地元を駆けずり回った3年間とは全く無関係な所で、普通に働いています。
— びしょ⋉⋊ (@vipshota) July 20, 2019
つまり、僕から言いたいことは、選挙は選ぶためでもあり、落とすためでもある。この候補者は市民に選ばれなかった。
この話の帰結として、投票に行ってくれとは言いません。僕もたまに投票に行くのを忘れます。投票所が小学校になってからは忘れたことはないけれど。
— びしょ⋉⋊ (@vipshota) July 20, 2019
なので、論理は破綻していますが、まだ投票に行っていない人は明日行きましょう。今回はどうしても行けない人は、次回行ける準備をしませんか、と。
以上!
— びしょ⋉⋊ (@vipshota) July 20, 2019
子供を製造する話
大人になると、自分でコントロール出来ないことが増える。
就職は一番最初にぶち当たる案件で、全員が同じテストである点数さえ取れれば入学できた大学とは異なり、就職は全員が同じテストでもなければ、点数化されるわけでもない。企業の意向もあるし、企業側の立場からすれば学生の意向があり、そう簡単にマッチングが取れるものではない。
子供を製造する話もやはりコントロール出来ないことが多い。結婚せずに子供を製造しようとすると色々と文句を言われるし、結婚するには相手を一人に選ぶ必要がある。色々製造して良いものを選ぶなんてできないし、精子ガチャと卵子ガチャ次第なところが大きい。一方、子供にとっては親ガチャ次第なところが大きいわけで、耳が痛い話である。
同人誌即売会、僕(一般参加)的目線からのコメント
これまで、10年近くにわたり同人誌即売会に参加してきた。 多くの即売会を見て、何百冊も購入する中で、買う側の視点で色々思うことが溜まってきた。 そこで、僕が一般参加の目線で何を見て何を感じているのか、少しまとめておきたい。 10年後には様々な進歩もあり、また別の感想が生まれるだろう。
サークルスペースで明記されていると有り難いもの
- 新刊 か 既刊 か (または発行年月日 または発行イベント名)
- 簡単な内容、二次創作なら作品名とカップリング
- 内容をアピールする表紙 表紙詐欺大歓迎
- サークルのスペース番号と記号
- サークル名と作者名(ペンネーム)の両方
- 大きな字・高コントラストで
新刊 or 既刊
新刊 か 既刊か(もしくは発行年月日)を本の外に書いてくれていないサークルさんがちらほらいる。 新刊と書いているのに、過去のポップを流用しているのか、その日が売る初日ではない場合もある。 発行日はその本を手に取って、奥付を見れば分かるので、これらの情報を見えるところに書かなければいけないというわけではない。 だが、書いておいてくれているととてもありがたい。
発行日がすぐに分かるようになっていれば、気になるサークルで、僕が過去に参加したイベント以降に発行した本を全部買う、などという買い方もできるようになるのだ。
簡単な内容、二次創作ならタイトルとカップリング
本のタイトル、媒体名(オリジナルか二次創作ならそのタイトルやカップリング)、小説か漫画かイラスト集かなど、簡単な説明などを書いてくれるととてもありがたい。 書いていなくてもその本を手に取って中身を見れば分かるから問題はないが、やはりあるとうれしい。
表紙
表紙は重要だ。とにかく重要だ。僕の購買のきっかけの9割は表紙と言っても過言ではない。気になる表紙の本はまず手に取るようにしている。表紙詐欺大歓迎である。 表紙を頑張ってくれている作家さん、本当にありがとう。そして、これからもよろしくお願いします。
サークルのスペース番号と記号
スペース番号や、島の記号を、目に付くところに書いてくれているサークルさんは意外と少ない。 なくても、この机の端から何番目だからこのサークルのスペース番号は・・・と考えればよいし、サークル名やペンネームで識別すれば良いのだけれど、あれば助かるということもある。大手さんは書く傾向にあるよね。
サークル名と作者名(ペンネーム)
ポップ・ディスプレイでも、同人誌の裏表紙でもいいので、サークル名と作者名(ペンネーム)をアピールしていただきたい。 最近、同人誌の裏表紙にサークル名やペンネームを登録名のママではなくローマ字表記にして書くのが流行っている。 僕はローマ字表記を読むのに慣れていない。登録名をそのまま書く形式が流行ってくれると個人的にはうれしい。
大きな字・高コントラストで
ポップを作る時、デザインを実物大にしたら、いちど3メートルほど離れて見て欲しい。その字の太さ、字の大きさ、コントラストで本当に大丈夫かと確認してほしい。それなりに大きい字、高コントラストというのは、僕みたいに視力の低い人でも遠くから読めるので、とてもありがたいのだ。目に入るだけで新しい可能性も広がるので、ぜひ気にかけてほしい。
僕向け
個人的にいくつかの心がけをしている。
- 相手の目を見て買う、買ったあとに「ありがとう」と言う
- サンプルを見るときは汚さない、折り目を付けない、そおっと見る
- 迷ったらサンプルを見る、迷ったら買う
- 列のないサークルを優先する
- 小規模なイベントなら全サークルをくまなく見る。大規模なイベントなら関連の島をくまなく見る
- 人が多いときには挨拶に行かない、自分の挨拶で他の人が買ったり見たりするのを邪魔しない。挨拶の際はツイッターのプロフィール画面を見せる。
- サンプルを見るときも2列になるようにし、隣のスペースにはみ出さない
- 他のサークルの列で邪魔されてしまっているサークルは、体をねじ込んででも見に行く
今後とも、サークルの皆さんの参加と頒布を心から楽しみにしています。
ツイッター(Twitter)の新UIからプロモーションを消す
だいたい消せればいいという。スクリプト仕様は自己責任で。
$(function () { var timerId = setInterval(function () { $('span:contains("プロモーション").css-901oao').each(function () { if ($(this).text().indexOf('プロモーション') == 0 && $(this).parent().parent().find('time').length == 0) { var p = $(this).parent().parent().parent().parent().parent().parent(); if (p.css('display') != 'none') { p.css('display', 'none'); console.log("ツイート上のプロモーションを非表示にした"); } } else if ($(this).text().indexOf('によるプロモーション') > 0 && $(this).parent().parent().find('time').length == 0) { var p = $(this).parent().parent().parent().parent(); if (p.css('display') != 'none') { p.css('display', 'none'); console.log($(this).text() + 'トレンドのプロモーションを非表示にした'); } } }); }, 1000); });
javascript歴3日なので、間違っていたり、こうすると可読性が上がるよというのがあれば、ぜひ教えてほしいです。
AdBlock Plusなどを使った方法は下記に書いてあるけど・・・
まだどれも万全ではないみたい
某画像投稿サイトから、フォロワーの画像を一括ダウンロードする試み
先人たちのソースコードを参考にしています。
get_api.py
from pixivpy3 import * import json def get_api(): with open("client.json") as f: client_info = json.load(f) # pixivpyのログイン処理 api = PixivAPI() api.login(client_info["pixiv_id"], client_info["password"]) aapi = AppPixivAPI() aapi.login(client_info["pixiv_id"], client_info["password"]) return api, aapi
get_following_userID.py
from pixivpy3 import * import json from time import sleep import sys import io import re import os from robobrowser import RoboBrowser def get_following_userID(api, aapi): # フォローユーザーの総数を取得 self_info = aapi.user_detail(client_info["user_id"]) n_following_users = self_info.profile.total_follow_users # フォローユーザー一覧ページのページ数を取得 if(n_following_users % 48 != 0): pages = (n_following_users // 48) + 1 else: pages = n_following_users // 48 #タグ除去用 p = re.compile(r"<[^>]*?>") # [jump:1]形式除去用 jump = re.compile(r"\[jump:.+\]") #ファイルエンコード設定用 character_encoding = 'utf_8' # Webスクレイパーのログイン処理 pixiv_url = 'https://www.pixiv.net' browser = RoboBrowser(parser='lxml', history=True) browser.open('https://accounts.pixiv.net/login') form = browser.get_forms('form', class_='')[0] form['pixiv_id'] = client_info["pixiv_id"] form['password'] = client_info["password"] browser.submit_form(form) # フォローユーザー一覧ページのURLを設定 target_url = 'https://www.pixiv.net/bookmark.php?type=user&rest=show&p=' # 全てのフォローユーザーのユーザIDを取得 following_users_id = [] for i in range(1, pages + 1): print(target_url + str(i)) browser.open(target_url + str(i)) following_users = browser.find(class_='members') for user in following_users.find_all("input"): following_users_id.append(user.get("value")) sleep(3) # ページを移動したら一時待機する(マナー) print(following_users_id) print("# of following users",n_following_users) print("# of obtained following users",len(following_users_id)) with open("following.json", "w") as f: json.dump(following_users_id, f, indent=1) return following_users_id
get_illustrations.py
from pixivpy3 import * import json from time import sleep import os def get_illustrations(api, aapi, illustrator_pixiv_id, DL_flag=False): # 最大作品数 max_works = 3000 # 入力された絵師IDから絵師情報を取得 json_result = api.users_works(illustrator_pixiv_id, per_page=max_works) # アカウントは停止ユーザー if "pagination" not in json_result: return total_works = json_result.pagination.total # 投稿数が0 if total_works == 0: return illust = json_result.response[0] # 絞り込み条件 # target_tag = "target_tag" if not os.path.exists("./pixiv_images"): # 保存用フォルダがない場合は生成 os.mkdir("./pixiv_images") saving_direcory_path = "./pixiv_images/" + str(illustrator_pixiv_id) + "/" if not os.path.exists(saving_direcory_path): os.mkdir(saving_direcory_path) # ダウンロード #print(f"Artist: {illust.user.name}") #print(f"Works: {total_works}") results = [] for n_work in range(0, total_works): if n_work >= max_works: break # DL画像を絞り込む場合 # if target_tag not in illust.tags: #タグによる絞り込み # continue illust = json_result.response[n_work] print(f"Works: {n_work + 1}/{total_works}, Download: {DL_flag}",end="\r") #print(f"Title: {illust.title}") #print(f"URL: {illust.image_urls['large']}") #print("Caption: %s" % illust.caption) #print(f"Tags: {illust.tags}") illust.caption = "" # 出力する際、冗長なので削除、コメントアウト可 results.append(illust) image_urls = [] if illust.is_manga: # 漫画の場合 work_info = api.works(illust.id) for page_no in range(0, work_info.response[0].page_count): page_info = work_info.response[0].metadata.pages[page_no] image_urls.append(page_info.image_urls) else: # イラストの場合 aapi.download(illust.image_urls.large, saving_direcory_path) image_urls.append(illust.image_urls) if DL_flag: for image_url in image_urls: exp_path = os.path.join(saving_direcory_path, image_url.large.split("/")[-1]) #ダウンロード済みを確認 if not os.path.exists(exp_path): aapi.download(image_url.large,saving_direcory_path) sleep(3) # ページを移動したら一時待機する(マナー) else: print(exp_path,"exists.") print() with open(f"./logs/{illustrator_pixiv_id}.json", "w",encoding="utf-8") as f: json.dump(results, f, indent=1, ensure_ascii=False)
main.py
import get_following_userID import get_illustrations import get_api from time import sleep api, aapi= get_api.get_api() ids = get_following_userID.get_following_userID() for i, id in enumerate( ids): print(f"Users: {i+1}/{len(ids)}, ID: {id}") get_illustrations.get_illustrations(api, aapi, int(id), False) sleep(1)
大量の画像をダウンロードすると、サーバーと回線に負荷を与える可能性があります。兵庫県警や神奈川県警等に恣意的な検挙を受けないためにも、負荷を与えないようにして使ってください。