【问题标题】:Shortened URLs need randomising缩短的 URL 需要随机化
【发布时间】:2014-04-06 22:26:33
【问题描述】:

我有以下几乎可以正常工作的代码。三个 URL 被缩短,然后放入三个不同推文的内容中,然后提交到推特。但是,每次缩短 URL 时,缩短的 URL 都是相同的。因此,推文不断被推特垃圾邮件过滤器捕获。

有没有办法随机化缩短 URL 的外观以阻止这种情况发生,或者完全使用 import tinyurl 或其他方法?

import simplejson
import httplib2
import twitter
import tinyurl

print("Python will now attempt to submit tweets to twitter...")

try:

    api = twitter.Api(consumer_key='',
                      consumer_secret='',
                      access_token_key='',
                      access_token_secret='')

    for u in tinyurl.create('http://audiotechracy.blogspot.co.uk/2014/03/reviewing-synapse-antidote-rack.html',
                        'http://audiotechracy.blogspot.co.uk/2014/03/free-guitar-patches-for-propellerhead.html',
                        'http://audiotechracy.blogspot.co.uk/2014/02/get-free-propellerhead-rock-and-metal.html',
                        ):
        print u
        linkvar1 = u
        linkvar2 = u
        linkvar3 = u

    status = api.PostUpdate("The new Synapse Antidote Rack Extension:" + linkvar1 + " #propellerhead #synapse")
    status = api.PostUpdate("Free Propellerhead guitar patches for everyone!" + linkvar2 + " #propellerhead #reason #guitar")
    status = api.PostUpdate("Free Metal and Rock drum samples!" + linkvar3 + " #propellerhead #reason)


    print("Tweets submitted successfully!")

except Exception,e:
    print str(e)    
    print("Twitter submissions have failed!!!")

谢谢

【问题讨论】:

标签: python twitter tinyurl


【解决方案1】:

当您循环遍历tinyurl.create 的结果时,您每次都将其分配给所有三个linkvar 变量,因此当循环结束时,所有三个变量都将等于u 的最后一个值。

如果您总是要处理相同数量的 URL,您可以将它们显式分配给变量:

linkvar1, linkvar2, linkvar3 = tinyurl.create(
    'http://audiotechracy.blogspot.co.uk/2014/03/reviewing-synapse-antidote-rack.html',
    'http://audiotechracy.blogspot.co.uk/2014/03/free-guitar-patches-for-propellerhead.html',
    'http://audiotechracy.blogspot.co.uk/2014/02/get-free-propellerhead-rock-and-metal.html',
)

如果 URL 的数量可能会发生变化,那么您最好使用 list 并将您想要的结果编入索引:

linkvars = tinyurl.create(
    'http://audiotechracy.blogspot.co.uk/2014/03/reviewing-synapse-antidote-rack.html',
    'http://audiotechracy.blogspot.co.uk/2014/03/free-guitar-patches-for-propellerhead.html',
    'http://audiotechracy.blogspot.co.uk/2014/02/get-free-propellerhead-rock-and-metal.html',
)
status = api.PostUpdate("The new Synapse Antidote Rack Extension:" + linkvars[0] + " #propellerhead #synapse")
status = api.PostUpdate("Free Propellerhead guitar patches for everyone!" + linkvars[1] + " #propellerhead #reason #guitar")
...

【讨论】:

  • 对不起,一旦我意识到他们需要缩进,该网站允许我编辑帖子......基本上他们应该在 for 循环中进行。这样 u 的第一个实例被馈送到第一条推文,第二个被馈送到第二条推文,第三个被馈送到第三条推文。问题是 tinyurl 生成的 url 总是相同的,因为被缩短的链接总是相同的。网站本身有一个自定义域选项可以解决这个问题,但我找不到任何关于如何编码的示例语法。
  • 如果您提供的代码不正确,请更新。实际上,您正在循环三个缩短的 url:第一个分配给所有 3 个linkvars,然后第二个分配给所有 3 个linkvars 等等。循环完成后,所有 3 个linkvars 都是等于 last 缩短的 url。您是否尝试过我上面提供的第一个建议?当我运行它时,我得到了 3 个不同的 tinyurl 分配给变量。
  • @matthewtrevor...如上所述,我不能...由于某种原因,我无法再在 SO 上编辑代码...我不知道这是浏览器问题还是网站问题。跨度>
猜你喜欢
  • 2014-05-01
  • 2011-07-22
  • 2013-12-26
  • 2011-07-21
  • 2013-06-12
  • 1970-01-01
  • 2011-08-30
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多