何謂創意延伸?!

說白點就是利用Msg窗口或是自訂網頁的方式來打造屬於個人特色的GDL啦~!

藉由MSG 窗口或是自訂網頁,程式執行的過程將不再是死板的看著執行窗動作!!  取而代之的是你想傳達給使用者的訊息~

教學至此,也算是終點了!! 所以下面的內容將是所有教過東西的總運用!!

而該教的我都也已教給你了(如果你有從頭看到尾),所以此篇教學的方式將是以引導、備註為主,而不是一行一行的解析喔…  

那為了讓大家可以有不同的感受,我也特別凹了NT測試團隊的兩大紅牌  肥肥、黑心邦 。請他倆各捐些GDL給大家當範例研討~ 

( 看範例前,先重點提示一下:還搞不清Msg窗口是啥東西的請往教學裏的程式說明那翻!!  Msg 窗口的相關處理指令請找教學裏的指令說明那翻!!  )


那就來看一下好爸爸   肥肥(sa102221) 的作品 !! 

<<SeedNet_Mail 郵空分享系統>>

 

本來GDL裏中文字的部份都改用MSG檔來取代了(因為要GDL要編碼時不能包含非標準ASCII碼字符!!)

所以我們就可以直接將  SeedNet_Mail_Share.gdl   拿去與你要分享的帳號來綁定編碼!!(SeedNet_Mail_Share.gdl 編碼時千萬記得要勾 強化編碼 喔)

那這個GDL,主要是利用了SeedNet 郵空提供的https 機制來作登入,所以就算帳密被取封包軟體給攔截了,也是已編過碼的內容,這也大大加強了分享的安全性~!

再來看下載的部份,它提供了一個讓使用者可以照自已下載情況去即時調整的寫法!!

//設定最大下載線程假設使用者在備用欄未輸入線程數則預設為 2 線
SetDataValue:***Additional***,***Variable1***

當你發現預設的兩線並不能滿足你時,可在程式中【備用欄】那格填上 比如 4。那下個帳號開始,就會變成四線下載~

接著則是錯誤訊息的紀錄!!

主要的重點在於 ***AccountData*** 這個指令!! 若你用 ***LoginID***:***LoginPW***  來記錄有問題的帳密,那就挫賽了~! 你的帳:密 會直接就列出來,而非編過碼的~

千萬切記!! 想要輸出編過碼的帳密訊息,一定要用 ***AccountData***  喔!!

最後再來看一下此GDL中關於下載不全時的處理~

它會在取檔案連結的同時,也順便將該帳號內所要下載的檔案名稱給記錄下來~

當下載者發現有漏檔時,就可以切換到【記錄列表】來找看看要去哪個帳號補這個檔!!

 

 

 SeedNet_Mail_Share.gdl  
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-----名 稱:SeedNet_Mail_Share.gdl(SeedNet Mail 檔案分享系統)
//-----編寫日期:2007-05-18 By sa102221
//-----最後修正:
//-----基本說明:1.開啟 NetTools V1.5(廢話)
// 2.開啟 SeedNet_Mail_Share.gdl(又是廢話@@),但此時 SeedNet_Mail_Share.msg 會一併被載入
// 3.郵件檔案中的郵件標題需包含完整的檔案名稱(例 Up_By_XXX_Test.Part1.Rar)
// 4.本 GDL 所附加的 MSG 檔可隨自行需求而修改,但請勿變更列數及下方的重要判斷資訊
//-----重要說明:1.本 GDL 需搭配 MSG 檔才可使用
// 2.下載時在記錄列表會記錄每個帳號的檔案清單 方便使用者自行補檔。
// 3.在備用欄可以輸入下載線程數 未輸入線程數則預設為 2 線
//-----分享方法:將帳號資料丟入帳號清單,並按下開始執行即可^^
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
OutMsg:***Msg1***
OutMsg:***Msg2***
GetMsg:***Msg15***,***Variable55***
//設定最大下載線程假設使用者在備用欄未輸入線程數則預設為 2 線
SetDataValue:***Additional***,***Variable1***
IF: "***Additional***" =""
IFNo:input
SetDataValue:2,***Variable1***
Label:input
SetMaxDownload:***Variable1***
OutMsg:***Msg3***
Label:begin
ClearOut:
IfNotAccount:end
GetACcount()
Label:login
go:http://webmail.seed.net.tw/Login.do
clicklink:https://webmail.seed.net.tw/
sleep()
Wait:http://webmail.seed.net.tw/,3,login
OutMsg:***Msg4***
OutMsg:***Msg5***
SetFieldValue:username=***LoginID***
SetFieldValue:password=***LoginPW***
ClickButton:submitbutton
sleep()
FindWebText:***Variable55***
IfYes:Error
Wait:MailBoxFrame.do?sq=,3,login
OutMsg:***Msg6***
OutMsg:***Msg7***
LinkToVariable:,webmail.seed.net.tw/Logout.do,***Variable99***
LinkToVariable:,MailBoxFrame.do?sq=,***Variable1***
OutRecord:***Msg18***
OutRecord:***AccountData***
Label:getFileLink
go:***Variable1***
Wait:subject,3,login
OutMsg:***Msg8***
OutMsg:***Msg9***
Label:mlu
Wait:linkpage,10,retry
SetFieldValue:MAILSERVERID=
SetFieldValue:KEYWORD=
//開始取下載連結
runscriptnext:var k=flist.document.all.tags('TD');for (i=0;i<k.length;i++) if ((k.item(i).innerHTML.search('attach_s.gif')!=-1)&&(k.item(i).innerHTML.search('TD')==~
-1)&&(k.item(i).outerHTML.search('table-item')!=-1)){ var guid_value = k.item(i).id.split("-");flist.document.all('MAILSERVERID').value+="http://webmail.seed.net.tw/Read~

MailPart.do?mailserverid=&mailbox=INBOX&msguid="+guid_value[1]+"&noframe=n&openfile=attachment&usercharset=&type=attachment&function=&part=1&spart=&~
subpart=,"+k.item(i+2).innerText+'<Crlf>';}
ItemToVariable:MAILSERVERID,***Variable51***
AddOut:***Variable51***
//開始取下載檔名 補檔用
runscriptnext:var k=flist.document.all.tags('TD');for (i=0;i<k.length;i++) if ((k.item(i).innerHTML.search('attach_s.gif')!=-1)&&(k.item(i).innerHTML.search('TD')==-1)&&(k.item(i).outerHTML.search('table-item')!=-1)){ var guid_value = k.item(i).id.split("-");flist.document.all('KEYWORD').value+="FileName:"+k.item(i+2).innerText+'<Crlf>';}
ItemToVariable:KEYWORD,***Variable52***
OutRecord:***Variable52***
//判斷是否還有下一頁
Clicklink:***Msg17***,mlu
OutMsg:***Msg10***
OutMsg:***Msg11***
//檢查輸出
OutLoop:download
GoLabel:error
Label:Download
StartDownload()
sleep()
go:***Variable99***
OutMsg:***Msg12***
AccountLoop:begin
Label:end
OutMsg:***Msg13***
Exit()
Label:error
OutErr:***AccountData******Msg15***
AccountLoop:begin
Label:end1
OutMsg:***Msg16***
Exit()
Label:retry
OutMsg:***Msg19***
OutMsg:***Msg20***
ClearOut:
GoLabel:getFileLink
 

 

 SeedNet_Mail_Share.msg   --------- 歡迎使用 SeedNet Mail 檔案分享系統 ---------
正在規劃系統參數中,請稍後...
連結資料處理中,請稍後...
已成功連結至網站
正在登入帳號資訊中,請稍後...
帳號正確登入完成
準備進入收件夾中,請稍後...
已成功的進入收件夾
正在讀取檔案清單中,請稍後...
檔案清單中讀取完成,準備開始下載檔案
正在下載檔案中,請稍後...
此帳號檔案已下載完成,正在處理下一帳號
所有帳號的檔案全部下載完成
以下不要修改
認證錯誤
有檔案沒下載完 冏rz…
下一頁
以下為該帳號所擁有的檔案 請下載者有缺檔時自行查看並copy下一欄的帳號重新下載 而找不到檔案時就是我該補檔的時候了…
連結抓取失敗
重新抓取開始

 

 

<<dataspace.us 分享系統>>

這算是一個粉標準的免空分享gdl~! 利用分享連結去即時取得載點再開始下載的動作~

本來是粉難看的web控制頁面,現在轉成這種模式後,頁面變的清爽多了,而且訊息也相當的明確!! 

整個GDL的設計流程,以利用備註清單內的檔案連結來取得即時下載連結,再依我們控制的最大雙線程來作下載動作~

而其中,當連結取得失敗時,也會自動將連結再重新加入【備註清單】一次!!  這個的處理動作是值得大家去學習的喔!!

Label:Error
OutErr:***Msg8***
AddNote:***Note***

 

dataspace.us_share.gdl  
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-----名 稱:dataspace.us_share.gdl(dataspace.us 檔案分享系統)
//-----編寫日期:2007-05-05 By sa102221
//-----最後修正:
//-----基本說明:1.開啟 NetTools V1.5(廢話)
//                           2.開啟 dataspace.us_share.gdl(又是廢話@@),但此時 dataspace.us_share.msg 會一併被載入
//-----重要說明:1.本 GDL 需搭配 MSG 檔才可使用
//-----分享方法:將下載連結丟入備註清單,並按下開始執行即可^^ 格式為下載連結
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
OutMsg:***Msg1***
OutMsg:***Msg2***
//設定最大下載線程為 2 線
SetMaxDownload:2
OutMsg:***Msg3***
Label:Start
//清除輸出清單資料
ClearOut:
OutMsg:***Msg4***
Label:StartGet
IfNotNote:End
GetNote()
SetDataValue:0,***Variable1***
Label:GetFileLink
Math:***Variable1***,***Variable1*** + 1
If:***Variable1*** = 5
IfYes:Error
SetDataValue:,***Variable99***
SetDataValue:,***Variable88***
sleep()
FindHttpText:***Note***,Invalid download link
IfYes:Error
HttpStrToVariable:***Note***,Download File Now" onClick="window.location=\',\',***Variable88***
If:"***Variable88***" = ""
IfYes:Error
HttpStrToVariable:***Note***,File name:,R,***Variable99***
If:"***Variable99***" = ""
IfYes:Error
GetstrToVariable:***Variable99***,, (,***Variable99***
OutPut:***Variable88***,***Variable99***
NoteLoop:StartGet
Label:download
OutMsg:***Msg5***
OutMsg:***Msg6***
StartDownload()
NoteLoop:Start
Label:End
OutMsg:***Msg7***
Exit()
Label:Error
OutErr:***Msg8***
AddNote:***Note***
NoteLoop:StartGet

 

 

dataspace.us_share.msg  
--------- 歡迎使用 dataspace.us 檔案下載系統 ---------
正在規劃系統參數中,請稍後...
連結資料處理中,請稍後...
正在讀取檔案清單中,請稍後...
檔案清單中讀取完成,準備開始下載檔案
正在下載檔案中,請稍後...
所有檔案全部下載完成
取連結失敗 並把失敗的連結移到最後面稍後重新再取

 

 


 

接著再看 黑心邦(wayn12000) 的作品 !!   

<<Jp_YM  郵空分享系統>>

這個GDL考慮的東西就粉多了~!  實在是寫的粉不錯的一個GDL ~

所以我決定不多說明,讓大家細心去品嘗一下寫法~  順便也可以體會一下黑心邦的外號由來… 

不過要特別注意一點,因為此帖用了日文字,所以你的電腦必需有安裝字型補完計劃才可以正常執行喔~

  JpMailShare.gdl   
//-----名 稱:日本雅虎郵件通用下載系統.gdl
//-----編寫日期:2007-05-11 by wayn12000
GetMsg:1,***Variable1***
GetMsg:16,***Variable16***
GetMsg:18,***Variable18***
GetMsg:19,***Variable19***
GetMsg:20,***Variable20***
GetMsg:21,***Variable21***
GetMsg:22,***Variable22***
GetMsg:23,***Variable23***
GetMsg:24,***Variable24***
GetMsg:25,***Variable25***
GetMsg:26,***Variable26***
GetMsg:27,***Variable27***
Prompt:***Variable16***
SetDataValue:***PromptData***,***Variable2***
OutMsg:***Msg2***
IF:"***Variable2***" > "3" or "***Variable2***" < "1" or "***Variable2***" = ""
Ifno:SetMax
SetDataValue:1,***Variable2***
Label:SetMax
OutMsg:***Msg3***
SetMaxDownload:***Variable2***
DisableScriptError:1
DisableNewWindow:1
Label:Start
SetDataValue:0,***Variable4***
ClearOut:
GetAccount()
Ifno:Exit
Label:Start1
MATH:***Variable4***,***Variable4*** + 1
//登出後再登入
OutMsg:***Msg4***
go:http://www.yahoo.co.jp/r/l2
go:http://mail.yahoo.co.jp/
wait:eval_register?,5,Start1
Label:LoginStart
//輸入帳密
OutMsg:***Msg6***
SetFieldValue:login=***LoginID***
SetFieldValue:passwd=***LoginPW***
ClickButton:***Variable26***
Wait:mail.yahoo.co.jp/ym/Logout,10,Start1
OutMsg:***Msg7***
Label:CheckDataStart
//判斷此帳號是否已被停止
FindHtmlText:<LABEL for=dontprotectaccount>
IfYes:OpenAccount
//判斷是否為再確認網頁
FindHtmlText:value="" name=passwd
IfYes:CheckAccount
//判斷是否有別人在下載
FindHtmlText:***Variable27***
Ifno:wait
OutMsg:***Msg8***
OutRecord:=================***Variable18***================<Crlf>***AccountData***<Crlf>================***Variable19******Variable4*** ***Variable20***===========================
//判斷該帳號有人下載 重試3次後換下一帳號
IF:***Variable4*** = 3
SLEEP(10)
IfYes:Start
GoLabel:Start1
Label:wait
go:http://mail.yahoo.co.jp/
//如果停留在 登入頁面 重新進行登入程序
FindHtmlText:SSL(https)
IfYes:LoginStart
OutMsg:***Msg9***
ClickLink:ym/ShowFolder?rb=Inbox
//判斷該帳號有沒有信件
FindHtmlText:***Variable21***
IfNo:GetFileLink
Label:nofile
OutMsg:***Msg11***
OutRecord:=====================***Variable18***==================<Crlf>***AccountData***<Crlf>==============***Variable22***============
GoLabel:Start
OutMsg:***Msg10***
Label:GetFileLink
//順便清除垃圾信
RunScriptNext:var f=document.all.tags('INPUT');var g=document.all.tags('TR');var h=document.all.tags('TR');c=0;d=0;
RunScriptNext:for (a=0;a<f.length;a++) if (f.item(a).outerHTML.search('***Variable23***')!=-1) {for (b=1;b<g.length;b++) if (g.item(b).outerHTML.search('***Variable24***')==-1 && g.item(b).outerHTML.search('***Variable23***')!=-1) {c=a-b; for (i=1;i<h.length;i++) if (h.item(i).outerHTML.search('clip_1.gif')==-1 && h.item(i).outerHTML.search('TR class=msg')!=-1 && h.item(i).outerHTML.search('SCRIPT')==-1){d=i+c;f[d].checked=true}}};
RunScript:Delete_Click()
//判斷該帳號有沒有信件
FindHtmlText:***Variable21***
IfYes:nofile
//判斷該帳號有沒有附件
FindHtmlText:clip_1.gif
IfNo:GetFileLink
OutRecord:================***Variable18***====================<Crlf>***AccountData***<Crlf>==================***Variable25***==============
//取出所有有附件的檔名
OutMsg:***Msg12***
RunScriptNext:var y=document.all.tags('A');var title = new Array(),w0=0;
RunScriptNext:for (i=0;i<y.length;i++) if (y.item(i).outerHTML.search('clip_1.gif')!=-1) {title[w0]=y.item(i+1).innerText;w0++};for (j=0;j<title.length;j++) { document.all('searchquery0').value += title[j] + "<Crlf>" ; }
ItemToVariable:searchquery0,***Variable10***
OutRecord:***Variable10***
//自動取得有附件的檔案下載
WebStrToVariable:clip_1.gif" width=16 border=0>,</A></TD>,***Variable3***
LeftStr:***Variable3***,4,***Variable3***
GetFileLink:***Variable3***,***HostLink***/ym/ShowLetter/***TitleName***?box=Inbox&MsgId=??&bodyPart=2&filename=***TitleName***&download=1&YY=??&~
order=down&sort=date&pos=0&view=a&head=b&Idx=0,***TitleName***
//判斷是否還有下一頁
ClickLink:***Variable1***,GetFileLink
OutRecord:========================================================================
OutMsg:***Msg13***
StartDownload()
OutMsg:***Msg14***
ClearPostData()
AccountLoop:Start
Label:Exit
OutMsg:***Msg15***
go:http://www.yahoo.co.jp/r/l2
Exit()
//開啟帳號
Label:OpenAccount
ClickButton:continue
//判斷是否為再確認網頁
FindHtmlText:value="" name=passwd
IfNo:CheckDataStart
//密碼再確認處理
Label:CheckAccount
//再次填入密碼
SetFieldValue:passwd=***LoginPW***
ClickButton:Login
//判斷是否為再確認網頁
FindHtmlText:value="" name=passwd
IfYes:CheckAccount
//前往帳號檢查
GoLabel:CheckDataStart
 

 

 

 

  JpMailShare.msg    
次
--------- 歡迎使用 JP Yahoo Mail 檔案下載系統 By wayn12000 ---------
正在規劃系統參數中,請稍後...
連結資料處理中,請稍後...
已成功連結至網站
正在登入帳號資訊中,請稍後...
帳號正確登入完成
帳號有人正在下載 重試3次後換下一帳號
準備進入收件夾中,請稍後...
已成功的進入收件夾
判斷該帳號檔案遺失沒有信件
正在讀取檔案清單中,請稍後...
檔案清單中讀取完成,正在下載檔案中,請稍後...
此帳號檔案已下載完成,正在處理下一帳號
所有帳號的檔案全部下載完成
請輸入想要幾線下載,可直接按ENTER,<Crlf>如太貪心將只有一線而已唷。(最多三線)
一時的な問題の可能性
帳號
有人正在下載 第
次重試
受信箱フォルダにメッセージはありません
檔案遺失
選択を解除
削除
該帳號內所包含的檔
ログイン
一時的な問題の可能性
-------------------- 上面有些關鍵字 如果更改可能導致GDL運作錯誤 --------------------

 

 


最後,就由筆者送上一份畢業賀禮給大家~

底下這個GDL 是綜合整篇教學所學過的東西所寫出來的自訂網頁類型 GDL ~

同學呀… 教學至此就算結束啦!! 呀師父領進門,修行就端看個人了~ !      我來酸也…

  Mlu_UrlFxp by upitus(Ajax).gdl

Free Web Hosting