Flask 和 python 不允许递归函数 Twitch API
Flask and python does not allow recursive function Twitch API
我有一个功能可以生成 Twitch 上某些用户的所有视频 URL
def get_videos(cursor=None): # functiont to retrieve all vod URLs possible, kinda slow for now
params_get_videos = {('user_id', userid_var)} # params for request.get
if cursor is not None: # check if there was a cursor value passed
params_get_videos = list(params_get_videos) + list({('after', cursor)}) # add another param for pagination
url_get_videos = 'https://api.twitch.tv/helix/videos' # URL to request data
response_get_videos = session.get(url_get_videos, params=params_get_videos, headers=headers) # get the data
reponse_get_videos_json = response_get_videos.json() # parse and interpret data
file = open(MyUsername+" videos.txt", "w")
for i in range(0, len(reponse_get_videos_json['data'])): # parse and interpret data
file.write(reponse_get_videos_json['data'][i]['url'] +'\n') # parse and interpret data
if 'cursor' in reponse_get_videos_json['pagination']: # check if there are more pages
get_videos(reponse_get_videos_json['pagination']['cursor']) # iterate the function until there are no more pages
它本身(与其他函数)一起工作得很好,但每当我尝试从像这样的虚拟烧瓶服务器调用它时
from flask import Flask
from flask import render_template
from flask import request
from main import *
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template("hello.html")
@app.route('/magic', methods=['POST', 'GET'])
def get_username():
username = request.form.get('username')
get_videos()
return ("Success")
它不再递归,只打印前 20 个值。我做错了什么?
我也是新人,所以我没有足够的声誉来发表评论,我必须 post 一个答案。我对你的 get_username 方法感到困惑,一旦你从表单中获取用户名,你就不会将它发送到任何地方?看起来在您的 get_videos 方法中,您可能通过在此方法之外保存一个名为 MyUsername 的变量来对用户名进行硬编码?
imo 你应该做的是发送你从表单中获取的用户名,像这样执行你的 get_videos 方法。
get_videos(用户名)
并将您的其他方法更改为此
def get_videos(MyUsername, cursor=None):
我有一个功能可以生成 Twitch 上某些用户的所有视频 URL
def get_videos(cursor=None): # functiont to retrieve all vod URLs possible, kinda slow for now
params_get_videos = {('user_id', userid_var)} # params for request.get
if cursor is not None: # check if there was a cursor value passed
params_get_videos = list(params_get_videos) + list({('after', cursor)}) # add another param for pagination
url_get_videos = 'https://api.twitch.tv/helix/videos' # URL to request data
response_get_videos = session.get(url_get_videos, params=params_get_videos, headers=headers) # get the data
reponse_get_videos_json = response_get_videos.json() # parse and interpret data
file = open(MyUsername+" videos.txt", "w")
for i in range(0, len(reponse_get_videos_json['data'])): # parse and interpret data
file.write(reponse_get_videos_json['data'][i]['url'] +'\n') # parse and interpret data
if 'cursor' in reponse_get_videos_json['pagination']: # check if there are more pages
get_videos(reponse_get_videos_json['pagination']['cursor']) # iterate the function until there are no more pages
它本身(与其他函数)一起工作得很好,但每当我尝试从像这样的虚拟烧瓶服务器调用它时
from flask import Flask
from flask import render_template
from flask import request
from main import *
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template("hello.html")
@app.route('/magic', methods=['POST', 'GET'])
def get_username():
username = request.form.get('username')
get_videos()
return ("Success")
它不再递归,只打印前 20 个值。我做错了什么?
我也是新人,所以我没有足够的声誉来发表评论,我必须 post 一个答案。我对你的 get_username 方法感到困惑,一旦你从表单中获取用户名,你就不会将它发送到任何地方?看起来在您的 get_videos 方法中,您可能通过在此方法之外保存一个名为 MyUsername 的变量来对用户名进行硬编码?
imo 你应该做的是发送你从表单中获取的用户名,像这样执行你的 get_videos 方法。
get_videos(用户名)
并将您的其他方法更改为此 def get_videos(MyUsername, cursor=None):