【twiiter API】pythonとtweepyを使った自動RT、いいね

概要

twitter APIによる自動RT、いいね機能を作成

環境

プログラム

tweepyを使用するうえでの準備

始めに次のコードを実施することでtweepyが使用できるようになる
wait_on_rate_limitを使用すると利用制限があった場合、自動で待ってくれるので便利

import tweepy

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

参考サイト
https://kurozumi.github.io/tweepy/getting_started.html#hello-tweepy https://kurozumi.github.io/tweepy/api.html#tweepy-api-twitter-api-wrapper

①疑似的なツイートIDの作成

疑似的なツイートIDを作成する理由

ツイートIDはツイートされた時間を元に作成される、
またtwitter apiで期間を決めて検索する際にツイートIDを使う
そのため、疑似的なツイートIDを作成すると、好きな期間で検索することができる

since_idにツイートIDを指定すると、そのツイートより新しいツイートを結果として返す
idは作成した疑似的なツイートID
qは検索ワード

public_tweets = api.search(q, since_id=id)

疑似的なツイートIDの作成方法
millisecond_epochはミリエポック秒UNIX時間)

(millisecond_epoch - 1288834974657) << 22 = tweet id

参考サイト

引っかかった点

  • いいねとRTをしたときに下のエラー文がでた
    tweepy.error.TweepError: Read-only application cannot POST.
    解決策はDeveloperサイトで権限の変更とtokenの再発行が必要
    Consumer KeysはそのままでOK

  • 検索ワードの注意点
    検索ワードは一部のワードが含まれるとヒットすると思っていたがそういうわけでもなさそう?
    「フォロ」という検索ワードでは「フォロー」が含まれるツイートはヒットしない

全体的に参考にしたもの

【twiiter API】API申請とツイート取得

今回はtwitter API申請をして、pythonでツイートの内容を取得するまでをまとめます

API申請

API申請は以下のサイトを参考に実施
https://www.itti.jp/web-direction/how-to-apply-for-twitter-api/

参考ページにもありますが、API申請を行うページは以下になります
https://developer.twitter.com/en/apps/

Developerサイト

サイトの見た目が変わっているようだったので、整理しました
APPの設定は、projects & Appsから作成したAPPの設定が可能です

f:id:haru0003:20201205163042p:plain

APP Details

APPに関する4つの設定が可能

  • App name
    APPの名前
  • App icon
    APPのアイコン
  • Description
    APPの説明
  • Delete App
    APPの削除ができる

App permissions

APPの権限の設定が可能

  • Read
    タイムラインやプロフィールの読み取りができる権限
  • Read and Write
    Read権限に加え、ツイートなどのダイレクトメッセージ以外の操作ができる書き込み権限がある
  • Read + Write + Direct Messages
    Read and Write権限に加え、ダイレクトメッセージの操作もできる権限

Authentication settings

ここでの設定は自分のアプリで利用者がtwitterにサインイン、ツイートするために設定するものっぽい?
自分でツイートを取得するためだけなら設定不要みたいなので、今回はそのままにしています

OAuthがなんぞやという方は以下参照
https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be

Keys and tokens

ツイートを検索する際に使用する、API keyなどを確認できる

API v2を使用してツイートを取得

以下のサイトを参考にツイートを取得してみた
いろいろなサイトを見てみた中で一番コードがシンプルだった気がした
https://qiita.com/akky-tys/items/4a1b6a11acb1fe226361

公式でもツイート取得のサンプルコードを出しているので、気になる方、python以外で取得したい方は参照
https://github.com/twitterdev/Twitter-API-v2-sample-code/tree/master/Tweet-Lookup

取得できる値は公式サイトにまとめてあるので、英語ですが見てみてください
たくさんあり、いろいろ取得できそう
https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets-id

まとめ

いろいろなサイトを参考にやることが多かったので、次は自分で試し試しでやっていこうと思います
v2ではなく、v1も使ってみたい

【Packet Tracer】ルータ、L2スイッチ初期設定

今回は、Packet Tracerをインストールして、ルータとL2スイッチがPing疎通できるまで
行う設定はホスト名とVLANとIPアドレス

 

 

 

 

インストール

インストールはリンクを参照しながらやりました
https://qiita.com/suzuyui/items/76764d7fc4b4183a7d45

 

完成形

完成形は画像の通り

f:id:haru0003:20201123195803p:plain

使用オブジェクト
下のほうからオブジェクトを選択して配置することができる

  • 2901(ルータ)
    Network DevicesのRoutersから選択
  • 2960(L2スイッチ)
    Network DevicesのSwitchesから選択
  • Copper Straight-Through(ケーブル)
    ConnectionsのConnectionsから選択
    ケーブルの種類は以下参考
    https://hetare-nw.net/archives/76

 

設定値

  • ホスト名
    ルータ:R1
    L2スイッチ:L2-01
  • VLAN
    VLAN100(192.168.0.0/24)で作成
  • IPアドレス
    ルータ:192.168.0.5
    L2スイッチ:192.168.0.11

 

権限モード

スイッチにはいくつかのモードがある
CLIでは#などで現在のモードがわかりやすいようになっている

  • ユーザモード
    一部の情報が見れる
    CLI表示
    R1>
  • 特権モード
    すべての情報がみれる
    CLI表示
    R1#
  • グローバルコンフィギュレーションモード
    機器全体の設定ができる
    CLI表示
    R1(config)#
  • その他
    インターフェースやVLANを設定するモードがある
    CLI表示(インターフェースモード)
    R1(config-if)#

それぞれの関係性については以下を参考にするとわかりやすい
https://www.edifist.co.jp/lecture/network/images/pdf/Cisco_IOS.pdf

 

初めに

基本的に機器の設定はCLIで行う
CLI画面はオブジェクトをクリックするとCLIのタブがあるので、そこから設定可能

ルータを初期起動した場合、下のような確認が来るがnoでよい
Would you like to enter the initial configuration dialog? [yes/no]:

Cisco機器はコマンドを省略して打つことができる
あとコマンドを打っている途中でtabを押すと自動補完もしてくれる

 

ホスト名の設定(設定対象:ルータ、L2スイッチ)

コマンドはhostname 設定したいホスト名
設定後はRouterからR1と変化している

Router>
Router>en
Router#conf t
Router(config)#hostname R1
R1(config)#

 

VLANの設定(設定対象:L2スイッチ)

VLANには3つの設定がある

  • VLANの作成
    コマンドはvlan 設定したいVLANID
    設定後はVLANの設定モードに入る
    L2-01(config)#vlan 100
    L2-01(config-vlan)#
    
  • SVI(Interface VLAN)の作成
    コマンドはinterface vlan 設定したVLANID
    設定後はVLAN同様にSVIの設定モードに入る
    VLANとSVIの違いは簡単に言うと、VLANにはIPアドレスの設定ができないため、SVIで設定できるようにしている
    L2-01(config)#interface vlan 100
    L2-01(config-if)#
    
  • ポート設定
    通信を行うインターフェースに作成したVLANで通信が行えるように設定をする
    コマンドはswitchport モード 作成したVLANID
    L2-01(config)#interface gigabitEthernet 0/1
    L2-01(config-if)#switchport access vlan 100

ちなみにルータに設定しないのは、基本的にルータは異なるネットワーク間を中継する機器のため、細かくネットワークを区切るためのVLANを使用する意味があまりない

 

IPアドレスの設定(設定対象:ルータ、L2スイッチ)

  • ルータの場合
    ルータはインターフェースに直接IPアドレスを設定する
    コマンドはip address 設定したいIP サブネットマスク
    R1(config)#interface gigabitEthernet 0/0
    R1(config-if)#ip address 192.168.0.5 255.255.255.0
  • L2スイッチの場合
    L2スイッチは作成したSVIに設定する
    コマンドはルータ同様にip address 設定したいIP サブネットマスク
    L2-01(config)#interface vlan 100
    L2-01(config-if)#ip address 192.168.0.11 255.255.255.0

 

機器接続

今はインターフェースが通信できない状態(shutdown状態)なので、インターフェースで通信できるように設定する コマンドはno shutdown

L2-01(config)#interface GigabitEthernet0/1
L2-01(config-if)#no shutdown

ルータとL2スイッチをCopper Straight-Throughで接続すれば完了
接続する際には設定したインターフェースを選択すること

 

最後に

ルータからL2スイッチにPingを打って疎通確認できれば完了

R1#ping 192.168.0.11

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.11, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/1 ms

【openpyxl】pythonでExcelのデータを取得

pythonでopenpyxlを使用して、Excelの値を取得する

 

 

 

 

完成コードと出力結果

最終的に完成するコードと出力結果
今回は取得するExcelpythonファイルと同じフォルダに格納する

Excel

f:id:haru0003:20201115151940p:plain

コード
#openpyxlをimport
import openpyxl

#Excelファイル取得
wb = openpyxl.load_workbook('Book1.xlsx')
ws = wb.get_sheet_by_name('Sheet1')

#セルを取得
for row in ws.iter_rows(values_only=True):
    print(row)
出力結果
(1, 2, 3, '合計')
('イチゴ', 'バナナ', 'リンゴ', None)
(100, 200, 300, '=SUM(A3:C3)')
(None, None, None, None)
('値段表', None, None, None)

事前準備

openpyxlをpipでインストール
pip install openpyxl

 

 

Excelシートの取得

openpyxlをimport
import openpyxl

 

Excelファイル、シートの指定
wb = openpyxl.load_workbook('Book1.xlsx')
ws = wb.get_sheet_by_name('Sheet1')

