দুর্দান্ত গ্ল্যামার শট


11

এখানে চিত্র বর্ণনা লিখুন

ওয়েবে আজ এই ছবিটি পাওয়া গেছে। একটি অলস প্রোগ্রামার হওয়ায় আমি আসলে গুগল খুলতে এবং কয়েকটি অক্ষর টাইপ করতে চাই না। অনেক বেশি কাজ! এটি এমন একটি গুরুত্বপূর্ণ কাজ যে এটি স্বয়ংক্রিয়ভাবে হওয়া উচিত।

চ্যালেঞ্জ

সকলেই জানেন যে গুগল অনুসন্ধান ফলাফলের প্রথম চিত্রটি সর্বদা সেরা। সুতরাং এটি ব্যবহারকারীর সামনে উপস্থাপন করা উচিত।

আপনাকে এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা প্যারামিটার হিসাবে একটি স্ট্রিং নেয় এবং যখন আপনি সেই নামটি + এর glamour shotপেছনের শব্দগুলি অনুসন্ধান করেন তখন গুগলে এটি খুঁজে পাওয়া প্রথম চিত্রটি প্রদর্শন করে ।

গুগল অনুসন্ধান অনুসন্ধান

Google এ চিত্রগুলি অনুসন্ধান করার জন্য, URL ক্যোয়ারী মাপদন্ড থাকা উচিত tbm=ischএবং q=queryসঙ্গে, queryআপনি যে নামটি অনুসন্ধান করতে চান হচ্ছে।
আমার নামের জন্য একটি বৈধ কোয়েরি স্ট্রিং Basহবেwww.google.com/search?tbm=isch&q=Bas

ইনপুট

আপনার প্রোগ্রাম বা ফাংশনটি ইনপুটটির একক প্যারামিটার নেয়, এটি আপনার নাম যা গুগলে অনুসন্ধান করতে চান। এই স্ট্রিং অক্ষরের গঠিত হবে [a-z], [A-Z], [0-9]এবং (স্থান)। এই স্ট্রিংটি স্পেস সেপারেটেড হতে পারে, গুগলে স্পেস সেপারেটেড স্ট্রিং সন্ধানের জন্য একটিকে ফাঁকা স্থানটি প্রতিস্থাপন করা উচিত +। উদাহরণস্বরূপ, এটি একটি বৈধ প্রশ্ন:
www.google.com/search?tbm=isch&q=BassDP+Cumberwubwubwub+glamour+shot

আউটপুট

চিত্রটি হয় স্ক্রিনে আঁকতে পারে, বা কোনও ফাইলে সংরক্ষণ করা যেতে পারে (যে কোনও বিন্যাসে)।
যদি গুগলে প্রথম অনুসন্ধানের ফলাফলটি একটি জিআইএফ ফাইল হয় তবে আপনি হয় জিআইএফ প্রদর্শন করতে পারেন বা সেই জিআইএফের কোনও ফ্রেম প্রদর্শন করতে পারেন।

পরীক্ষার মামলা

প্রত্যাশিত ফলাফলগুলি দেখতে এই স্নিপেটটি চালান

এটি , বাইট জেতে সংক্ষিপ্ততম কোড!


ইনপুটটিতে কোন অক্ষরকে সমর্থন করা দরকার? ইউআরএল এনকোডিং সম্পর্কে আমাদের কী চিন্তা করা দরকার?
মার্টিন ইন্ডার

@ মার্টিন ইন্দার [a-z0-9], আমার পোস্ট সম্পাদনা করেছেন। ইউআরএলগুলি আমার দেওয়া উদাহরণগুলির মতো দেখাবে, কোনও এনকোডিংয়ের দরকার নেই, কেবল স্থানের জন্য+
বাসড্রপ কম্বারউবউবউবব

আমার ধারণা, A-Zআপনার উদাহরণ দিয়ে বিচার করেও কি উপস্থিত হতে পারে?
মার্টিন ইন্ডার

@ মার্টিনএন্ডার হ্যাঁ, এটি ক্ষেত্রে সংবেদনশীল। উল্লেখ করতে ভুলে গেছেন
বাসপ্রডোম্ব কম্বারউবউবউবব

2
আপনি যখন এই গেমটি খেলেন তখন অবাক করা সংখ্যক লোক বন্দুক নিয়ে পোজ দেয়: ডি
বিটা ডেকে

উত্তর:


8

পাওয়ারশেল ভি 4 +, 160 বাইট

param($a)iwr (((iwr "google.com/search?tbm=isch&q=$($a-replace' ','+')+glamour+shot").links|?{$_.innerhtml-like"*$a*"})[0].innerhtml-split'"')[3] -outf "$a.jpg"

$aস্ট্রিং হিসাবে ইনপুট নেয় । ইনপুট স্ট্রিংয়ের সাথে ফাঁকা জায়গায় অভ্যন্তরীণ-স্ট্রিং স্ক্রিপ্ট ব্লক ব্যবহার করে উপযুক্ত গুগল অবস্থানে একটি Invoke-WebRequest( iwr) করে । আমরা নিতে যে, যেখানে হয় আমাদের ইনপুট পংক্তি। এটি সঠিক থাম্বনেইল বর্ণনার সাথে লিঙ্কগুলি দেয় s প্রথম নিন ঐ এক গ্রহণ তার এবং এটা উদ্ধৃতি করেন। চতুর্থ উপাদানটি অংশটির ভিতরে থাকা পাঠ্য , তাই আমরা এর উপর আরও একটি কাজ করি যা স্থানীয় ফোল্ডারে থাকা আইলে উল্লেখ করে । যেহেতু এগুলি কেবল গুগল উত্পন্ন থাম্বনেইলস তাই এগুলি জেপিজি হওয়ার নিশ্চয়তা দেওয়া হচ্ছে।-replace+.links.innerhtml-like[0] .innerhtml-split[3]img src="iwr-outf$a.jpg


1
আপনি -1 বাইট google.comদিয়ে পরিবর্তন করতে পারেনgoogle.nl
টেলর স্কট

4

এক্সেল ভিবিএ + , 465 332 বাইট

দ্রষ্টব্য: উল্লেখ উল্লেখ ব্যবহার করে

  • মাইক্রোসফ্ট এইচটিএমএল অবজেক্ট লাইব্রেরি
  • মাইক্রোসফ্ট ইন্টারনেট নিয়ন্ত্রণ
  • মাইক্রোসফ্ট স্ক্রিপ্টিং রানটাইম

Golfed:

সম্পূর্ণ Subরুটিন যা nপ্রত্যাশিত ধরণের ইনপুট (নামের জন্য সংক্ষিপ্ত) নেয় Variant/Stringএবং সেই নামের অনুসন্ধানের জন্য এবং glamour shotএকটি ইন্টারনেট এক্সপ্লোরার উইন্ডোতে প্রথম গুগল চিত্র অনুসন্ধান ফলাফলকে আউটপুট দেয় ।

Sub g(n)
Set i=New InternetExplorer
l="google.nl/search?tbm=isch&q="&Replace(n," ","+")&"+glamour+shot"
For y=0To 2
i.navigate l
While i.readyState<4
DoEvents
Wend
j=0
Do Until InStr(1,l,IIf(y,"yp","res"))
j=j+1
Set x=i.document.getElementsByTagName(IIf(y,"img","a"))(j)
If y Then l=x.src Else l=x.href
Loop
Next
i.visible=1
End Sub

-তে সাদা স্থান অপসারণের জন্য বাইট If InStr(1, a.href, "imgres") Then

-2 বাইট পরিবর্তন .navigate (a.href)করতে.navigate a.href

for each a in ... if (...) then ... end if .. nextলুপ কমানোর জন্য -27 বাইটdo until ... loop

ঘনীভূত জন্য -10 বাইট imgresথেকে resএবং encryptedথেকেyp

-8 বাইটস ইনিটালাইজারগুলি অপসারণের জন্য j, kএবং পরিষ্কার মডিউল ধরে নিয়েছে

-1 বাইট পরিবর্তন google.comকরতেgoogle.nl

-3 প্রতিস্থাপন জন্য বাইট Dim i as New ...সঙ্গেSet i=New ...

SHDocVw.শ্রেণি রেফারেন্স অপসারণের জন্য -8 বাইট

with iব্লক অপসারণের জন্য -12 বাইট

-7 বাইট অপসারণের জন্য i.quit- এটি ইন্টারনেট এক্সপ্লোরারকে ব্যাকগ্রাউন্ডে খোলা রেখে কিছু মেমরি ফাঁসির কারণ হিসাবে প্রস্তাবিত হয় যে এর পরিবর্তে সম্পূর্ণ অলগল্ড সংস্করণ ব্যবহার করা উচিত বা ব্যবহারের পরে টাস্ক ম্যানেজারের মাধ্যমে ইন্টারনেট এক্সপ্লোরার কাজটি সমাপ্ত করা উচিত recommended

i.navigateহেল্পার সাববুটিনে যাওয়ার জন্য -6 বাইটh

Do Until ... Loopহেল্পার সাববুটিনে যাওয়ার জন্য -13 বাইট

-2 বাইটস j=0সাহায্যকারী মধ্যে সরানো এবং অপসারণ দ্বারা ,j, ,0(x2)

