2013-04-22 2 views
0

나는이 같은 NZB 파일, 뭔가를 따라 유즈넷에서 파일을 다운로드 :델파이 IdNNTP : NZB 파일

<?xml version="1.0" encoding="utf-8" ?> 
<nzb xmlns="http://www.newzbin.com/DTD/2003/nzb"> 
<head> 
    <meta type="title">Your File!</meta> 
    <meta type="tag">Example</meta> 
</head> 
<file poster="Joe Bloggs &lt;[email protected]&gt;" 
     date="1071674882" 
     subject="Here's your file! abc-mr2a.r01 (1/2)"> 
    <groups> 
    <group>alt.binaries.newzbin</group> 
    <group>alt.binaries.mojo</group> 
    </groups> 
    <segments> 
    <segment bytes="102394" number="1">[email protected]</segment> 
    <segment bytes="4501" number="2">[email protected]</segment> 
    </segments> 
</file> 
</nzb> 

인디 IdNNTP을 사용하여이 파일을 다운로드하고 조립하는 방법은 없나요? 어떤 샘플 코드에 대해서도 감사 할 것입니다. 미리 감사드립니다.

+0

당신은 어떤 예를 시도? ['this one'] (http://delphi.wikia.com/wiki/TIdNNTP)와 같이? – TLama

+0

@TLama : 네,이 예제를 보았습니다. 하지만 NNTP 서버에 연결하고 그룹을 선택하면 문제가되지 않습니다. 그러나 NZB 파일에 따라 파일을 다운로드하는 방법은 무엇입니까? –

답변

0

사실, 꽤 쉬웠다 :

Xml := TXmlVerySimple.Create; 
    Xml.Text:=recieved_nzb; 

    //Each <file> section 
    ChildNodes := Xml.Root.ChildNodes; 
    for q := 0 to ChildNodes.Count - 1 do 
    begin  
     IdNNTP1.SelectGroup(ChildNodes.Items[q].Find('groups').Find('group').Text); 
     SegmentNodes:=ChildNodes.Items[q].Find('segments').ChildNodes; 

     //Each <segment> (message) 
     for w := 0 to SegmentNodes.Count - 1 do 
     begin 
      idNNTP1.GetArticle(SegmentNodes.Items[w].Text,IdMessage1); 
      IdMessage1.SaveToFile('c:\!!!!\'+SegmentNodes.Items[w].Text, false); 
      Application.ProcessMessages; 
     end; 
    end;