Tìm hình ảnh ngẫu nhiên từ http://i.imgur.com/


11

Logo Imgur

Imgur là một dịch vụ lưu trữ hình ảnh miễn phí. Nhiều người sử dụng nó. Dưới đây là ví dụ về liên kết imgur: http://i.imgur.com/T55muMD.png . Viết chương trình liên tục xuất các liên kết imgur ngẫu nhiên (hợp lệ). Ví dụ, đây là một số đầu ra mẫu của progam của tôi (không được hiển thị vì nó chứa một số thủ thuật bạn sẽ phải tự mình tìm ra):

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

Những gợi ý có ích:

  • Khi imgur mới, liên kết 5 chữ cái đã được sử dụng.
  • Khi imgur mới, số không được sử dụng.
  • Bạn có thể sử dụng điều này để lợi thế của bạn: chỉ tìm thấy hình ảnh liên kết 5 chữ cái chỉ có chữ cái. Đó là những gì chương trình của tôi làm.
  • Ngoài ra, tất cả các hình ảnh được lưu dưới dạng .png.

Yêu cầu:

  • Liên tục xuất liên kết imgur ngẫu nhiên
  • Liên kết được coi là đủ "ngẫu nhiên" nếu 50 được xuất ra mà không lặp lại
  • Khi truy cập, liên kết phải là một hình ảnh
  • Liên kết phải bắt đầu bằng http://i.imgur.com/và kết thúc bằng.png
  • Điểm là số lượng ký tự

Tôi đã làm điều đó bằng Java (TERRIBLE để chơi gôn) trong 452 ký tự. Không được hiển thị ở đây vì nó chứa một số thủ thuật bạn sẽ phải tự mình tìm ra!)


5
Đợi đã, định nghĩa ngẫu nhiên của bạn là đầu ra không nên lặp lại?
Ông Lister

7
Cảnh báo: hình ảnh khiêu dâm có thể có mặt trên imgur! =: o
Mr.Wizard

Tất cả hình ảnh 5 chữ cái có hợp lệ không?
l4m2

Câu trả lời:


3

PHP 5,4, 76 ký tự

Các URL được tạo theo thứ tự liên tiếp chỉ sử dụng các chữ cái viết hoa và không bao giờ lặp lại, đáp ứng các chữ cái của đặc tả.

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

4

Perl (93 + 4 = 97)

Sử dụng cơ chế ngẫu nhiên của imgur để nhận URL hình ảnh của họ , không phải là URL png hầu hết thời gian:

$ 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
...

(Bạn cần Mojolicy cho việc này.)


1
Thật tuyệt vời, và thật không công bằng!
elssar

@elssar Đúng vậy, ít nhất là điểm thứ hai của bạn. ;)
memowe

Ôi, thật là thông minh :)
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()>

Điều này ghi lại tất cả các hình ảnh tìm thấy trên bảng điều khiển JavaScript bằng cách sử dụng console.log(). Hoạt động trong tất cả các trình duyệt được thử nghiệm (Firefox, Chrome, IE9, Safari và Opera).

Điều thú vị là tất cả các loại hình ảnh vui nhộn đang lóe lên trong chớp mắt :).

Thử nó! (jsFiddle kết thúc điều này vào một trang HTML hoàn chỉnh hơn, nhưng các trình duyệt cũng chấp nhận thành phần đơn lẻ.)

Đạo cụ cho phương pháp chuỗi ngẫu nhiên tuyệt vời bằng mystletap !

Tôi có thể thấy bảng điều khiển JavaScript và hình ảnh đã ghi ở đâu?

  • Firefox: Nhấn Control-Shift-K (Command-Option-K trên máy Mac). Bỏ chọn các nút Net, CSS và JS ở đó, chỉ chọn nút Ghi nhật ký.
  • Opera: Nhấn Control + Shift + i, chọn tab Console.
  • Chrome: Nhấn Control + Shift + i, chọn tab Bảng điều khiển. Ở phía dưới, chọn Nhật ký.
  • Safari: Về cơ bản giống như Chrome, nhưng trước tiên hãy đảm bảo rằng các công cụ dành cho nhà phát triển của Safari được kích hoạt . Sau đó nhấn Control + Alt + C (trên Windows, không chắc chắn trên Mac) thay vì Control + Shift + i, chọn tab Console. Ở phía dưới, chọn Nhật ký.
  • IE: Nhấn F12, chọn tab giao diện điều khiển.

Điều này không đáp ứng yêu cầu. Nhiều hình ảnh nó bật lên là không hợp lệ.
Doorknob

"Không hợp lệ" nghĩa là gì? Trong bảng điều khiển, chỉ những hình ảnh có thể được hiển thị thành công mới được ghi lại (xem mô tả được cập nhật của tôi).
Thomas W.

Ờ được rồi. Đang thử lại bây giờ. Chỉnh sửa: Chrome dường như cũng đang ghi lại những hình ảnh không hợp lệ.
Doorknob

Chrome theo mặc định trộn các thông báo lỗi và nhật ký. Ở dưới cùng của tab giao diện điều khiển, bạn có Tất cả, Lỗi, Cảnh báo, Nhật ký. Nếu không thể tải hình ảnh, nó sẽ hiển thị lỗi 404 với URL hình ảnh. Nếu bạn chọn Nhật ký, thì chỉ có đầu ra được tạo bởi mã của tôi sẽ hiển thị.
Thomas W.

3
Rất nhiều URL hình ảnh được ghi lại chỉ trả về hình ảnh lỗi imgur tiêu chuẩn có nội dung "Hình ảnh bạn đang yêu cầu không tồn tại hoặc không còn khả dụng." Tôi cho rằng người ta có thể lập luận rằng đó vẫn là những kết quả hợp lệ theo các quy tắc như được đưa ra, vì tài liệu trả về một hình ảnh.
Ilmari Karonen

3

Perl (87)

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

Tìm hình ảnh với chữ hoa, chữ thường và chữ số từ 0 cho đến bất kỳ ký tự nào, một ngày nào đó.


Hehehe, urandom
beary605

3

Toán học , 108

Không gian trắng thêm vào.

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

2

Con trăn ( 174 158 156)

Tôi muốn tên mô-đun ngắn hơn trong Python. Cũng là một phương pháp dễ dàng hơn để có được các chữ cái ngẫu nhiên. :)

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

Giải trình:

Toán tử mô đun trên chuỗi là lệnh định dạng, trong trường hợp này, nó thay thế '% s' trong chuỗi bằng 5 chữ cái viết hoa ngẫu nhiên
alà tên trang web (loại str)
('File'not in urllib.urlopen(a).read())là True khi 'Tệp' (từ 'Không tìm thấy tệp!') là không tìm thấy trong mã HTML của URL. (loại bool)
bool* str= strif bool= True, vì vậy nó sẽ chỉ xuất ra anếu không tìm thấy 'Tệp' trong mã HTML.


Phần nào của thông số kỹ thuật nói rằng bạn phải sử dụng cả chữ in hoa và chữ thường? chr(random.randint(65,90))
Peter Taylor

Tôi đã chạy nó và nó không xuất ra bất cứ điều gì. 'File'Mặc dù vậy, mẹo hay đó :)
Doorknob

@PeterTaylor: :) Tôi không biết rằng có bất kỳ liên kết nào trên imgur chỉ có chữ in hoa, nhưng tôi đoán điều đó là đủ rõ ràng. Cảm ơn!
beary605

@Doorknob: Nó xuất ra một dòng mới trừ khi tìm thấy một liên kết, sau đó nó sẽ cung cấp một liên kết.
beary605

1
Bất kỳ chuỗi có độ dài 5 sẽ hoạt động cho 5 ký tự ngẫu nhiên của bạn, vì vậy bạn có thể loại bỏ một vài ký tự bằng cách sử dụng một cái gì đó giống như 'XXXXX'hơn là range(5). Điều này cũng có lợi thế là không yêu cầu khoảng trắng giữa nó và in.
Strigoides

2

Cách tiếp cận Python độc đáo. 361 355 334 332 322 314 ký tự - hơi khó hiểu, không có gì quá khó khăn. Có thể dẫn đến mật độ cao của hình ảnh con mèo, bạn đã được cảnh báo.

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)

Đầu ra:

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
Tất cả hình ảnh ... là động vật? Có một số mánh khóe đang diễn ra ở đây: P +1 vì tôi thích những con vật dễ thương: 3
Doorknob

1

R, 182 ký tự

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 ký tự

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

Trong khi điều này hoạt động, nó chậm máu và có thể mất nhiều giây trước khi trả lại bất kỳ đầu ra nào.

Lấy cảm hứng từ giải pháp của @ beary605 - anh ấy đã cứu tôi một loạt các nhân vật khi tôi dự định kiểm tra hình ảnh bằng tiêu đề kiểu nội dung.


random.sample:) Đó là một cách tốt hơn để lựa chọn nhân vật.
beary605

Đúng, thật tuyệt vời khi Code golf sẽ buộc bạn đến Google và học hỏi.
elssar

1

Bash (129, 121) (117, 109)

Tôi đã có hai phiên bản: một phiên bản lặp và một đệ quy vô tận (sẽ dần dần ăn hết bộ nhớ). Cả hai phiên bản đều kiểm tra xem thực sự có tệp PNG hay không (jpg's, gif's và các loại tệp khác bị bỏ qua).

Lặp lại (cũ) (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

Đệ quy (cũ) (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;:;};:

Lưu ý : Có thể có một vấn đề tương thích với grep. Hướng dẫn grep của tôi nói rằng -sim lặng đầu ra của grep nhưng nó không làm gì cả. Tuy nhiên, sử dụng --quiet, --silenthoặc -qthay vào đó hoạt động.

BIÊN TẬP:

Sử dụng tiêu đề nội dung ngay bây giờ sau khi đọc /codegolf//a/10499/7195 :)

Lặp lại (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

Đệ quy (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

Bash / công cụ dòng lệnh, 72 ký tự

Mượn kỹ thuật thông minh của @ memowe :

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

Điều này đạt được một vòng lặp liên tục bằng cách tự thực hiện lại trong cùng một không gian quy trình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.