Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <sockets>
- #include <ApolloRP>
- #include <ApolloRP_Chat>
- //new g_Treasuries[3]
- //#define DEBUG
- new p_UpdateTime
- new g_File[] = "news.ini"
- new g_WriteFile[] = "addons/amxmodx/configs/arp/newsbuffer.txt"
- new TravTrie:g_Tickers
- new g_Socket
- new g_Buffer[4096]
- new g_Mode[33]
- new bool:isStory
- new StoryNumber
- new Headline[64][513]
- new Story[64][4096]
- new PubDate[64][256]
- public ARP_Init()
- {
- ARP_RegisterPlugin("News Mod","1.0","The_French","Allows players to check major news headlines via RSS subscription")
- ARP_RegisterChat("/news","Get_News","Updates and prints current news headlines")
- }
- public Get_News(id)
- {
- new Error
- g_Socket = socket_open("rss.cnn.com",80,SOCKET_TCP,Error);
- if(Error || !g_Socket)
- {
- log_amx("Error with socket: %d",Error)
- return
- }
- new travTrieIter:Iter = GetTravTrieIterator(g_Tickers),Tickers[384],Key[10],Garbage[2]
- while(MoreTravTrie(Iter))
- {
- ReadTravTrieKey(Iter,Key,9)
- add(Tickers,383,Key)
- ReadTravTrieString(Iter,Garbage,1)
- if(MoreTravTrie(Iter))
- add(Tickers,383,",")
- }
- DestroyTravTrieIterator(Iter)
- /*new TickersLen = strlen(Tickers)
- if(TickersLen <= sizeof(Tickers))
- Tickers[TickersLen - 1] = 0*/
- format(g_Buffer,4095,"GET /rss/cnn_topstories.rss HTTP/1.0^nHost: rss.cnn.com^n^n",Tickers)
- #if defined DEBUG
- log_amx("Send cmd: %s",g_Buffer)
- #endif
- socket_send(g_Socket,g_Buffer,4095)
- g_Buffer[0] = 0
- socket_recv(g_Socket,g_Buffer,4095)
- #if defined DEBUG
- log_amx("Get cmd: %s",g_Buffer)
- #endif
- if(!g_Buffer[0] || containi(g_Buffer,"Bad Request") != -1)
- {
- ARP_Log("Error reading data from website")
- return
- }
- new DataLoc = containi(g_Buffer,"octet-stream") + strlen("octet-stream") + 1
- trim(g_Buffer[DataLoc])
- write_file(g_WriteFile,g_Buffer[DataLoc])
- new Line,Ticker[12],TempCombined[64],Company[64],Value[64],Quote,OldValue[64],Different
- while(read_file(g_WriteFile,Line++,g_Buffer,4095,Garbage[0]))
- {
- if(!g_Buffer[0]) continue
- #if defined DEBUG
- log_amx("Read buffer: %s",g_Buffer)
- #endif
- if(isStory == true)
- {
- if(containi(g_Buffer,"<title>") != -1 && containi(g_Buffer,"</title>") != -1)
- {
- copy(Headline[StoryNumber],512,g_Buffer)
- replace(Headline[StoryNumber],512,"<title>","")
- replace(Headline[StoryNumber],512,"</title>","")
- }
- if(containi(g_Buffer,"<description>") != -1 && containi(g_Buffer,"</description>") != -1)
- {
- copy(Story[StoryNumber],4095,g_Buffer)
- replace(Story[StoryNumber],4095,"<description>","")
- replace(Story[StoryNumber],4095,"</description>","")
- }
- if(containi(g_Buffer,"<pubDate>") != -1 && containi(g_Buffer,"</pubDate>") != -1)
- {
- copy(PubDate[StoryNumber],255,g_Buffer)
- replace(PubDate[StoryNumber],255,"<pubDate>","")
- replace(PubDate[StoryNumber],255,"</pubDate>","")
- }
- }
- if(containi(g_Buffer,"<item>") != -1)
- {
- isStory = true
- StoryNumber++
- }
- else if(containi(g_Buffer,"</item>") != -1)
- {
- isStory = false
- }
- }
- //delete_file(g_WriteFile)
- socket_close(g_Socket)
- ShowNews(id)
- }
- ShowNews(id)
- {
- new Line
- for(new i = 1;i++;i<=64)
- {
- write_file("addons/amxmodx/configs/arp/news.txt",Headline[i],Line)
- Line++
- write_file("addons/amxmodx/configs/arp/news.txt",Story[i],Line)
- Line++
- write_file("addons/amxmodx/configs/arp/news.txt",PubDate[i],Line)
- Line++
- }
- show_motd(id,"addons/amxmodx/configs/arp/news.txt","CNN Top Stories")
- }
Add Comment
Please, Sign In to add comment