wb = openpyxl.load_workbook('Book1.xlsx')
で開くExcelファイルのパスや方法を指定する
パラメータは全部で5つ

  • filename
    ファイルのパス、またはオブジェクトを指定できる
  • read_only
    指定するとことで読み取り専用となり、編集ができなくなる
  • keep_vba
    vbaコンテンツを事前に保存できるようになる
    使用できるということではないらしい
  • data_only
    セルを参照した際に、数式だった場合、数式の結果を取得する
    デフォルトだと無効
  • keep_links
    外部ワークブックへのリンクを保持するかどうか
    デフォルトは有効

ws = wb.get_sheet_by_name('Sheet1')
で参照するシートを指定する 
パラメータは1つのみでシート名となる

 

 

セルを取得

行ごとにセルをリストとして取得
#セルを取得
for row in ws.iter_rows(values_only=True):
    print(row)

iter_rowsでは行ごとに値を取得する
何も指定しない場合、A1から始まり、
終わりは自動的に値のある行、列を判断してくれる

パラメータは全部で5つ

  • min_col
    読み取りを始める最小列
  • min_row
    読み取りを始める最小行
  • max_col
    読み取りを終える最大列
  • max_row
    読み取りを終える最大行
  • values_only
    Trueの場合、セルの値で返すようにする
    Falseの場合、セルとして返す

【AWS】初心者によるAWS構築 アカウント作成

 

AWS初心者が仮想サーバを作成できるようなるまでの記録です
今回はルートアカウント、IAMユーザ作成について行っていこうと思います。

 

 

 

 

ルートアカウントの作成

ルートアカウントとは?
AWSアカウントの作成時に作成されるユーザー

基本的には公式サイトを参考に作成すればOKそう
一つ一つの項目ごとに説明があるので丁寧

 

 

 

 

アカウントのセキュリティ設定 

ルートアカウントはすべての権限を持つアカウントのため、セキュリティ設定をする必要あり

今回は「MFA(多要素認証)」という設定をします

MFAとは?
ユーザIDとパスワードのみでは盗まれる可能性があるため、
セキュリティ性を高めるため複数のやり方で認証を行うこと
今回の場合は、IDとパスワード、アプリによるワンタイムパスワードによる二要素

 

1.スマホでアプリをインストール

スマホGoogle 認証システムというアプリをインストールする

 f:id:haru0003:20200816170537p:plain

 

2.IAMページへの移動

下記リンクからIAMページへ移動
IAMページ

もしくはAWSで「IAM」と検索し、IAMのダッシュボードページへ移動

 f:id:haru0003:20200816170540p:plain

 

3.ルートアカウントのMFAを有効化からMFAの管理を選択

f:id:haru0003:20200816170553p:plain

 

4.多要素認証(MFA)からMFAの有効化を選択

f:id:haru0003:20200816170557p:plain

 

5.仮想MFAデバイスを選択

 f:id:haru0003:20200816170603p:plain

 

6.初期設定

QRコードなどが出てくると思うので、インストールしたアプリで読み込む。

アプリに表示されるワンタイムパスワードを2回連続で入力することで設定完了

 

 

 

IAMユーザの作成

IAMとは?
アカウントの認証(ログインユーザーの判断)、許可(権限の判断)を制御するためのサービス
個人でしか使用しない場合も、ルートユーザーで作業し続けるのは危険なため、IAMユーザで作業することをおすすめしている

1.IAMページへの移動

下記リンクからIAMページへ移動
IAMページ

 

2.ユーザーの管理をクリック

f:id:haru0003:20200822172850p:plain

 

3.ユーザーを追加をクリック

f:id:haru0003:20200822172853p:plain


 

 

4.ユーザ名の入力、アクセス方法の選択

アクセスの種類
今回はコンソールでの操作用に作成するので、「AWSマネジメントコンソールへのアクセス」を選択
CLIなどを使用する人は、「プログラムによるアクセス」も選択が必要

コンソールのパスワード
自分でパスワードを決める「カスタムパスワード」を選択
なんでもいい人は、「自動生成パスワード」でもいいと思います

パスワードのリセットが必要
リセットはめんどくさいのでチェックをしません

 

f:id:haru0003:20200822172916p:plain

 

5.グループの作成をクリック

f:id:haru0003:20200822172921p:plain

 

6.グループ名の入力、ポリシーの選択

ポリシーは、「AdministratorAccess」を選択

「グループの作成」をクリックし、次のページに遷移後、そのまま「次のステップ:タグ」をクリック 

f:id:haru0003:20200822172926p:plain

 

7.タグの追加

個人利用目的なので、特に追加はせず次のステップをクリック

f:id:haru0003:20200822172913p:plain

 

8.ユーザーの作成をクリックして完了!