Python 正在检索特定用户集的订阅数和订阅者数
我正在尝试检索特定用户集的订阅数和订阅者数。我正在使用用于Python的YouTube API 我为订阅数量编写了以下代码。此代码从列表中逐个读取用户的ID,统计其订阅数,并将ID和数字写入CSV文件中。但它不能正常工作。在第一个用户的几次操作之后,它停止在文件中写入数字,并且这些数字无论如何都不正确。 我认为应该有比这更简单的事情 谢谢,我感谢你的建议和评论Python 正在检索特定用户集的订阅数和订阅者数,python,youtube-api,Python,Youtube Api,我正在尝试检索特定用户集的订阅数和订阅者数。我正在使用用于Python的YouTube API 我为订阅数量编写了以下代码。此代码从列表中逐个读取用户的ID,统计其订阅数,并将ID和数字写入CSV文件中。但它不能正常工作。在第一个用户的几次操作之后,它停止在文件中写入数字,并且这些数字无论如何都不正确。 我认为应该有比这更简单的事情 谢谢,我感谢你的建议和评论 import os import gdata.youtube import gdata.youtube.service import t
import os
import gdata.youtube
import gdata.youtube.service
import time
def GetUserUrl (username):
yt_service = gdata.youtube.service.YouTubeService()
uri = 'https://gdata.youtube.com/feeds/api/users/%s/subscriptions?max-results=50&start-index=1' % username
subscription_feed = yt_service.GetYouTubeSubscriptionFeed(uri)
T1 = GetUserSub(subscription_feed)
final = 0
j = 1
total = 0
while j<800:
j = j + 50
sj = str(j)
uri = 'https://gdata.youtube.com/feeds/api/users/%s/subscriptions?max-results=50&start-index=' % username+sj
subscription_feed = yt_service.GetYouTubeSubscriptionFeed(uri)
T2 = GetUserSub(subscription_feed)
total = total + T2
final = total + T1
usersub.writelines([str(username),',',str(final),'\n'])
def GetUserSub (subscription_feed):
i = 0
for entry in subscription_feed.entry:
i = i +1
return i
usersub = open ('usersubscribtions.csv','w')
users=[]
userlist = open("user_ids_noduplicates1.txt","r")
text1 = userlist.readlines()
for l in text1:
users.append(l.strip().split()[0])
x = 0
while (x<len(users)):
try:
GetUserUrl(users[x])
time.sleep(0.4)
x = x+1
except:
usersub.writelines([str(users[x]),'\n'])
x = x+1
pass
usersub.close()
导入操作系统
导入gdata.youtube
导入gdata.youtube.service
导入时间
def GetUserUrl(用户名):
yt_service=gdata.youtube.service.youtube服务()
乌里https://gdata.youtube.com/feeds/api/users/%s/subscriptions?max-结果=50&开始索引=1'%username
订阅订阅源=yt\u服务。GetYouTubeSubscriptionFeed(uri)
T1=GetUserSub(订阅源)
最终=0
j=1
总数=0
虽然j如果您只是试图获取订阅者的总数,那么您不需要计算提要中的项目-它是数据API的v3中提供的值
您只需使用正在查找的用户的channelId调用Channels资源:
答复:
{
"kind": "youtube#channelListResponse",
"etag": "\"O7gZuruiUnq-GRpzm3HckV3Vx7o/wC5OTbvm5Z2-sKAqmTfH4YDQ-Gw\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"id": "UCDsO-0Yo5zpJk575nKXgMVA",
"kind": "youtube#channel",
"etag": "\"O7gZuruiUnq-GRpzm3HckV3Vx7o/xRjATA5YtH9wRO8Uq6Vq4D45vfQ\"",
"statistics": {
"viewCount": "80667849",
"commentCount": "122605",
"subscriberCount": "4716360",
"videoCount": "163"
}
}
]
}
如您所见,subscriberCount包含在响应中。感谢Matt的回答。这听起来很简单,但我并不完全理解它是如何工作的。我浏览了文档:。但是我不明白应该如何设置参数(我认为应该将用户id分配到“id”)并拨打电话。请查看我的回答,了解在您只有用户名时如何获取频道id:。用户id的格式如下:UCDsO-0Yo5zpJk575nKXgMVA