Guest User

Untitled

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