PageRank挖挖挖

既然Google Blogger版的誰來我家寫的差不多了,雖然還有一個小小問題,說小也不小,因為會讓程式變成不自動,不過短期ㄚ琪還沒有解,今天靈機一動又想說,乾脆順便查一下這些追蹤者的PageRank好了,馬上捲起袖子動手做吧,這一次更快了,參考網上的C#程式,馬上就手到擒來,張貼一下程式碼,大家參考一下吧:

public static class GooglePageRank
    {
        private static void Mix(ref uint a, ref uint b, ref uint c)
        {
            a -= b;
            a -= c;
            a ^= c >> 13;
            b -= c;
            b -= a;
            b ^= a << 8;
            c -= a;
            c -= b;
            c ^= b >> 13;
            a -= b;
            a -= c;
            a ^= c >> 12;
            b -= c;
            b -= a;
            b ^= a << 16;
            c -= a;
            c -= b;
            c ^= b >> 5;
            a -= b;
            a -= c;
            a ^= c >> 3;
            b -= c;
            b -= a;
            b ^= a << 10;
            c -= a;
            c -= b;
            c ^= b >> 15;
        }

        private static string GoogleChecksum(string url)
        {
            uint GoogleMagic = 0xE6359A60;

            uint a, b;
            uint c = GoogleMagic;

            a = b = 0x9E3779B9;

            int k = 0;
            int length = url.Length;

            //Algorithm
            while (length >= 12)
            {
                a += (uint)(url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));
                b += (uint)(url[k + 4] + (url[k + 5] << 8) + (url[k + 6] << 16) + (url[k + 7] << 24));
                c += (uint)(url[k + 8] + (url[k + 9] << 8) + (url[k + 10] << 16) + (url[k + 11] << 24));

                Mix(ref a, ref b, ref c);

                k += 12;
                length -= 12;
            }

            c += (uint)url.Length;

            //All cases fall through
            switch (length)
            {
                case 11:
                    c += (uint)(url[k + 10] << 24);
                    goto case 10; //fall through
                case 10:
                    c += (uint)(url[k + 9] << 16);
                    goto case 9;
                case 9:
                    c += (uint)(url[k + 8] << 8);
                    goto case 8;
                case 8:
                    b += (uint)(url[k + 7] << 24);
                    goto case 7;
                case 7:
                    b += (uint)(url[k + 6] << 16);
                    goto case 6;
                case 6:
                    b += (uint)(url[k + 5] << 8);
                    goto case 5;
                case 5:
                    b += (uint)(url[k + 4]);
                    goto case 4;
                case 4:
                    a += (uint)(url[k + 3] << 24);
                    goto case 3;
                case 3:
                    a += (uint)(url[k + 2] << 16);
                    goto case 2;
                case 2:
                    a += (uint)(url[k + 1] << 8);
                    goto case 1;
                case 1:
                    a += (uint)(url[k + 0]);
                    break;
                default:
                    break;
            }

            Mix(ref a, ref b, ref c);

            return string.Format(“6{0}”, c);
        }

        public static int GetPageRank(string url)
        {
            //Calculate URL checksum
            string checkSum = GoogleChecksum(“info:” + url);
            string file = “http://toolbarqueries.google.com/search?client=navclient-auto&ch=” + checkSum + “&features=Rank&q=info:” + url;

            try
            {
                //Request PR from Google
                WebRequest request = WebRequest.Create(file);
                WebResponse response = request.GetResponse();

                StreamReader reader = new StreamReader(response.GetResponseStream());
                string data = reader.ReadToEnd();

                reader.Close();
                response.Close();

                //Parse PR from string
                int pageRank = -1;
                if (data.IndexOf(‘:’) != -1)
                {
                    data = data.Substring(data.LastIndexOf(‘:’) + 1);
                }

                int.TryParse(data, out pageRank);

                return pageRank;
            }
            catch (Exception)
            {
                return -1;
            }
        }
    }

又挖到黃金了~~~

呼!為了找出

holder.currentBlogUrl = "http://xxxxx.yyyyy.zzzz/";
這樣的字串,搞了w+跟s+都不是,弄了一陣子,注意看手冊才發現原來.+才是我要的,呼,真累~

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *