TikTok Liveのpythonライブラリが使えない時に
TikTok LIVEのスクレイピングにて下記のライブラリを使用している時に
サーバー側やTIKTOK側に制限をかけられて、
アクセスブロックされている事があります。
対処法としてはVPNやIPを変えてやり過ごしていましたが、繋がらないときは繋がらない……
いつも使っているpythonライブラリ: https://github.com/isaackogan/TikTokLive
が…もう無理だったので何か方法がないかと考え……tikfinityにて同期できないかと考えていたところ
tikfinity のアクション機能にthird party actions がある事を知り
前まで:TIKTOK LIVE(ライブラリpython)→その他の自作アプリにつなぐ
今回:tikfinity(third party actions)→その他の自作アプリにつなぐ
という荒業でやることにしました。
以前からpythonライブラリのサーバーが落ちているのにtikfinityが生きていることが多々
サーバーが落ちた時の保険用に記載します。
tikfinityのthird party actions の導入方法
third party actions 公式ドキュメント:https://tikfinity.zerody.one/third-party-api
tikfinityに登録(無料版でもできました。)し
通常通り取得したいユーザーIDを Setup 画面から入力
※ここで注意点なぜかIDをコピペだと認識されないのでしっかりキーボード入力しましょう。
Actions & Events に行きます Create new Action をクリック
この時に下記のコードプログラムをpythonで起動しながら
作成チェックボタンを押すとpythonで立てたサーバーと通信できます。
tikfinityのthird party actionsとプログラムを繋ぐ
Select Category と SelectActionをプログラム側で記載した項目に設定して
アクションを登録します。この時に既 Testボタンの横に記載した バージョンと自分の名前が出ていればつながってると思います。
※注意事項※
pythonコード側とのtikfinity側との遅延なのか Select Category と SelectAction の項目が出ないときは再度 pythonのコードを実行してから Actions & Events の画面ホームに戻って Create new Action を押すと再度更新されて出てきます。
下記サンプルコードと取得できるやつ
- アプリ情報:
http://127.0.0.1:8832/api/app/info
- カテゴリ情報:
http://127.0.0.1:8832/api/features/categories
- アクション情報:
http://127.0.0.1:8832/api/features/actions
- アクション実行:
http://127.0.0.1:8832/api/features/actions/exec
from flask import Flask, jsonify, request
import logging
app = Flask(__name__)
# ログ設定
logging.basicConfig(level=logging.INFO)
# サンプルのアプリ情報
app_info_data = {
"data": {
"author": "@Punks5d",#ここは特に自分のIDでなくてもOK
"name": "test",
"version": "1.0"
}
}
# サンプルのカテゴリ情報
categories_data = {
"data": [
{
"categoryId": "test_control",
"categoryName": "test_categories"#カテゴリー名
},
]
}
# サンプルのアクション情報
actions_data = {
"test_control": [
{
"actionId": "test_control",
"actionName": "test_control"#コントロール名
},
],
}
@app.route('/')
def home():
return 'Flask server is running!'
@app.route('/api/app/info', methods=['GET', 'OPTIONS'])
def app_info():
if request.method == 'OPTIONS':
response = jsonify({})
else:
response = jsonify(app_info_data)
response.headers.add("Access-Control-Allow-Origin", "*")
response.headers.add("Access-Control-Allow-Headers", "*")
response.headers.add("Access-Control-Allow-Methods", "*")
return response
@app.route('/api/features/categories', methods=['GET', 'OPTIONS'])
def features_categories():
if request.method == 'OPTIONS':
response = jsonify({})
else:
response = jsonify(categories_data)
response.headers.add("Access-Control-Allow-Origin", "*")
response.headers.add("Access-Control-Allow-Headers", "*")
response.headers.add("Access-Control-Allow-Methods", "*")
return response
@app.route('/api/features/actions', methods=['GET', 'OPTIONS'])
def features_actions():
if request.method == 'OPTIONS':
response = jsonify({})
else:
category_id = request.args.get('categoryId')
if category_id in actions_data:
response = jsonify({"data": actions_data[category_id]})
else:
response = jsonify({"message": "Invalid categoryId"}), 400
response.headers.add("Access-Control-Allow-Origin", "*")
response.headers.add("Access-Control-Allow-Headers", "*")
response.headers.add("Access-Control-Allow-Methods", "*")
return response
@app.route('/api/features/actions/exec', methods=['POST', 'OPTIONS'])
def execute_action():
if request.method == 'OPTIONS':
response = jsonify({})
else:
data = request.json
logging.info("Received execute action request: %s", data) # ここでログに表示
category_id = data.get("categoryId")
action_id = data.get("actionId")
if category_id and action_id:
# ここでアクションを実行するロジックを追加
response = jsonify({"data": []})
else:
response = jsonify({"message": "Invalid request data"}), 400
response.headers.add("Access-Control-Allow-Origin", "*")
response.headers.add("Access-Control-Allow-Headers", "*")
response.headers.add("Access-Control-Allow-Methods", "*")
return response
if __name__ == '__main__':
app.run(port=8832)
※AIに作ってもらったのでpythonという事しかよくわかっていない……
tikfinityのthird party actionsとイベントを同期
Actions & Events画面下にある Events の Create new Event にて
各取得したいEventsをtikfinityで設定し取得
自分はトリガーをchat と share と gift1+Coins とTap1+Likesを設定し
各Triggerに先程作った Ationを設定し
あとはpythonのコード側で細かい分類をして制御しました。
取得したい情報がpython側ターミナルに出てます。
あとは好きにMIDIや音楽ファイル・マイコンなどと同期すれば完成!
アクセス制限なくデバックもできるし!便利かも!!
(何故かギフトの名前が日本語…でもtikfinity側で設定できる文字列みたいなので便利かも…)
※申し訳ないので一応tikfinityはPROに登録してみました。
うおおおお!動いてる!
メリット:制限がない
デメリット:tikfinityを常に開かないといけない
終わり。