It is currently March 28th, 2024, 3:41 pm

RSS Filter

Tips and Tricks from the Rainmeter Community
Post Reply
fulf
Posts: 3
Joined: November 7th, 2010, 8:31 am

RSS Filter

Post by fulf »

I have a quick question. Can there be a RSS filter? (For example I have this sports RSS:

Code: Select all

[Basketball]X shoots winning basket at -.3 miliseconds.
[Football] Y is suspended after ugly fault.
[Tennis] Z sux.
[Basketball]Other info.
[Football] More info.
and so on and so forth.

Is there a way to make the RSS feed display only those posts containing [Basketball] (for e.g.)
Would really make my days much easier with RSS.
User avatar
Chewtoy
Moderator
Posts: 995
Joined: June 10th, 2009, 12:44 pm
Location: Sweden

Re: RSS Filter

Post by Chewtoy »

Yes. With the help of a lookahead regexp that is very much possible.
Now I don't know what the code for the page look like, as you haven't included a link or anything that might help. But in general it should look like this:

(?(?=.*IfThis).*GetThis)

Feel free to implement that in your code.
http://www.regular-expressions.info/lookaround.html
fulf
Posts: 3
Joined: November 7th, 2010, 8:31 am

Re: RSS Filter

Post by fulf »

Here's a rss i'd like to filter Click.

And here's the .ini of the skin i'm using.

Code: Select all

;======================================================================================= 
; 
; Fade by FreakQuency
; RSS Reader
; http://freakquency85.deviantart.com
;
;=======================================================================================


[Rainmeter]
Author=aidaaah, modified by freakQuency,fresenius85@gmail.com,Interface created by FreakQuency
AppVersion=1.1
Update=5000
MouseOverAction=!execute [!RainmeterShowMeter MeterClose][!RainmeterRedraw]
MouseLeaveAction=!execute [!RainmeterHideMeter MeterClose][!RainmeterRedraw]

;=======================================================================================

[Metadata]
Name= Fade RSS Reader
Config=
Description=
Instructions=
Tags=
License=Creative Commons Attribution-Non-Commercial-Share Alike 3.0
Variant=
Preview=


;=======================================================================================

[Variables]



URL=http://www.role.ro/rss.php
Link=http://www.role.ro/
Title=bitGAMER




LineColor=0,0,0,1
Substitute="&":"&",""":"","&Quot;":"","<br>":"","![CDATA[":"","]]":"","...":"","<":"",">":"","/PRE>":"","PRE>":"","<":"","'":"'"

[Style1]
FontColor=221f1f
FontSize=9
StringAlign=LEFT
StringStyle=Normal
FontFace=Calibri
AntiAlias=1

[Style2]
FontColor=bc2525
FontSize=9
StringAlign=LEFT
StringStyle=Normal
FontFace=Calibri
AntiAlias=1


;=======================================================================================
;Measure Section
;=======================================================================================

[RSS]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=#URL#
RegExp="(?siU)<title>(.*)<\/title>(?(?=.*<lastBuildDate>(.*)<\/lastBuildDate>))(?(?=.*<link>(.*)<\/link>.)).*<description>(.*)<\/description>(?:(?:.*<url>(.*)<\/url>)|.*).*<item(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)(?:.*<title>(.*)<\/title>(?(?=.*<pubDate>(.*)<\/pubDate>)).*<link>(.*)<\/link>.*<description>(.*)<\/description>|.*)"
UpdateRate=60
StringIndex=1

[MeasureRSS1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=6
Substitute=#Substitute#

[MeasureLink1]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=8
Substitute="&":"&"

---

[MeasureRSS2]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=10
Substitute=#Substitute#

[MeasureLink2]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=12
Substitute="&":"&"

---

[MeasureRSS3]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=14
Substitute=#Substitute#

[MeasureLink3]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=16
Substitute="&":"&"

---

[MeasureRSS4]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=18
Substitute=#Substitute#

[MeasureLink4]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndeX=20
Substitute="&":"&"

---

[MeasureRSS5]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=22
Substitute=#Substitute#

[MeasureLink5]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=24
Substitute="&":"&"

---

[MeasureRSS6]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=26
Substitute=#Substitute#

[MeasureLink6]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=28
Substitute="&":"&"

---

[MeasureRSS7]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=30
Substitute=#Substitute#

[MeasureLink7]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=32
Substitute="&":"&"

---

[MeasureRSS8]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=34
Substitute=#Substitute#

[MeasureLink8]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=36
Substitute="&":"&"

---

[MeasureRSS9]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndeX=38
Substitute=#Substitute#

[MeasureLink9]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndex=40
Substitute="&":"&"

---

[MeasureRSS10]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndeX=42
Substitute=#Substitute#

[MeasureLink10]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[RSS]
StringIndeX=44
Substitute="&":"&"





;=======================================================================================
;Background Section
;=======================================================================================

[Background]
Meter=IMAGE
X=0
Y=0
ImageName=rss.png
H=292
W=227

[Title]
Meter=STRING
X=22
Y=17
FontFace=Century Gothic
FontSize=12
AntiAlias=1
StringAlign=LEFT
StringStyle=Bold
Text=#Title#
LeftMouseDownAction=!execute ["#Link#"][!RainmeterRedraw]



;=======================================================================================
;Meter Section
;=======================================================================================


[Feed1]
Meter=STRING
MeasureName=MeasureRSS1
X=10
Y=34r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link1][!RainmeterHideMeter Feed1][!RainmeterRedraw]

[Link1]
Meter=STRING
MeasureName=MeasureRSS1
X=r
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
Hidden=1
MouseLeaveAction=!execute [!RainmeterShowMeter Feed1][!RainmeterHideMeter Link1][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink1]



[Feed2]
Meter=STRING
MeasureName=MeasureRSS2
MeasureName2=MeasureLink2
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link2][!RainmeterHideMeter Feed2][!RainmeterRedraw]

[Link2]
Meter=STRING
MeasureName=MeasureRSS2
X=r
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
Hidden=1
MouseLeaveAction=!execute [!RainmeterShowMeter Feed2][!RainmeterHideMeter Link2][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink2]



[Feed3]
Meter=STRING
MeasureName=MeasureRSS3
MeasureName2=MeasureLink3
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link3][!RainmeterHideMeter Feed3][!RainmeterRedraw]

[Link3]
Meter=STRING
MeasureName=MeasureRSS3
X=r
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
Hidden=1
MouseLeaveAction=!execute [!RainmeterShowMeter Feed3][!RainmeterHideMeter Link3][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink3]




[Feed4]
Meter=STRING
MeasureName=MeasureRSS4
MeasureName2=MeasureLink4
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link4][!RainmeterHideMeter Feed4][!RainmeterRedraw]

[Link4]
Meter=STRING
MeasureName=MeasureRSS4
X=r
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
Hidden=1
MouseLeaveAction=!execute [!RainmeterShowMeter Feed4][!RainmeterHideMeter Link4][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink4]



[Feed5]
Meter=STRING
MeasureName=MeasureRSS5
MeasureName2=MeasureLink5
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link5][!RainmeterHideMeter Feed5][!RainmeterRedraw]

[Link5]
Meter=STRING
MeasureName=MeasureRSS5
X=10
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
MouseLeaveAction=!execute [!RainmeterShowMeter Feed5][!RainmeterHideMeter Link5][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink5]



[Feed6]
Meter=STRING
MeasureName=MeasureRSS6
MeasureName2=MeasureLink6
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link6][!RainmeterHideMeter Feed6][!RainmeterRedraw]

[Link6]
Meter=STRING
MeasureName=MeasureRSS6
X=10
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
Hidden=1
MouseLeaveAction=!execute [!RainmeterShowMeter Feed6][!RainmeterHideMeter Link6][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink6]



[Feed7]
Meter=STRING
MeasureName=MeasureRSS7
MeasureName2=MeasureLink7
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link7][!RainmeterHideMeter Feed7][!RainmeterRedraw]

[Link7]
Meter=STRING
MeasureName=MeasureRSS7
X=10
Y=r
H=15
W=165
ClipString=1
StringStyle=NORMAL
MeterStyle=Style2
MouseLeaveAction=!execute [!RainmeterShowMeter Feed7][!RainmeterHideMeter Link7][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink7]


[Feed8]
Meter=STRING
MeasureName=MeasureRSS8
MeasureName2=MeasureLink8
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link8][!RainmeterHideMeter Feed8][!RainmeterRedraw]

[Link8]
Meter=STRING
MeasureName=MeasureRSS8
X=r
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
Hidden=1
MouseLeaveAction=!execute [!RainmeterShowMeter Feed8][!RainmeterHideMeter Link8][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink8]


[Feed9]
Meter=STRING
MeasureName=MeasureRSS9
MeasureName2=MeasureLink9
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link9][!RainmeterHideMeter Feed9][!RainmeterRedraw]

[Link9]
Meter=STRING
MeasureName=MeasureRSS9
X=r
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
Hidden=1
MouseLeaveAction=!execute [!RainmeterShowMeter Feed9][!RainmeterHideMeter Link9][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink9]



[Feed10]
Meter=STRING
MeasureName=MeasureRSS10
MeasureName2=MeasureLink10
X=10
Y=20r
H=15
W=165
ClipString=1
MeterStyle=Style1
MouseOverAction=!execute [!RainmeterShowMeter Link10][!RainmeterHideMeter Feed10][!RainmeterRedraw]

[Link10]
Meter=STRING
MeasureName=MeasureRSS10
X=10
Y=r
H=15
W=165
ClipString=1
MeterStyle=Style2
Hidden=1
MouseLeaveAction=!execute [!RainmeterShowMeter Feed10][!RainmeterHideMeter Link10][!RainmeterRedraw]
LeftMouseDownAction=[MeasureLink10]



I'd like it to filter just 'Video' and 'Rolling' (or just 'Video').

So...could you explain it in a bit more detail? (not necesarely high level detail, but...medium? XD)

Edit: Just found out about a good site: http://feedsifter.com
User avatar
Chewtoy
Moderator
Posts: 995
Joined: June 10th, 2009, 12:44 pm
Location: Sweden

Re: RSS Filter

Post by Chewtoy »

I would make the lookahead something like:

(?(?=.*<title>Video).*~(.*)</title>.*<link>(.*)</link>)

That should give you the title as the first string index and the link as the second. And it will only get the ones with Video.

(?(?=.*<title>Rolling).*~(.*)</title>.*<link>(.*)</link>)
Would get the ones for Rolling .

You have to replace your RegExp with that. If you have no idea how to do it, I suggest you take a look at these: http://rainmeter.net/cms/Rainmeter101-SkinTutorials

Now. Look ahead works like this: The (?=something) says that webparser should look for 'something'. And if it finds that, it should retrive what we tell it to in (?.
==> (?(?=If_This_Is_Found)Get_This_Stuff)
fulf
Posts: 3
Joined: November 7th, 2010, 8:31 am

Re: RSS Filter

Post by fulf »

Thanks alot! I'm 70% sure I understand :D (Don't worry, the rest of 30 will come by practicing it myself :D) Thanks alot.
Post Reply