coarad supp
5 سال پیش توسط coarad supp مطرح شد
12 پاسخ

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

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

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

ممنون


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

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


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

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


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

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

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


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
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.amini65 3 سال پیش آپدیت شد
0

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


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

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


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

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


محمد قربانی
تخصص : برنامه نویس لاراول
@mohammadghorbani1992 3 سال پیش آپدیت شد
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.pourmami 1 سال پیش مطرح شد
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() ) ) );
    } );
}

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

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


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

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


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

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


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

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