تقنية

كيفية التنزيل التلقائي إلى Google Drive مع أوراق Google


يصف هذا البرنامج التعليمي كيف يمكنك استخدام أوراق Google لإنشاء مدير البودكاست الخاص بك. يمكنك تحديد قائمة برامج البودكاست المفضلة لديك في Google Sheets وسيقوم تلقائيًا بتنزيل حلقات جديدة على Google Drive الخاص بك في مجلدات منظمة بدقة.

الإعداد بسيط للغاية ، والتطبيق مفتوح المصدر تمامًا ولا تحتاج إلى لغة برمجة.

كيف يعمل مدير Podcast Drive؟

يجب عليك وضع روابط البودكاست المفضلة لديك في العمود A من ورقة Google كما هو موضح في لقطة الشاشة أدناه.

سيقوم التطبيق تلقائيًا بتنزيل أحدث الحلقات من كل بودكاست إلى Google Drive. يمكنك فتح ملفات MP3 من محرك Google الخاص بك أو العثور عليها مباشرة داخل ورقة Google نفسها.

قائمة بودكاست أوراق Google

سيقوم التطبيق بإنشاء مجلد جديد بعنوان Podcasts في محرك Google الخاص بك. داخل هذا المجلد ، سيقوم بإنشاء أجهزة ذات طابع فرعي لكل عرض بودكاست مع اسم المجلد مثل عنوان البودكاست.

مجلد Google Drive Podcasts

قم بتنزيل podcasts إلى Google Drive

إليك كيفية إنشاء مدير البودكاست الخاص بك مع Google Sheets و Google Drive.

  1. انقر هنا لإنشاء نسخة من ورقة Google في حساب Google الخاص بك.

  2. افتح جدول البيانات المنسوخ ، قم بالتبديل إلى Subscriptions ورقة وأدخل روابط تغذية RSS للبودكاست المفضل لديك في العمود أ. يمكنك استخدام الأداة المساعدة لبحث Apple Podcasts للعثور على تغذية RSS لأي بودكاست مدرج في Apple Podcast.

  3. انتقل إلى قائمة الامتدادات واختر Script Editor لفتح ملف البرنامج النصي لتطبيقات Google الأساسية.

  4. اختر Install وظيفة من قائمة الوظائف وانقر Run لتثبيت التطبيق. قد تضطر إلى تفويض التطبيق مرة واحدة لأنه يحتاج إلى إذن لحفظ الملفات إلى Google Drive نيابة عنك.

هذا كل شيء. سيقوم التطبيق بإنشاء وظيفة cron تعمل كل بضع ساعات في الخلفية وتنزيل أحدث حلقات البودكاست المفضلة لديك إلى Google Drive.

لدينا حتى مشغل MP3 مدمج داخل أوراق Google التي ستلعب أحدث حلقة من كل بودكاست عند النقر فوق Play زر.

مشغل MP3 في أوراق Google

التفاصيل الفنية

إذا كنت فضوليًا لمعرفة كيف يعمل الأمر برمته ، فإليك التفاصيل الفنية.

يستخدم التطبيق واجهة برمجة تطبيقات جدول البيانات لقراءة قائمة المواد الصوتية من أوراق Google. ثم يستخدم خدمة XML لـ Apps Script لتحليل خلاصة RSS واستخراج حلقات البودكاست الجديدة التي تم نشرها منذ الشيك الأخير.

مطلوب جميع خلاصات RSS بودكاست للحصول على <item> علامة مع <enclosure> علامة في الداخل. ال <enclosure> تحتوي TAG على عنوان URL لملف MP3 وهذا ما يستخدمه التطبيق للحصول على عنوان URL للتنزيل في الحلقة المقابلة.

const parseRSS = (xmlUrl, lastUpdatedTime) => {
  const feed = UrlFetchApp.fetch(xmlUrl).getContentText();
  const doc = XmlService.parse(feed);
  const root = doc.getRootElement();
  const channel = root.getChild('channel');
  const episodes = channel
    .getChildren('item')
    .map((item) => ({
      date: new Date(item.getChildText('pubDate')),
      title: item.getChildText('title'),
      enclosure: item.getChild('enclosure')?.getAttribute('url')?.getValue()
    }))
    .filter(({ date }) => date > lastUpdatedTime)
    .filter(({ enclosure }) => enclosure);
  return { title: channel.getChildText('title'), episodes };
};

بمجرد أن يحتوي التطبيق على قائمة بالحلقات الجديدة ، فإنه يستخدم خدمة URLFetch لتنزيل Podcasts وإنقاذها إلى Google Drive في مجلد خاص بعرض البودكاست.

ثم يكتب التطبيق صفًا جديدًا إلى ورقة Google مع رابط ملف Google Drive وجدول زمني لموعد تنزيل الحلقة.

const getPodcastFolder = (folderName) => {
  const parentFolder = DriveApp.getFoldersByName('Podcasts').next();
  const folders = parentFolder.getFoldersByName(folderName);
  if (folders.hasNext()) return folders.next();
  return parentFolder.createFolder(folderName);
};

const downloadPodcast = (podcastTitle, episodeUrl, episodeTitle) => {
  try {
    const blob = UrlFetchApp.fetch(episodeUrl).getBlob();
    const folder = getPodcastFolder(podcastTitle);
    const file = folder.createFile(blob);
    SpreadsheetApp.getActiveSheet().appendRow([
      new Date(),
      `=HYPERLINK("${episodeUrl}";"${episodeTitle}")`,
      `https://drive.google.com/file/d/${file.getId()}/view`
    ]);
  } catch (f) {
    console.error(f);
  }
};



Source link

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى