2009-11-20 22 views
17

मैं फ्लाई यूआरएल शॉर्टनर पर बहुत कुछ ढूंढ रहा हूं जैसे कि ट्वीट ट्वीट कैसे काम करता है। मुझे कई jQuery और सामान्य जावास्क्रिप्ट प्लगइन्स मिले हैं जो एक यूआरएल लेते हैं और इसे एक छोटी सी सेवा के माध्यम से चलाते हैं जैसे bit.ly जब कोई बटन दबाया जाता है। हालांकि, मैं इसे खोजने में सक्षम नहीं हूं जो इसे फ्लाई पर करता है। मेरा पहला सवाल यह है कि यह पहले से ही मौजूद है? दूसरा, अगर ऐसा नहीं होता है, तो एक यूआरएल को पहचानने का सबसे अच्छा तरीका क्या होगा जिसे टेक्स्टबॉक्स के अंदर छोटा करने की आवश्यकता है? मेरे विचार:फ्लाई यूआरएल शॉर्टनर पर jQuery

  1. http
  2. की तलाश में पाठ के माध्यम से चलने वाले टेक्स्ट क्षेत्र में onkeyup पर हैं हड़पने पाया पूरे यूआरएल (कैसे अवधि हो सकता है, अल्पविराम, अंतरिक्ष मैं अंत का निर्धारण करते हैं, आदि ..? ।)
  3. सुनिश्चित करें कि URL पहले से ही एक bit.ly यूआरएल
  4. मान्य URL (अनुरोध करते हैं और यह सुनिश्चित करें http प्रतिक्रिया bit.ly पहले से ही ऐसा कर रहा है, कोई त्रुटि नहीं है?)
  5. नहीं है
  6. मान्य होने पर, bit.ly के एपीआई में यूआरएल भेजें और प्रतिक्रिया
  7. पुन प्राप्त करें टेक्स्ट एरिया में छोटे यूआरएल के साथ लंबा यूआरएल रखें।

विचार?

+0

विचार? मुझें यह पसंद है। –

+0

यह सुनिश्चित नहीं है कि आप इसका उपयोग किसके लिए करेंगे, लेकिन यदि आपके पास डेटा इनपुट करने वाले उपयोगकर्ता होंगे, तो आप bit.ly की तुलना में अधिक URL शॉर्टिंग सेवाओं को शामिल करने के लिए चरण 3 का विस्तार करना चाहेंगे। जब तक आप एक tinyurl.com पते पर रीडायरेक्ट करने के लिए थोड़ा सा पता नहीं लगाते हैं (उदाहरण के लिए) अंतिम गंतव्य पर रीडायरेक्ट करते हैं। – Travis

+0

यह सुनिश्चित करने के बजाय कि यह थोड़ा सा URL नहीं है, आप केवल उन वर्णों को छोटा कर सकते हैं जो x वर्णों से अधिक लंबे हैं। आज tinyurl.com उदाहरण के लिए 27 वर्णों का उपयोग करता है। –

उत्तर

18

यहाँ एक उदाहरण है कि कैसे Bitly एपीआई और jQuery के साथ एक संक्षिप्त URL प्राप्त करने के लिए:

function get_short_url(long_url, login, api_key, func) 
{ 
    $.getJSON(
     "http://api.bitly.com/v3/shorten?callback=?", 
     { 
      "format": "json", 
      "apiKey": api_key, 
      "login": login, 
      "longUrl": long_url 
     }, 
     function(response) 
     { 
      func(response.data.url); 
     } 
    ); 
} 

निम्नलिखित कोड एक छोटी URL प्राप्त करने के लिए इस्तेमाल किया जा सकता है:

/* 
Sign up for Bitly account at 
https://bitly.com/a/sign_up 

and upon completion visit 
https://bitly.com/a/your_api_key/ 
to get "login" and "api_key" values 
*/ 
var login = "LOGIN_HERE"; 
var api_key = "API_KEY_HERE"; 
var long_url = "http://www.kozlenko.info"; 

get_short_url(long_url, login, api_key, function(short_url) { 
    console.log(short_url); 
}); 
+2

बिटली एपीआई बदल गया है। [मेरा जवाब] देखें (http://stackoverflow.com/a/22064069/237739) –

4

फ्लाई बिट पर विश्वसनीय और तेज़ बनाने में मुश्किल हो रही है।

लोग अधिकांश समय या www भी http टाइप नहीं करेंगे।

अंत में, जैसा कि आपने कहा था, यह निर्धारित करना कठिन होगा कि यूआरएल में कोई स्थान या बुरा है, अगली वाक्य में चलता है क्योंकि उपयोगकर्ता ने अंतरिक्ष में नहीं रखा है।

और अगर लोगों को इस तथ्य के बाद यूआरएल बदलने की आवश्यकता है क्योंकि उन्होंने https://stackoverflow.com/ के बजाय http://stakoverflow.com/ टाइप किया है?

मुझे लगता है कि सबसे अच्छा समाधान आपके टेक्स्ट एडिटर पर "डालने वाला छोटा यूआरएल" बटन होगा जो लोगों को ऐसा करने की इजाजत देता है। या, जब पोस्ट किया जाता है तो सर्वर-साइड करें।

+0

पोस्ट में अधिकतम लंबाई और फ्लाई पर शॉर्टिंग उन्हें – Jason

0

बिट.ली एपीआई में एक jQuery पोस्ट क्यों नहीं करें? http://blog.themeforest.net/tutorials/creating-an-ajax-web-app-using-the-bitly-api/

+0

बनाने के लिए और अधिक वर्ण देती है, समस्या यह है कि उनके पास केवल उनके पोस्ट में वर्णों की एक्स संख्या हो सकती है और फ्लाई पर अपना यूआरएल छोटा कर उन्हें अतिरिक्त वर्ण – Jason

0

मुझे कुछ ऐसा ढूंढने के दौरान आपकी पोस्ट मिली और आखिर में सिर्फ एक jQuery प्लगइन लिखा जो आप खोज रहे हैं (कम से कम हिस्सा) प्रदान करता है।

मेरे jQuery Url Shortener Bitbucket

यह एक बहुत ही सरल प्लगइन है पर; मुझे उपयोगकर्ता के यूआरएल को कम करने की आवश्यकता नहीं थी, इसलिए मेरे पास इसे छोटा करने से पहले कोई लम्बाई जांच या यूआरएल परीक्षण नहीं है, हालांकि मैं उन प्रकार की विशेषताओं को जोड़ने के विपरीत नहीं हूं।

बस सोचा कि आपको यह उपयोगी लगेगा।

अपने टेक्स्टबॉक्स में यूआरएल को पहचानने के लिए, मैं RegEx to match the url का उपयोग करने का सुझाव दूंगा।

+0

हाय जियारो - मैंने इसका इस्तेमाल किया और यूआरएल एन्कोडिंग का समर्थन करने के लिए एक छोटा बदलाव करना पड़ा। लाइन 6 को बदलें: + "और longUrl =" + encodeURIComponent (longUrl) - उपयोगी प्लगइन के लिए धन्यवाद। – Kevin

3

तुम भी उत्पन्न कर सकता है सर्वर पर PHP और कर्ल के साथ एक छोटा यूआरएल, इस तरह आपको वेबपेज में अपनी एपीआई कुंजी का पर्दाफाश करने की आवश्यकता नहीं है:

<?php 
    //the long url posted by your webpage 
    $url = strip_tags($_POST["url"]); 

    $api_user = "your_bitly_user_name"; 
    $api_key = "your_bitly_api_key"; 

    //send it to the bitly shorten webservice 
    $ch = curl_init ("http://api.bitly.com/v3/shorten?login=$api_user&apiKey=$api_key&longUrl=$url&format=json"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    //the response is a JSON object, send it to your webpage 
    echo curl_exec($ch);  
?> 

फिर अपने वेबपेज में कोड होना चाहिए कुछ की तरह:

//the long url that you want to shorten 
    var longUrl = escape(window.location.href) 

    $.ajax({ 
     url : "php/getShortUrl.php",//this is the php script above 
     dataType : "json", 
     type : "POST", 
     data : { 
      url : longUrl 
     }, 
     success : function(data) { 
      if(data.status_txt === "OK"){ 
       shortUrl = data.data.url; 
      } 
     }, 
     error : function(xhr, error, message) { 
      //no success, fallback to the long url 
      shortUrl = longUrl 
     } 
    }); 

अधिक जानकारी के

8

मुझे लगता है कि Bitly के एपीआई थोड़ा बदल गया है के लिए bitly API देखें। एक संक्षिप्त यूआरएल के अनुरोध के लिए अब आपको केवल एक एक्सेस टोकन की आवश्यकता है।

best practices के बाद, मैं बनाया निम्नलिखित जावास्क्रिप्ट-केवल स्निपेट:

getShortUrl: function(url, callback) 
{ 
    var accessToken = '___YOUR_ACCESS_TOKEN___'; 
    var url = 'https://api-ssl.bitly.com/v3/shorten?access_token=' + accessToken + '&longUrl=' + encodeURIComponent(url); 

    $.getJSON(
     url, 
     {}, 
     function(response) 
     { 
      if(callback) 
       callback(response.data.url); 
     } 
    ); 
}, 
संबंधित मुद्दे