Twitter使用WOE_ID返回印度24个城镇的相同热门话题。

问题描述 投票:0回答:1

我已经得到了印度某地的趋势,使用的是 trends/available API

{
    'name': 'Bhopal',
    'placeType': {
      'code': 7,
      'name': 'Town'
    },
    'url': 'http://where.yahooapis.com/v1/place/2295407',
    'parentid': 23424848,
    'country': 'India',
    'woeid': 2295407,
    'countryCode': 'IN'
  },
  {
    'name': 'Indore',
    'placeType': {
      'code': 7,
      'name': 'Town'
    },
    'url': 'http://where.yahooapis.com/v1/place/2295408',
    'parentid': 23424848,
    'country': 'India',
    'woeid': 2295408,
    'countryCode': 'IN'
  },
  {
    'name': 'Thane',
    'placeType': {
      'code': 7,
      'name': 'Town'
    },
    'url': 'http://where.yahooapis.com/v1/place/2295410',
    'parentid': 23424848,
    'country': 'India',
    'woeid': 2295410,
    'countryCode': 'IN'
  },
  {
    'name': 'Mumbai',
    'placeType': {
      'code': 7,
      'name': 'Town'
    },
    'url': 'http://where.yahooapis.com/v1/place/2295411',
    'parentid': 23424848,
    'country': 'India',
    'woeid': 2295411,
    'countryCode': 'IN'
  },
  {
    'name': 'Pune',
    'placeType': {
      'code': 7,
      'name': 'Town'

我在代码中传递了不同的woeid。 twitter_api.trends.place(_id=town_woeid) 并为每个城市的Woeid提供相同的热门话题。/trends/place 顶端

这里是做这个的部分代码。

woids = {'Nagpur':2295412, 'Lucknow':2295377,'Kanpur':2295378, 'Patna':2295381, 'Ranchi':2295383,'Kolkata':2295386, 'Srinagar':2295387, 'Amritsar':2295388,\
         'Jaipur':2295401,'Ahmedabad':2295402, 'Rajkot':2295404, 'Surat':2295405, 'Bhopal':2295407, 'Indore':2295408, 'Thane':2295410, 'Mumbai':2295411, 'Pune':2295412,\
         'Hyderabad':2295414, 'Bangalore':2295420, 'Chennai':2295424}

        for key in woids.keys():
            print(key, " id: ", woids[key])
            trends = self.twitter_api.trends.place(_id=woids[key])
            print("--------called api ---------- ", trends)
            with open(key+"_Trending.txt", "w+") as f:
                for trending in trends[0]['trends']:
                    print(trending['name'], '-----', trending['tweet_volume'])
                    f.write(trending['name']+ '-----'+str(trending['tweet_volume']))
                    f.write("\n")

这里是每个城市的相同结果。但它应该为每个城市提供不同的热门话题,对吗?

#RiyazNaikoo ----- 69420
X Æ A-12 ----- 977101
#IUxSUGA ----- 1635605
#HumModiKeSathHain ----- 23887
#IndiaHealthHour ----- None
#सफूरा_जरगर_मेरी_बहन_है ----- 127206
Justice 4 Sea ----- None
मौत मारा ----- 14506
Joonie ----- 25503
slavery ----- 31570
Top Hizbul ----- None
Most Photogenic Star ----- None
Rs 1,610 ----- None
Mysuru ----- None
Anna Hazare ----- None
Kamal Hassan ----- None
#BeingHaangryy ----- 12197
#boislockeroom ----- None
#हंसराज_का_जीजा_कौन_है ----- 19033
#BJPTheRealAntiNational ----- 10857
#गद्दार_मोदी_लुटेरा_है ----- 72618
#पप्पू_तो_गद्दार_है ----- 81990
#GoldQuarantineAwards ----- None
#HizbulMujahideen ----- None
#SidHeartsWishHBDVinduSir ----- 51926
#EXWeek ----- None
#eightiscoming ----- 129374
#भगवा_शेर_योगी_जी ----- None
#SenaKaBadla ----- None
#Thalapathy65 ----- 17290
#MODIJI_HelpUs ----- 123497
#ArrestSwatiMaliwal ----- None
#TerrorismFreeKashmir ----- None
#NarasimhaJayanti ----- None
#TTVcondemnsTASMACopening ----- None
#HBDSundeepKishan ----- None
#आरक्षण_के_जनक ----- 60779
#ஊழலின்_புகலிடம்_அதிமுக ----- 12779
#JassieGill ----- None
#4YearsOfAwestruck24Movie ----- 50243
#भारतीय_सेना ----- None
#JaiHindKiSena ----- None
#ILoveRedmiNote ----- None
#ShameOnYouFadanvis ----- None
Lucknow  id:  2295377

谁能告诉我是否我做错了什么,或者是twitter那边的缓存问题?谢谢,我已经得到了一个城市的热门话题。

twitter twitter-oauth twitter4j trending twitterapi-python
1个回答
0
投票

在一个国家内,每个地方的趋势是完全可能不一样的。这取决于Twitter趋势被记录的级别。Trends API和你在Twitter用户界面上看到的趋势是不同的,因为UI有基于登录用户的个性化数据。如果你确实在某些日子里看到不同城镇之间的数据,那么我会同意你的建议,这可能是一个临时的缓存问题,但除此之外,我认为这是潜在的预期行为。


0
投票

你可以使用twitter4j一个Java API,它可以很容易地根据位置WOEID返回最新的热门微博。你只需要在java IDE中编写下面的代码,并在你的java库中安装twitter4j jar,这样它就可以访问所有需要的方法。

 #1 is WOEID code for worldwide
     Trends trends = twitter.getPlaceTrends(1);
     int count = 0;
     for (Trend trend : trends.getTrends()) {
     #you can change the  count value depending upon your requirement.
     if (count < 10) 
       {
         System.out.println(trend.getName() + "," + trend.getTweetVolume());
       }

但在这段代码之前,你必须设置twitter4j实例。你可以直接在twitter4j的官方网站上获得这些配置细节,以及如何开始使用wiiter4j所需的所有必要步骤。

© www.soinside.com 2019 - 2024. All rights reserved.