ghodsizadeh / tehran-stocks

A python package to access tsetmc data
https://ghodsizadeh.github.io/tehran-stocks/
MIT License
455 stars 103 forks source link

دریافت آیدی تکراری #80

Open BabakAmini opened 2 years ago

BabakAmini commented 2 years ago

وقت بخیر

از آنجایی که در لینک http://tsetmc.com/tsev2/data/MarketWatchPlus.aspx علاوه بر اطلاعات قیمت، اطلاعات سفارشات نیز وجود دارد روشی که شما در لینک زیر استفاده کرده‌اید باعث بدست آمدن آیدی تکراری می‌شود:

https://github.com/ghodsizadeh/tehran-stocks/blob/e7ef575d9d2fee2ffbe192d6a5c30e9ce31254af/src/tehran_stocks/download/names.py#L12

در لحظه‌ای که من چک کردم روش شما ۸۰۰۸ آیدی بر میگرداند در صورتیکه در واقعیت فقط ۱۳۸۱ نماد وجود دارد، به عبارتی حدود ۶ برابر تعداد موجود (یک بار برای دیتای قیمت هر نماد و ۵ بار برای دیتای ۵ سطر سفارشات). اینکار باعث می‌شود اجرای حلقه زیر بسیار زمانبر باشد:

https://github.com/ghodsizadeh/tehran-stocks/blob/e7ef575d9d2fee2ffbe192d6a5c30e9ce31254af/src/tehran_stocks/download/names.py#L138

برای برطرف شدن این اشکال، کد زیر پیشنهاد می‌شود:

ls = r.text.split('@')[2]
ids = re.findall(r"\d{14,20}", ls)

توجه داشته باشید که آیدی نماد می‌تواند ۱۴ کاراکتر هم داشته باشد بنابراین بجای عدد ۱۵ از عدد ۱۴ استفاده کرده‌ام.

سوالی هم که برای من پیش آمده این است که چرا با وجود اینکه مقدار بازگشتی ()re.findall از نوع list هست شما یک بار آن را به set تبدیل کرده و بعد دوباره list برگردانده‌اید. دلیل خاصی برای اینکار داشتین؟

ghodsizadeh commented 2 years ago

بله دقیقا برای رفع این مشکلی که شما مطرح کردید هست، تبدیل set هر چیز duplicate رو حذف می‌کنه و میشه مجدد به لیست تبدیلش کرد. من با این روش سعی کردم از تکراری بودن موارد جلوگیری کنم.

BabakAmini commented 2 years ago

ممنون، جالب بود، من این روش رو نمیدونستم، البته همچنان تغییر عدد ۱۵ به ۱۴ حدود ۵۰ آیدی به لیست آیدی‌ها اضافه میکنه

ghodsizadeh commented 2 years ago

یعنی میگید برخی رو از دست میدیم؟

On Mon, Apr 18, 2022, 9:58 PM BabakAmini @.***> wrote:

ممنون، جالب بود، من این روش رو نمیدونستم، البته همچنان تغییر عدد ۱۵ به ۱۴ حدود ۵۰ آیدی به لیست آیدی‌ها اضافه میکنه

— Reply to this email directly, view it on GitHub https://github.com/ghodsizadeh/tehran-stocks/issues/80#issuecomment-1101588963, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSDCQG5JYQDUL77ARWJ6H3VFWLVNANCNFSM5THIROOA . You are receiving this because you modified the open/close state.Message ID: @.***>

BabakAmini commented 2 years ago

یعنی میگید برخی رو از دست میدیم؟ On Mon, Apr 18, 2022, 9:58 PM BabakAmini @.> wrote: ممنون، جالب بود، من این روش رو نمیدونستم، البته همچنان تغییر عدد ۱۵ به ۱۴ حدود ۵۰ آیدی به لیست آیدی‌ها اضافه میکنه — Reply to this email directly, view it on GitHub <#80 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSDCQG5JYQDUL77ARWJ6H3VFWLVNANCNFSM5THIROOA . You are receiving this because you modified the open/close state.Message ID: @.>

بله، آیدی با ۱۴ کاراکتر هم داریم، برای دیتای امشب حدود ۵۰ نماد دیگه هم هست

ghodsizadeh commented 2 years ago

ممنونم. سعی می‌کنم این مورد رو اصلاح کنم. هرچند الان دیتا رو از جای دیگه‌ای می‌گیره ولی باید اونجا رو هم اصلاح کنم.