Guest User

Untitled

a guest
Jan 23rd, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.53 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <sockets>
  4. #include <ApolloRP>
  5. #include <ApolloRP_Chat>
  6.  
  7. //new g_Treasuries[3]
  8.  
  9. //#define DEBUG
  10.  
  11. new p_UpdateTime
  12.  
  13. new g_File[] = "news.ini"
  14. new g_WriteFile[] = "addons/amxmodx/configs/arp/newsbuffer.txt"
  15.  
  16. new TravTrie:g_Tickers
  17.  
  18. new g_Socket
  19.  
  20. new g_Buffer[4096]
  21.  
  22. new g_Mode[33]
  23.  
  24. new bool:isStory
  25.  
  26. new StoryNumber
  27.  
  28. new Headline[64][513]
  29. new Story[64][4096]
  30. new PubDate[64][256]
  31.  
  32. public ARP_Init()
  33. {
  34.     ARP_RegisterPlugin("News Mod","1.0","The_French","Allows players to check major news headlines via RSS subscription")
  35.    
  36.     ARP_RegisterChat("/news","Get_News","Updates and prints current news headlines")
  37.  
  38. }
  39.  
  40. public Get_News(id)
  41. {
  42.     new Error
  43.     g_Socket = socket_open("rss.cnn.com",80,SOCKET_TCP,Error);
  44.    
  45.     if(Error || !g_Socket)
  46.     {
  47.         log_amx("Error with socket: %d",Error)
  48.         return
  49.     }
  50.    
  51.     new travTrieIter:Iter = GetTravTrieIterator(g_Tickers),Tickers[384],Key[10],Garbage[2]
  52.     while(MoreTravTrie(Iter))
  53.     {
  54.         ReadTravTrieKey(Iter,Key,9)
  55.        
  56.         add(Tickers,383,Key)
  57.        
  58.         ReadTravTrieString(Iter,Garbage,1)
  59.        
  60.         if(MoreTravTrie(Iter))
  61.             add(Tickers,383,",")
  62.     }  
  63.     DestroyTravTrieIterator(Iter)
  64.    
  65.     /*new TickersLen = strlen(Tickers)
  66.     if(TickersLen <= sizeof(Tickers))
  67.         Tickers[TickersLen - 1] = 0*/
  68.    
  69.     format(g_Buffer,4095,"GET /rss/cnn_topstories.rss HTTP/1.0^nHost: rss.cnn.com^n^n",Tickers)
  70. #if defined DEBUG
  71.     log_amx("Send cmd: %s",g_Buffer)
  72. #endif
  73.     socket_send(g_Socket,g_Buffer,4095)
  74.    
  75.     g_Buffer[0] = 0
  76.     socket_recv(g_Socket,g_Buffer,4095)
  77. #if defined DEBUG
  78.     log_amx("Get cmd: %s",g_Buffer)
  79. #endif
  80.    
  81.     if(!g_Buffer[0] || containi(g_Buffer,"Bad Request") != -1)
  82.     {
  83.         ARP_Log("Error reading data from website")
  84.         return
  85.     }
  86.    
  87.     new DataLoc = containi(g_Buffer,"octet-stream") + strlen("octet-stream") + 1
  88.     trim(g_Buffer[DataLoc])
  89.    
  90.     write_file(g_WriteFile,g_Buffer[DataLoc])
  91.    
  92.    
  93.     new Line,Ticker[12],TempCombined[64],Company[64],Value[64],Quote,OldValue[64],Different
  94.     while(read_file(g_WriteFile,Line++,g_Buffer,4095,Garbage[0]))
  95.     {
  96.         if(!g_Buffer[0]) continue
  97.  
  98. #if defined DEBUG
  99.         log_amx("Read buffer: %s",g_Buffer)
  100. #endif
  101.         if(isStory == true)
  102.         {
  103.             if(containi(g_Buffer,"<title>") != -1 && containi(g_Buffer,"</title>") != -1)
  104.             {
  105.                 copy(Headline[StoryNumber],512,g_Buffer)
  106.                 replace(Headline[StoryNumber],512,"<title>","")
  107.                 replace(Headline[StoryNumber],512,"</title>","")
  108.             }
  109.             if(containi(g_Buffer,"<description>") != -1 && containi(g_Buffer,"</description>") != -1)
  110.             {
  111.                 copy(Story[StoryNumber],4095,g_Buffer)
  112.                 replace(Story[StoryNumber],4095,"<description>","")
  113.                 replace(Story[StoryNumber],4095,"</description>","")
  114.             }
  115.             if(containi(g_Buffer,"<pubDate>") != -1 && containi(g_Buffer,"</pubDate>") != -1)
  116.             {
  117.                 copy(PubDate[StoryNumber],255,g_Buffer)
  118.                 replace(PubDate[StoryNumber],255,"<pubDate>","")
  119.                 replace(PubDate[StoryNumber],255,"</pubDate>","")
  120.             }
  121.         }
  122.        
  123.         if(containi(g_Buffer,"<item>") != -1)
  124.         {
  125.             isStory = true
  126.             StoryNumber++
  127.         }
  128.         else if(containi(g_Buffer,"</item>") != -1)
  129.         {
  130.             isStory = false
  131.         }
  132.        
  133.     }
  134.    
  135.     //delete_file(g_WriteFile)
  136.    
  137.     socket_close(g_Socket)
  138.    
  139.     set_task(0.0,"ShowNews",id)
  140.    
  141. }
  142.  
  143. public ShowNews(id)
  144. {
  145.     new Line
  146.     for(new i = 1;i++;i<=64)
  147.     {
  148.     write_file("addons/amxmodx/configs/arp/news.txt",Headline[i],Line)
  149.     Line++
  150.     write_file("addons/amxmodx/configs/arp/news.txt",Story[i],Line)
  151.     Line++
  152.     write_file("addons/amxmodx/configs/arp/news.txt",PubDate[i],Line)
  153.     Line++
  154.     }
  155.     show_motd(id,"addons/amxmodx/configs/arp/news.txt","CNN Top Stories")
  156. }
Add Comment
Please, Sign In to add comment