【twiiter API】pythonとtweepyを使った自動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
参考サイト
疑似的なツイートIDの作成方法
https://github.com/igorbrigadir/twitter-advanced-search#snowflake-idsエポック時間(UNIX時間)の取得と変換
https://python.civic-apps.com/unixtime-now/時間の計算
https://docs.python.org/ja/3/library/datetime.html#timedelta-objects
引っかかった点
いいねとRTをしたときに下のエラー文がでた
tweepy.error.TweepError: Read-only application cannot POST.
解決策はDeveloperサイトで権限の変更とtokenの再発行が必要
Consumer KeysはそのままでOK検索ワードの注意点
検索ワードは一部のワードが含まれるとヒットすると思っていたがそういうわけでもなさそう?
「フォロ」という検索ワードでは「フォロー」が含まれるツイートはヒットしない
全体的に参考にしたもの
twitter api 公式サイト
https://developer.twitter.com/en/docs/twitter-api
tweetオブジェクトのパラメータや返却値が載っているのでよく見るtweepyサイト
https://kurozumi.github.io/tweepy/index.html
日本語だったので見やすかった
ただ変数名の確認だけして、twitter api 公式サイトでパラメータなどを確認することが多かったpython 例外処理
https://docs.python.org/ja/3/tutorial/errors.htmlpython 常時稼働
windowsの方法
https://qiita.com/init/items/95ac1d45858b8b24a59c
https://www.wannko.net/windows10/kihon/task5.html
linuxの方法
https://qiita.com/katsuNakajima/items/7ece6c74f992f652d732
chmodコマンド
https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95
https://qiita.com/shisama/items/5f4c4fa768642aad9e06
【twiiter API】API申請とツイート取得
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の設定が可能です
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スイッチ初期設定
インストール
インストールはリンクを参照しながらやりました
https://qiita.com/suzuyui/items/76764d7fc4b4183a7d45
完成形
完成形は画像の通り
使用オブジェクト
下のほうからオブジェクトを選択して配置することができる
- 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のデータを取得
完成コードと出力結果
最終的に完成するコードと出力結果
今回は取得するExcelはpythonファイルと同じフォルダに格納する
Excel
コード
#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 認証システムというアプリをインストールする
2.IAMページへの移動
下記リンクからIAMページへ移動
IAMページ
もしくはAWSで「IAM」と検索し、IAMのダッシュボードページへ移動
3.ルートアカウントのMFAを有効化からMFAの管理を選択
4.多要素認証(MFA)からMFAの有効化を選択
5.仮想MFAデバイスを選択
6.初期設定
QRコードなどが出てくると思うので、インストールしたアプリで読み込む。
アプリに表示されるワンタイムパスワードを2回連続で入力することで設定完了
IAMユーザの作成
IAMとは?
アカウントの認証(ログインユーザーの判断)、許可(権限の判断)を制御するためのサービス
個人でしか使用しない場合も、ルートユーザーで作業し続けるのは危険なため、IAMユーザで作業することをおすすめしている
1.IAMページへの移動
下記リンクからIAMページへ移動
IAMページ
2.ユーザーの管理をクリック
3.ユーザーを追加をクリック
4.ユーザ名の入力、アクセス方法の選択
アクセスの種類
今回はコンソールでの操作用に作成するので、「AWSマネジメントコンソールへのアクセス」を選択
CLIなどを使用する人は、「プログラムによるアクセス」も選択が必要
コンソールのパスワード
自分でパスワードを決める「カスタムパスワード」を選択
なんでもいい人は、「自動生成パスワード」でもいいと思います
パスワードのリセットが必要
リセットはめんどくさいのでチェックをしません
5.グループの作成をクリック
6.グループ名の入力、ポリシーの選択
ポリシーは、「AdministratorAccess」を選択
「グループの作成」をクリックし、次のページに遷移後、そのまま「次のステップ:タグ」をクリック
7.タグの追加
個人利用目的なので、特に追加はせず次のステップをクリック