JoostSijm 5 жил өмнө
parent
commit
a3f6839749

+ 46 - 8
app.py

@@ -23,15 +23,21 @@ def login(credentials=None):
     client.login(credentials)
     print(client.var_c)
 
-    action = input("Action: ")
     action_dict = {
-        "market": market,
-        "oil_market": oil_market,
-        "article": article
+        'market': market,
+        'oil_market': oil_market,
+        'article': article,
+        'get': get,
+        'gold_exploration': gold_exploration,
+        'vote_law': vote_law,
     }
-
-    if action in action_dict:
-        action_dict[action](client)
+    print(action_dict.keys())
+    while True:
+        action = input("Action: ")
+        if action in action_dict:
+            action_dict[action](client)
+        else:
+            print('action not found')
 
 def market(client):
     """Get all market prices"""
@@ -49,7 +55,39 @@ def oil_market(client):
 
 def article(client):
     """Create article"""
-    client.create_article("Test", "Whoops")
+    client.create_article('Nothing to see here', '')
+
+def get(client):
+    """Send get request from client"""
+    path = input('Path: ')
+    result = client.get(path)
+    print(result)
+
+def gold_exploration(client):
+    """Create gold exploration law"""
+    resoure = 0
+    data = {
+        'tmp_gov': resoure
+    }
+    result = client.post('parliament/donew/42/{}/0'.format(resoure), data)
+    print(result)
+
+def vote_law(client):
+    """Vote for a law"""
+    # p400220003260451563564814
+    # p4002 2000326045 1563564814
+    # 'parliament/votelaw/4002/2000326045/1563564814/pro'
+    # 'parliament/votelaw/4002/2000326045/1563565114/pro'
+    region_id = 4002
+    player_id = 2000326045
+    law_id = 1563565114
+    result = client.post('parliament/votelaw/{}/{}/{}/pro'.format(
+        region_id,
+        player_id,
+        law_id
+    ), {})
+    print(result)
+    
 
 if __name__ == "__main__":
     if len(sys.argv) >= 2:

+ 22 - 74
rival_regions_wrapper/client.py

@@ -24,7 +24,7 @@ class RRClientException(Exception):
     """RR exception"""
     def __init__(self, *args, **kwargs):
         Exception.__init__(self, *args, **kwargs)
-    LOGGER.warning('RRClientException')
+        LOGGER.warning('RRClientException')
 
 
 class Client:
@@ -207,76 +207,24 @@ class Client:
             'value': value,
         }
 
-    def create_article(
-            self,
-            title,
-            article,
-            article_lang="en",
-            paper_id=0,
-            category='0',
-            region="4524"
-    ):
-        """Create new article"""
-        response = self.session.get('http://rivalregions.com/#overview')
-        response = self.session.post("http://rivalregions.com/news/post", data={
-            'c': self.var_c,
-            'newspaper': paper_id,
-            'category': category,
-            'paper': article,
-            'title': title,
-            'region': region
-        })
-
-    def market_info(self, resource, r_id=False):
-        """
-        Returns a list of data about current resource market state.
-        In form price, amount selling, player id, player name string, total offers on market.
-        """
-
-        if not r_id:
-            res_id = self.resource_id[resource]
-        else:
-            res_id = resource
-        response = self.session.get(f'http://rivalregions.com/storage/market/{res_id}?{self.var_c}')
-        return self.parse_market_response(response, res_id)
-
-    def get_all_market_info(self):
-        """Request all market info"""
-        session = sessions.FuturesSession(session=self.session)
-        results = {}
-        for type_ in self.resource_id:
-            if type_ == 'energy drink':
-                continue
-            results[type_] = session.get(
-                f'http://rivalregions.com/storage/market/{self.resource_id[type_]}?{self.var_c}'
-            )
-        for res in results:
-            result = results[res].result()
-            price, selling_amount, player_id, player_name, total_offers = \
-                self.parse_market_response(result, self.resource_id[res])
-            results[res] = {
-                'price': price,
-                'amount': selling_amount,
-                'player_id': player_id,
-                'player_name': player_name,
-                'total_offers':total_offers
-            }
-        return results
-
-    @staticmethod
-    def parse_market_response(response, res_id):
-        """Parse market response"""
-        price = re.search('<input price="(.*)" type', response.text).group(1)
-        selling_amount = re.search('<span max="(.*)" url="', response.text).group(1)
-        player_id = re.search(
-            '<span action="slide/profile/(.*)" class="storage_see pointer dot hov2', response.text
-        ).group(1)
-        player_name = re.search(
-            f'<span action="slide/profile/{player_id}" class="storage_see pointer dot hov2">(.*)</span>',
-            response.text
-        ).group(1)
-        total_offers = re.search(
-            f'Best offer out of <span action="storage/listed/{res_id}" class="storage_see pointer hov2"><span class="dot">(.*)</span></span>:',
-            response.text
-        ).group(1)
-        return price, selling_amount, player_id, player_name, total_offers
+    def get(self, path):
+        """Send get request to Rival Regions"""
+        if path[0] == '/':
+            path = path[1:]
+        LOGGER.info('GET: %s', path)
+        response = self.session.get(
+            'http://rivalregions.com/{}'.format(path)
+        )
+        return response.content
+
+    def post(self, path, data):
+        """Send post request to Rival Regions"""
+        if path[0] == '/':
+            path = path[1:]
+        data['c'] = self.var_c
+        LOGGER.info('POST: %s', path)
+        response = self.session.post(
+            "http://rivalregions.com/{}".format(path),
+            data=data
+        )
+        return response.text

