بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

پیشنهادتون برای دریافت اطلاعات ویدیویی از یک سایت ( حل شده )

مدیریت گفتگو
sadra 11 سال پیش
آخرین تغییر: 11 سال پیش

دوستان چطوری میتونم اطلاعات یک سایت ویدیویی اعم از لینک ویدیو ، تایتیل و  سایر اطلاعات رو بگیرم و ذخیره کنم  و در یک لیست ویو نمایش بدم ؟ : 1- با چه روشی درخواست بدم 2- با چه روشی دریافت کنم ؟ 3- چطوری ذخیره کنم و این ویدیوها رو در یک لیست ویو نشون بدم ؟ سپاسگزارم 

نظرات

Pr0gramm3r 11 سال پیش
آپارات یک API داره برای این کارا لینک شاید کمکتون کنه
sadra 11 سال پیش
ممنونم از پاسخت ، اما من آپارت رو برای مثال بیان کردم ، سایت مورد نظر من API نداره ، بازم ممنونم
sadra 11 سال پیش
این کار با json انجام میگیره آیا ؟ دوستان اگر ممکن راهنمایی کنن

پاسخ‌ها 6

sadra 11 سال پیش

دوستان لطفا راهنمایی کنید  چطوری باید همچین لینکی رو از سورس یک سایت بخونم 

 
</figure>
  <div class="glyphicon glyphicon-play"></div>
  </a>
  </div>
  <div class="col-xs-6 col-sm-6 col-md-3">
  <a href="/video/112548855/به روز ترین ویدیوها" class="video-thumbnail thumbnail">
  <figure>

به چه طریقی میتونم این کار رو بکنم ؟ 

نظرات

mtn67 11 سال پیش
با jsoup به راحتی میتونی این کارو انجام بدی.کار کردن باهاش خیلی راحته
sadra 11 سال پیش
ممنونم از لطفتت من با استفاده از لینکی که گذاشته بودی این لایبرری رو ایمپورت کردم ، اما در مورد کد نویسی و آموزشش چطوری باید از این لایبرری استفاده کنم ، طبق این لینک شما لینک ممنونم
mtn67 11 سال پیش
ولا من از همین لینک یاد گرفتم و تقریبا میشه گفت هر قسمتی از کد html رو میتونم بیرون بکشم ولی بلد نیستم آموزش بدم.شما اگه سرچ کنید Jsoup Tutorial کلی مطلب پیدا میشه.شما یک سایت تعیین کن و بگو کدوم قسمتشو میخوای بگیری تا من کدشو همین جا با مختصری توضیح بنویسم
sadra 11 سال پیش
ممنونم از شما چشم ؛ مثلا میخایم بریم این سایت لینک و این مشابه این مدل لینک رو بخونیم : title="اخبار کوتاه ورزشی؛ کناره‌گیری مسی از تیم ملی آرژانتین"> 10 دقیقه قبل اخبار کوتاه ورزشی؛ کناره‌گیری مسی از تیم ملی آرژانتین
sadra 11 سال پیش

دوباره سوالم رو اصلاح می کنم ف مثلا بریم این سایت  http://video.varzesh3.com/

و این لینک و لینک های ودیویی مشابه رو بخونیم مانند این لینک 

 
title="اخبار کوتاه ورزشی؛ کناره‌گیری مسی از تیم ملی آرژانتین">
  <img src="http://video.varzesh3.com/wp-content/uploads/080715_akhbarkootah_940417.jpg" width="160" height="106" alt="اخبار کوتاه ورزشی؛ کناره‌گیری مسی از تیم ملی آرژانتین"/>
  <span>10 دقیقه قبل</span>
  <strong>اخبار کوتاه ورزشی؛ کناره‌گیری مسی از تیم ملی آرژانتین</strong></a>
  </li><li class="firstpage-li"><a href="http://video.varzesh3.com/other-video-clips/other_sport/%d8%af%d8%b1%d8%ae%d8%b4%d8%b4-%d8%a8%d8%a7%d9%86%d9%88%d8%a7%d9%86-%d8%af%d8%b1-%d9%85%d8%b3%d8%a7%d8%a8%d9%82%d8%a7%d8%aa-%d8%af%d8%a7%d9%86%d8%b4%d8%ac%d9%88%db%8c%d8%a7%d9%86-%d8%ac%d9%87%d8%a7/" 

و این لینکها در یک دیتابیس دخیره و  در یک لیست ویو به کاربر نشون بدیم ، ممنونم از لطف شما 

نظرات

mtn67 11 سال پیش
من یه آموزش میزارم که از همون آدرس که دادید از قسمت آخرین بارگذاریها عنوان ویدئوها،لینک ویدئوها و تصویر ویدئوها رو بگیره و هر کدوم رو داخل آرایه ذخیره کنه.
mtn67 11 سال پیش
کار با دیتابیس و لیست ویو با خودتون دیگه
sadra 11 سال پیش
بینهایت سپاسگزارم ، لطف بزرگی می کنی داداش ، سپاس
mtn67 11 سال پیش

ابتدا از این آدرس کتابخونه JSOUP رو دانلود کن : لینک

فقط   jsoup-1.8.2.jar   دانلود بشه

پروژه خودتو درست کن و کتابخونه رو وارد کن.طریقه وارد کردن: روو اسم پروژت کلیک راست کن گزینه properties رو انتخاب کن.از قسمت Java Build Path تب Libraries بر روی Add External JARs کلیک و مسیر کتابخونه ای که دانلود کردی رو بهش بده و open کن.بعد برو تب Order and Export و تیک فایل jsoup رو بزن و به بالای همه منتقلش کن.خب حالا همه چیز آماده است برای کد نویسی.

1-ابتدا دسترسی به اینترنت رو از داخل منیفست تنظیم کن.

2-در داخل اکتیویتی مورد نظر و در قسمت مربوط به onCreate سه تا ArrayList که قراره عنوان و لینک و آدرس تصاویر ویدئوها در اونا قرار بگیره تعریف کن به این طریق:

 ArrayList<String> videoLink = new ArrayList<String>();
 ArrayList<String> videoImage = new ArrayList<String>();
 ArrayList<String> videoTitle = new ArrayList<String>();

3-در این مرحله باید به سایت مورد نظر متصل بشیم و سورس سایت رو داخل یک Document بریزیم به این طریق:

 Document doc = Jsoup.connect("http://video.varzesh3.com/").get();

بعد از این کار از ما میخواد که try و catch رو پیاده کنیم که با کلیک رو اون گزینه کد ما به این صورت در میاد:

    try {
            Document doc = Jsoup.connect("http://video.varzesh3.com/").get();
        }
        catch (IOException e) {
            e.printStackTrace();
        }

4-خب تا الان ما تونستیم سورس سایت مورد نظر رو دریافت کنیم.حالا باید یه کم جزئی تر بشیم و اون تیکه از سورس که به درد ما میخوره رو دریافت کنیم.در این مثال ما با محتویاتی که داخل این تگ قرار داره کار داریم : <div id="recent_posts">

برای دریافت کد html ای که داخل این تگ قرار داره به صورت زیر عمل میکنیم:

 Element recentVideoHtml = doc.getElementById("recent_posts");

5-خب در این مرحله باز هم باید جزئی تر بشیم و تگهایی که حاوی لینک،آدرس تصاویر و عنوان ویدئوها هستن و داخل المنت recentVideoHtml ریختیم رو انتخاب کنیم به این صورت:

  Elements links = recentVideoHtml.select("a[href]");
  Elements imgs = recentVideoHtml.select("img[src]");
  Elements titles = recentVideoHtml.select("strong");

6-تا اینجا به هدف مورد نظر نرسیدیم و برای دریافت خالص اطلاعات مورد نظرمون به صورت زیر عمل میکنیم:

for (Element link: links) {
        videoLink.add(link.attr("href"));
            }
for (Element img: imgs) {
        videoImage.add(img.attr("src"));
            }
for (Element title: titles) {
        videoTitle.add(title.text());
            }

توضیحات: برای حلقه ی اول ما تعریف کردیم تا زمانی که المنت links وجود داره حلقه ادامه داشته باشه و در هر تکرار مقدار links داخل link ریخته میشه و با دستور:

 link.attr("href")

از تگ  a href> مقدار اتریبیوت href رو دریافت میکنیم و با دستور گفته شده داخل آرایه میریزیم (همزمان با خوندن توضیحات به سورس سایت هم توجه بشه تا فهم مطالب راحتر باشه).

برای حلقه دومی هم به این گونه عمل میشه.

برای سومی یه کم متفاوته چون سورس html اون فرق داره و ما باید مقدار تگ <strong> رو بخونیم.

تموم شد.سوالی بود در خدمتم.

نظرات

mtn67 11 سال پیش

سورس کامل:

 package com.example.app.aparat;

import java.io.IOException;
import java.util.ArrayList;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;


