PHP+phpQuery備份Pixiv的bookmark(お気に入りユーザー)

最近老實說又多玩了一個語言,外加我今年算是個考生,所以說很多時候晚上忙一下就已經11點多了,當然最近都在養肝,忙完就睡著了...XD

至於廢話就不多說了,最近學了一點Action Script 3.0,但是我基本上還是用Flash CS4下去學習,改天會開始去摸摸看Flex,希望是有時間就好(笑)。但是老實說在這個7月時也算是我過的最充實的一個月了,因為搞懂了非常之多的東西。

這一個PHP只能算是一個小部份,因為也是一個小程式....XD,但是基本上需要phpQuery,因為這個函式庫對於要抓取網頁資訊來說的話非常之方便而且簡單明瞭,對於一個複雜的網頁原始碼而言,可以簡化取出需要的資訊之後,再去做preg的動作繪比較的簡單。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
< ?php
    require 'phpQuery/phpQuery/phpQuery.php';

    $loginurl='http://www.pixiv.net/index.php';
    $pixiv_id='你的PIXIV_id';
    $password='password';
    //以上為一些登入基本資訊

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5); InfoPath.2)');
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_COOKIESESSION,true);
    curl_setopt($curl, CURLOPT_URL, $loginurl);
    curl_setopt($curl, CURLOPT_POSTFIELDS, 'mode=login&pixiv_id='.$pixiv_id.'&pass='.$password );
    curl_exec($curl);
    //登入的動作

    $p=1;//設定起始頁
    $bookmark_rest='show';//hide為非公開 show為公開

    do{
        $url='http://www.pixiv.net/bookmark.php?type=user&rest='.$bookmark_rest.'&p='.$p; //bookmark網址
        curl_setopt($curl, CURLOPT_URL, $url);
        $profile=curl_exec($curl);

        phpQuery::newDocument($profile)->find('html > body > div#wrapper > div#pixiv > div#content2');
        $title = pq('div[align="right"] > a') -> html();
        preg_match('/次の(.*?)件/',$title,$match);
        //是否有下一頁的判斷用

        $title2 = pq('form#f > div[style="width:140px;height:120px;float:left;text-align:center;"]') -> html();
        $title2=preg_replace('/\n/', '',$title2);
        $title2=preg_replace('/<input (.*?)/>/', '',$title2);
        $title2=preg_replace('/<img (.*?)/>/', '',$title2);
        preg_match_all('/<a href="member.php\?id=(.*?)">< \/a><div style=\"padding-top:5px;\">(.*?)< \/div>/', $title2,$match2,PREG_SET_ORDER);

        foreach ($match2 as $val) {
            echo 'http://www.pixiv.net/member.php?id='.$val[1].' - '.$val[2]."\n";
        }//映出所有的繪師
        $p++;
    }while(!empty($match));

    curl_close($curl);
?>

以上就是一個非常簡單的小範例。對於熟悉PHPQuery之後要處理抓取網頁的資訊的動作的話真的非常的簡單。

這是一個非常簡單的,把PIXIV上的喜愛繪師的網址給備份出來的一個小程式,用這個列出來後才知道,原來我已經收了快要1150個繪師了...Orz

Thu Aug. 6 2009
Comments

Google Chromium for Linux 3.0.194.0

這東西已經可以打中文了耶XDD 今天才發現

加油啊 Google 我想要把我想要把FireFox 換掉了...XDDD

(還在混 趕快去趕你的工啦....毆)

Sun Jul. 12 2009
Comments

修好sendmail

最近都在忙一些課業上得問題真的沒有時間去搞定有的沒的

最主要之前的email publish都一直沒有出現

今天在翻apache log的時候才發現到問題(奇怪之前都寄得出去...= =a?)

1
sh: sendmail: not found

去/etc/php5/apache2/php.ini中把sendmail path設定一下就修好了

我真的呆了好一陣子...QQ

Tue Jul. 7 2009
Comments

紀錄一下

今天算是把全部 文章內容的一堆.co.cc的字眼給幹掉 除了email外,那是google APP的問題了,改天在處理

在此紀錄一下 先把wordpress的mysql data dump出來後(如何dump請參考自動MySQL備份搞定)

1
sed -i -e 's/取代的字串/取代的字串/g' "Wordpress.sql"

用gedit開是最不明智的選擇...XD

在mysql匯回即可

再把一些轉址設定好(.htaccess)

1
redirectMatch /(.*) http://www.renn999.twbbs.org/$1

搞定收工

From co.cc to twbbs.org

老實說 今天也是無聊上了一下我常用的domain name的網站,但是讓我一整個錯愕....囧...is expired (~2009-04-29)

按下renew時竟然給你老子出現要錢的選項

上網google一大堆資料的時候,確定看到一堆人為此而哀號,當初想說有這麼棒的免費domain name的說,事件原因很簡單因為他們是商人,就跟某小站一樣,免費的就要有這個風險吧,簡單來說好像可以免費用一年他們的設定,但是過了一年就要付錢才可以改設定,這個domain啥時不可以用也不知道,所以說還是早早搬家吧,算了俺還是窮學生,買不起那些.com啦.cc啦.org那些網址,就就先回twbbs.org待一陣子了,畢竟這才是愛呆丸的表現(挺...),還好我當初是選擇EveryDNS作為我的dns管理,至少還可以增加一些服務,我當初沒有用co.cc他們本家的dns管理功能真是明智的選擇...XD

我只知道我一轉,一堆服務可能要跟著變動了,目前是Blog的部份還好,圖片啦,短網址就有點麻煩了,網誌上面的圖應該是最麻煩的,提早弄真的哪天炸了也不一定,感覺上這個味道...恩....跟某有名差不多,基本上www.renn999.co.cc原則上還是可以找到我,會自動轉址到www.renn999.twbbs.org,但是www.renn999.twbbs.org啥時會炸我就不知道了。

今天值得紀念的一天

我把所有的瀏覽人數 全部歸零了

因為由於之前的人數老實說 不客觀的機率佔很大

所以說歸零也是個開始吧...XD

Mon Jun. 22 2009
Comments

WordPlurk一些細部修改

WordPlurk以要對wordpress發文之後把標題連結同步到Plurk真的非常的方便,當然我也小看了一下原始碼對於中文語系的話也些地方還是可以調整的。

1
2
3
curl_setopt($curl, CURLOPT_URL, 'http://www.plurk.com/TimeLine/addPlurk');
curl_setopt($curl, CURLOPT_POSTFIELDS, 'qualifier=shares&content='. $new_status .'&lang=en&no_comments=0&uid=' . $uid[0]);
$post = curl_exec($curl);

在台灣地區的話,於第29行網址的部份lang=en可以改成lang=tr_ch,這樣在plurk上就不會出現英文,qualifier=share這裡可以改變plurk post的狀態就是"說""想要"那些有的沒的

1
2
3
the_post();
$post_url = file_get_contents('http://tinyurl.com/api-create.php?url=' . get_permalink());
$title = get_the_title();

在46行的部份'http://tinyurl.com/api-create.php?url='這是將網址用tinyurl縮網如果不想縮網的話可以去掉,要不然要用自己喜歡的服務也可以(0rz.tw的服務好像被拿掉了但是我在研究看看),我是不知道網址太長會怎樣...Orz,因為我是用我自己的短網址,我還刻意做了一個api給他用...XD

1
2
3
$i = '\'' . $title . '\' - ' . $post_url;

$plurk_username = get_option('wordplurk_username', 0);

在51行的部份就是post到Plurk的時候會出現的樣式,他這邊就設計的不怎麼好就是了,這裡通常會改成

1
$i = $post_url . ' ('. $title .')' ;

讓title直接變成連結的方式

ImageUpon檔案副檔名判斷修改

今天趁著空閒的時候把ImageUpon的檔案格式副檔名判斷的部份小修了一下,主要的問題在於他是直接使用上傳之後的檔名去作切割,這對於一些安全上有些疑慮,假設有人上傳改附檔檔名的檔案...Orz,優點也是可以正確的去辨識檔案

修改部份:
找到

1
$suffix = strtolower(substr($_FILES['uploadimg']['name'],-4));

改成:

1
2
3
4
5
6
$img_info = getimagesize($_FILES['uploadimg']['tmp_name']);
$mime = $img_info['mime'];
list($t, $suffix) = split('/', $mime);
if ($suffix == 'jpeg') //這個部份將JPEG檔名轉成jpg
    $suffix = 'jpg';
$suffix='.'.$suffix;//加上點這樣整體架構不用去作修改

雖然說多了很多的步驟,但是隨便拿一張圖附檔亂改,都還可以正確的去作辨識,取得應有的副檔名。

如果還是要使用上傳檔案的檔名去取得副檔名的話,我想到比較好的方式還是使用preg_match會比較正統,因為畢竟副檔名不是只有三個字

1
2
preg_match('/(.*?)[.](\w+$)/u', $_FILES['uploadimg']['name'], $regs);
$suffix = '.'.strtolower($regs[2]);

Sat Jun. 20 2009
Comments

Google Chromium for Linux總算給我顯示出中文了

之前知道開始放出"超級不穩定版",我就決定要自己測試看看,但是裝完之後一直都是方塊文字,但是聽說網路上有的人是正常出現中文字,我今天才想到最主要的問題點。

Read More ...
Thu Jun. 18 2009
Comments

PTTBlog-Rolling嵌入Wordpress vSlider theme

昨天花了一點時間處理這個東西 竟然沒想到被我弄了出來

其實這鬼東西我很早已就很想弄了 但是基於自己技術上的問題

但是老實說這也只是簡單的PHP XML DOM而已 因為這也是我首次寫一個比我想像還要龐大的東西(對我來說啦....<囧") 畢竟也是花了一點時間在Try&Error上

因為我不會寫Wordpress的Plugin所以說在設定以及使用上面有點不這麼的方便 也不能套用在別的theme上面 另外 我把內部一些html ifram的TAG轉成noifram這是為了一些安全上的考量 以及除去一些RSS AD的影響 如果自己的如果自己的Blog上有自己的ads又不想被影響的話 (我是不知道會不會影響 但是心中就是怪怪的)

畢竟這是暴力改出來的東西

Read More ...
Wed May. 20 2009
Comments