ค้นหาภาพสุ่มจาก http://i.imgur.com/


11

โลโก้ Imgur

Imgur เป็นบริการโฮสต์รูปภาพฟรี หลายคนใช้มัน นี่คือตัวอย่างของการเชื่อมโยง Imgur นี้: http://i.imgur.com/T55muMD.png เขียนโปรแกรมที่แสดงลิงค์ imgur แบบสุ่ม (ใช้ได้) อย่างต่อเนื่อง ตัวอย่างเช่นต่อไปนี้เป็นตัวอย่างผลลัพธ์บางส่วนของ progam ของฉัน (ไม่แสดงเพราะมันมีลูกเล่นบางอย่างที่คุณจะต้องคิดออกเอง):

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
  • คะแนนคือจำนวนตัวอักษร

ฉันทำมันใน Java (TERRIBLE เพื่อเล่นกอล์ฟ) ใน 452 ตัวอักษร ไม่แสดงที่นี่เพราะมันมีลูกเล่นบางอย่างที่คุณจะต้องคิดด้วยตัวคุณเอง!)


5
เดี๋ยวก่อนคำจำกัดความของคุณคือการสุ่มที่เอาท์พุทไม่ควรมีการทำซ้ำ?
นาย Lister

7
คำเตือน:อาจมีภาพลามกอนาจารบน imgur! =: o
Mr.Wizard

รูปภาพ 5 ตัวอักษรทั้งหมดใช้ได้หรือไม่
l4m2

คำตอบ:


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 รูปภาพที่ไม่ได้ 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 ถูกต้องอย่างน้อยก็จุดที่สองของคุณ ;)
บันทึก

โอ้ช่างฉลาด :)
Doorknob

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 ที่สมบูรณ์ยิ่งขึ้น แต่เบราว์เซอร์ก็ยอมรับองค์ประกอบเดียวด้วย)

อุปกรณ์ประกอบฉากไปยังวิธีการสตริงสุ่มที่น่าตื่นตาตื่นใจโดยdoubletap !

ฉันจะดูคอนโซล JavaScript และภาพที่บันทึกได้ที่ไหน

  • Firefox:กด Control-Shift-K (Command-Option-K บน Mac) ยกเลิกการเลือกปุ่ม Net, CSS และ JS ที่นั่นเพียงเลือกปุ่ม Logging
  • Opera:กด Control + Shift + i เลือกแท็บ Console
  • Chrome:กด Control + Shift + i เลือกแท็บคอนโซล ที่ด้านล่างให้เลือกบันทึก
  • Safari:โดยพื้นฐานแล้วเหมือนกับ Chrome แต่ต้องแน่ใจก่อนว่าเครื่องมือของนักพัฒนาซอฟต์แวร์ของ Safari เปิดใช้งานแล้ว จากนั้นกด Control + Alt + C (บน Windows ไม่แน่ใจบน Mac) แทน Control + Shift + i ให้เลือกแท็บคอนโซล ที่ด้านล่างให้เลือกบันทึก
  • IE:กด F12 เลือกแท็บคอนโซล

สิ่งนี้ไม่เป็นไปตามข้อกำหนด รูปภาพจำนวนมากที่ปรากฏขึ้นไม่ถูกต้อง
Doorknob

คุณหมายถึงอะไรโดย "ไม่ถูกต้อง" ในคอนโซลภาพที่สามารถแสดงได้สำเร็จเท่านั้นที่ถูกบันทึกไว้ (ดูคำอธิบายที่อัปเดตของฉัน)
โธมัสดับเบิลยู.

ตกลง. ลองใหม่ในขณะนี้ แก้ไข: Chrome ดูเหมือนว่ากำลังบันทึกภาพที่ไม่ถูกต้องเช่นกัน
Doorknob

Chrome โดยค่าเริ่มต้นจะผสมข้อความแสดงข้อผิดพลาดและบันทึก ที่ด้านล่างของแท็บคอนโซลคุณมีทั้งหมด, ข้อผิดพลาด, คำเตือน, บันทึก หากไม่สามารถโหลดภาพได้แสดงว่าเกิดข้อผิดพลาด 404 กับ URL รูปภาพ หากคุณเลือกบันทึกแล้วเฉพาะผลลัพธ์ที่สร้างโดยรหัสของฉันควรแสดง
โทมัสดับบลิว

3
URL รูปภาพที่บันทึกไว้จำนวนมากเพิ่งส่งคืนรูปภาพข้อผิดพลาด imgur มาตรฐานที่ระบุว่า "ไม่มีรูปภาพที่คุณกำลังร้องขอหรือไม่มีอีกต่อไป" ฉันคิดว่าหนึ่งอาจโต้แย้งว่ายังคงเป็นผลลัพธ์ที่ถูกต้องภายใต้กฎที่กำหนดเนื่องจากเอกสารที่ส่งคืนเป็นภาพ
Ilmari Karonen

3

Perl (87)

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

การค้นหาภาพด้วยตัวพิมพ์ใหญ่ตัวพิมพ์เล็กและตัวเลขตั้งแต่ 0 ถึงตัวอักษรใดก็ได้ในบางวัน


Hehehe, urandom
beary605

3

Mathematica , 108

เพิ่มพื้นที่สีขาว

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

2

Python ( 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

คำอธิบาย:

ตัวดำเนินการโมดูลัสบนสตริงคือคำสั่งการจัดรูปแบบในกรณีนี้มันแทนที่ '% s' ในสตริงที่มีตัวอักษรตัวพิมพ์ใหญ่ 5 ตัว
aคือชื่อเว็บไซต์ (ประเภทstr)
('File'not in urllib.urlopen(a).read())เป็นจริงเมื่อ 'ไฟล์' (จาก 'ไม่พบไฟล์!') จะไม่พบใน HTML ของ URL (type bool)
bool* str= strif bool= True ดังนั้นจะส่งออกเฉพาะaเมื่อไม่พบ 'ไฟล์' ในรหัส HTML


สเป็คส่วนใดที่บอกว่าคุณต้องใช้ทั้งตัวอักษรพิมพ์ใหญ่และพิมพ์เล็ก? chr(random.randint(65,90))
Peter Taylor

ฉันวิ่งแล้วมันก็ไม่ออกอะไรเลย เคล็ดลับดี ๆ ด้วย'File':)
Doorknob

@PeterTaylor: :) ฉันไม่รู้ว่ามีลิงก์ใด ๆ บน imgur ที่มีตัวอักษรตัวพิมพ์ใหญ่เพียงตัวเดียว แต่ฉันเดาว่ามันจะชัดเจนพอ ขอบคุณ!
beary605

@Doorknob: มันจะขึ้นบรรทัดใหม่หากไม่พบลิงค์จากนั้นจะให้ลิงค์
beary605

1
ลำดับความยาว 5 ใด ๆ จะใช้ได้กับอักขระสุ่ม 5 ตัวของคุณดังนั้นคุณสามารถกำจัดอักขระบางตัวได้โดยใช้บางอย่าง 'XXXXX'range(5)มากกว่า inนอกจากนี้ยังได้ประโยชน์จากการไม่ต้องเว้นวรรคระหว่างมันและที่
Strigoides

2

วิธีการที่ไม่ซ้ำงูหลาม 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 Golf จะบังคับคุณให้ไปที่ Google และเรียนรู้
elssar

1

Bash (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แทนที่จะทำงาน

แก้ไข:

ใช้ส่วนหัวของเนื้อหาทันทีหลังจากอ่านhttps://codegolf.stackexchange.com/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;:;};:


0

เครื่องมือทุบตี / บรรทัดคำสั่ง 72 ตัวอักษร

เทคนิคที่ชาญฉลาดของการยืม @ memowe :

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

สิ่งนี้ทำให้เกิดการวนซ้ำอย่างต่อเนื่องโดยเรียกใช้ตัวเองอีกครั้งภายในพื้นที่กระบวนการเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.