+ 73 - 0
rival_regions_wrapper/functions.py

@@ -0,0 +1,73 @@
+def create_article(
+        self,
+        title,
+        article,
+        article_lang="nl",
+        paper_id=0,
+        category='0',
+        region="4001"
+):
+    """Create new article"""
+    self.session.get('http://rivalregions.com/#overview')
+    response = self.session.post("http://rivalregions.com/news/post", data={
+        'c': self.var_c,
+        'newspaper': paper_id,
+        'category': category,
+        'paper': article,
+        'title': title,
+        'region': region
+    })
+
+def market_info(self, resource, r_id=False):
+    """
+    Returns a list of data about current resource market state.
+    In form price, amount selling, player id, player name string, total offers on market.
+    """
+
+    if not r_id:
+        res_id = self.resource_id[resource]
+    else:
+        res_id = resource
+    response = self.session.get(f'http://rivalregions.com/storage/market/{res_id}')
+    return self.parse_market_response(response, res_id)
+
+def get_all_market_info(self):
+    """Request all market info"""
+    session = sessions.FuturesSession(session=self.session)
+    results = {}
+    for type_ in self.resource_id:
+        if type_ == 'energy drink':
+            continue
+        results[type_] = session.get(
+            f'http://rivalregions.com/storage/market/{self.resource_id[type_]}?{self.var_c}'
+        )
+    for res in results:
+        result = results[res].result()
+        price, selling_amount, player_id, player_name, total_offers = \
+            self.parse_market_response(result, self.resource_id[res])
+        results[res] = {
+            'price': price,
+            'amount': selling_amount,
+            'player_id': player_id,
+            'player_name': player_name,
+            'total_offers':total_offers
+        }
+    return results
+
+@staticmethod
+def parse_market_response(response, res_id):
+    """Parse market response"""
+    price = re.search('<input price="(.*)" type', response.text).group(1)
+    selling_amount = re.search('<span max="(.*)" url="', response.text).group(1)
+    player_id = re.search(
+        '<span action="slide/profile/(.*)" class="storage_see pointer dot hov2', response.text
+    ).group(1)
+    player_name = re.search(
+        f'<span action="slide/profile/{player_id}" class="storage_see pointer dot hov2">(.*)</span>',
+        response.text
+    ).group(1)
+    total_offers = re.search(
+        f'Best offer out of <span action="storage/listed/{res_id}" class="storage_see pointer hov2"><span class="dot">(.*)</span></span>:',
+        response.text
+    ).group(1)
+    return price, selling_amount, player_id, player_name, total_offers