public class AparatActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ArrayList<String> videoLink = new ArrayList<String>();
        ArrayList<String> videoImage = new ArrayList<String>();
        ArrayList<String> videoTitle = new ArrayList<String>();

        try {
            Document doc = Jsoup.connect("http://video.varzesh3.com/").get();
            Element recentVideoHtml = doc.getElementById("recent_posts");
            Elements links = recentVideoHtml.select("a[href]");
            Elements imgs = recentVideoHtml.select("img[src]");
            Elements titles = recentVideoHtml.select("strong");
            for (Element link: links) {
                videoLink.add(link.attr("href"));
            }
            for (Element img: imgs) {
                videoImage.add(img.attr("src"));
            }
            for (Element title: titles) {
                videoTitle.add(title.text());
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

نظرات

sadra 11 سال پیش

ممنونم داداش گلم ، من کد های شما رو اجرا کردم خطای NetworkOnMainThreadException رو برام داد که کد ها رو ریختم روی یک ترد به این صورت ، میخاسم بدونم راهنمایی کنی  کارم درست بوده یا نه 

 final ArrayList<String> videoLink = new ArrayList<String>();
	        final ArrayList<String> videoImage = new ArrayList<String>();
	        final ArrayList<String> videoTitle = new ArrayList<String>();
	         Thread thread = new Thread(new Runnable() {

	            @Override
	            public void run() {

	        try {
	            Document doc = Jsoup.connect("http://video.varzesh3.com/").get();
	            Element recentVideoHtml = doc.getElementById("recent_posts");
	            Elements links = recentVideoHtml.select("a[href]");
	            Elements imgs = recentVideoHtml.select("img[src]");
	            Elements titles = recentVideoHtml.select("strong");
	            for (Element link: links) {
	                videoLink.add(link.attr("href"));
	            }
	            for (Element img: imgs) {
	                videoImage.add(img.attr("src"));
	            }
	            for (Element title: titles) {
	                videoTitle.add(title.text());
	            }
	        }
	        catch (IOException e) {
	            e.printStackTrace();
	        }
	          
	            }
	            
	        });
	            thread.start();
	        }
	        
}

 

خب تصویری که توی لاگ کت بهم نشون داده به این صورته ؟

اگر تا اینجا همه چی اکی بوده ممنونم میشم راهنمایی کنی که از این به بعد باید این خروجی رو چطوری در دیتا بیس ذخیره کنم ؟

نظرات

mtn67 11 سال پیش

خب شما امتحان کن ببین اطلاعات درست دریافت میشه یا نه.برا من نیاز به thread نداشت.خروجی هارو با لوگ نمایش بده ببین مشکلی پیش میاد یا نه یعنی حلقه هارو به این صورت بنویس :

    for (Element link: links) {
                videoLink.add(link.attr("href"));
                Log.i("LOG",link.attr("href"));
            }
     for (Element img: imgs) {
                videoImage.add(img.attr("src"));
                Log.i("LOG",img.attr("src"));
            }
      for (Element title: titles) {
                videoTitle.add(title.text());
                Log.i("LOG",title.text());
            }

بعد توو لوگ کت ببین اطلاعات مشون داده میشن

نظرات

sadra 11 سال پیش
بله خوشبختانه خروجی دارم در لوگ 20 تا کلیپ که در صفحه قرار داره همراه با عکس و لینک و متنش رو برام میخونه و نشون میده ، ممنونم از لطفت داداشی
sadra 11 سال پیش
در مورد ذخیره کردن در دیتابیس و نشون دادنشون هم در لیست ویو لطف کن و راهنماییم کن ، که بعد از این مرحله من چطوری این کار رو انجام بدم ، ممنونم
mtn67 11 سال پیش
در مورد لیست ویو که استاد توضیح دادن در مورد دیتابیس هم که در انجمن زباد بحث شده.خودت باید بتونی درستش کنی من فقط در این مورد که آموزشی وجود نداشت آموزش گذاشتم.شما کار با لیست ویو رو شروع کن از آموزش استاد، آموزشهایی که در این انجمن وجود داره و سرچ از طریق گوگل باید بتونی مشکلتو حل کنی و باید یاد بگیری مشکلتو حل کنی.حالا در این بین اگه مشکلی پیش اومد که نتونستی حل کنی و داخل انجمن نبود بیا اینجا بپرس
sadra 11 سال پیش
خیلی ممنونم ، چشم ، بازم ممنونم کمک بزرگی کردی بسیار سپاسگزارم

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .