我正在尝试找出在给定频道的 ChannelID 的情况下获取频道的上传播放列表 ID 的最佳方法。例如对于带有channelID的频道
UC9CuvdOVfMPvKCiwdGKL3cQ
对应的上传playlistID为
UU9CuvdOVfMPvKCiwdGKL3cQ
请注意,第二个字符已从“C”更改为“U”
我可以通过字符串操作来完成此转换,但我很好奇是否有更好、更简单的方法来通过官方 youtube api 查找上传播放列表 ID。
这是一些显示我的问题的 Kotlin 代码:
我可以通过以下 youtube api v3 搜索找到“Game Grumps”频道的 ChannelID:
val req = youtube.search().list("snippet");
req.key = {API_KEY}
req.q = "Game Grumps"
req.type = "channel"
val response = req.execute();
Run Code Online (Sandbox Code Playgroud)
生成的通道 ID (response.items[0].snippet.channelId) 为 UC9CuvdOVfMPvKCiwdGKL3cQ
但是当我运行以下命令来尝试获取频道上传的视频时,我必须使用转换后的 ChannelID(以 UU 而不是 UC 开头)
val req = youtube.PlaylistItems().list("snippet")
req.playlistId = "UU9CuvdOVfMPvKCiwdGKL3cQ"
req.key = {API_KEY}
val response = req .execute()
Run Code Online (Sandbox Code Playgroud)
如果我使用未转换的“UC”channelID,则会收到以下错误:playlistId无法找到使用 requests 参数标识的播放列表。
除了用“U”替换第二个字符之外,还有什么更可靠的方法(例如使用 youtube API)将 ChannelID 转换为 PlaylistID(用于从该频道上传的内容)?
如何在Flutter中更新同级小部件的状态?
例如,如果我有一个矩形窗口小部件,则可以通过调用setState()并更改color变量(如下面的“ Turn Green”按钮那样)来从窗口小部件内更改其颜色。但是,说我想要一个在矩形外部的按钮来改变其颜色。我该如何与Rectangle交流该更改其颜色以及更改为哪种颜色的时间?
这是我的示例代码。当用户按下“ Turn Blue”按钮时,我希望矩形变为蓝色,但是我无法从同级窗口小部件访问其状态。
import 'package:flutter/material.dart';
void main() {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Hello Rectangle',
home: Scaffold(
appBar: AppBar(
title: Text('Hello Rectangle'),
),
body: Column(
children: <Widget>[
HelloRectangle(),
FlatButton(
child: Text('Turn Blue!',
style: TextStyle(fontSize: 40.0),
textAlign: TextAlign.center,
),
onPressed: () {
// How to update state of the Rectangle from here?
},
),
]
),
),
),
);
}
class HelloRectangle extends StatefulWidget {
@override
HelloRectangleState createState() {
return new HelloRectangleState();
}
}
class …Run Code Online (Sandbox Code Playgroud) 我可以通过 YouTube v3 数据 API 访问我的观看历史记录,但它只返回我最近的 30 个视频(尽管当我在 YouTube.com 上查看观看历史记录时我会看到更多)。
然后当我看另一个视频时,它返回31。当我看另一个视频时,它返回32。如果它可以返回超过30,为什么它最初不返回更多?我知道 API 可能有限制,但为什么从 30 开始然后逐渐增长呢?对于分页来说,确实不应该有限制,对吗?
我一定做错了什么。这是我的代码:
def getWatchHistory(youtube):
playlistId = getWatchHistoryPlaylistId(youtube)
videos = retrieveVideos(youtube, playlistId);
return videos # Only returns 30, 31, 32 videos, etc. though I have many more in my History
def getWatchHistoryPlaylistId(youtube):
channels_response = youtube.channels().list(
part="contentDetails",
mine=True,
).execute()
channel = channels_response["items"][0]
playlistId = channel["contentDetails"]["relatedPlaylists"]["watchHistory"]
return playlistId
def retrieveVideos(youtube, playlistId, nextPageToken=None):
# Search the specified playlist and list all videos
playlistItems_response = youtube.playlistItems().list(
part="snippet,contentDetails",
playlistId=playlistId,
maxResults=50,
pageToken=nextPageToken
).execute() …Run Code Online (Sandbox Code Playgroud) 我正在按照本教程创建基于回合制的多人游戏:https://developers.google.com/games/services/console/enabling
在"指定客户端ID设置"部分下,他们说要运行:
keytool -list -keystore [path-to-debug-keystore]
这很好,因为他们也不在话下调试密钥库的位置:"在Windows中,调试密钥库可以位于C:\用户[用户名] .android\debug.keystore"
他们还说要运行这个命令:
keytool -list -keystore [path-to-production-keystore]
但他们没有提到发布/生产密钥库的位置.
...它在哪里?
我正在制作一个 Express 服务器,它将视频从 youtube 播放列表转换为 xml 播客提要。我的 app.get 返回一些生成的 xml:
app.get("/", function(req, res) {
res.set('Content-Type', 'text/xml');
return res.send(xml(myXmlContent, { declaration: true }));
})
Run Code Online (Sandbox Code Playgroud)
我需要用一些数据填充 myXmlContent,包括 youtube 播放列表中的视频 ID。我可以使用 youtube API 来获取这些视频 ID,但它不是同步的。它在回调中返回 ID。
在从 app.get 返回之前,我怎样才能等到得到结果?我可能会以错误的方式解决这个问题,因为超时可能是一个问题。关于如何实现依赖异步调用的动态 xml 生成的任何建议?