راکت
coarad supp
coarad supp
توسط coarad supp مطرح شد
13 پاسخ

تاریخ تعطیلات رسمی ایران

سلام دوستان؛ برای به دست اوردن تاریخ تعطیلات ایران، وب سرویس یا فایل جیسون موجود هست؟

البته وب سرویس پولی هست، ولی میخوام بدونم رایگان هست فعلا کارمو راه بندازه؟

ممنون


ثبت پرسش جدید
حسام موسوی
حسام موسوی
تخصص :طراح و برنامه نویس
@hesammousavi6 سال پیشمطرح شد
1

این api بهتون کمکی نمیکنه ؟
https://farsicalendar.com


امین شیخی
امین شیخی
@isheykhi6 سال پیشمطرح شد
1

سلام..
من برای یکی از پروژه ها از https://farsicalendar.com استفاده کردم و پاسخگوی نیازم بود.
البته چون دیگه به سرویس دهنده های داخلی اعتمادی ندارم اطلاعات مورد نیازم را در جداول خودم ذخیره کردم.


coarad supp
coarad supp
تخصص :برنامه نویس لاراول
@coaradsupp6 سال پیشمطرح شد
0

@hesammousavi
ممنون حسام جان، بررسیش میکنم

@isheykhi
ممنون امین جان؛ ینی این وب سرویس کل تاریخ های تعطیل رسمی یکسال رو برمیگردونه؟ چون من بررسیش کردم باید روزا رو جداجدا واسش فرستاد


coarad supp
coarad supp
تخصص :برنامه نویس لاراول
@coaradsupp6 سال پیشمطرح شد
1

@hesammousavi
@isheykhi

به این شکل تونستم از سایت time.ir تعطیلات و مناسبت ها رو بگیرم، میذارم شاید کسی نیاز داشت، از این پکیج استفاده کردم

"symfony/dom-crawler": "^5.0",

// مناسبت های سال جاری
    public function vacations() {
//      Cache::forget( 'vacations' );
        $data = \Illuminate\Support\Facades\Cache::remember( 'vacations' , \Carbon\Carbon::now()->addMonth() , function () {
            $crawler   = new Crawler( file_get_contents( 'https://www.time.ir/fa/eventyear-%d8%aa%d9%82%d9%88%db%8c%d9%85-%d8%b3%d8%a7%d9%84%db%8c%d8%a7%d9%86%d9%87' ) );
            $year      = $crawler->filter( '#ctl00_cphTop_Sampa_Web_View_EventUI_EventYearCalendar10cphTop_3417_txtYear' )->attr( 'value' );
            $vacations = $crawler->filter( '.eventsCurrentMonthWrapper' )->each( function ( Crawler $node , $i ) use ( $year ) {
                $ul       = $node->filter( 'ul' );
                $days     = $ul->filter( 'li' )->each( function ( Crawler $node , $i ) {
                    return $node->filter( 'span' )->eq( 0 )->text();
                } );
                $holidays = $ul->filter( 'li' )->each( function ( Crawler $node , $i ) {
                    return $node->attr( 'class' ) == 'eventHoliday' ? true : false;
                } );
                $reasons  = $ul->filter( 'li' )->each( function ( Crawler $node , $i ) {
                    if ( $node->filter( 'span' )->eq( 1 )->text() ) {
                        return str_replace( $node->filter( 'span' )->eq( 1 )->text() , '' , str_replace( $node->filter( 'span' )->text() , '' , $node->text() ) );
                    } else {
                        return str_replace( $node->filter( 'span' )->text() , '' , $node->text() );
                    }
                } );
                $data     = [];
                foreach ( $days as $key => $day ) {
                    $date = $year . '/' . ( new Helper() )->day_date( $day );
                    if ( $index = array_search( $date , array_column( $data , 'date' ) ) ) {
                        $data[ $index ] = [
                            'date'    => $date ,
                            'holiday' => ( $data[ $index ][ 'holiday' ] || $holidays[ $key ] ) ,
                            'reason'  => $data[ $index ][ 'reason' ] . ' # ' . $reasons[ $key ]
                        ];
                    } else {
                        array_push( $data , [
                            'date'    => $date ,
                            'holiday' => $holidays[ $key ] ,
                            'reason'  => $reasons[ $key ]
                        ] );
                    }
                }

                return $data;
            } );

            return $vacations;
        } );

        return $data;
    }

    // تعطیلات سال جاری
    public function holidays() {
        return \Illuminate\Support\Facades\Cache::remember( 'holidays' , \Carbon\Carbon::now()->addMonth() , function () {
            return array_values( array_filter( array_map( function ( $item ) {
                return array_values( array_filter( $item , function ( $value ) {
                    return $value[ 'holiday' ];
                } ) );
            } , $this->vacations() ) ) );
        } );
    }