বেনামে তাত্ক্ষণিক উইন্ডো ফাংশনে রূপান্তর করার জন্য -11 বাইট

-8 মধ্যে সাহায্যকারী ফাংশন কল হ্রাস করার জন্য বাইট for .. nextলুপ

থেকে আউটপুট পরিবর্তন করার জন্য -16 বাইট Sheets(1)মাধ্যমে প্রদর্শন করার ছবি বস্তুর InternetExplorerবস্তুর

উনগল্ফড, 1304 বাইট

Option Private Module
Option Compare Text
Option Explicit
Option Base 0

Sub GlamourShot(ByVal name As String)

    Dim ie As New SHDocVw.InternetExplorer, _
        doc As MSHTML.HTMLDocument, _
        link As String, _
        j As Integer, _
        k As Integer

    With ie
        On Error GoTo CloseIE #'prevents memory leak

        Let .visible = True
        Call .navigate("www.google.com/search?tbm=isch&q=" & _
                    Replace(name, " ", "+") & _
                    "+glamour+shot")
        While .readyState <> READYSTATE_COMPLETE Or .Busy
            VBA.DoEvents
        Wend

        Set doc = .document

        Let j = 1
        Do Until InStr(1, link, "imgres") > 0
            Let link = doc.getElementsByTagName("a")(j).href
            Let j = j + 1
        Loop

        Call .navigate(link)
        While .readyState <> READYSTATE_COMPLETE Or .Busy
            VBA.DoEvents
        Wend

        Let k = 1
        Do Until InStr(1, link, "encrypted") > 0
            Let link = doc.getElementsByTagName("img")(k).src
            Let k = k + 1
        Loop

        With ThisWorkbook.ActiveSheet
            Call .Range("A1").Select
            Call .Pictures.Insert(link)
            Call .Activate
        End With
CloseIE:
        Call .Quit
    End With
End Sub

ব্যবহার জিআইএফ

ব্যবহার জিআইএফ


3

ভিম্পিটার , 30 টি কীস্ট্রোক

pgi<End> glamour shot<CR>fi222jf<CR>fim2

আপনার যদি সর্বোচ্চ রেজোলিউশন চিত্রের প্রয়োজন না হয় তবে বিকল্পভাবে 27 টি কীস্ট্রোক:

pgi<End> glamour shot<CR>fi222j;I<CR>

ভিডিও: https://youtu.be/t8824UjlYt8



ভাগ্যক্রমে ফায়ারফক্সে স্ট্যান্ডার্ড সার্চ ইঞ্জিন গুগল, এবং ভিম্পিয়ারেটর আপনাকে ডিফল্টরূপে ইঙ্গিতগুলি টাইপ করতে দেয়। আপনি যা অনুসন্ধান করেন তা নির্বিশেষে এটি সর্বদা কার্যকরভাবে কাজ করে তা নিশ্চিত করা এটির চেয়ে বেশি দীর্ঘ।

ক্লিপবোর্ডের মাধ্যমে ইনপুট নেয়।

ব্যাখ্যা:

p             Google the contents of the clipboard
gi            Select the search box
<End>         Move the cursor to the end of the text
 glamour shot Type " glamour shot"
<CR>          Press enter to search
fi2           Click the second link that begins with the letter "i" (images)
22j           Go 22 scroll steps down on the page.
              This makes it so that the first row of images are at
              the very top of the screen.

f<CR>         Click the first clickable element, which is the
              first image because we scrolled down

fim2          Click the second link containing "im" (view image)

প্রান্তের কেসটি খুঁজে পাওয়ার জন্য @ টেলরস্কোটকে ধন্যবাদ


যেমন ক্ষেত্রে এই হাতল ক্ষেত্রে যখন Google অন্যান্য অনুসন্ধানের ফলাফল বিশেষ পরামর্শ দেওয়া হচ্ছে না যেমন এই হিসাবে
টেলর স্কট

@ টেলরস্কোটা এটি করে না তবে আমি ফায়ারফক্সে সুপারিশ পেতে অক্ষম। এটি ব্রাউজার নির্ভর হতে পারে?
ব্ল্যাকক্যাপ

1
কিছুই নয়, আমি তাদের অন্য একটি অনুসন্ধানে পেয়েছি
ব্ল্যাকক্যাপ

3

পাইথন 3.6, 247 242 232 হয়তো 224 বাইট

এটি সমাধান করার জন্য এটি একটি সুন্দর প্রচেষ্টা। এটি p.pngবর্তমান ডিরেক্টরি হিসাবে একটি ফাইল সংরক্ষণ করবে ।

import sys; import requests as r; from bs4 import BeautifulSoup as s;
n = sys.argv[1]; open('p.png', 'wb').write(r.get(s(r.get(f'https://www.google.com.br/search?tbm=isch&q={n}+glamour+shot').content,'lxml').find_all('img')[1].get('src')).content)

কমান্ড লাইন থেকে এটিকে স্বাচ্ছন্দ্যে চালাতে, কেবল উপরের সামগ্রীটি কোনও ফাইলে রাখুন, যেমন glamour.pyচালান:

$ python glamour.py NAME_YOU_WANT

আপডেট 1: নতুন গুগল ইউআরএল সহ আরও ভাল সংস্করণ

import sys; import requests as r; from bs4 import BeautifulSoup as s;
n = sys.argv[1]; open('p.png', 'wb').write(r.get(s(r.get(f'http://www.google.nl/search?tbm=isch&q={n}+glamour+shot').content,'lxml').find_all('img')[1].get('src')).content)

আপডেট 2:

আমি কয়েকটি বাইট সংরক্ষণ করেছি:

  • শুধুমাত্র অনুরোধ মডিউল থেকে get ফাংশনটি আমদানি করে
  • কোনও ভেরিয়েবলের fবরাদ্দ না করে নতুন অজগর 3.6 স্ট্রিং ইন্টারপোলেশন পতাকা ব্যবহার করেsys.argv
  • কিছু সাদা জায়গা অপসারণ
  • এটিকে ওয়ান-লাইনারে পরিণত করা
  • BeautifulSoupকল থেকে পার্সার নির্দিষ্টকরণ সরিয়ে ফেলা হচ্ছে

শেষটি বিতর্কিত, যেহেতু এটি একটি std.output বার্তার ফলে প্রোগ্রামারকে ক্রস প্ল্যাটফর্মের সামঞ্জস্যের জন্য পার্সার নির্দিষ্ট করতে বলে, ফলে এটি অযাচিত আউটপুট হিসাবে বিবেচিত হতে পারে।

এখানে 224 বাইট সংস্করণ রয়েছে:

import sys;from requests import get;from bs4 import BeautifulSoup as s;open('p.png','wb').write(get(s(get(f'http://www.google.nl/search?tbm=isch&q={sys.argv[1]}+glamour+shot').content).find_all('img')[1].get('src')).content)

এখানে 232 বাইট সংস্করণ রয়েছে:

import sys;from requests import get;from bs4 import BeautifulSoup as s;open('p.png','wb').write(get(s(get(f'http://www.google.nl/search?tbm=isch&q={sys.argv[1]}+glamour+shot').content, 'lxml').find_all('img')[1].get('src')).content)

তবে std.out /dev/nullবা কিছুতে পুনঃনির্দেশিত করা থাকলে সংক্ষিপ্ত সংস্করণটি ব্যবহার করা যেতে পারে : ডি


আমার সম্ভবত urllib + html.parse সহ একটি সংস্করণ থাকতে পারে যাতে এটি স্ট্যান্ডার্ড লাইব্রেরির সাথে পুরোপুরি চলতে পারে।
Gui42

1
আপনি সম্ভবত কিছু বাইট সংরক্ষণ করার পরিবর্তে www.google.nl/বা সম্ভবত ব্যবহার করতে পারেনgoogle.nlhttps://www.google.com.br/
টেলর স্কট

1
কোনও কারণে, আমাকে http://অনুরোধগুলির সাথে কাজ করার জন্য এটি চালিয়ে যেতে হবে । তবে ব্রাজিলিয়ান গুগল আমাকে মজাদার ফলাফল দিয়েছে, তাই আমি মজাদার পয়েন্টগুলিতে ছেড়ে দিয়েছি: ডি
গুই 42

এই হ্যান্ডেল মামলা যখন Google অন্যান্য অনুসন্ধানের ফলাফল বিশেষ পরামর্শ দেওয়া হচ্ছে যেমন এই ক্ষেত্রে কি ভাবে এই (যদি আপনি এই মত পরামর্শ পেতে পপ আপ একাধিক অনুসন্ধান করবেন করতে হতে পারে)
টেলর স্কট

আমি এটিও ভালবাসি যে আমি কীভাবে কিছু বাইট পেয়েছি তার n = 'something'; f'{n}_here'পরিবর্তে n = 'something'; '{n}_here'.format(n = n)বাn = 'something'; '{}_here'.format(n)
Gui42

1

র‌্যাকেট, 284 বাই

(require net/url html-parsing sxml racket/draw)(define(g n)(let([g(compose get-pure-port string->url string-append)])(make-object bitmap%(g(car((sxpath"//*[@id='ires']//@src/text()")(html->xexp(g"http://www.google.com/search?tbm=isch&q="(string-replace n" ""+")"+glamour+shot"))))))))

স্ক্রীনশট: এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.