Guest User

Untitled

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