به این شکل


امیر ام
امیر ام
@amir.amini655 سال پیشمطرح شد
0

تابع Helper() وجود نداره داخل کدتون لاین ۲۴ @coaradsupp


محمدصادق عبداللهی
محمدصادق عبداللهی
تخصص :junior full stack developer
@mimsadAlef5 سال پیشمطرح شد
0

سلام اگه اجازه بدید فایل دیتابیسش رو بدم بهتون
اینجا رو نگاه کنید
https://jdf.scr.ir/tarikh
فقط باید استخراجش کنید از سایت ژئوفیزیک هم می تونید بردارید اگه پیداش کنید


soheil barati
soheil barati
@soheilbarati984 سال پیشمطرح شد
0

تابع Helper رو مشخص نکردید!
خط 24 ام...
@coaradsupp


محمد قربانی
محمد قربانی
تخصص :برنامه نویس لاراول
@mohammadghorbani19924 سال پیشمطرح شد
0
function day_date($string)
{
    $string = strtr($string, ['۰' => '0', '۱' => '1', '۲' => '2', '۳' => '3', '۴' => '4', '۵' => '5', '۶' => '6', '۷' => '7', '۸' => '8', '۹' => '9']);
    $day    = preg_replace('/[^0-9]/', '', $string);
    $month  = preg_replace('/[0-9]+/', '', $string);
    $month  = strtr($month, [' فروردین' => '1', ' اردیبهشت' => '2', ' خرداد' => '3', ' تیر' => '4', ' مرداد' => '5', ' شهریور' => '6', ' مهر' => '7', ' آبان' => '8', ' آذر' => '9', ' دی' => '10', ' بهمن' => '11', ' اسفند' => '12']);
    return str_pad($month, 2, "0", STR_PAD_LEFT) . '/' . str_pad($day, 2, "0", STR_PAD_LEFT);
}
$string = strtr($string, ['۰' => '0', '۱' => '1', '۲' => '2', '۳' => '3', '۴' => '4', '۵' => '5', '۶' => '6', '۷' => '7', '۸' => '8', '۹' => '9']);

توی این ارایه کلیدها باید اعداد فارسی باشه

@soheilbarati98
@amir.amini65

ببخشید دیر جواب دادم


محمد پورممی
محمد پورممی
تخصص :برنامه نویس وب
@m.pourmami2 سال پیشمطرح شد
0

@coaradsupp @mohammadghorbani1992
درود بر شما، قطعه کد شمارو من استفاده کردم و کار کرد دستتون درد نکنه، فقط برای استخراجِ تعطیل ها شاید اون موقع که شما نوشتین مشکلی نداشته ولی الان من متوجه شدم که درست کار نمیکنه اونم بخاطر اینه که به آخرِ کلاسِ eventHoliday یه اسپیس اضافه شده توی سایتِ time.ir و اونطوری نمیتونست تعطیلات رسمی رو تشخیص بده، من قطعه کد فیکس شده رو اینجا میزارم دوستان استفاده کنند.

// مناسبت های سال جاری
public function vacations() {
//        \Illuminate\Support\Facades\Cache::forget( 'vacations' );
    $data = \Illuminate\Support\Facades\Cache::remember( 'vacations' , \Carbon\Carbon::now()->addMonth() , function () {
        $crawler   = new Crawler( file_get_contents( 'https://www.time.ir/fa/eventyear-%d8%aa%d9%82%d9%88%db%8c%d9%85-%d8%b3%d8%a7%d9%84%db%8c%d8%a7%d9%86%d9%87' ) );
        $year      = $crawler->filter( '#ctl00_cphTop_Sampa_Web_View_EventUI_EventYearCalendar10cphTop_3417_txtYear' )->attr( 'value' );
        $vacations = $crawler->filter( '.eventsCurrentMonthWrapper' )->each( function ( Crawler $node , $i ) use ( $year ) {
            $ul       = $node->filter( 'ul' );
            $days     = $ul->filter( 'li' )->each( function ( Crawler $node , $i ) {
                return $node->filter( 'span' )->eq( 0 )->text();
            } );
            $holidays = $ul->filter( 'li' )->each( function ( Crawler $node , $i ) {
                return $node->attr( 'class' ) == 'eventHoliday ';
            } );
            $reasons  = $ul->filter( 'li' )->each( function ( Crawler $node , $i ) {
                if ( $node->filter( 'span' )->eq( 1 )->text() ) {
                    return str_replace( $node->filter( 'span' )->eq( 1 )->text() , '' , str_replace( $node->filter( 'span' )->text() , '' , $node->text() ) );
                } else {
                    return str_replace( $node->filter( 'span' )->text() , '' , $node->text() );
                }
            } );
            $data = [];
            foreach ( $days as $key => $day ) {
                $date = $year . '/' . $this->day_date( $day );
                if ( $index = array_search( $date , array_column( $data , 'date' ) ) ) {
                    $data[ $index ] = [
                        'date'    => $date ,
                        'holiday' => ( $data[ $index ][ 'holiday' ] || $holidays[ $key ] ) ,
                        'reason'  => $data[ $index ][ 'reason' ] . ' # ' . $reasons[ $key ]
                    ];
                } else {
                    array_push( $data , [
                        'date'    => $date ,
                        'holiday' => $holidays[ $key ] ,
                        'reason'  => $reasons[ $key ]
                    ] );
                }
            }

            return $data;
        } );

        return $vacations;
    } );

    return $data;
}

function day_date($string)
{
    $string = strtr($string, ['۰' => '0', '۱' => '1', '۲' => '2', '۳' => '3', '۴' => '4', '۵' => '5', '۶' => '6', '۷' => '7', '۸' => '8', '۹' => '9']);
    $day    = preg_replace('/[^0-9]/', '', $string);
    $month  = preg_replace('/[0-9]+/', '', $string);
    $month  = strtr($month, [' فروردین' => '1', ' اردیبهشت' => '2', ' خرداد' => '3', ' تیر' => '4', ' مرداد' => '5', ' شهریور' => '6', ' مهر' => '7', ' آبان' => '8', ' آذر' => '9', ' دی' => '10', ' بهمن' => '11', ' اسفند' => '12']);
    return str_pad($month, 2, "0", STR_PAD_LEFT) . '/' . str_pad($day, 2, "0", STR_PAD_LEFT);
}

// تعطیلات سال جاری
public function holidays() {
    return \Illuminate\Support\Facades\Cache::remember( 'holidays' , \Carbon\Carbon::now()->addMonth() , function () {
        return array_values( array_filter( array_map( function ( $item ) {
            return array_values( array_filter( $item , function ( $value ) {
                return $value[ 'holiday' ];
            } ) );
        } , $this->vacations() ) ) );
    } );
}

نیما نوابی
نیما نوابی
تخصص :برنامه نویسی
@nimanv2 سال پیشمطرح شد
0

به نظرم خودت بسازی بهترین کارو کردی وبسرویس ها یه روزی نابود میشن هوش مصنوعی داره جاشون پر میکنه خودت تو سرور خودت بساز همیشه راحت کن خودتو


hossein masoomi
hossein masoomi
@hosseinmasoomi5062 سال پیشمطرح شد
0

بهترین راه حل
persian holidays


امیرحسین مقیسه
امیرحسین مقیسه
@amirmoghi32 سال پیشمطرح شد
0

@hosseinmasoomi506
واگعی بود :) 😘


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام