A website providing price comparison for video game skins.
Available games:
- Counter-Strike: Global Offensive
Available marketplaces:
- Bitskins
- CS.Money
- SkinBaron
- Skinport
- Steam
A website providing price comparison for video game skins
Home Page: https://lionskins.co/
On skin pages:
https://developers.google.com/search/docs/data-types/product
On the homepage:
https://developers.google.com/search/docs/data-types/sitelinks-searchbox
I find lionskins a very useful site. I will create a Polish translation to make it accessible to more people :)
The contact form only creates an entry in the databse. It should also send an email to the admin.
Most of the CSGO skins are linked to a "collection". It would be nice to have the possibility to filter skins by collection.
Steps to reproduce:
backoffice_1 | 2021-03-24T07:07:05.902345764Z Traceback (most recent call last):
backoffice_1 | 2021-03-24T07:07:05.913142979Z File "/opt/services/backend/src/./backoffice", line 7, in <module>
backoffice_1 | 2021-03-24T07:07:05.916575786Z backoffice()
backoffice_1 | 2021-03-24T07:07:05.916859932Z File "/usr/local/lib/python3.9/site-packages/click/core.py", line 829, in __call__
backoffice_1 | 2021-03-24T07:07:05.917308428Z return self.main(*args, **kwargs)
backoffice_1 | 2021-03-24T07:07:05.920514283Z File "/usr/local/lib/python3.9/site-packages/click/core.py", line 782, in main
backoffice_1 | 2021-03-24T07:07:05.920898267Z rv = self.invoke(ctx)
backoffice_1 | 2021-03-24T07:07:05.920962938Z File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
backoffice_1 | 2021-03-24T07:07:05.921339634Z return ctx.invoke(self.callback, **ctx.params)
backoffice_1 | 2021-03-24T07:07:05.921390899Z File "/usr/local/lib/python3.9/site-packages/click/core.py", line 610, in invoke
backoffice_1 | 2021-03-24T07:07:05.921655890Z return callback(*args, **kwargs)
backoffice_1 | 2021-03-24T07:07:05.921736684Z File "/usr/local/lib/python3.9/site-packages/click/decorators.py", line 21, in new_func
backoffice_1 | 2021-03-24T07:07:05.921894415Z return f(get_current_context(), *args, **kwargs)
backoffice_1 | 2021-03-24T07:07:05.921945416Z File "/usr/local/lib/python3.9/site-packages/flask/cli.py", line 426, in decorator
backoffice_1 | 2021-03-24T07:07:05.922223359Z return __ctx.invoke(f, *args, **kwargs)
backoffice_1 | 2021-03-24T07:07:05.922370420Z File "/usr/local/lib/python3.9/site-packages/click/core.py", line 610, in invoke
backoffice_1 | 2021-03-24T07:07:05.922677062Z return callback(*args, **kwargs)
backoffice_1 | 2021-03-24T07:07:05.922728020Z File "/opt/services/backend/src/commands/__init__.py", line 30, in backoffice
backoffice_1 | 2021-03-24T07:07:05.922877132Z _fetch_providers(True, None)
backoffice_1 | 2021-03-24T07:07:05.922927550Z File "/opt/services/backend/src/commands/__init__.py", line 72, in _fetch_providers
backoffice_1 | 2021-03-24T07:07:05.923073172Z for skin in Skin.objects:
backoffice_1 | 2021-03-24T07:07:05.923122579Z File "/usr/local/lib/python3.9/site-packages/mongoengine/queryset/queryset.py", line 110, in _iter_results
backoffice_1 | 2021-03-24T07:07:05.923288639Z self._populate_cache()
backoffice_1 | 2021-03-24T07:07:05.923409082Z File "/usr/local/lib/python3.9/site-packages/mongoengine/queryset/queryset.py", line 129, in _populate_cache
backoffice_1 | 2021-03-24T07:07:05.923694799Z self._result_cache.append(next(self))
backoffice_1 | 2021-03-24T07:07:05.923756785Z File "/usr/local/lib/python3.9/site-packages/mongoengine/queryset/base.py", line 1574, in __next__
backoffice_1 | 2021-03-24T07:07:05.924293443Z raw_doc = next(self._cursor)
backoffice_1 | 2021-03-24T07:07:05.952454153Z File "/usr/local/lib/python3.9/site-packages/pymongo/cursor.py", line 1207, in next
backoffice_1 | 2021-03-24T07:07:05.953167295Z if len(self.__data) or self._refresh():
backoffice_1 | 2021-03-24T07:07:05.953257828Z File "/usr/local/lib/python3.9/site-packages/pymongo/cursor.py", line 1144, in _refresh
backoffice_1 | 2021-03-24T07:07:05.953708502Z self.__send_message(g)
backoffice_1 | 2021-03-24T07:07:05.953787936Z File "/usr/local/lib/python3.9/site-packages/pymongo/cursor.py", line 999, in __send_message
backoffice_1 | 2021-03-24T07:07:05.954210026Z response = client._run_operation_with_response(
backoffice_1 | 2021-03-24T07:07:05.954302788Z File "/usr/local/lib/python3.9/site-packages/pymongo/mongo_client.py", line 1368, in _run_operation_with_response
backoffice_1 | 2021-03-24T07:07:05.954912531Z return self._retryable_read(
backoffice_1 | 2021-03-24T07:07:05.956090929Z File "/usr/local/lib/python3.9/site-packages/pymongo/mongo_client.py", line 1471, in _retryable_read
backoffice_1 | 2021-03-24T07:07:05.956715613Z return func(session, server, sock_info, slave_ok)
backoffice_1 | 2021-03-24T07:07:05.956860796Z File "/usr/local/lib/python3.9/site-packages/pymongo/mongo_client.py", line 1360, in _cmd
backoffice_1 | 2021-03-24T07:07:05.957482108Z return server.run_operation_with_response(
backoffice_1 | 2021-03-24T07:07:05.957710323Z File "/usr/local/lib/python3.9/site-packages/pymongo/server.py", line 135, in run_operation_with_response
backoffice_1 | 2021-03-24T07:07:05.958024570Z _check_command_response(first, sock_info.max_wire_version)
backoffice_1 | 2021-03-24T07:07:05.958102124Z File "/usr/local/lib/python3.9/site-packages/pymongo/helpers.py", line 162, in _check_command_response
backoffice_1 | 2021-03-24T07:07:05.958398941Z raise CursorNotFound(errmsg, code, response, max_wire_version)
backoffice_1 | 2021-03-24T07:07:05.959377502Z pymongo.errors.CursorNotFound: cursor id 8579531882349864313 not found, full error: {'operationTime': Timestamp(1616569625, 14), 'ok': 0.0, 'errmsg': 'cursor id 8579531882349864313 not found', 'code': 43, 'codeName': 'CursorNotFound', '$clusterTime': {'clusterTime': Timestamp(1616569625, 14), 'signature': {'hash': b'=\xb7\xb4o<z\x85;\x1e\xa2d\x9a\x0c\xff\x00\x1d\xba\xd5\xd40', 'keyId': 6926097989907775491}}}
We don't actually need the user to create an account on our website. As we do not want to have to deal with personnal information, we cannot even provide a "reset password" function.
However, it would be interesting to let users create their account and log in via Steam openID (and maybe other providers in the future).
If localstorage has been disabled by the user, the website crashes with "operation is inscure" error, and renders nothing.
Many skins are missing rarity, image, and/or descriptions.
from src.commands import sanity_check
sanity_check()
Add the possibility for authenticated users to create and manage lists of skins
Implement 2FA via TOTP using PyOTP
Vanilla knife skins are missing from CSGO listings. They do not have a quality property.
Apparently, Steam's openid is missng a required parameter, although it doesn't prevent the authentication to proceed normally.
Implement a fix to avoid logging this error to Sentry.
Every CSGO skin has a unique description on Steam. It would be a nice feature to show this description on the skin's page.
Most of CSGO skin names have are translated in different languages. It would be nice to add these translations.
backoffice_1 | 2021-03-25T12:00:00.215055807Z ERROR:apscheduler.scheduler:Error submitting job "GenerateSitemap.run (trigger: cron[month='*', day='*', day_of_week='*', hour='*/12', minute='0'], next run at: 2021-03-25 12:00:00 UTC)" to executor "default"
backoffice_1 | 2021-03-25T12:00:00.215236756Z Traceback (most recent call last):
backoffice_1 | 2021-03-25T12:00:00.215243100Z File "/usr/local/lib/python3.9/site-packages/apscheduler/schedulers/base.py", line 979, in _process_jobs
backoffice_1 | 2021-03-25T12:00:00.215247592Z executor.submit_job(job, run_times)
backoffice_1 | 2021-03-25T12:00:00.215251462Z File "/usr/local/lib/python3.9/site-packages/apscheduler/executors/base.py", line 71, in submit_job
backoffice_1 | 2021-03-25T12:00:00.215255583Z self._do_submit_job(job, run_times)
backoffice_1 | 2021-03-25T12:00:00.215259269Z File "/usr/local/lib/python3.9/site-packages/apscheduler/executors/pool.py", line 28, in _do_submit_job
backoffice_1 | 2021-03-25T12:00:00.215263120Z f = self._pool.submit(run_job, job, job._jobstore_alias, run_times, self._logger.name)
backoffice_1 | 2021-03-25T12:00:00.215316387Z File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 161, in submit
backoffice_1 | 2021-03-25T12:00:00.215320545Z raise RuntimeError('cannot schedule new futures after shutdown')
backoffice_1 | 2021-03-25T12:00:00.215323845Z RuntimeError: cannot schedule new futures after shutdown
Soclal networks are great to gain more traffic, but take too much time and effort to publish frequent content.
Create a script to automatize posts on our various accounts.
Add a page to view inventories of pro players.
I don't think we'll be able to find free-to-use pictures for the players, but team logos should be fine. Steam profiles of players can be found on Liquipedia.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.