如何确定函数或方法是正常函数还是异步函数?我希望我的代码能够自动支持普通或异步回调,并且需要一种方法来测试传递的函数类型.
async def exampleAsyncCb():
pass
def exampleNomralCb():
pass
def isAsync(someFunc):
#do cool dynamic python stuff on the function
return True/False
async def callCallback(cb, arg):
if isAsync(cb):
await cb(arg)
else:
cb(arg)
Run Code Online (Sandbox Code Playgroud)
根据传递的函数类型,它应该正常运行或使用await运行.我尝试了各种各样的东西,但不知道如何实现isAsync().
如何解析从 HLS 流块获取的 timed_id3 值?
Twitch 流块包含 ffprobe 标识为 timed_id3 的第三个数据流中的编码时间等信息,提取的数据为:
b'\x00\x00\x00\x020TRCK\x00\x00\x00\x06\x00\x00\x033936\x00TDEN\x00\x00\x00\x15\x00\x00\x032016-09-30T02:01:11\x00TDTG\x00\x00\x00\x15\x00\x00\x032016-09-30T02:01:18\x00TOFN\x00\x00\x00\x1a\x00\x00\x03index-0000003936-tI2q.ts\x00TSSE\x00\x00\x00\x15\x00\x00\x03libavtwitch: 730c86\x00TXXX\x00\x00\x01\x15\x00\x00\x03segmentmetadata\x00{"broadc_s":1,"cmd":"ld_lat_data","ingest_r":2,"ingest_s":3,"stream_offset":15624,"transc_r":1475200871542,"transc_s":1475200878899}\xbd\x00\x00\x00\x01\xce\x8cM\x9d\x10\x8e%\xe9\xfe'
Run Code Online (Sandbox Code Playgroud)
它是可解析的,包含常见的 ID3 值,但似乎不是完整的 ID3 数据。根据 ID3 规范,它应该以“ID3”标识符值和其他值开头,但事实并非如此,并且我尝试的所有 id3 解析库都因此无法解析它。
HLS 流中的 timed_id3 似乎与 mp3 文件的正常 id3 信息不同。
我正在编写一个python脚本,该脚本会定期检查与特定搜索匹配的新电子邮件。但是,如果不重新连接,它永远不会显示新电子邮件。
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login(user,passwd)
mail.select("inbox")
while True:
result, idData = mail.uid('search', query, "ALL")
processIDs(idData)
time.sleep(60)
Run Code Online (Sandbox Code Playgroud)
该搜索将在登录时查找与我的查询匹配的所有电子邮件,但从不查找运行时到达的电子邮件。一旦我停止脚本并重新启动它,所有电子邮件立即显示出来。
如果用谷歌搜索并浏览了imaplib文档,但找不到任何有用的信息。
如何在不重新连接到imap服务器的情况下显示新电子邮件?
编辑:我想避免重新连接的原因是由于gmail速率限制。
python ×3
asynchronous ×1
coroutine ×1
email ×1
ffmpeg ×1
gmail ×1
gmail-imap ×1
id3 ×1
id3v2 ×1
imap ×1
mpeg2-ts ×1
python-3.5 ×1
python-3.x ×1