从http://i.imgur.com/查找随机图像


11

Imgur徽标

Imgur是免费的图像托管服务。很多人使用它。这是imgur链接的示例:http ://i.imgur.com/T55muMD.png 。编写一个连续输出随机(有效)imgur链接的程序。例如,这是我的程序的一些示例输出(未显示,因为它包含一些您必须弄清楚自己的技巧):

http://i.imgur.com/uFmsA.png
http://i.imgur.com/FlpHS.png
http://i.imgur.com/eAbsZ.png
http://i.imgur.com/lEUsq.png
http://i.imgur.com/RuveH.png
http://i.imgur.com/BoEwB.png
http://i.imgur.com/HVFGQ.png
http://i.imgur.com/PZpMg.png
http://i.imgur.com/DezCY.png

有帮助的提示:

  • 如果imgur是新的,则使用5个字母的链接。
  • 当imgur是新的时,不使用数字。
  • 您可以利用它来发挥自己的优势:仅查找仅包含字母的5个字母的链接图像。那就是我的程序所做的。
  • 另外,所有图像均另存为.png

要求:

  • 连续输出随机imgur链接
  • 如果输出50条没有重复,则链接被认为足够“随机”
  • 访问时,链接必须是图像
  • 链接必须以http://i.imgur.com/和开头.png
  • 分数是字符数

我用452个字符用Java(打高尔夫球很困难)做到了。这里未显示,因为它包含一些技巧,您必须自己弄清楚!)


5
等一下,您对输出不应包含重复的随机定义是吗?
李斯特先生,2013年

7
警告: imgur上可能存在色情图片!=:o
Wizard先生

所有5个字母的图片都有效吗?
l4m2'1

Answers:


3

PHP 5.4,76个字符

URL仅使用大写字母按顺序生成,并且永不重复,符合规范的字母。

<?for($t=@ZZZZ;$t++;)file($u="http://i.imgur.com/$t.png")[0]>@F&&print"$u
";

4

Perl(93 + 4 = 97)

使用imgur自己的随机机制来获取图像URL,这些图像URL通常不是png URL:

$ perl -Mojo -E 'say+g("http://imgur.com/gallery/random")->dom->at("[rel=image_src]")->attrs("href")for+1..50'
http://i.imgur.com/7cNoA.jpg
...

(为此您需要Mojolicious。)


1
那太好了,所以不公平!
elssar

@elssar是的,至少是第二点。;)
memowe

哦,那很聪明:)
门把手

4

HTML(152)

<img src=x
onload=console.log(s);g()
onerror=g=function(){s='http://i.imgur.com/'+Math.random().toString(36).substr(2,6)+'.png';event.target.src=s};g()>

这会使用记录所有找到的图像在JavaScript控制台上console.log()。适用于所有经过测试的浏览器(Firefox,Chrome,IE9,Safari和Opera)。

有趣的是,眨眼间,各种有趣的图像都在闪烁:)。

尝试一下!(jsFiddle将其包装到更完整的HTML页面中,但是浏览器也接受单个元素。)

通过双击来支持惊人的随机字符串方法

在哪里可以看到JavaScript控制台和记录的图像?

  • Firefox:按Control-Shift-K(在Mac上为Command-Option-K)。取消选择那里的Net,CSS和JS按钮,仅选择Logging按钮。
  • Opera:按Control + Shift + i,选择“控制台”选项卡。
  • Chrome:按Control + Shift + i,选择“控制台”选项卡。在底部,选择日志。
  • Safari:基本上类似于Chrome,但请确保已激活Safari的开发人员工具。然后按Control + Alt + C(在Windows上,不确定Mac),而不是Control + Shift + i,选择“控制台”选项卡。在底部,选择日志。
  • IE:按F12键,选择“控制台”选项卡。

这不符合要求。它弹出的许多图像无效。
门把手

您所说的“无效”是什么意思?在控制台中,仅记录可以成功显示的图像(请参阅我的更新描述)。
Thomas W.

哦好的。现在重试。编辑:Chrome似乎也在记录无效图像。
门把手

Chrome默认情况下会混合显示错误消息和日志。在控制台选项卡的底部,您具有所有,错误,警告,日志。如果无法加载图像,则会显示图像URL 404错误。如果选择Logs,则仅应显示由我的代码生成的输出。
Thomas W.

3
许多记录的图像URL只是返回标准的imgur错误图像,该图像显示“您所请求的图像不存在或不再可用”。我想一个人可能会争辩说,在给定的规则下,这些结果仍然是有效的,因为返回的文档图像。
Ilmari Karonen

3

佩尔(87)

perl -pe's/\W//g;$_="http://i.imgur.com/$_.png\n";$_=""if`curl $_`=~/^</'</dev/urandom

有时会查找大写,小写和数字从0到任意字符的图像。


呵呵呵,urandom的
beary605

3

数学家 108

添加了空格。

While[True,
 Import@# /. _Image :> Print@# &[
  "http://i.imgur.com/" <> "a" ~CharacterRange~ "z" ~RandomChoice~ 5 <> ".png"
 ]
]

2

蟒(174 158 156)

我想要Python中较短的模块名称。这也是一种获取随机字母的简便方法。:)

import urllib,random
while 1:a='http://i.imgur.com/%s.png'%''.join(chr(random.randint(65,90))for i in'AAAAA');print('File'not in urllib.urlopen(a).read())*a

说明:

字符串中的模运算符是格式命令,在这种情况下,当“文件”(来自“未找到文件!”时)
a的网站名称(类型str
('File'not in urllib.urlopen(a).read())为True时,它将用5个随机大写字母替换字符串中的“%s” 是不是在URL中的在HTML中。(type bool
bool* str= strif bool= True,因此只有a在HTML代码中未找到“文件” 时才会输出。


规范的哪一部分说您必须同时使用大写和小写字母?chr(random.randint(65,90))
彼得·泰勒

我运行了它,但没有输出任何东西。不错的技巧'File':)
门把手

@PeterTaylor::)我不知道imgur上只有大写字母的任何链接,但是我想那显然是足够的。谢谢!
beary605

@Doorknob:除非找到链接,否则它将输出换行符,然后将提供链接。
beary605

1
任何长度为5的序列都可用于您的5个随机字符,因此您可以使用'XXXXX'而不是来刮掉一些字符range(5)。这还有一个优点,就是它和in。之间不需要空格。
Strigoides

2

独特的Python方法。 361 355 334 332 322 314个字符-有点模糊,没有什么困难。警告您,这可能会导致猫图片异常高的密度。

import json as j,urllib as o,time as t;a=0
while 1:
 q="i.imgur";y,p=('data','children');r="njj";h="erqqvg.pbz/";u="uggc://"+h+"e/"+r;c=j.loads(o.urlopen(u.decode('rot13')+".json?sorted=new&after=%s"%a).read())[y]
 for s in c[p]:
  f=s[y];w=f['url'].strip('?1')
  if w.find(q)!=-1:print w
 a=c['after'];t.sleep(3)

输出:

http://i.imgur.com/u3vyMCW.jpg
http://i.imgur.com/zF7rPAf.jpg
http://i.imgur.com/aDTl7OM.jpg
http://i.imgur.com/KONVsYw.jpg
http://i.imgur.com/RVM2pYi.png
http://i.imgur.com/tkMhc9T.jpg
http://i.imgur.com/KxUrZkp.gif
http://i.imgur.com/mnDTovy.jpg
http://i.imgur.com/WpuXbHb.jpg
http://i.imgur.com/qZA3mCR.jpg
http://i.imgur.com/AxMS1Fs.png
http://i.imgur.com/TLSd571.jpg
http://i.imgur.com/VfMhLIQ.jpg
http://i.imgur.com/Wu32582.jpg
http://i.imgur.com/hrmQL2F.jpg
http://i.imgur.com/Clg8N.jpg
http://i.imgur.com/7Wsko.jpg
http://i.imgur.com/Rhb0UNx.jpg
http://i.imgur.com/LAXAf45.gif
http://i.imgur.com/jhOLJ9B.jpg
http://i.imgur.com/FQ9NeAl.jpg
http://i.imgur.com/oqzf6tE.jpg
http://i.imgur.com/rnpXs1A.jpg
http://i.imgur.com/DfUIz6k.jpg
http://i.imgur.com/orfGA5I.jpg
http://i.imgur.com/wBT7JNt.jpg
http://i.imgur.com/RycK1m2.jpg
http://i.imgur.com/7j21FIR.jpg
http://i.imgur.com/z2tVnNC.jpg
http://i.imgur.com/mnsAGuF.jpg
http://i.imgur.com/vIZM1NY.jpg
http://i.imgur.com/JT3XRI4.jpg
http://i.imgur.com/SNpwTmp.jpg
http://i.imgur.com/u9ynLb9.jpg
http://i.imgur.com/DrFWsBP.jpg
http://i.imgur.com/rU6oyup.jpg
http://i.imgur.com/XxBD5nl.jpg
http://i.imgur.com/d09qQzP.jpg
http://i.imgur.com/vvPSbqI.jpg
http://i.imgur.com/1hdfobQ.jpg
http://i.imgur.com/4LLC6Vs.jpg
http://i.imgur.com/RfasxO2.jpg
http://i.imgur.com/BBcpOos.jpg
http://i.imgur.com/zMH8mgG.jpg
http://i.imgur.com/7g8k2Ww.jpg

3
所有图像...是动物吗?这里有些诡计:P +1,因为我喜欢可爱的动物:3
Doorknob

1

R,182个字符

library(httr);while(0<1){s=paste("http://i.imgur.com/",paste(sample(c(LETTERS,letters),5),collapse=""),".png",sep="");if(HEAD(s)$headers$'content-type'=='text/html')'' else print(s)}

1

Python,153个字符

import string as s,random as w,requests as r
while 1:
 t='http://i.imgur.com/%s.png'%''.join(w.sample(s.letters,5))
 if'not'not in r.get(t).text:print t

在此过程中,它的速度很慢,可能需要花费几秒钟才能返回任何输出。

受@ beary605解决方案的启发-当我计划按内容类型标题检查图像时,他为我节省了一大堆字符。


random.sample:)这是选择字符的更​​好方法。
beary605

是的,令人惊讶的是Code Code会迫使您进入Google并学习。
elssar

1

重击(129,121)(117,109)

我有两个版本:一个迭代版本和一个无穷递归版本(这将慢慢耗尽所有内存)。两个版本都检查是否确实存在PNG文件(忽略jpg,gif和其他文件类型)。

迭代(旧)(129):

while true;do u=http://i.imgur.com/$(tr -dc a-zA-Z</dev/urandom|head -c5).png;curl $u -s 2>&1|head -c4|grep PNG$ -q&&echo $u;done

递归(旧)(121):

:(){ u=http://i.imgur.com/$(tr -dc a-zA-Z</dev/urandom|head -c5).png;curl $u -s 2>&1|head -c4|grep PNG$ -q&&echo $u;:;};:

注意:grep可能存在兼容性问题。我的grep手册指出,-s使grep的输出静音,但它什么也不做。然而,使用--quiet--silent-q代替工作。

编辑:

阅读/codegolf//a/10499/7195之后现在使用内容标题:)

迭代(117):

while true;do u=http://i.imgur.com/$(tr -dc a-zA-Z</dev/urandom|head -c5).png;curl $u -sI|grep image -q&&echo $u;done

递归(109):

:(){ u=http://i.imgur.com/$(tr -dc a-zA-Z</dev/urandom|head -c5).png;curl $u -sI|grep image -q&&echo $u;:;};:

1

红宝石(103个字符)

require"open-uri";loop{u="http://i.imgur.com/#{rand(1e9).to_s(36)[0,5]}.png";open u rescue next;puts u}

您必须.png在URL末尾添加a 。
门把手

@Doorknob:哎呀,已解决
匿名胆小鬼

0

Bash /命令行工具,72个字符

借用@memowe的聪明技巧

curl -sL http://imgur.com/gallery/random|grep e_sr|cut -d\" -f4;exec $0

通过在同一处理空间内重新执行自身,可以实现连续循环。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.