Download Blog Ini Menggunakan RSS Feed


Kemarin coba utak-atik sedikit menggunakan script Coldfusion untuk mendownload artikel-artikel di blog ini menggunakan rss feed yang disediakan oleh wordpress.com.

<!--- set url --->
<cfset blogURL = "https://tscf.wordpress.com/">
<cfset feedURL = "#blogURL#feed/">
<cfset blogFilesURL = "https://tscf.files.wordpress.com/">

<!--- feed --->
<cffeed 
	action="read"
	source="#feedURL#"
	xmlVar="xmlVar"
	/>
	
<!--- convert ke dalam xml object --->
<cfset xml = XMLParse(xmlVar)>

<!--- set directory di local --->
<cfset currentDirectory = ExpandPath("./")>
<cfset savedDirectory = currentDirectory & "tscf">
<cfset imagesDirectory = savedDirectory & "/images">

<!--- create directory jika belum ada --->
<cfif not DirectoryExists(savedDirectory)>
	
	<cfdirectory 
		action="CREATE" 
		directory="#savedDirectory#"
		/>
	
</cfif>

<cfif not DirectoryExists(imagesDirectory)>

	<cfdirectory 
		action="CREATE" 
		directory="#imagesDirectory#"
		/>
	
</cfif>

<!--- loop xml object --->
<cfloop array="#xml.rss.channel.XmlChildren#" index="channel">

	<!--- artikel berada di node "item" --->
	<cfif channel.XmlName eq "item">
		
		<!--- stItem : isi dari node "item" --->
		<cfset stItem = StructNew()>
		<!--- arrImages : images yang ada di artikel --->
		<cfset arrImages = ArrayNew(1)>
		
		<!--- loop dari node "item" --->
		<cfloop array="#channel.XmlChildren#" index="item">
			
			<!--- judul --->
			<cfif item.XMLName eq "title">
			
				<cfset stItem.title = item.XmlText>
				
			</cfif>
			
			<!--- link --->
			<cfif item.XmlName eq "link">
			
				<cfset stItem.link = item.XmlText>
				
			</cfif>
			
			<!--- isi artikel --->
			<cfif item.XmlName eq "content:encoded">
			
				<cfset stItem.content = item.XmlText>
				
			</cfif>
			
			<!--- images --->
			<cfif item.XmlName eq "media:content" 
				and item.XmlAttributes.medium eq "image" 
				and Len(Trim(item.XmlAttributes.url))
				>
				
				<cfset ArrayAppend(arrImages, item.XmlAttributes.url)>
				
			</cfif>
			
		</cfloop>
		
		<!--- html yang akan disimpan di lokal --->
		<cfsavecontent variable="htmlVar">
			<cfoutput>
			
			<h2>#stItem.title#</h2>
			
			<p>Link : <a href="#stItem.link#">#stItem.link#</a></p>
			
			<div>
				#stItem.content#
			</div>
			
			</cfoutput>
		</cfsavecontent>
		
		<!--- loop images --->
		<cfloop array="#arrImages#" index="images">
			
			<!--- jika ada images --->
			<cfif Len(Trim(images))>
			
				<!--- buang query string (biasanya untuk resize ukuran image) --->
				<cfif FindNoCase("?", images)>
				
					<cfset imageURL = Replace(images, Mid(images, FindNoCase("?", images), Len(images)), "", "ALL")>
					
				<cfelse>
				
					<cfset imageURL = images>
					
				</cfif>
				
				<!--- set image file name --->
				<cfset imageFileName = Replace(imageURL, blogFilesURL, "", "ALL")>
				<cfset imageFileName = Replace(imageFileName, "/", "-", "ALL")>
				
				<!--- copy image ke lokal --->
				<cfimage 
					action="write" 
					destination="#imagesDirectory#/#imageFileName#" 
					source="#imageURL#" 
					overwrite="yes" 
					/>
				
				<!--- replace img src dari blog ke directory lokal --->
				<cfset htmlVar = ReplaceNoCase(htmlVar, imageURL, "images/" & imageFileName, "ALL")>
			</cfif>
			
		</cfloop>
		
		<!--- set html file name --->
		<cfset savedFileName = Replace(stItem.link, blogURL, "", "ALL")>
		<cfset savedFileName = Replace(savedFileName, "/", "-", "ALL")>
		<cfset savedFileName &= ".html">
		<cfset savedFileName = Replace(savedFileName, "-.html", ".html")>
		
		<!--- save html ke lokal --->
		<cffile 
			action="WRITE" 
			file="#savedDirectory#/#savedFileName#" 
			output="#htmlVar#" 
			nameconflict="OVERWRITE"
			/>
	</cfif>
</cfloop>

<cfoutput>

Selesai mengambil artikel dari <a href="#blogURL#">#blogURL#</a> melalui feed <a href="#feedURL#">#feedURL#</a>.

</cfoutput>

Setiap artikel akan tersimpan di direktori [currentdirectory]/tscf dalam bentuk sebuah file html dengan nama yyyy-mm-dd-judul-artikel.html, dan jika di artikel ada images akan dicopy ke direktori [currentdirectory]/tscf/images. [currentdirectory] adalah tempat file dari script di atas di letakkan di server lokal.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: